horovod: 複数の GPU とホストにまたがってモデルをスケールさせるための分散ディープラーニングトレーニングフレームワーク
horovod: 複数の GPU とホストにまたがってモデルをスケールさせるための分散ディープラーニングトレーニングフレームワーク
解決する課題
Horovod は、ディープラーニングのトレーニングを単一 GPU から複数 GPU、さらに複数ホストへとスケールさせるプロセスをシンプルにします。パラメータサーバーの管理など、分散トレーニングに伴う複雑さを取り除き、クラスター全体でモデルを並列実行するためのより直感的な方法を提供します。
仕組み
Horovod は MPI(Message Passing Interface)ベースのモデルを使用してワーカー間の通信を処理します。中央サーバーを置く代わりに、allreduce のような集合通信操作を利用して全ワーカー間で勾配を平均化します。TensorFlow、Keras、PyTorch、Apache MXNet などの主要フレームワークと統合できます。利用する際は、Horovod を初期化し、GPU を特定のプロセスに固定し、学習率をスケールし、オプティマイザを DistributedOptimizer でラップします。
対象ユーザー
大規模データセット上で大規模モデルを複数の GPU やサーバーでトレーニングする必要があり、スケールに伴うコード変更を最小限に抑えたい機械学習エンジニアやインフラチーム向けに設計されています。
ハイライト
- マルチフレームワークサポート: TensorFlow、PyTorch、Keras、MXNet と連携可能。
- テンソル融合: 小さな allreduce 操作をバッチ化し、通信と計算を交互に行うことで性能を向上。
- 高いスケーリング効率: 数百 GPU にまたがるスケール時でも(特定モデルで最大 90%)高い効率を実証。
- 自動チューニング: 試行錯誤を減らすためにパフォーマンス設定を自動最適化するシステムを搭載。
- 柔軟なデプロイ:
horovodrun、Docker、Kubernetes、Spark、Ray、各種 HPC クラスタで実行可能。
Sources
- undefinedhorovod/horovod