SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
LeapMind Inc.
Infrastructure Division Leader
Hideaki Masuda
Tensorflow分散学習
Horovodによる分散学習の実装方法と解説
Contents
1. イントロダクション
2. Deep Learningにおける分散学習
3. Tensorflowで分散学習 Part1 (Distributed Tensorflow)
4. Tensorflowで分散学習 Part2 (Horovod)
5. チュートリアル:実際にHorovodを実行してみよう
6. まとめ
7. あとがき 分散学習の世界へようこそ
1. イントロダクション
LeapMind Inc. © 2018
自己紹介
LeapMind Inc.
Infrastructure Division
増田 英晃 Hideaki MASUDA
大手SIerにて大規模システムの方式基盤系SEとして従事後、
LeapMindにジョイン。
組込みDeep Learningモデル構築ソリューション「DeLTA-Lite」の開発や
社内のDeep Learning研究環境の構築を担当。
学習性能改善、運用効率化のために分散学習基盤の導入や
ボトルネック分析などもしています。
LeapMind Inc. © 2018
本日のゴール
Horovod
を利用した分散学習を
自身のTensorflowの学習コードに対して
実装できるようになってもらう
2. Deep Learningにおける分散学習
LeapMind Inc. © 2018
Deep Learningをやっていてよくある悩み
仮説 実験 結果
仮説
(更新)
実験
(再)
の繰り返し
実験(学習)待ちが多い
学習早く終わらないかなー
LeapMind Inc. © 2018
学習を早くするには?
注:ここではGPU性能のみに言及していますが
実際はGPUではない部分がボトルネックになっていて
プログラミングの仕方次第で改善の余地がある場合が多いです(後述)
今回は分散学習の紹介のため問題を単純化しています
スケールアウト
複数のGPUを使う
スケールアップ
GPUを
良いものに変える
単一GPUには限界がある!
どうやったら複数GPUで
学習ができるのだろうか?
1
2
LeapMind Inc. © 2018
分散学習の手法について
Data parallel vs Model parallel
Model parallelはモデルの各パートにおいてどのデバイスで計算させるかを
決定しなければならないため、モデル構成への依存度や実装難易度が高い
Data parallelの方がシンプル に実装できる
Data parallel : Split data per worker Model parallel : Split model per worker
LeapMind Inc. © 2018
分散学習の手法について
asyncの方がスループット(step/sec)では有利
しかし、モデルの更新が非同期に行われるため、古いパラメータでの学習結果でモデルの更新
が行われ、精度が劣化する場合がある(Gradient Staleness)
Parameter
Server
sync : 各プロセスは指定されたタイミングで同期をとる
モデルの状態は常に全プロセスで等しい
async : 各プロセスは非同期にモデルを更新、取得する
プロセス間でモデルの状態に世代のズレが生じる
Pull and Push
parameters
Sync
parameters
同期型(sync) vs 非同期型(async)
LeapMind Inc. © 2018
分散学習を導入する目的
精度の高いモデル
を
より短い学習時間
で手に入れたい
LeapMind Inc. © 2018
Deep Learningにおける分散学習
スループットがよくても精度が出なければ
本末転倒である
LeapMind Inc. © 2018
Deep Learningにおける分散学習
本日紹介するHorovodは
Data parallel + 同期型(sync)
精度影響が少なく
学習を高速化できる
LeapMind Inc. © 2018
Deep Learningにおける分散学習
分散手法をシンプルにすることで
実装を簡素にでき
実験の考察もしやすい
LeapMind Inc. © 2018
どのぐらい高速化できるの?
分散数をNとした場合の性能向上率Sはアムダールの法則より
S(N) = 1/((1-P) + P/N)
と表せる、ここでPは並列化できない処理の割合を表していて
P=0のときS=1で最大、つまりN個に分散した場合、学習時間が1/Nになる
上記をみるにS=0.8〜0.9以上であるため、特に数〜数十程度の分散学習では
十分にP(並列化できない処理)を少なくすることが現実的であり
分散数Nのとき学習時間を約1/Nにできる
https://github.com/uber/horovod/blob/master/README.md
3. Tensorflowで分散学習 Part1
(Distributed Tensorflow)
LeapMind Inc. © 2018
What is Distributed Tensorflow
Tensorflow公式の分散処理機能
Master/Worker/Parameter Server構造
各計算グラフ、変数ごとに処理するノードやデバイス(cpu/gpu)を指定可能
Data Parallel/Model Parallel、同期/非同期処理にも対応し、実装の柔軟性が高い
Fault tolerance機能などもあり、機能ではなく分散基盤と言った方が正しそう
https://cloudplatform-jp.googleblog.com/2017/09/distributed-TensorFlow-and-the-hidden-layers-of-engineering-work.html
LeapMind Inc. © 2018
Getting Started - Distributed Tensorflow!
Getting Started - Distributed Tensorflow
1. “Create a tf.train.ClusterSpec that describes all of the tasks in the cluster. This should be the same for each task.”
tf.train.ClusterSpecにクラスター構成を記載しましょう
2. “Create a tf.train.Server, passing the tf.train.ClusterSpec to the constructor, and identifying the local task with a job
name and task index.”
tf.train.Serverにjob名とタスク番号を付与しましょう
3. “Specifying distributed devices in your model”
モデル定義にtf.deviceを利用してどのノード(jobとtask)のどのデバイス(CPU or GPU)で計
算を行うか計算グラフ毎に決めて記述しましょう
・
・
・
新用語達(“Client, Cluster, Job, Master service, Task, Tensorflow Server, Worker service”)
https://www.tensorflow.org/deploy/distributed
...学習コスト高め
4. Tensorflowで分散学習 Part2
(Horovod)
LeapMind Inc. © 2018
What is Horovod
Uberが開発しているOSSの分散学習用フレームワーク
Tensorflow, Keras, Pytorchに対応
https://github.com/uber/horovod
LeapMind Inc. © 2018
Horovodプロジェクトの目的
単一GPUで動く(Tensorflowの)プログラムを利用し、なるべく
簡単に複数GPUでの
高速な分散学習を
実現できるようにすること
上記の目的を実現するための2つの指標
どれだけ早く学習できるか
プログラムを
どれだけ変更する必要があるか
学習実行の簡単さ
LeapMind Inc. © 2018
なんでHorovod?
簡単に実装できる
既存コードに下記を追加するだけ
1. Horovod初期化
2. GPU指定(1プロセスに1GPU)
3. Learning Rateを分散数でスケール
4. optimizerをオーバーライド
5. 学習前のGlobal VariablesのSync設定
6. checkpointを特定ノードのみ保存するように設定
https://github.com/uber/horovod/blob/master/README.md
LeapMind Inc. © 2018
Distributed Tensorflow
事前準備
分散数や使用するサーバの構成に応
じてClusterやtask,jobを都度定義
Horovod
事前準備
MPIとNCCLをインストール
(作業は一度のみ)
実行
各ノードで定義に従ったコマンドを各プ
ロセス毎に実行(例はasync)
# On ps0.example.com:
$ python trainer.py 
--ps_hosts=ps0.example.com:2222,ps1.example.com:2222 
--worker_hosts=worker0.example.com:2222,worker1.example.com:2222 
--job_name=ps --task_index=0
# On ps1.example.com:
$ python trainer.py 
--ps_hosts=ps0.example.com:2222,ps1.example.com:2222 
--worker_hosts=worker0.example.com:2222,worker1.example.com:2222 
--job_name=ps --task_index=1
# On worker0.example.com:
$ python trainer.py 
--ps_hosts=ps0.example.com:2222,ps1.example.com:2222 
--worker_hosts=worker0.example.com:2222,worker1.example.com:2222 
--job_name=worker --task_index=0
# On worker1.example.com:
$ python trainer.py 
--ps_hosts=ps0.example.com:2222,ps1.example.com:2222 
--worker_hosts=worker0.example.com:2222,worker1.example.com:2222 
--job_name=worker --task_index=1
実行
MPIがインストール済みの適当なノー
ドからコマンドを実行
$ mpirun -np 16 
-H server1:4,server2:4,server3:4,server4:4 
[some mpi options...] 
python train.py
実行時に分散対象のノードと
プロセス数を指定できる
なんでHorovod?
簡単に実行できる
LeapMind Inc. © 2018
https://github.com/uber/horovod/tree/v0.12.1
なんでHorovod?
学習が早い
スケールしても効率が落ちにくい
LeapMind Inc. © 2018
Horovodの分散学習手法
Data parallel + 同期型(sync)
同一モデル x 別データで計算された勾配のみを同期、
全ワーカーの平均でモデルを更新
https://eng.uber.com/horovod/
LeapMind Inc. © 2018
Data parallel + 同期型(sync)
学習率をワーカー数に応じてスケールさせる
学習率をバッチサイズ(全ワーカーの合計)に比例してスケールさせると
精度を落とさずにに大きいバッチサイズでのトレーニングが可能
(256GPUでImageNetを1hourで学習)
Goyal, P et al. (2017). Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour (Facebook)
Horovodの分散学習手法
LeapMind Inc. © 2018
ImageNet学習世界最速のChainerMNを利用した学習でも同様に
学習率をワーカー数に比例してスケールさせている
GoyalのTesla P100 256GPUで1hourに対して1024GPUで15minutesを達成
RMSPropからmomentum SGDに徐々に切り替える手法を使用
Akiba, T et al. (2017). Extremely Large Minibatch SGD: Training ResNet-50 on ImageNet in 15 Minutes (Preferred Networks)
Data parallel + 同期型(sync)
学習率をワーカー数に応じてスケールさせる
Horovodの分散学習手法
LeapMind Inc. © 2018
MPIをプロセス間通信に利用した
SPMD構成(Single Program Multiple Data)
全ワーカーは同一スクリプトで動き、個々の役割を意識しなくてよい
各ワーカーにはrank(一意のプロセス番号)が付与される
rankによるif分岐等でのみ指定ワーカーへの別処理を記述可能(モデル保存とか)
serverA
serverB
Interconnect
(Infiniband,Ethernet)
serverA or B or ….
$ mpirun -np 4 
-H serverA:2.serverB:2 
python train.py
python train.py (rank:0)
python train.py (rank:1)
python train.py (rank:2)
python train.py (rank:3)
Interconnect
(NVLINK,PCI-E)
Interconnect
(NVLINK,PCI-E)
Horovodのアーキテクチャ
LeapMind Inc. © 2018
設計がシンプル、分かりやすい
必要最低限の機能のみ
Horovodの強み
hvd.init() 初期化関数
hvd.size() プロセス数の合計を取得する関数
hvd.local_size() ノード内のプロセス数の合計を取得する関数
hvd.rank() プロセス番号(一意)を取得する関数
hvd.local_rank() プロセス番号(ノード内で一意)を取得する関数
hvd.broadcast_global_variables(root_rank)
tf.global_variables()で取得したオブジェクトをroot_rankで指定したプ
ロセスの値で全プロセスに対して上書き(broadcast)する関数
hvd.BroadcastGlobalVariablesHook
(tf.train.SessionRunHook)
broadcast_global_variables()を学習開始の初回のみ実行する
SessionRunHookクラス
DistributedOptimizer(tf.train.Optimizer)
optimizerのcompute_gradientsをオーバーライドしてallreduce処理
を追加するOptimizerクラス
シンプルゆえに自由度は少なめ。必要があれば、
mpi4py等の異なるMPIライブラリに対応しているため、独自処理も記述可能。
LeapMind Inc. © 2018
高速化への取り組み
Ring-all-reduce by NCCL v2
NCCL v2に対応しており、all-reduce処理に
Ring-all-reduceアルゴリズムを採用し通信を最適化して高速化を図っている
リング状の1方向通信+各ノードでの並列計算でall-reduceを実現
https://eng.uber.com/horovod/
Horovodの強み
LeapMind Inc. © 2018
高速化への取り組み
Tensor Fusion
複数のTensorオブジェクトをまとめて1回の
Ring-all-reduce処理に与えられるようにする仕組み
Tensor単位でRing-all-reduceを実行する場合
Tensorのサイズが大きくないと、一回の通信量が減ってしまい
効率が悪くなってしまう
上記を改善するために複数のTensorをFusion Bufferに格納し
それに対してRing-all-reduce処理を行うようにしている
Fusion Bufferのサイズは環境に応じて下記の変数でチューニング可能
環境変数:HOROVOD_FUSION_THRESHOLD(デフォルト64MB)
Horovodの強み
LeapMind Inc. © 2018
性能の分析(処理の可視化)ができる
JSON形式で処理のタイムラインを出力可能
chrome://tracingで読み込んで可視化できる
Horovodの強み
https://github.com/uber/horovod/blob/master/README.md
5. チュートリアル
実際にHorovodを実行してみよう
LeapMind Inc. © 2018
複数ノード
複数GPU
STEP 2
チュートリアルの前提条件
準備や性能改善の難易度は単一ノードでの実行のほうが簡単であるため
今回は単一ノードでの実行を前提として進めます
単一ノードでも例えばAWSのp3.16xlargeなどの8GPUを搭載したマシンを
利用して、学習を8倍近く高速にできる可能性があります
単一ノード
複数GPU
STEP 1
分散学習の実行環境は難易度的に大きく下記の2ステップに分かれます
LeapMind Inc. © 2018
チュートリアルの前提条件
また、今回は環境構築にDockerを利用し
GPU利用のためにnvidia-docker(v2)をインストールしています
上記の環境であれば、docker buildするだけですぐにhorovodを利用できます
変更元となる学習用コードは
Tensorflow tutorialのDeep MNIST for Expertsより
mnist_deep.py*をそのまま利用します
* : https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/mnist/mnist_deep.py
LeapMind Inc. © 2018
チュートリアル
tensorflow/examples/tutorials/mnist/mnist_deep.py
6. まとめ
LeapMind Inc. © 2018
6. まとめ
Deep Learningの分散学習について
日本語での情報が少なく
特にTensorflowを利用した分散学習についての情報は
あまり見つけられないのが現状です
今回の発表が、皆さんが分散学習を実装する際の
足がかりになれば幸いです
LeapMind Inc. © 2018
6. まとめ
ぜひHorovodを利用して
分散学習を
体験してみてください!
7. あとがき
分散学習の世界へようこそ
LeapMind Inc. © 2018
あとがき 分散学習の世界へようこそ
ここでは補足的に分散学習を実装する際に遭遇する
課題や疑問
について少し話そうと思います
LeapMind Inc. © 2018
あとがき 分散学習の世界へようこそ
GPU使用率を確認する
処理を可視化してボトルネックを確認する
GPU使用率をあげるためにはCPU処理やI/O処理を
キューや並列化を使って隠ぺいする必要があります
これだけでだいぶ早くなります
単純にバッチサイズを大きくすることでも
GPU処理の割合を増やせます
並列化しても早くならないなー
LeapMind Inc. © 2018
あとがき 分散学習の世界へようこそ
学習率上げるだけで早くなってた
なんてことも
特に導入した初めの頃は
到達精度も含めきちんと
単一GPUでの場合との比較
を実施した方が良いです
並列化したら早くなった!と思ったら
!
LeapMind Inc. © 2018
あとがき 分散学習の世界へようこそ
データセットを各ワーカー数で分割して配置した場合
データの偏りをなくすために
1epoch毎にシャッフル&配置し直すべき
しかし、実装上
horovodにそのような機能はない
データ数がバッチサイズに対して十分に大きければ
一部データが重複する可能性に目をつぶって
全ワーカーに全データ置いてしまうという手もあるが...
データセットを
各ワーカーにどう配置すべきか
LeapMind Inc. © 2018
あとがき 分散学習の世界へようこそ
分散学習の実装は日々進歩していて
いくつもの手法が実験されています
構成がシンプル + 精度劣化が少ない
という実験結果がある
という状態なので、今後は分かりません
NVIDIAのDGX-2では
16GPUを高速なインターコネクトで接続することで
1つのGPUとして使用できる(Model Parallel的に使う)ように
設計されており
巨大なモデルに対する学習ニーズもあったりします
DataParallel + syncが最強なの?
?
LeapMind Inc. © 2018
あとがき 分散学習の世界へようこそ
Horovodが最強なの?
!
ChainerMN Horovod
Distributed Tensorflow
ImageNetで最速を叩き出しています
新機能や手法をどんどん出しており
より柔軟かつ先進的です
構成はChainerMNと近いため
比較的同程度の結果が出せると
期待できます
汎用的であるがゆえに今回のような分散手法では性能を出しにくいですが
Model Parallel等では力を発揮しそうです
柔軟性があるため新しい手法を試すのがよさそうです
LeapMind Inc. © 2018 47
ご清聴ありがとうございました
masuda@leapmimd.io
http://leapmind.io/

