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
- undefinedhorovod/horovod