Horovodとは
Horovod(ホロボド)とは、Uberが開発した分散深層学習のためのオープンソースフレームワークです。TensorFlow、Keras、PyTorch、Apache MXNetをサポートし、わずか数行のコード変更で既存の学習コードを分散学習に対応させることができます。リングAllReduceアルゴリズムの普及に大きく貢献しました。
| ひとことで言うと | Uberが開発した、分散深層学習を簡単にするためのライブラリ。 |
|---|---|
| 何がうれしいか | 既存の学習コードに数行足すだけで、マルチGPU・マルチノードに対応できる。 |
| 注意点 | 近年はPyTorch標準のDDPやFSDPが主流になりつつある。 |
Horovodの仕組み
Horovodはデータ並列学習のフレームワークで、各GPU(ワーカー)が同じモデルのコピーを持ち、異なるデータで学習します。勾配の集約にはNCCLやMPI を利用したAllReduce操作を行い、すべてのワーカーが同一のモデル更新を適用します。MPIの起動モデルを採用しており、horovodrunコマンドで複数GPUでの分散学習を開始できます。
1既存コードに数行追加初期化と最適化の変更
▶
2各ノードで実行同じコードが走る
▶
3勾配を集約リング型の通信で効率化
▶
4全体を同期モデルを揃える
Horovodの利点
Horovodの最大の利点はそのシンプルさです。既存の学習コードに対して、初期化、オプティマイザのラッピング、勾配のAllReduce、初期パラメータの同期という4つの変更を加えるだけで分散学習が可能になります。また、Spark上での分散学習もサポートしており、ビッグデータ環境との統合も容易です。
現在の位置づけ
Horovodは分散学習の民主化に大きく貢献しましたが、近年はPyTorchネイティブのDistributedDataParallel(DDP)やDeepSpeed、FSDPの台頭により利用が減少しています。しかし、そのシンプルなAPIと幅広いフレームワークサポートから、依然として多くのプロジェクトで使用されています。