Weitere ähnliche Inhalte

Was ist angesagt?

Ponanzaにおける強化学習とディープラーニングの応用
Ponanzaにおける強化学習とディープラーニングの応用Ponanzaにおける強化学習とディープラーニングの応用
Ponanzaにおける強化学習とディープラーニングの応用HEROZ-JAPAN
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道nishio
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門ryosuke-kojima
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...Deep Learning JP
 
強化学習 DQNからPPOまで
強化学習 DQNからPPOまで強化学習 DQNからPPOまで
強化学習 DQNからPPOまでharmonylab
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...NTT DATA Technology & Innovation
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxpsMITSUNARI Shigeo
 
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
A100 GPU 搭載! P4d インスタンス使いこなしのコツA100 GPU 搭載! P4d インスタンス使いこなしのコツ
A100 GPU 搭載! P4d インスタンス 使いこなしのコツKuninobu SaSaki
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術Preferred Networks
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説Hironori Washizaki
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Hiro H.
 
最近のDQN
最近のDQN最近のDQN
最近のDQNmooopan
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選Yusuke Uchida
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision TransformerYusuke Uchida
 
POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用Yasunori Ozaki
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門NVIDIA Japan
 

Was ist angesagt? (20)

Ponanzaにおける強化学習とディープラーニングの応用
Ponanzaにおける強化学習とディープラーニングの応用Ponanzaにおける強化学習とディープラーニングの応用
Ponanzaにおける強化学習とディープラーニングの応用
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
 
