2018-01-27
■AMDのGPUで深層学習もバッチリできることがわかった 


連日の講演と取材対応とで、ここんとこ物理的に身体がオフィスにいられる機会が少なくて、せっかくVertex.aiの人たちが実装してくれたConv2D_transposeを試すことができなかったのだが、バグ報告したら、なぜかMacでは新しいバージョンがうまくビルドできなくてその原因を調べているとのこと。
とはいえ、UbuntuのAMD上のOpenCLで動けば問題ないのでとりあえず動かしてみたところ・・・バンザイ!大成功!
というわけで、NVIDIAのチップにかわってAMDのチップでも深層学習が実用的に動かせることがわかりましたのでお知らせいたします。
いろんな実装を動かしたいガチの研究者とかkerasではやりたいことができないという方以外はAMDでもぜんぜん問題ありません。
ちなみにちょっと論文の実装をgithubから落としてきて試したいけどNVIDIAの売り上げに貢献するのは嫌だ、という人は都度課金のこれ(https://www.floydhub.com)を使うと良いみたいです。
Vertex.aiの凄いところは単にOpenCLでTensorFlowのエミュレート(というかKerasのバックエンドのエミュレート)をしてるだけでなく、中間言語であるTile Codeを介することで、相手のアーキテクチャにあわせて異なるOpenCLコードを吐けることです。Tile Codeのプログラミング自体もけっこう興味深いので挑戦してみたい気がします(Tile codeについてはここ https://github.com/plaidml/plaidml/wiki/PlaidML-Op-Tutorial)。
だからHIP-TensorFlowみたいにCPUより遅いOpenCLみたいなことになるわけでもなく、ただ普通に速い。
逆に言えばMXNetとかChainerとかもTile Codeで書けば普通に速くできるわけで。パッと見たところ、TileCodeは動的にネットが変更されてもうまく動きそうな感じなので、TensorFlowが動的グラフに対応したことだし、kerasも動的グラフに対応したら自動的に対応してくれるといいな。ただ、いまのところ動的グラフがないと絶対実装できないもの、というのがあんまり例がないんだよね。
あ、あとはまだRNNに対応してない。これは使う人少なくないと思うのでRNNの対応は急いで欲しいな
ちなみにAMDのドライバのセットアップはNVIDIAのCUDAに比べると10000%くらい簡単です。
いろいろ選択肢があるので最初は混乱するけど、基本的には AMDGPUPROをダウンロードしてきてインストールするだけ。
あとはplaidmlをインストールしてplaidml-setup動かせば動きます。
混乱して野良OpenCLドライバのCloverとか入れるとおかしくなるので、間違って入れてしまった人はリムーブしておきましょう。
何が入っているかはclinfoで確認できます。Cloverと出てたらicdとかをリムーブ。
とりあえず以前は動かなかったACGANが動いたので、いろんなネットを一通り検証してみます
- 135 https://www.google.co.jp/
- 98 https://t.co/KGbConN00A
- 39 https://www.facebook.com/
- 35 http://search.yahoo.co.jp/
- 13 http://www.google.co.uk/url?sa=t&source=web&cd=1
- 11 http://m.facebook.com
- 8 https://t.co/KGbConN00A?amp=1
- 8 https://www.bing.com/
- 8 https://www.google.com/
- 6 https://t.co/hzS04gLUSc