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