allreduce 实现分为两种不同类型的进程:客户端和守护进程。客户端负责分配填充数据的向量,并通过向其守护进程发送带有向量的请求来启动 allreduce 操作。守护进程负责从所有连接的客户端和守护进程收集向量,在所有接收到的缓冲区上应用选定的运算符,然后将简化的结果向量分散回客户端。
Horovod 是一个开源框架,用于在数百个 GPU 上并行扩展深度学习训练。它是一种基于环式全归约算法的分布式可扩展深度学习训练框架,利用高性能计算 (HPC) 技术(例如 MPI、数据并行等)在本地和云部署中的多个设备和节点上高效扩展。此外,它还支持运行支持 GPU 的 AI/ML 框架,例如 TensorFlow、Keras、PyTorch 和 Apache MXNet。本文介绍了使用 ResNet50 基准在八台支持 GPU 的 Supermicro 8U SuperBlade 服务器上运行图像分类的测试,展示了跨多个节点的分布式工作负载的高吞吐量。