『机器学习』MLSys提前看 | 机器学习的分布式优化方法( 四 )



『机器学习』MLSys提前看 | 机器学习的分布式优化方法
本文插图

图 5. DGX-1P(P100)和 DGX-1V(V100)理论加速比对 , 方块图显示了可能的配置分布
第二 , 作者给出在三种不同的硬件设置(DGX-1P , DGX-1V , DGX-2)上 NCCL 和 Blink 在广播和 AllReduce 中的吞吐量比较的实验结果 。 作者在这一组实验中给出了一系列实验结果以验证 Blink 的有效性 , 受篇幅所限 , 我们不一一贴出 , 给出 NCCL 和 Blink 之间的广播吞吐量比较作为示例 , 该示例比较 AWS(p3.16xlarge)上 DGX-1V 上 GPU 分配引起的所有可能拓扑 , 使用的 GPU 数量从 3 到 8 不等 。 为了使互连完全饱和 , 使用总数据大小为 500MB(50MB 到 1000MB 的误差线)进行测试 。 具体结果见图 6 。
与 NCCL 相比 , Blink 的性能可以提高 6 倍(2 倍的几何平均值) 。 在 GPU 未通过 NVLink 完全连接的情况下(例如 GPU 1、4、5、6) , NCCL 无法在这些 GPU 上形成仅 NVLink 的环 , 从而迫使其重新使用 PCIe 进行数据传输 。 这会导致许多 NVLink 通道未使用 , 显著降低吞吐量 。 NCCL 在 Blink 可以形成完全连接的 NVLink 环并且 Blink 只能创建一个生成树时匹配 Blink 。 但是 , 即使在这些情况下 , 由于优化了分块传输 , Blink 仍能获得 3-5GB/s 的更高性能 。
『机器学习』MLSys提前看 | 机器学习的分布式优化方法
本文插图

图 6. DGX-1V 上所有独特拓扑 NCCL2 和 Blink 的广播吞吐量比较
第三 , 作者讨论在使用 PCIe 和 NVLink 执行混合数据传输时的权衡 。 为简洁起见 , 仅在 AWS DGX-1V 服务器上显示 3-8 GPU 的广播结果 。 实验结果见图 7 , 显示了当 Blink 同时通过 NVLink 和 PCIe 传输时 , 仅通过 NVLink 传输的额外 2-5 GB/s 性能增益 。 从 NVLink 到 PCIe 的通信通道切换时间随着 GPU 数量的增加而增加 。 对于 3 和 4 GPU 设置 , 与仅 NVLink 广播相比 , 混合传输可实现约 5GB/s 的提升;对于 7 和 8 GPU , 此加速仅为约 2GB/s 。 这是因为启用和禁用对等访问(即在 PCIe 和 NVLink 之间切换)所花费的总时间与使用的 GPU 数成正比 。
『机器学习』MLSys提前看 | 机器学习的分布式优化方法
本文插图

图 7. 混合和 NVLink 在不同 GPU 数下的广播吞吐量比较
最后 , 作者给出在单个 DGX-1 和多个 DGX-1 设置上使用四个常用 DNN 的 Blink 的端到端加速结果 。 作者将 Blink 与 Pytorch 结合起来 , 并评估训练的端到端性能增益 。 使用四个流行的 CNN:AlexNet、ResNet18、ResNet50 和 VGG16 , 并在 ImageNet-1K(ILSVRC12)数据集上训练这些模型 。 对于所有模型都使用与原始论文中相同的每 GPU 小批量大小和超参数 。
如图 8 所示 , 在单服务器的情况下 , 将集合通信后端从 NCCL2 切换到 Blink , 可以将端到端 DNN 训练迭代所花费的时间最多减少 40%(6.3% 几何平均值) , 并实现最多 87% 的通信时间减少(31% 几何平均值) 。
『机器学习』MLSys提前看 | 机器学习的分布式优化方法
本文插图

『机器学习』MLSys提前看 | 机器学习的分布式优化方法
本文插图

图 8. DGX-1V 机器内的闪烁端到端训练时间缩短(ImageNet1K)
在多服务器的情况下 , 图 9(a)显示 Blink 比 Horovod 的 NCCL/MPI 高出 11% , 与单服务器训练相比 , Blink 在 NCCL 方面的改进有所减少 。 为了了解更快的互连将如何改变性能 , 图 9(b)给出了一个改变跨机器带宽的模拟结果 。 实验比较了 100MB 数据的吞吐量 , 发现随着跨机器带宽的增加 , Blink 的设计将带来更显著的端到端优势 。


推荐阅读