船木俊介「ディープビジネスフロンティア」

船木俊介 (スーパーソフトウエア東京オフィス代表&キッズラインCTO)

AI(人工知能)やアプリ、動画配信、業務システム、システムコンサルなど仕事の依頼も毎日数え切れないくらいたくさんあり、メンバーも日々増えていますが、まだまだ絶賛急拡大中なのでマイナビでエンジニア募集してます。

株式会社スーパーソフトウエア 【人気アプリ「漫画カメラ」は全世界740万ダウンロード!】

「テクノロジーで未来を創る」をビジョンに、ものを創れるエンジニアを増やすこと、日本から優れたソフトウェアプロダクトを生み出すことを使命にしている会社です。日本のITエンジニアは90万人程度と言われており、これは就労者6500万人のわずか1.3%ほどしかいません。そのうち何かしらのコードが書けるエンジニアは30〜40万人くらいいるとしても、自分でゼロからものを創り出せるレベル、つまりアイデアやUX、コード実装、リリースができるまでのエンジニアは日本ではかなり少ないのが実情で、数万人程度でしょう。もちろん実数はわからないですが5%だとしても1万5000人程度、10%としても3万人程度。コードが多少書けたとしても、Rubyを生み出したMatz(まつもとゆきひろ)氏がいう「人間系」領域に明るいエンジニアは、実際この業界少ない。業界が悪いとか、構造上の問題は当然ありますが、エンジニア個々人では人間系への興味を含めて技術力を伸ばす機会を増やすことが重要なので、未経験でも学習できる環境、技術を伸ばせる数々のプロジェクト、ともに成長する仲間、AIやクラウドの最新技術など、エンジニアにとってテクノロジーに向き合って成長できる環境を用意しています。

スーパーソフトウエア


メンバーのチームワークもよくて、みんなでボーリングしたり IMG_4921


飲んだり IMG_5603


ちゃんと仕事したり _MG_4209


マイナビさんで募集中です!ぜひご応募ください。 ssw-mn

久しぶりにAWSのGPUインスタンスを見ていてると、p2インスタンスが利用可能になっていました。

p2のGPUはTesla K80が載っているのでg2系のK10よりも2.5倍ほど速い。FLOPSは2倍、GPUメモリは3倍、などおおむね倍以上のスペックになっていて、値段としては、g2.2xlargeが$0.65/hでp2.xlargeが$0.9/hなので、1.4倍ほど。ディープラーニングの学習が12時間かかったとしても1200円ちょっとで、コストパフォーマンスとしても割といいのではないでしょうか。
tesla-k80
このp2インスタンス、AmazonLinuxならCaffeなどが入っているらしいですが、ディープラーニングではubuntuばかり使っているので、ubuntuでのTensorFlowインストールを行います。以前に比べて妙な手間が減って割と簡単になった感があります。


Ubuntu初期設定

まずインスタンスを立ち上げます。Ubuntu Server 16.04 LTSを使用して、ディープラーニングではデータセットが大きくなるのでSSDは50GB以上など大きめにとっておきます。 awswiz
インスタンスが起動したら、ツール類をインストールしておきます。今回はPython2.7で。
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install -y build-essential python-pip python-dev git python-numpy swig python-dev default-jdk zip zlib1g-dev ipython

CUDA/cuDNNインストール

デフォルトでnouveauのグラフィックドライバが有効になっているので、NVIDIAのCUDAなどドライバをインストールする際にエラーがでないように無効化しておきます。
$ echo -e "blacklist nouveau\nblacklist lbm-nouveau\noptions nouveau modeset=0\nalias nouveau off\nalias lbm-nouveau off\n" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
$ echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
$ sudo update-initramfs -u
$ sudo reboot

$ sudo apt-get install -y linux-image-extra-virtual
$ sudo reboot
NVIDIAのウェブサイトからドライバをダウンロードしておきます。
cuda
cuDNN
cuDNNはNVIDIAへのログインが必要です。CUDA8.0と、cuDNN5.1 for CUDA 8.0をダウンロードしたら、SCPなどでubuntu側へアップロードしておきます。

CUDAインストール

sudo apt-get install -y linux-source linux-headers-`uname -r`
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

cuDNNインストール

tar xvzf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
sudo apt-get install libcupti-dev

.profile更新

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
$ source ~/.profile
CUDAドライバのインストールは完了です。
$ nvidia-smi
で、
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.66                 Driver Version: 375.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 0000:00:1E.0     Off |                    0 |
| N/A   37C    P0    76W / 149W |      0MiB / 11439MiB |     93%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
が出てくればOKです。


TensorFlowインストール

使いたいライブラリがr0.12バージョン指定だったのでTensorFlow r0.12をインストールします。必要に応じてバージョンは変えてください。
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.1-cp27-none-linux_x86_64.whl
$ sudo pip install --upgrade $TF_BINARY_URL
動作確認をしておきます。 TensorFlowの動作確認。
$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>
CUDAが上手く動いているか確認。
$ python -c 'import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))'

I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally
/usr/local/lib/python2.7/dist-packages/tensorflow


ここまでできればAMIなどを作成してインスタンスを停止、使いたいときに起動という運用にしておけば、いつでも低コストで人工知能の開発ができますね。

