作者:n重庆商报程红Lft | 来源:互联网 | 2024-12-01 10:21
本文源自SysML2018,由星云Cluster翻译,并经InfoQ授权发布。原文链接:http://www.sysml.cc/doc/151.pdf。文章详细介绍了Blink的设计理念及其在提高GPU间参数聚合速度方面的创新贡献。
在大规模分布式机器学习任务中,GPU 间的高效参数聚合对加速整体训练至关重要。随着 GPU 性能的不断提升,这一环节的重要性日益凸显。针对这一挑战,加州大学伯克利分校与微软合作,在 SysML 2018 大会上共同发布了 Blink —— 一款基于 NVLink 技术构建的高性能参数聚合通信库,并发表了相关研究论文。
### 引言
在深度学习模型训练过程中,尤其是像 ImageNet 1K 这样的大型模型,单个 GPU 训练可能需要数天乃至数周时间。为了缩短训练周期,业界普遍采用数据并行随机梯度下降(SGD)策略,通过多个 GPU 并行计算来加速训练过程。然而,随着模型复杂度的增加及 GPU 计算能力的增强,跨 GPU 参数同步成为影响训练效率的关键瓶颈。
目前,模型参数的交换主要依赖于集体通信原语,比如 All-Reduce。NVIDIA 的 NCCL 库是这一领域的领先解决方案之一,支持通过 PCIe 或 NVLink 等高速互连技术实现 GPU 间的集体通信。研究表明,将 NCCL 整合进 TensorFlow 可以使端到端的训练速度提升约 60%。
尽管如此,NCCL 在某些特定网络拓扑下的表现并不理想,因为它倾向于构建尽可能多的环形路径来进行数据传输,这往往导致部分链路资源未被充分利用。
### Blink 的设计与优势
为了解决上述问题,Blink 提出了一套基于广播的数据传输协议,旨在最大化利用现有的 GPU 连接,从而提高通信效率。Blink 的设计不仅考虑了单一机器内部的 GPU 互连,还适用于跨多台机器的分布式环境。
具体来说,Blink 的通信协议分为两个阶段:首先是组内广播,即在每个完全连接的 GPU 组内执行数据交换;其次是跨组转发,负责在不同组之间传递信息。这种分层的设计思路有助于克服因 GPU 数量变化、硬件差异等因素带来的挑战。
### 实验验证
实验结果显示,Blink 在 NVIDIA DGX-1 服务器上,使用 8 个 GPU 进行测试时,相比于现有最先进的通信库,Blink 能够实现高达两倍的性能提升。这主要得益于其高效的链路利用机制。
### 结论与展望
总之,Blink 作为一种新型的集体通信库,通过优化数据传输路径,有效提升了 GPU 间的通信效率。未来,研究团队计划进一步探索 Blink 在更多场景下的应用潜力,特别是在面对硬件异构性和跨机器通信需求时的表现。