舩木俊介「かつて未来とよばれたソサエティ」

スーパーソフトウエア東京オフィス代表&キッズラインCTO

今週は美味しいものを食べる機会が多くて、楽しい話をしてお酒を飲んでの1週間。

西麻布のCotで大胸筋の筋トレの成果を自慢したり(本当はちょっと違う)、 IMG_0919_2
恵比寿の和食で、日本酒を飲みながらアントニオ猪木のモノマネを見たり(本人はそのつもり無い)、 IMG_0955_2
ウェスティンの龍天門で、2015年「働きがいのある会社」ランキングで第2位に選ばれた企業の社長さんにすごい話を聞いたり、ウェアラブルの未来について話したり、 IMG_0970_2
と、和洋中バランスの良い健康的な食生活。

色々食べた中でも、このトリュフパイ。これほど贅沢なトリュフの食べ方があったのか、と驚くほどの芳醇な香りと、美味しさ。ただ、一番美味しかったのは、

IMG_0857_2
なんかに雲丹がのったやつ。これが美味い。水筒にこれを目一杯詰めて持ち歩きたいくらい美味かった。雲丹と書いたけど、塩漬けしたものを雲丹と書くことが多いそうで、生のものは海胆か海栗ですね。暑い夏は、海胆と冷酒で過ごしたい。

IMG_0865_2

Googleの人工知能DeepDreamは、LSDで幻覚を見てるような画像、常軌を逸した画像、の作成機というわけではなく、実は技術的に大きな進化だ。人工知能が「特徴を自ら認識」するというところがすごいところ。我々人間が脳で行っている認識するという神経細胞メカニズムを、これだけ機械が模倣できたことは今までにないと思う。人工知能が自分が知ってるものをベースにして、提示された画像はこんな風に見えるな、という感じで、融合した結果画像を生成していくわけだ。

しかもgithubでソースが公開されているので、環境構築ができれば誰でも使うことができる。さっそく画像をDeepDreamに見せてみたら、

国宝松本城は、周りになんか車のような物体が出てきて、天守もキリスト教伝来みたいな状態に。

松本城 松本城DeepDream

去年イタリアに行ったときに撮ったフィレンツェの美術館の写真は、ことごとくワンちゃんの顔に。

美術館 美術館DeepDream

安藤広重の東海道五十三次・日本橋は、人通り増えた感が。

東海道五十三次 東海道五十三次DeepDream

いくつかDeepDreamしてみたのを動画にまとめるとこういう感じ。悪夢。



DeepDreamを動かしてみる

DeepDreamを含めて、Deep Learningでは大量の計算コストが発生するので、CPUではなくGPUで計算させるのが一般的だ。さらにそのGPUも、NvidiaがCUDAというハイパフォーマンス環境を提供しているので、Nvidia製の必要がある。また、Deep Learningの画像処理といえばCaffeというフレームワークがスタンダードになっている。

条件が色々あってハードウェアから揃えるのは面倒、そういう時に頼りになるのがAWS。AWSのAMIで提供されている環境があるのでそれを使えばすぐにDeep Learningを始められる。

参考URL:CUDA 6.5 on AWS GPU Instance Running Ubuntu 14.04Running Caffe on AWS GPU Instance via Docker。(単純に実行してみたいというだけならWeb interface for Google Deep Dreamもある。)


AWSインスタンス作成

ずっと使い続けるものでなければ、コストが安いスポットインスタンスで十分だろう。スポットインスタンスとは、AWSサーバリソースを入札形式で購入できるのでオンデマンドに比べて安く使える仕組み。ただし、需給バランスが変わって入札価格より流通価格が上回ったらすぐにターミネートされる。

インフラは再利用性も考えてPackerでスクリプトから作りたいところだけど、Packerスクリプトでspot_priceを設定するとエラーが出て進まなかったのでここではAWSマネジメントコンソールから作成する。

必要なスペックは、
・ami-2cbf3e44 for US-East または ami-c38babf3 for US-West
・Ubuntu Server 14.04 LTS (HVM) – CUDA 6.5
・インスタンスタイプはGPUを使うので、g2.2xlarge
・ストレージは20GB
この情報をもとに構築していく。

AMIが提供されているのが米国東部か米国西部なので、AWSマネジメントコンソールで米国東部(バージニア北部)にリージョン設定。EC2で「スポットインスタンスのリクエスト」をクリック。AMI選択で「ami-2cbf3e44」を検索すると、イメージがあるのでそれを選択。
dd_aws1

インスタンスタイプは「g2.2xlarge」を選択。g2.2xlargeは1,536CUDAコアを搭載してるらしい。
dd_aws2

スポットインスタンスの入札価格を設定する。今回は「$0.08/h」にしてみた。
dd_aws3

ストレージ構成は、/dev/sda1に8G以上、/dev/sdbに20G。ライブラリの展開等で必要なので、/dev/sda1は20Gくらい多めにとっておいた方がいい。
dd_aws4

しばらく待つと落札されて、通常通りインスタンスが使えるようになるので、pemキーを使ってSSHログインする。

CUDAが正しくインストールされているかの検証

$ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
$ make
$ ./deviceQuery

を実行して、

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GRID K520
Result = PASS

と表示されればOK。


dockerインストール

CaffeがGPUで動くようにdockerを設定しておく。

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ sudo sh -c "echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install lxc-docker
$ DOCKER_NVIDIA_DEVICES="--device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidiactl:/dev/nvidiactl --device /dev/nvidia-uvm:/dev/nvidia-uvm"
$ sudo docker run -v /tmp:/opt/caffe/misc -ti $DOCKER_NVIDIA_DEVICES tleyden5iwx/caffe-gpu-master /bin/bash

わずか20分くらいでDeep Learningに使えるマシンが完成。すごい時代だ。docker runした後は、Caffeがインストールされたコンテナ環境での作業になるので、/tmpをファイル転送のためにマウントしてある。


DeepDream実行

DeepDreamを実行するために必要なものは、スクリプトとターゲット画像の2つだけ。Googleが公開しているスクリプトはipython notebook形式で、解説なども含まれているためpythonスクリプトだけにしたものを使う。GPUで処理するためにcaffe.set_mode_gpu()を追加してある。

このスクリプトとtarget.jpgを/tmpにSFTPすれば、/opt/caffe/miscで使うことが出来るようになる。Googleのドキュメントに従ってモデルをダウンロード。

$ cd /opt/caffe/models/bvlc_googlenet
$ wget http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel

DeepDreamを実行する。

$ cd /opt/caffe/misc
$ python deepdream.py

GPUなので次々と処理が進んでいき、frames/にブッとんだ画像が格納される。

deepdream deepdream

今日は朝から予定がぎっしり。午前中は求人記事の取材。うちの凄腕人事のY巻さんが、上手くアレンジしてくれてさすが。いい記事になりそうです。

いままで会社で起こった色んなエピソードを話してたら、4次元的に盛り上がった。エンジニアを空間的に再構築する話をしたかな。どうだっけな。自社メディアのタイアップで、有名なハゲキャラクターをどうしても使いたかったけど、ブランドイメージの問題で使えなかったっていう仕事の話はしたと思う。

なぜかわからないけど、みんなでピース。来週金曜に掲載される予定です。

IMGP5928_2
その後、社員がクラウドワークスさんに行くと言ってたので、ついていってみた。オフィス綺麗だなー。青い。

IMG_0698_2
次の打ち合わせで、六本木ヒルズへ行って、その後はいつも行く「RIGOLETTO」でマウイ・モカを飲みながら休憩。

麻布の焼肉ジャンボでご飯。息止まるくらい笑った。 image

↑このページのトップヘ