New Scaling Algorithm and Initialization with NVIDIA Collective Communications Library 2.23

作者: Sylvain Jeaugey

文章主图
文章主图

背景介绍

NVIDIA集合通信库(NCCL)是为NVIDIA GPU和网络优化的多GPU及多节点通信原语实现。它是多GPU深度学习训练的核心软件组件,负责处理各种GPU间通信,无论是通过PCI、NVLink还是网络。NCCL利用先进的拓扑检测、优化的通信图和调优模型,在NVIDIA GPU平台上实现开箱即用的最佳性能。本文将讨论NCCL 2.23版本中发布的新功能和修复。

主要贡献

NVIDIA Magnum IO NCCL库旨在优化GPU间和多节点通信,这对AI和高性能计算(HPC)应用中的高效并行计算至关重要。此版本的价值在于其新功能:
* 针对ReduceScatter和AllGather的全新PAT算法:引入了基于Brucks算法的并行聚合树(PAT)算法,用于AllGather和ReduceScatter,实现了对数级扩展性。
* 加速初始化:提升了初始化性能,包括能够使用带内网络进行引导通信。
* ncclCommInitRankScalable:一个新的初始化API,用于在创建通信器时使用多个ncclUniqueId,以加速大规模场景下的初始化。
* 节点内用户缓冲区注册:利用已注册的用户缓冲区进行节点内操作,提升性能。
* 新的分析器插件API:提供API钩子以测量细粒度的NCCL性能。

方法细节

PAT对数级扩展算法(用于ReduceScatter和AllGather)

新的ncclCommInitRankScalable API

加速的引导操作

节点内用户缓冲区注册

新的分析器插件API

ncclProfileGroup
+- ncclProfileColl
|  +- ncclProfileProxyOp
|     +- ncclProfileProxyStep
+- ncclProfileP2p
   +- ncclProfileProxyOp
      +- ncclProfileProxyStep

# ncclProfileProxyCtrl

补充细节与修复

实验设置

文章未提供详细的实验环境配置信息,如数据集、模型、硬件(GPU、CPU、网络)或软件(操作系统、代码库)的具体细节。

实验结果

文章主要对新功能进行了定性描述,并未提供定量的实验结果、图表或性能对比数据。文中提到的一些预期性能提升(如PAT算法对中小型消息的性能改善)是基于算法设计原理的推断。

结论

NVIDIA NCCL 2.23版本为优化AI和HPC应用中至关重要的GPU间和多节点通信引入了多项新功能和改进。关键增强功能包括:新的PAT算法、大规模场景下的加速初始化、节点内用户缓冲区注册以及新的分析器插件API。