TFUG_yuma_matsuoka__distributed_GPU
-
Upload
yumamatsuoka -
Category
Engineering
-
view
890 -
download
1
Transcript of TFUG_yuma_matsuoka__distributed_GPU
深層学習フレームワークと分散GPU処理の比較
法政大学 松岡 佑磨
自己紹介
松岡 佑磨
法政大学 理工学研究科 M1
• 彌冨研究室[1]
• 画像処理
• 深層学習
全脳アーキテクチャ若手の会[2] 副代表
1年ぶり[3]のLTで緊張しています![1] http://iyatomi-lab.info/front.html[2] http://wbawakate.jp/[3] https://www.slideshare.net/YumaMatsuoka/auto-encoder
なので...Chainerで分散GPU処理をやってみた!
ここ...TensorFlow User Groupだろ
なので...Chainerで分散GPU処理をやってみた!
目的に合う深層学習フレームワークは?
Posted by Silicon Valley Data Science LLC
https://www.svds.com/getting-started-deep-learning/
人はなぜTensorFlowを使うのか
分散GPU処理における複数の深層学習フレームワークの比較
今日話す内容
①使用した深層学習フレームワークと実装について
• Chainer(PFN)
• TensorFlow(Google)
• MXNet(Amazon)
• CNTK(Microsoft)
• Paddle(Baidu)
②フレームワーク間の結果の比較
今日話す内容
①使用した深層学習フレームワークと実装について
• Chainer(PFN)
• TensorFlow(Google)
• MXNet(Amazon)
• CNTK(Microsoft)
• Paddle(Baidu)
②フレームワーク間の結果の比較
Tensorflowとのかかわり...
2015年12月23日、例のチュートリアル[4]を写経
2016年2月8日、女の子のかわいさの定量化
2016年2月10日、TensorFlow勉強会(2)[5]に参加
2017年3月 TFの分散GPU処理を書こうとして洗礼を受ける
2017年4月、(NEW!)TFUG#4に登壇
[4] https://www.tensorflow.org/get_started/mnist/beginners
[5] https://connpass.com/event/24265/
チュートリアルとクリスマスデート♡
女の子のかわいさの定量化に挑戦!
• 青い本[6]でConvolutional Neural Network(CNN)を勉強
• Google画像検索で拾った
女性の顔画像3000枚に
1~100点を主観で
ラベル付け
• 層構造を変えて
学習誤差の比較
• TensorFlowムズイ...!
[6]岡谷, 講談社, ISBN:4061529021深層学習(機械学習プロフェッショナルシリーズ), 2015.
1年前にはここに立つとは思っていなかった
上司ご乱心(TensorFlowを使えだと...)
2017年3月某日某所
Tensorflowを使って分散GPU処理コード作成を試みる
⇒実装力がなさすぎて洗礼を受ける
1年以上の付き合いだが
Tensorflowだけは好きになれない!書けない!
⇒BackendがTensorflowのKerasを使用
今日話す内容
①使用した深層学習フレームワークと実装について
• Chainer(PFN, http://docs.chainer.org/en/latest/)
• TensorFlow(Google, https://www.tensorflow.org/)
⇒Keras, TF Backend(François Cholletsさん, https://keras.io/ja/)
• MXNet(Amazon, http://mxnet.io/)
• CNTK(Microsoft, https://github.com/Microsoft/CNTK/wiki)
• Paddle(Baidu, https://github.com/PaddlePaddle/Paddle/wiki)
②フレームワーク間の結果の比較
GPUによる並列処理について
GPUごとに分割したbatchの誤差を計算マージした誤差を1つのGPUでBackprop
実験環境
• Computer• さくらインターネット高火力
NVIDIA TitanX(PASCAL)×4
• TitanX(900series)×2
• OS: Ubuntu14.04
• Python: anaconda3-2.5.0
• CUDA environment• CUDA 8.0
• cudnn 5.0
[高火力]https://www.sakura.ad.jp/koukaryoku/[高火力の使い方]http://knowledge.sakura.ad.jp/knowledge/8363/
1時間300円程度で格安!!!インスタンスを作成している時間で課金される
実験環境
• Computer• さくらインターネット高火力
NVIDIA TitanX(PASCAL)×4
• TitanX(900series)×2
• OS: Ubuntu14.04
• Python: anaconda3-2.5.0
• CUDA environment• CUDA 8.0
• cudnn 5.0
[高火力]https://www.sakura.ad.jp/koukaryoku/[高火力の使い方]http://knowledge.sakura.ad.jp/knowledge/8363/
課金を止めるごとにCUDA環境を作るのがめんどくさい⇒今回は使用せず
実験環境
• Computer• さくらインターネット高火力
NVIDIA TitanX(PASCAL)×4
• TitanX(900series)×2
• OS: Ubuntu14.04
• Python: anaconda3-2.5.0
• CUDA environment• CUDA 8.0
• cudnn 5.0
[セットアップの作業ログ]
https://gist.github.com/yumatsuoka/d8a31742c572f0c20229dc7847a8c08b
このTitanXの環境を使いたかった...!
実験環境
使用時のフレームワークのバージョン
• Chainer: 1.23.0
• TensorFlow: tensorflow-gpu==1.0.1
• Keras: 2.0.3
• MXNet: mxnet-cu80==0.9.5
• CNTK: 2.0.beta15.0
• Paddle: 0.9.0
実験環境
使用したデータセット:CIFAR10
使用したCNNのモデル:All Convolutional Net[7]
• CNNのプーリング層、全結合層を畳込み層で代用
• VGG netほど大きくない
• batchsize=100, epoch=100, Optimizer=Adam
[7]https://arxiv.org/abs/1412.6806
今日話す内容
①使用した深層学習フレームワークと実装について
• Chainer(PFN)
• Keras-TF Backend(François Cholletsさん)
• MXNet(Amazon)
• CNTK(Microsoft)
• Paddle(Baidu)
②フレームワーク間の結果の比較
Chainer
モダンに作られており”ヒト”が
記述すべき内容が少なくて済む
NNの派生のadversarial training,
triplet networkなども実装可能
コードや情報がネットにまとまっている
http://docs.chainer.org/en/latest/
Chainer
インストール
• pip install chainer
分散GPU処理に必要なこと
• StanderedUpdaterをParallelUpdaterに変更
• Chainer=2.0では大きく変わる?
今日話す内容
①使用した深層学習フレームワークと実装について
• Chainer(PFN)
• Keras-TF Backend(François Cholletsさん)
• MXNet(Amazon)
• CNTK(Microsoft)
• Paddle(Baidu)
②フレームワーク間の結果の比較
Keras
とても書き易い
TensorFlowのWrapperとして使用可能
ExampleとReferenceが充実
TeosorFlowの並列処理の恩恵を
受けモダンに実装できる?
https://keras.io/ja/
Keras
インストール
• pip install keras
分散GPU処理に必要なこと
• 30行ほど分散用のコードを書く必要あり
今日話す内容
①使用した深層学習フレームワークと実装について
• Chainer(PFN)
• Keras-TF Backend(François Cholletsさん)
• MXNet(Amazon)
• CNTK(Microsoft)
• Paddle(Baidu)
②フレームワーク間の結果の比較
MXNet
CNN、LSTM、DQNなど柔軟に書きやすい(らしい)
モダンで書きやすい
GPUの並列化がとても簡単
複数ノード(マシン)を通したGPU処理も簡単に記述可能
Pythonだけでなく、R、Scala、Julia、C++で使用可能
documment、exampleがしっかりしている
http://mxnet.io
MXNet
インストール
• pip install mxnet-cu80; (Pre-built Binaries) [8]
• ソースコードからのインストール[9]をオススメ
• 4月18日時点でcudnn6.0には対応していない?
コードの実装について
• MNIST使ったTutorials[10]をオススメ
• 公式repositoryにexampleがたくさん[8] http://mxnet.io/get_started/index.html[9] http://mxnet.io/get_started/ubuntu_setup.html[10] http://mxnet.io/tutorials/python/mnist.html
今日話す内容
①使用した深層学習フレームワークと実装について
• Chainer(PFN)
• Keras-TF Backend(François Cholletsさん)
• MXNet(Amazon)
• CNTK(Microsoft)
• Paddle(Baidu)
②フレームワーク間の結果の比較
CNTK
分散GPU処理でTensorFlowよりも高いスケーラビリティ
をもつらしい[11]
コードを書く量が多い
インストール[12]
• pip install https://cntk.ai/PythonWheel/GPU/cntk-2.0.beta15.0-cp35-cp35m-linux_x86_64.whl
• Python3.6には未対応
[11] http://qiita.com/usuyama/items/bb7600ab7cfc1f5b8be3[12] https://github.com/Microsoft/CNTK/wiki/Setup-CNTK-on-your-machine
今日話す内容
①使用した深層学習フレームワークと実装について
• Chainer(PFN)
• Keras-TF Backend(François Cholletsさん)
• MXNet(Amazon)
• CNTK(Microsoft)
• Paddle(Baidu)
②フレームワーク間の結果の比較
Paddle(PaddlePaddle)
インストール[13]
• apt-get install gdebi
• wget https://github.com/PaddlePaddle/Paddle/releases/dowonload/v0.9.0/paddle-
0.9.0-gpu-ubuntu14.04.deb
• gdebi paddle-0.9.0-gpu0ubuntu14.04.deb
Python2, Ubuntu14.04でしか動かない?
コードはモダンで書き易い[14]
[13]http://www.paddlepaddle.org/doc/build/build_from_source.html[14]http://book.paddlepaddle.org/03.image_classification/index.en.html
今日話す内容
①使用した深層学習フレームワークと実装について
• Chainer(PFN)
• Keras-TF Backend(François Cholletsさん)
• MXNet(Amazon)
• CNTK(Microsoft)
• Paddle(Baidu)
②フレームワーク間の結果の比較
10,000updateした時の学習時間
GPU1枚に対する2枚並列の経過時間の割合chainer: 2.2倍、MXNet: 0.77倍、Keras: 0.77倍
Kerasの結果のみTitanX(Pascal)を使用
異なるGPU環境でChainerを検証
※GTX980×2の環境GPUを2枚に並列にした時の経過時間の割合 chainer: 0.67倍
おれ選、深層学習フレームワークの比較表
Good... +++, Not Bad... ++, bad... +
TutorialとExample
書きやすさ 分散GPUコードの書き易さ
ネット上の情報量
Chainer ++ +++ +++ ++
TensorFlow ++ + + +++
Keras +++ +++ ++ ++
MXNet +++ +++ +++ +
CNTK ++ + + +
Paddle + ++ + +
まとめ
分散GPU処理のスケーラビリティ
⇒MXNet
コードの書きやすさ
⇒Chainer、Keras、MXNet
ピュアなTensorflowを検証し、好きになりたい
⇒懇親会で専門のみなさんからご教授いただきたいです