このブログ、1年に1回くらいの更新ペースを順調に維持してますが、2016年も残りわずか数時間。今年もお世話になった皆様、ありがとうございました。

個人的には今までにないくらいあっという間の楽しい1年で、久しぶりにPythonやRubyでAIのコードをたくさん書いた1年でした。TensorflowとChainerでマシンから煙出るんじゃないかという1年でした。テクノロジーで未来を変える、エンジニアが世界を変える、というコンセプト実現のための布石が出来た感じです。

AI

AIによるここ数年の大きなパラダイムシフトは、世界を新しいものに変えつつあります。もちろんいまのAIは、万能で汎用なAI、人類を絶滅させるかもしれないAIが完成しつつあるというような段階からはほど遠い、まだまだ基礎的な段階ではありますが、ディープラーニングによって実用レベルになってきたところが大きい。

いくら高度な技術がどうという議論をしたところで、精度が50%、60%のものを使おうと思ったら、考えたり、選んだりといった人間の負担が発生するため誰もまともに使わない。それが一気に95%、98%という精度で結果を出せるようになったために、ここ数年で自動車、IoT、Webサイト、アプリのバックエンドなど、見えないところでAIが浸透していくフェーズになっていくと考えられており、日本にはAI研究者も多いことから、次世代に飛躍的に伸びる産業とも期待されています。

トマ・ピケティが『21世紀の資本』で指摘するように、経済格差や不平等はこれからも益々進み、社会的不満や国家間、世代間の対立が拡大していくでしょう。ただ、
 ・日本は「GDP世界第3位」の経済大国である
 → 1人あたりGDPは先進国最下位(世界第27位)

・日本は「製造業生産額世界第2位」のものづくり大国である
 → 1人あたり製造業生産額はG7平均以下

日本が抱える根本的な問題は、経済成長率が低い中で資本収益率が上回ることで、一部の富裕層に富のさらなる偏在化が起こっているといったピケティの理論よりも、日本の人口の20%が低所得者層に属するという、多すぎる貧困層の問題とも言われています。これによって1人あたりGDPなども著しく低く、貧困の再生産によって固定化されていく。古い経済成長を未だに期待して大樹にぶら下がることしか能が無い旧世代も活躍している。

この問題の解決は、成長性の高い産業の創出と、貧困を世代間で受け継がない教育、によってしか解決できないと思われますが、その両方にAIの発展は寄与するのではないかと思います。


エンジニアチーム

社員の育成、成長というのはエンジニア組織であれば最大のテーマで、創れるエンジニアをいかに増やすかをテーマにRailsやSwiftの研修を2016年初頭から行った覚えがあります。

単なる作業者ではなく、その一歩上のエンジニアを目指しましょうということがポイント。出題は、ベーシックなアプリ開発や、超簡単だけど曖昧な問題だったりするわけですが、コードを見ると、何をどう考えて、どういうロジックで実現したか、というスキルや仮説思考が丸わかりなので採点も面白かったですね。

これまで色々と人を見てきて、エンジニアスキルに限らず、ビジネスパーソンとしての能力が成長する人、しない人の違いについてはこれが答えなんじゃないのというのがあって、それはダニングクルーガー効果の排除が出来るかどうか。
 1.能力の低い人は自分のレベルを正しく評価できない。
 2.能力の低い人は他人のスキルも正しく評価できない。 
 3.だから、能力の低い人は自分を過大評価する。

自己の「愚かしさ」を認識するメタ認知ができないことによって生じると言われますが、結局、能力が低い人は自分の状況を客観的に理解する能力さえないという、ごくごくシンプルな話に行き着くわけです。

なので、やはり知における謙虚さというのは大切で、自分はもうこれくらい出来るからすごい、学ぶべきことはない、なんてことを思ってしまうとその人の人生における限界が決まってしまう。しかも本人が自分はレベルが高いとか平均以上だとかと勘違いしているだけなので、そういった差別化ができない労働者はいくらでも他の人で代替が可能、つまりバリュー(価値)がでない人になっていく。

そういう意味で、Google USのチーム作りは人間の特性をよく分かってて、すごいですね。Googleで大切にしている精神としてTeam Geekという本に書いてあるのは、

* 謙虚(Humility)
* 尊敬(Respect)
* 信頼(Trust)

の3つが大切だとしていて、本当にその通りだと思います。謙虚に学び、仲間を信頼する。傲慢で他者を攻撃するような人は、人間として付き合うべき人でもないですから。

あと、真理をついてるなというのが「無能で十分説明されることに悪意を見出すな」。人が集まれば様々なことが起こるものですが、この一言で「ああ、そうか」と納得して丸く収まってしまうという。こういう現場レベルで示唆に富んだ視点が多いので、機会があればこの本は是非読んでみてください。

Team Geek


WD

今年最大のインパクトだったのは、ニーガンですね。ウォーキングデッド・シーズン7ですね。最凶なニーガンの登場で、過去最悪の敵だった「総督」(ガバナー)がものすごい良い人に思えてくる。



2017年はAIをはじめとしたテクノロジーをさらに追究しつつ、ウォーキングデッドで腐った体で殺そうと迫ってくるゾンビよりも人間の強欲のほうが怖いと確認しつつ、色々と今まで通り進めていきたいと思います。

皆様、よいお年をお迎えください。





↑このページのトップヘ