強化学習 DQNからPPOまで
強化学習 DQNからPPOまで強化学習 DQNからPPOまで
強化学習 DQNからPPOまで
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
A100 GPU 搭載! P4d インスタンス使いこなしのコツA100 GPU 搭載! P4d インスタンス使いこなしのコツ
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
最近のDQN
最近のDQN最近のDQN
最近のDQN
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
 
POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
 

Ähnlich wie 20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説

ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
TensorFlowの使い方(in Japanese)
TensorFlowの使い方(in Japanese)TensorFlowの使い方(in Japanese)
TensorFlowの使い方(in Japanese)Toshihiko Yamakami
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回Shigeharu Yamaoka
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011Hiroh Satoh
 
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!Midori Oge
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Tomohito Adachi
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプトbsdhack
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-賢 秋穂
 
「機械学習とは?」から始める Deep learning実践入門
「機械学習とは?」から始める Deep learning実践入門「機械学習とは?」から始める Deep learning実践入門
「機械学習とは?」から始める Deep learning実践入門Hideto Masuoka
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!Midori Oge
 
Infrastructure as CodeでReNom環境構築入門
Infrastructure as CodeでReNom環境構築入門Infrastructure as CodeでReNom環境構築入門
Infrastructure as CodeでReNom環境構築入門ReNom User Group
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~infinite_loop
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)Kazuko Itoda
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowTadaichiro Nakano
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイドEtsuji Nakai
 
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習Hori Tasuku
 
