algonote

There's More Than One Way To Do It

ChainerMNによる機械学習の高速化勉強会まとめ&感想 #ChainerMN

ChainerMNによる機械学習の高速化勉強会に参加しました。

分散深層学習とChainerMNについて by PFN 鈴木さん

ChainerMNのアーキテクチャーの説明からインストールでのはまりどころ、15分論文での実例までの解説。

分散深層学習にはData ParallelとModel Parallelがあり、Data Parallelには同期型と非同期型がある。スループットのみを見ると非同期の方が良さそうだがStale gradientsの問題あり。今年のImageNet優勝チームもSyncを使用している。

インストール時の注意点としてNCCLはNVIDIAのサイトからダウンロードが必要、sshはパスワードなしにする必要がある。他はStep-by-Step Troubleshootingを参照。なお、データセットが小さすぎてMNISTではMN化で速くはならない。プロファイルも大事。

ImageNetを1024GPUで学習させるに際し、論文に未掲載の工夫としてPureNcclCommunicatorで1024GPUを利用、Chainer3.1から入ったConvolutionを活用、All-Reduceの部分のみFP16化などをしている。

さくらインターネット高火力コンピューティング基盤でChainerMNを試す by フィックスターズ 吉藤さん

さくらのクラウドの時間課金インスタンスでChainerMNを試した話。

さくらは時間課金ができ日本語ヘルプが充実している。さくらのデフォルトのUbuntu 14だとCuda 9が使えないので16にする必要がある。pyenvは.bashrcの先頭に追加、OpenMPIをCUDA Aware APIありで入れる、aptバージョンを消すのがおすすめ。

公称10Gbpsだったが、試した環境では0.04GbpsしかでずChainerMN化で速くならなかった。プロファイル結果を見るとAllReduceに99%処理時間をとられている。現在サポートに問い合わせ中。

感想

ChainerMN自体の説明はYouTubeにあがっている秋葉さんのプレゼントとほぼ同じ。最近の動向や1024GPUで学習させた論文の話を聞けたのはよかった。論文未掲載の工夫って言うのはどうなんですかね?再現性とは、、とツッコミ受けそうですが。

話聞いた限りだとDevOps 周りはまだまだ手作業。理想を言えばKubernetesのコマンド一つ叩けば環境構築完了としたいところ。PFNはMicrosoftと組んでいるようなのでAzureに期待。

仮想通貨全盛のご時世、NEUROMATIONのICOの話を聞くと、全世界のGPUマシンに処理分散させて高速化させたいところ。ただ、両者の話ともAllReduceの処理時間が肝となっていて、なかなか厳しそう。

5Gの最大通信速度、10Gbpsみたいなので、2020年になればワンチャンある?通信量バカ高くなりそうですが。