AI 和科学计算应用是分布式计算问题的绝佳示例。这些问题太大了,计算太密集,无法在单台机器上运行。这些计算被分解为并行任务,这些任务分布在数千个计算引擎中,如 CPU 和 GPU。
为了实现可扩展的性能,该系统依赖于在多个节点上划分工作负载,如训练数据、模型参数或两者。然后,这些节点必须频繁交换信息,例如模型训练中反向传播期间新处理的模型计算的梯度,需要高效的集合通信,如 all-reduce、broadcast 以及 gather 和 scatter 操作。
这些集合通信模式可确保整个分布式系统中模型参数的同步和收敛。这些操作的效率对于最大限度地减少通信开销和最大限度地提高并行计算至关重要,因为优化不佳的集合通信可能会导致瓶颈,限制可扩展性。
瓶颈源于以下几个因素:
- 延迟和带宽限制: 集合操作依赖于节点间的高速数据传输,而这些高速数据传输受物理网络延迟和带宽的限制。随着系统规模的增加,要交换的数据量也随之增加,通信所花费的时间成为比计算更重要的因素。
- 同步开销: 许多集合操作需要同步点,在此之前所有参与的节点必须先达到相同的状态,然后才能继续。如果某些节点速度较慢,整个系统会出现延迟,从而导致效率低下,被称为 stragglers 。
- 网络争用: 随着越来越多的节点试图同时通信,网络变得更加拥塞,对带宽和网络资源的争夺也在增加,这进一步减慢了集体操作的速度。
- 非优化通信模式: 一些集合通信算法(例如基于树的归约或基于环的 all-reduce)并非始终针对大规模系统进行良好优化,导致可用资源的低效利用和延迟增加。
克服这一瓶颈需要改进网络技术(例如 InfiniBand 或 RDMA)和算法优化(例如分层 all-reduce 或流水线技术),以最大限度地减少同步延迟、减少争用并优化分布式系统之间的数据流。
创建 NVIDIA SHARP
关键的集合通信使所有计算引擎能够相互交换数据。在 NIC 或服务器上管理此类通信需要交换大量数据,并且会受到延迟或集合性能差异的影响,也称为 服务器抖动 。
通过在交换机结构上迁移管理和执行这些集合通信的责任,可以将传输的数据量减半,并最大限度地减少抖动。NVIDIA Scalable Hierarchical Aggregation and Reduction Protocol(SHARP)是实现这一概念的技术,并引入了 网络计算 概念。它集成在交换机 ASIC 中,旨在加速分布式计算系统中的集合通信。
SHARP 已随 NVIDIA InfiniBand 网络一起推出,可将集合通信运算(如 all-reduce、reduce 和 broadcast)从服务器的计算引擎卸载到网络交换机。通过直接在网络结构中执行归约(求和、平均等),SHARP 可改进这些运算和整体应用程序性能。
借助 NVIDIA SHARP 实现代际进步
第一代 SHARP 专为科学计算应用而设计,侧重于小消息归约操作。它随 NVIDIA EDR 100Gb/s 交换机生成而推出,并得到领先的消息传递接口(MPI)库的快速支持。SHARPv1 小消息归约以并行方式支持多个科学计算应用。
MVAPICH2 是 MPI 标准的开源实现,专为高性能计算 (HPC) 环境而设计。俄亥俄州立大学负责 MVAPICH MPI 库的团队已经证明了 SHARP 在德克萨斯州高级计算中心 Frontera 超级计算机上的性能成就。从 MPI AllReduce 的性能提高了 5 倍,到 MPI Barrier 集合通信的性能提高了 9 倍。 有关更多信息,请参阅使用 SHARP 的可扩展 MPI 集合:TACC Frontera 系统上的大规模性能评估 。
第二代 SHARP 随 NVIDIA HDR 200Gb/s Quantum InfiniBand 交换机一起推出,并增加了对 AI 工作负载的支持。SHARPv2 支持大型消息简化操作,一次支持单个工作负载。这一版本进一步提升了该技术的可扩展性和灵活性,支持更复杂的数据类型和聚合操作。
2021 年 6 月的 NVIDIA MLPerf 提交和结果证明了 SHARPv2 的性能优势,证明 BERT 训练性能提高了 17%。有关更多信息,请参阅 MLPerf v1.0 训练基准测试:对创纪录的 NVIDIA 性能的见解 。
NVIDIA 副总裁兼人工智能系统首席架构师 Michael Houston 在加州大学伯克利分校的机器学习系统课程中介绍了 SHARPv2 的 AllReduce 性能优势 。
AllReduce 带宽的 2 倍性能优势可将 BERT 训练性能提高 17%。
最近,第三代 SHARP 推出了 NVIDIA Quantum-2 NDR 400G InfiniBand 平台。SHARPv3 支持 AI 工作负载的多租户网络计算,这意味着与使用 SHARPv2 的单个工作负载相比,多个 AI 工作负载可并行支持。
Microsoft Azure 首席软件工程师 Jithin Jose 在“ 将云转变为云原生超级计算:借助 Microsoft Azure 实现最佳实践 ”专题会议上展示了 SHARPv3 性能。Jithin 在 Azure 上介绍了 InfiniBand 的网络计算技术,并展示了 AllReduce 延迟方面的近一个数量级的性能优势。
端到端 AI 系统优化
通过 all-reduce 运算,可以看到 SHARP 的一个强大示例。在模型训练期间,多个 GPU 或节点之间的梯度求和,SHARP 聚合网络中的梯度,从而无需在 GPU 之间或节点之间发送完整的数据集。这缩短了通信时间,从而加快 AI 工作负载的迭代速度并提高吞吐量。
在网络计算和 SHARP 时代到来之前,NVIDIA Collective Communication Library (NCCL) 通信软件会从图形中复制所有模型权重,执行 all-reduce 运算来计算权重之和,然后将更新的权重写回图形,从而产生多个数据复制。
2021 年,NCCL 团队开始集成 SHARP,引入了用户缓冲区注册。这使 NCCL 集合能够直接使用指针,从而消除了在此过程中来回复制数据的需求,并提高了效率。
如今,SHARP 已与广泛用于分布式 AI 训练框架的 NCCL 紧密集成。NCCL 经过优化,可将关键的集合通信操作分流到网络,从而充分利用 SHARP,显著提高分布式深度学习工作负载的可扩展性和性能。
SHARP 技术有助于提高分布式计算应用程序的性能。SHARP 正被高性能计算(HPC)超级计算中心用于其科学计算工作负载,也被人工智能(AI)超级计算机用于 AI 应用程序。SHARP 是实现竞争优势的“秘诀”。一家大型服务提供商使用 SHARP 将其内部 AI 工作负载的性能提高了 10% 到 20%。
SHARPv4
SHARPv4 引入了新算法,可支持更多种类的集合通信,这些通信现已用于领先的人工智能训练应用。SHARPv4 将随 NVIDIA Quantum-X800 XDR InfiniBand 交换机平台 一起发布,从而将网络计算能力提升至更高水平。
总结
有关更多信息,请参阅以下资源:
- 技术博客文章:
- 视频:
- 使用 SHARP 的可扩展 MPI 集合:TACC Frontera 系统上的大规模性能评估
- 在 GPU 上运行 NCCL 测试以检查性能和配置
- 可扩展的分层聚合协议:用于高效数据归约的硬件架构