運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回Shigeharu Yamaoka
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…Yasumasa Suenaga
 

Ähnlich wie 20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説 (20)

ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
TensorFlowの使い方(in Japanese)
TensorFlowの使い方(in Japanese)TensorFlowの使い方(in Japanese)
TensorFlowの使い方(in Japanese)
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
 
「機械学習とは?」から始める Deep learning実践入門
「機械学習とは?」から始める Deep learning実践入門「機械学習とは?」から始める Deep learning実践入門
「機械学習とは?」から始める Deep learning実践入門
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
Infrastructure as CodeでReNom環境構築入門
Infrastructure as CodeでReNom環境構築入門Infrastructure as CodeでReNom環境構築入門
Infrastructure as CodeでReNom環境構築入門
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
 
運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
 

Mehr von LeapMind Inc

Final presentation optical flow estimation with DL
Final presentation  optical flow estimation with DLFinal presentation  optical flow estimation with DL
Final presentation optical flow estimation with DLLeapMind Inc
 
Survey on optical flow estimation with DL
Survey on optical flow estimation with DLSurvey on optical flow estimation with DL
Survey on optical flow estimation with DLLeapMind Inc
 
[Icml2019] mix hop higher-order graph convolutional architectures via spars...
[Icml2019]  mix hop  higher-order graph convolutional architectures via spars...[Icml2019]  mix hop  higher-order graph convolutional architectures via spars...
[Icml2019] mix hop higher-order graph convolutional architectures via spars...LeapMind Inc
 
[Icml2019]LIT: Learned Intermediate Representation Training for Model Compres...
[Icml2019]LIT: Learned Intermediate Representation Training for Model Compres...[Icml2019]LIT: Learned Intermediate Representation Training for Model Compres...
[Icml2019]LIT: Learned Intermediate Representation Training for Model Compres...LeapMind Inc
 
[Icml2019] parameter efficient training of deep convolutional neural network...
[Icml2019] parameter efficient training of  deep convolutional neural network...[Icml2019] parameter efficient training of  deep convolutional neural network...
[Icml2019] parameter efficient training of deep convolutional neural network...LeapMind Inc
 
エッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なことエッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なことLeapMind Inc
 
20190227[EDLS]JAL's INNOVATION エアラインのAI活用
20190227[EDLS]JAL's INNOVATION エアラインのAI活用20190227[EDLS]JAL's INNOVATION エアラインのAI活用
20190227[EDLS]JAL's INNOVATION エアラインのAI活用LeapMind Inc
 
E20190227[EDLS]インテル®︎FPGAによるエッジAI
E20190227[EDLS]インテル®︎FPGAによるエッジAIE20190227[EDLS]インテル®︎FPGAによるエッジAI
E20190227[EDLS]インテル®︎FPGAによるエッジAILeapMind Inc
 
