horovod: 一个用于在多个 GPU 和主机上扩展模型的分布式深度学习训练框架

horovod: 一个用于在多个 GPU 和主机上扩展模型的分布式深度学习训练框架

它解决了什么问题

Horovod 简化了将深度学习训练从单个 GPU 扩展到多个 GPU 和多个主机的过程。它通过提供一种更直接的方式在集群中并行运行模型,消除了通常与分布式训练相关的复杂性,例如管理参数服务器。

工作原理

Horovod 使用基于 MPI (Message Passing Interface) 的模型来处理 worker 之间的通信。它不使用中央服务器,而是采用 allreduce 等集合通信操作来平均所有 worker 的梯度。它集成了流行的框架,包括 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