# 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]]