狠狠撸

狠狠撸Share a Scribd company logo
深層学習フレームワークと
分散GPU処理の比較
法政大学 松岡 佑磨
自己紹介
松岡 佑磨
法政大学 理工学研究科 M1
? 彌冨研究室[1]
? 画像処理
? 深層学習
全脳アーキテクチャ若手の会[2] 副代表
1年ぶり[3]のLTで緊張しています!
[1] http://iyatomi-lab.info/front.html
[2] http://wbawakate.jp/
[3] /YumaMatsuoka/auto-encoder
普段はChainerを使っています
http://chainer.org/
なので...
Chainerで分散GPU処理を
やってみた!
TFUG_yuma_matsuoka__distributed_GPU
ここ...TensorFlow User Groupだろ
なので...
Chainerで分散GPU処理を
やってみた!
目的に合う深層学習フレームワークは?
Posted by Silicon Valley Data Science LLC
https://www.svds.com/getting-started-deep-learning/
ホットなフレームワークはTensorflow???
https://twitter.com/fchollet
人はなぜ
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を検証し、好きになりたい
?懇親会で専門のみなさんからご教授いただきたいです

More Related Content

TFUG_yuma_matsuoka__distributed_GPU