20190227[EDLS]進化するAI on Edge 〜 CloudとEdgeの最適な関係
20190227[EDLS]進化するAI on Edge 〜 CloudとEdgeの最適な関係20190227[EDLS]進化するAI on Edge 〜 CloudとEdgeの最適な関係
20190227[EDLS]進化するAI on Edge 〜 CloudとEdgeの最適な関係LeapMind Inc
 
20180831 [DeLTA TECH] 深く青い脂
20180831 [DeLTA TECH] 深く青い脂20180831 [DeLTA TECH] 深く青い脂
20180831 [DeLTA TECH] 深く青い脂LeapMind Inc
 
20180831 [DeLTA TECH] 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜
20180831 [DeLTA TECH] 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜20180831 [DeLTA TECH] 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜
20180831 [DeLTA TECH] 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜LeapMind Inc
 
20180831 [DeLTA TECH] DeLTA-Liteを支える技術(システム構成編)
20180831 [DeLTA TECH] DeLTA-Liteを支える技術(システム構成編)20180831 [DeLTA TECH] DeLTA-Liteを支える技術(システム構成編)
20180831 [DeLTA TECH] DeLTA-Liteを支える技術(システム構成編)LeapMind Inc
 
20180831 [DeLTA TECH] DeLTA-FamilyによるIndustry4.1
20180831 [DeLTA TECH] DeLTA-FamilyによるIndustry4.120180831 [DeLTA TECH] DeLTA-FamilyによるIndustry4.1
20180831 [DeLTA TECH] DeLTA-FamilyによるIndustry4.1LeapMind Inc
 
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGAAn Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGALeapMind Inc
 
2018年1月19日開催 IoTビジネス共創ラボ 第6回勉強会
2018年1月19日開催 IoTビジネス共創ラボ 第6回勉強会2018年1月19日開催 IoTビジネス共創ラボ 第6回勉強会
2018年1月19日開催 IoTビジネス共創ラボ 第6回勉強会LeapMind Inc
 
JUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラJUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラLeapMind Inc
 

Mehr von LeapMind Inc (17)

Final presentation optical flow estimation with DL
Final presentation  optical flow estimation with DLFinal presentation  optical flow estimation with DL
Final presentation optical flow estimation with DL
 
Survey on optical flow estimation with DL
Survey on optical flow estimation with DLSurvey on optical flow estimation with DL
Survey on optical flow estimation with DL
 
[Icml2019] mix hop higher-order graph convolutional architectures via spars...
[Icml2019]  mix hop  higher-order graph convolutional architectures via spars...[Icml2019]  mix hop  higher-order graph convolutional architectures via spars...
[Icml2019] mix hop higher-order graph convolutional architectures via spars...
 
[Icml2019]LIT: Learned Intermediate Representation Training for Model Compres...
[Icml2019]LIT: Learned Intermediate Representation Training for Model Compres...[Icml2019]LIT: Learned Intermediate Representation Training for Model Compres...
[Icml2019]LIT: Learned Intermediate Representation Training for Model Compres...
 
[Icml2019] parameter efficient training of deep convolutional neural network...
[Icml2019] parameter efficient training of  deep convolutional neural network...[Icml2019] parameter efficient training of  deep convolutional neural network...
[Icml2019] parameter efficient training of deep convolutional neural network...
 
エッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なことエッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なこと
 
20190227[EDLS]JAL's INNOVATION エアラインのAI活用
20190227[EDLS]JAL's INNOVATION エアラインのAI活用20190227[EDLS]JAL's INNOVATION エアラインのAI活用
20190227[EDLS]JAL's INNOVATION エアラインのAI活用
 
E20190227[EDLS]インテル®︎FPGAによるエッジAI
E20190227[EDLS]インテル®︎FPGAによるエッジAIE20190227[EDLS]インテル®︎FPGAによるエッジAI
E20190227[EDLS]インテル®︎FPGAによるエッジAI
 
20190227[EDLS]進化するAI on Edge 〜 CloudとEdgeの最適な関係
20190227[EDLS]進化するAI on Edge 〜 CloudとEdgeの最適な関係20190227[EDLS]進化するAI on Edge 〜 CloudとEdgeの最適な関係
20190227[EDLS]進化するAI on Edge 〜 CloudとEdgeの最適な関係
 
20180831 [DeLTA TECH] 深く青い脂
20180831 [DeLTA TECH] 深く青い脂20180831 [DeLTA TECH] 深く青い脂
20180831 [DeLTA TECH] 深く青い脂
 
20180831 [DeLTA TECH] 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜
20180831 [DeLTA TECH] 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜20180831 [DeLTA TECH] 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜
20180831 [DeLTA TECH] 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜
 
20180831 [DeLTA TECH] DeLTA-Liteを支える技術(システム構成編)
20180831 [DeLTA TECH] DeLTA-Liteを支える技術(システム構成編)20180831 [DeLTA TECH] DeLTA-Liteを支える技術(システム構成編)
20180831 [DeLTA TECH] DeLTA-Liteを支える技術(システム構成編)
 
20180831 [DeLTA TECH] DeLTA-FamilyによるIndustry4.1
20180831 [DeLTA TECH] DeLTA-FamilyによるIndustry4.120180831 [DeLTA TECH] DeLTA-FamilyによるIndustry4.1
20180831 [DeLTA TECH] DeLTA-FamilyによるIndustry4.1
 
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGAAn Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
An Introduction of DNN Compression Technology and Hardware Acceleration on FPGA
 
2018年1月19日開催 IoTビジネス共創ラボ 第6回勉強会
2018年1月19日開催 IoTビジネス共創ラボ 第6回勉強会2018年1月19日開催 IoTビジネス共創ラボ 第6回勉強会
2018年1月19日開催 IoTビジネス共創ラボ 第6回勉強会
 
