# Horovod
フレームワーク非依存の分散深層学習向け集団通信ライブラリ。Alex Sergeev(当時 Uber, Inc.)が開発し、現在は Apache License 2.0 の OSS として GitHub で公開されている(https://github.com/horovod/horovod)。
## 設計
Horovod は各 DL フレームワーク向けの薄いバインディングを通じてフレームワーク内部の実装詳細にアクセスせず、ランタイムで観測できる情報のみで集団通信をスケジュールする。このフレームワーク非依存設計は TensorFlow・PyTorch・MXNet 等の複数フレームワークへの対応を可能にする一方、フレームワーク内部情報(モデル定義・テンソル集合)を知らないため調整コストが生じる。(Source: [[@2022__NSDI__Accelerating Collective Communication in Data Parallel Training across Deep Learning Frameworks]])
バックエンドは MPI・NCCL・Gloo のいずれかを選択でき、制御プレーン(調整)とデータプレーン(AllReduce 実行)を分離した設計をとる。
## バージョン履歴と改善
| バージョン | 主な変更 |
|---|---|
| v0.15.2 | コーディネータ・ワーカー制御プレーン(基準バージョン) |
| v0.21.0 | 応答キャッシュ・グルーピング機能を統合(Romero+ NSDI 2022) |
### v0.21.0 での改善(NSDI 2022)
NVIDIA の [[Joshua Romero]] らと [[Oak Ridge National Laboratory]] の共同研究により実装・統合された 2 手法:
1. **応答キャッシュ(response cache)と大域ビットベクタによる非集中調整**: 各ワーカーがキャッシュを持ち、初回イテレーション以降のコーディネータ・ワーカー通信を完全にバイパスする。6000 GPU 規模で既存 Horovod 比 2× の性能向上。
2. **テンソルグルーピング(`hvd.grouped_allreduce`)**: ユーザがテンソルをグループ化して通信バッファサイズを明示制御できる機能。`DistributedOptimizer(num_groups=N)` で均等分割も可能。
この改善により 27,600 GPU([[Summit]] 全体)でスケーリング効率 0.93、持続性能 1.54 エクサフロップス(FP16)を達成した。(Source: [[@2022__NSDI__Accelerating Collective Communication in Data Parallel Training across Deep Learning Frameworks]])
## 他ライブラリとの比較
- **tf.distribute**(フレームワークネイティブ、TensorFlow): 提案手法の Horovod が最大 12% 優位(最大 1536 GPU)
- **torch.DDP**(フレームワークネイティブ、PyTorch): 同等性能(最大 1536 GPU)
- **BytePS**(パラメータサーバ方式): 提案手法の Horovod が HPC 環境(Summit)で 約 20% 優位(768 GPU)
## 関連
- ソース: [[@2022__NSDI__Accelerating Collective Communication in Data Parallel Training across Deep Learning Frameworks]]
- 概念: [[集合通信]] / [[LLM分散学習]] / [[データ並列学習]]
- 関連エンティティ: [[NCCL]] / [[NVIDIA]] / [[Oak Ridge National Laboratory]] / [[Summit]] / [[Joshua Romero]]