horovod: 一個用於在多個 GPU 和主機之間擴展模型的分布式深度學習訓練框架

horovod: 一個用於在多個 GPU 和主機之間擴展模型的分布式深度學習訓練框架

它解決了什麼問題

Horovod 簡化了將深度學習訓練從單個 GPU 擴展到多個 GPU 和多個主機的過程。它透過提供一種更直接的方式在集群中並行運行模型,消除了通常與分布式訓練相關的複雜性,例如管理參數伺服器 (parameter servers)。

它是如何運作的

Horovod 使用基於 MPI 的模型 (Message Passing Interface) 來處理工作節點之間的通信。它不使用中央伺服器,而是採用集體通信操作 (collective communication operations) 如 allreduce 來平均所有工作節點的梯度。它與包括 TensorFlow、Keras、PyTorch 和 Apache MXNet 在內的熱門框架集成。要實現它,用戶需要初始化 Horovod,將 GPU 固定到特定進程,縮放學習率,並將其優化器封裝在 DistributedOptimizer 中。

對象是誰

它是為機器學習工程師和基礎設施團隊設計的,這些團隊需要在多個 GPU 或伺服器上訓練大型模型和大型數據集,同時最大限度地減少擴展所需的代碼更改量。

重點特性

  • 多框架支持:支持 TensorFlow、PyTorch、Keras 和 MXNet。
  • Tensor Fusion:透過將小型 allreduce 操作進行批處理並將通信與計算交錯進行,來提高性能。
  • ** 高擴展效率**:在跨越數百個 GPU 進行擴展時,展現出高效率(某些模型可達 90%)。
  • Autotuning:包含一個自動優化性能設置的系統,以減少試錯調優。
  • 靈活的部署:可以透過 horovodrun、Docker、Kubernetes、Spark、Ray 和各種 HPC 集群運行。

Sources