Pitch v2.2
Pitch v2.2Pitch v2.2
Pitch v2.2
 
JUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラJUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep Learningコンパイラ
 

Kürzlich hochgeladen

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Kürzlich hochgeladen (8)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説

  • 1. LeapMind Inc. Infrastructure Division Leader Hideaki Masuda Tensorflow分散学習 Horovodによる分散学習の実装方法と解説
  • 2. Contents 1. イントロダクション 2. Deep Learningにおける分散学習 3. Tensorflowで分散学習 Part1 (Distributed Tensorflow) 4. Tensorflowで分散学習 Part2 (Horovod) 5. チュートリアル:実際にHorovodを実行してみよう 6. まとめ 7. あとがき 分散学習の世界へようこそ
  • 4. LeapMind Inc. © 2018 自己紹介 LeapMind Inc. Infrastructure Division 増田 英晃 Hideaki MASUDA 大手SIerにて大規模システムの方式基盤系SEとして従事後、 LeapMindにジョイン。 組込みDeep Learningモデル構築ソリューション「DeLTA-Lite」の開発や 社内のDeep Learning研究環境の構築を担当。 学習性能改善、運用効率化のために分散学習基盤の導入や ボトルネック分析などもしています。
  • 5. LeapMind Inc. © 2018 本日のゴール Horovod を利用した分散学習を 自身のTensorflowの学習コードに対して 実装できるようになってもらう
  • 7. LeapMind Inc. © 2018 Deep Learningをやっていてよくある悩み 仮説 実験 結果 仮説 (更新) 実験 (再) の繰り返し 実験(学習)待ちが多い 学習早く終わらないかなー
  • 8. LeapMind Inc. © 2018 学習を早くするには? 注:ここではGPU性能のみに言及していますが 実際はGPUではない部分がボトルネックになっていて プログラミングの仕方次第で改善の余地がある場合が多いです(後述) 今回は分散学習の紹介のため問題を単純化しています スケールアウト 複数のGPUを使う スケールアップ GPUを 良いものに変える 単一GPUには限界がある! どうやったら複数GPUで 学習ができるのだろうか? 1 2
  • 9. LeapMind Inc. © 2018 分散学習の手法について Data parallel vs Model parallel Model parallelはモデルの各パートにおいてどのデバイスで計算させるかを 決定しなければならないため、モデル構成への依存度や実装難易度が高い Data parallelの方がシンプル に実装できる Data parallel : Split data per worker Model parallel : Split model per worker
  • 10. LeapMind Inc. © 2018 分散学習の手法について asyncの方がスループット(step/sec)では有利 しかし、モデルの更新が非同期に行われるため、古いパラメータでの学習結果でモデルの更新 が行われ、精度が劣化する場合がある(Gradient Staleness) Parameter Server sync : 各プロセスは指定されたタイミングで同期をとる モデルの状態は常に全プロセスで等しい async : 各プロセスは非同期にモデルを更新、取得する プロセス間でモデルの状態に世代のズレが生じる Pull and Push parameters Sync parameters 同期型(sync) vs 非同期型(async)
  • 11. LeapMind Inc. © 2018 分散学習を導入する目的 精度の高いモデル を より短い学習時間 で手に入れたい
  • 12. LeapMind Inc. © 2018 Deep Learningにおける分散学習 スループットがよくても精度が出なければ 本末転倒である
  • 13. LeapMind Inc. © 2018 Deep Learningにおける分散学習 本日紹介するHorovodは Data parallel + 同期型(sync) 精度影響が少なく 学習を高速化できる
  • 14. LeapMind Inc. © 2018 Deep Learningにおける分散学習 分散手法をシンプルにすることで 実装を簡素にでき 実験の考察もしやすい
  • 15. LeapMind Inc. © 2018 どのぐらい高速化できるの? 分散数をNとした場合の性能向上率Sはアムダールの法則より S(N) = 1/((1-P) + P/N) と表せる、ここでPは並列化できない処理の割合を表していて P=0のときS=1で最大、つまりN個に分散した場合、学習時間が1/Nになる 上記をみるにS=0.8〜0.9以上であるため、特に数〜数十程度の分散学習では 十分にP(並列化できない処理)を少なくすることが現実的であり 分散数Nのとき学習時間を約1/Nにできる https://github.com/uber/horovod/blob/master/README.md
  • 17. LeapMind Inc. © 2018 What is Distributed Tensorflow Tensorflow公式の分散処理機能 Master/Worker/Parameter Server構造 各計算グラフ、変数ごとに処理するノードやデバイス(cpu/gpu)を指定可能 Data Parallel/Model Parallel、同期/非同期処理にも対応し、実装の柔軟性が高い Fault tolerance機能などもあり、機能ではなく分散基盤と言った方が正しそう https://cloudplatform-jp.googleblog.com/2017/09/distributed-TensorFlow-and-the-hidden-layers-of-engineering-work.html
  • 18. LeapMind Inc. © 2018 Getting Started - Distributed Tensorflow! Getting Started - Distributed Tensorflow 1. “Create a tf.train.ClusterSpec that describes all of the tasks in the cluster. This should be the same for each task.” tf.train.ClusterSpecにクラスター構成を記載しましょう 2. “Create a tf.train.Server, passing the tf.train.ClusterSpec to the constructor, and identifying the local task with a job name and task index.” tf.train.Serverにjob名とタスク番号を付与しましょう 3. “Specifying distributed devices in your model” モデル定義にtf.deviceを利用してどのノード(jobとtask)のどのデバイス(CPU or GPU)で計 算を行うか計算グラフ毎に決めて記述しましょう ・ ・ ・ 新用語達(“Client, Cluster, Job, Master service, Task, Tensorflow Server, Worker service”) https://www.tensorflow.org/deploy/distributed ...学習コスト高め
  • 20. LeapMind Inc. © 2018 What is Horovod Uberが開発しているOSSの分散学習用フレームワーク Tensorflow, Keras, Pytorchに対応 https://github.com/uber/horovod
  • 21. LeapMind Inc. © 2018 Horovodプロジェクトの目的 単一GPUで動く(Tensorflowの)プログラムを利用し、なるべく 簡単に複数GPUでの 高速な分散学習を 実現できるようにすること 上記の目的を実現するための2つの指標 どれだけ早く学習できるか プログラムを どれだけ変更する必要があるか 学習実行の簡単さ
  • 22. LeapMind Inc. © 2018 なんでHorovod? 簡単に実装できる 既存コードに下記を追加するだけ 1. Horovod初期化 2. GPU指定(1プロセスに1GPU) 3. Learning Rateを分散数でスケール 4. optimizerをオーバーライド 5. 学習前のGlobal VariablesのSync設定 6. checkpointを特定ノードのみ保存するように設定 https://github.com/uber/horovod/blob/master/README.md
  • 23. LeapMind Inc. © 2018 Distributed Tensorflow 事前準備 分散数や使用するサーバの構成に応 じてClusterやtask,jobを都度定義 Horovod 事前準備 MPIとNCCLをインストール (作業は一度のみ) 実行 各ノードで定義に従ったコマンドを各プ ロセス毎に実行(例はasync) # On ps0.example.com: $ python trainer.py --ps_hosts=ps0.example.com:2222,ps1.example.com:2222 --worker_hosts=worker0.example.com:2222,worker1.example.com:2222 --job_name=ps --task_index=0 # On ps1.example.com: $ python trainer.py --ps_hosts=ps0.example.com:2222,ps1.example.com:2222 --worker_hosts=worker0.example.com:2222,worker1.example.com:2222 --job_name=ps --task_index=1 # On worker0.example.com: $ python trainer.py --ps_hosts=ps0.example.com:2222,ps1.example.com:2222 --worker_hosts=worker0.example.com:2222,worker1.example.com:2222 --job_name=worker --task_index=0 # On worker1.example.com: $ python trainer.py --ps_hosts=ps0.example.com:2222,ps1.example.com:2222 --worker_hosts=worker0.example.com:2222,worker1.example.com:2222 --job_name=worker --task_index=1 実行 MPIがインストール済みの適当なノー ドからコマンドを実行 $ mpirun -np 16 -H server1:4,server2:4,server3:4,server4:4 [some mpi options...] python train.py 実行時に分散対象のノードと プロセス数を指定できる なんでHorovod? 簡単に実行できる
  • 24. LeapMind Inc. © 2018 https://github.com/uber/horovod/tree/v0.12.1 なんでHorovod? 学習が早い スケールしても効率が落ちにくい
  • 25. LeapMind Inc. © 2018 Horovodの分散学習手法 Data parallel + 同期型(sync) 同一モデル x 別データで計算された勾配のみを同期、 全ワーカーの平均でモデルを更新 https://eng.uber.com/horovod/
  • 26. LeapMind Inc. © 2018 Data parallel + 同期型(sync) 学習率をワーカー数に応じてスケールさせる 学習率をバッチサイズ(全ワーカーの合計)に比例してスケールさせると 精度を落とさずにに大きいバッチサイズでのトレーニングが可能 (256GPUでImageNetを1hourで学習) Goyal, P et al. (2017). Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour (Facebook) Horovodの分散学習手法
  • 27. LeapMind Inc. © 2018 ImageNet学習世界最速のChainerMNを利用した学習でも同様に 学習率をワーカー数に比例してスケールさせている GoyalのTesla P100 256GPUで1hourに対して1024GPUで15minutesを達成 RMSPropからmomentum SGDに徐々に切り替える手法を使用 Akiba, T et al. (2017). Extremely Large Minibatch SGD: Training ResNet-50 on ImageNet in 15 Minutes (Preferred Networks) Data parallel + 同期型(sync) 学習率をワーカー数に応じてスケールさせる Horovodの分散学習手法
  • 28. LeapMind Inc. © 2018 MPIをプロセス間通信に利用した SPMD構成(Single Program Multiple Data) 全ワーカーは同一スクリプトで動き、個々の役割を意識しなくてよい 各ワーカーにはrank(一意のプロセス番号)が付与される rankによるif分岐等でのみ指定ワーカーへの別処理を記述可能(モデル保存とか) serverA serverB Interconnect (Infiniband,Ethernet) serverA or B or …. $ mpirun -np 4 -H serverA:2.serverB:2 python train.py python train.py (rank:0) python train.py (rank:1) python train.py (rank:2) python train.py (rank:3) Interconnect (NVLINK,PCI-E) Interconnect (NVLINK,PCI-E) Horovodのアーキテクチャ
  • 29. LeapMind Inc. © 2018 設計がシンプル、分かりやすい 必要最低限の機能のみ Horovodの強み hvd.init() 初期化関数 hvd.size() プロセス数の合計を取得する関数 hvd.local_size() ノード内のプロセス数の合計を取得する関数 hvd.rank() プロセス番号(一意)を取得する関数 hvd.local_rank() プロセス番号(ノード内で一意)を取得する関数 hvd.broadcast_global_variables(root_rank) tf.global_variables()で取得したオブジェクトをroot_rankで指定したプ ロセスの値で全プロセスに対して上書き(broadcast)する関数 hvd.BroadcastGlobalVariablesHook (tf.train.SessionRunHook) broadcast_global_variables()を学習開始の初回のみ実行する SessionRunHookクラス DistributedOptimizer(tf.train.Optimizer) optimizerのcompute_gradientsをオーバーライドしてallreduce処理 を追加するOptimizerクラス シンプルゆえに自由度は少なめ。必要があれば、 mpi4py等の異なるMPIライブラリに対応しているため、独自処理も記述可能。
  • 30. LeapMind Inc. © 2018 高速化への取り組み Ring-all-reduce by NCCL v2 NCCL v2に対応しており、all-reduce処理に Ring-all-reduceアルゴリズムを採用し通信を最適化して高速化を図っている リング状の1方向通信+各ノードでの並列計算でall-reduceを実現 https://eng.uber.com/horovod/ Horovodの強み
  • 31. LeapMind Inc. © 2018 高速化への取り組み Tensor Fusion 複数のTensorオブジェクトをまとめて1回の Ring-all-reduce処理に与えられるようにする仕組み Tensor単位でRing-all-reduceを実行する場合 Tensorのサイズが大きくないと、一回の通信量が減ってしまい 効率が悪くなってしまう 上記を改善するために複数のTensorをFusion Bufferに格納し それに対してRing-all-reduce処理を行うようにしている Fusion Bufferのサイズは環境に応じて下記の変数でチューニング可能 環境変数:HOROVOD_FUSION_THRESHOLD(デフォルト64MB) Horovodの強み
  • 32. LeapMind Inc. © 2018 性能の分析(処理の可視化)ができる JSON形式で処理のタイムラインを出力可能 chrome://tracingで読み込んで可視化できる Horovodの強み https://github.com/uber/horovod/blob/master/README.md
  • 34. LeapMind Inc. © 2018 複数ノード 複数GPU STEP 2 チュートリアルの前提条件 準備や性能改善の難易度は単一ノードでの実行のほうが簡単であるため 今回は単一ノードでの実行を前提として進めます 単一ノードでも例えばAWSのp3.16xlargeなどの8GPUを搭載したマシンを 利用して、学習を8倍近く高速にできる可能性があります 単一ノード 複数GPU STEP 1 分散学習の実行環境は難易度的に大きく下記の2ステップに分かれます
  • 35. LeapMind Inc. © 2018 チュートリアルの前提条件 また、今回は環境構築にDockerを利用し GPU利用のためにnvidia-docker(v2)をインストールしています 上記の環境であれば、docker buildするだけですぐにhorovodを利用できます 変更元となる学習用コードは Tensorflow tutorialのDeep MNIST for Expertsより mnist_deep.py*をそのまま利用します * : https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/mnist/mnist_deep.py
  • 36. LeapMind Inc. © 2018 チュートリアル tensorflow/examples/tutorials/mnist/mnist_deep.py
  • 38. LeapMind Inc. © 2018 6. まとめ Deep Learningの分散学習について 日本語での情報が少なく 特にTensorflowを利用した分散学習についての情報は あまり見つけられないのが現状です 今回の発表が、皆さんが分散学習を実装する際の 足がかりになれば幸いです
  • 39. LeapMind Inc. © 2018 6. まとめ ぜひHorovodを利用して 分散学習を 体験してみてください!
  • 41. LeapMind Inc. © 2018 あとがき 分散学習の世界へようこそ ここでは補足的に分散学習を実装する際に遭遇する 課題や疑問 について少し話そうと思います
  • 42. LeapMind Inc. © 2018 あとがき 分散学習の世界へようこそ GPU使用率を確認する 処理を可視化してボトルネックを確認する GPU使用率をあげるためにはCPU処理やI/O処理を キューや並列化を使って隠ぺいする必要があります これだけでだいぶ早くなります 単純にバッチサイズを大きくすることでも GPU処理の割合を増やせます 並列化しても早くならないなー
  • 43. LeapMind Inc. © 2018 あとがき 分散学習の世界へようこそ 学習率上げるだけで早くなってた なんてことも 特に導入した初めの頃は 到達精度も含めきちんと 単一GPUでの場合との比較 を実施した方が良いです 並列化したら早くなった!と思ったら !
  • 44. LeapMind Inc. © 2018 あとがき 分散学習の世界へようこそ データセットを各ワーカー数で分割して配置した場合 データの偏りをなくすために 1epoch毎にシャッフル&配置し直すべき しかし、実装上 horovodにそのような機能はない データ数がバッチサイズに対して十分に大きければ 一部データが重複する可能性に目をつぶって 全ワーカーに全データ置いてしまうという手もあるが... データセットを 各ワーカーにどう配置すべきか
  • 45. LeapMind Inc. © 2018 あとがき 分散学習の世界へようこそ 分散学習の実装は日々進歩していて いくつもの手法が実験されています 構成がシンプル + 精度劣化が少ない という実験結果がある という状態なので、今後は分かりません NVIDIAのDGX-2では 16GPUを高速なインターコネクトで接続することで 1つのGPUとして使用できる(Model Parallel的に使う)ように 設計されており 巨大なモデルに対する学習ニーズもあったりします DataParallel + syncが最強なの? ?
  • 46. LeapMind Inc. © 2018 あとがき 分散学習の世界へようこそ Horovodが最強なの? ! ChainerMN Horovod Distributed Tensorflow ImageNetで最速を叩き出しています 新機能や手法をどんどん出しており より柔軟かつ先進的です 構成はChainerMNと近いため 比較的同程度の結果が出せると 期待できます 汎用的であるがゆえに今回のような分散手法では性能を出しにくいですが Model Parallel等では力を発揮しそうです 柔軟性があるため新しい手法を試すのがよさそうです
  • 47. LeapMind Inc. © 2018 47 ご清聴ありがとうございました masuda@leapmimd.io http://leapmind.io/