horovod/horovod

Distributed training framework for TensorFlow, Keras, PyTorch, and Apache MXNet.

What it solves

Horovod は、ディープラーニングのトレーニングを単一 GPU から複数 GPU、複数ホストへスケールするプロセスをシンプルにします。パラメータサーバーの管理など、分散トレーニングに伴う複雑さを取り除き、クラスタ上でモデルを並列実行するためのより直感的な方法を提供します。

How it works

Horovod は MPI(Message Passing Interface)ベースのモデルを使用してワーカー間の通信を処理します。中央サーバーを使用せず、allreduce などの集合通信操作を用いて全ワーカーの勾配を平均化します。TensorFlow、Keras、PyTorch、Apache MXNet などの主要フレームワークと統合できます。実装時には Horovod を初期化し、GPU を特定のプロセスに固定し、学習率をスケールし、オプティマイザを DistributedOptimizer でラップします。

Who it’s for

大規模データセットと大規模モデルを複数 GPU やサーバーでトレーニングする必要がある機械学習エンジニアやインフラチーム向けに設計されており、スケールに必要なコード変更を最小限に抑えます。

Highlights

  • Multi-Framework Support: Works with TensorFlow, PyTorch, Keras, and MXNet.
  • Tensor Fusion: Improves performance by batching small allreduce operations and interleaving communication with computation.
  • High Scaling Efficiency: Demonstrates high efficiency (up to 90% for certain models) when scaling across hundreds of GPUs.
  • Autotuning: Includes a system to automatically optimize performance settings to reduce trial-and-error tuning.
  • Flexible Deployment: Can be run via horovodrun, Docker, Kubernetes, Spark, Ray, and various HPC clusters.