DeepNCCL是为阿里云神龙异构产品开发的一种用于多GPU互联的AI通信加速库,在AI分布式训练或多卡推理任务中用于提升通信效率。本文主要介绍DeepNCCL的架构、优化原理和性能说明。
产品简介
DeepNCCL基于NCCL(NVIDIA Collective Communications Library)通信算子的调用,能够实现更高效的多GPU互联通信,无感地加速分布式训练或多卡推理等任务。
DeepNCCL的关联架构布局图如下所示:
架构层 | 说明 | |
AI模型 | DeepNCCL在AI场景下使用时,具备通用性能,适用模型包括但不限于LLM大模型和SD文生图等AI模型。 | |
AI框架层 | 在AI框架层,支持的AI框架和功能如下:
| |
DeepNCCL通信加速 | 接口层 | 在接口层,通过DeepncclWrapper封装nccl-base函数,提供了对通信算法的通用支持。支持的NCCL通信算法包括allreduce(全局归约)、reduce-scatter(分散归约)、allgather(全收集)等。 |
集合算法层 | 在集合算法层,通过集合通信编译技术,针对不同的机型构建自适应拓扑算法,实现NCCL Runtime充分兼容和无感的集合通信拓扑优化。 | |
网络层 | 在网络层,通过对阿里云的VPC、RDMA或者eRDMA网络基础设施进行适配优化,实现网络层无感的通信优化。 |
优化原理
DeepNCCL通信加速库在AI分布式训练或多卡推理任务中,具有显著的通信优化效果。具体说明如下:
单机优化
单机内的优化主要针对不同硬件拓扑机型的通信优化,以PCIe互连的机型和NVLink互连的机型为例,具体说明如下:
PCIe互连拓扑优化:该机型的多GPU卡之间共享PCIe带宽,通信容易受限于物理带宽。针对PCIe互连拓扑的通信优化特点,理论上,可以采用基于流水线的PS(Parameters Server:参数服务器)模式梯度规约算法CPU-Reduce大幅降低通信耗时。该算法按照GPU到CPU再到GPU的顺序构建流水线,将梯度规约的计算分散到多个设备上运行,来减少通信瓶颈。
例如,在通信数据量超过4 MB的场景,PCIe互连拓扑优化方案相比NCCL原生在性能上提升了20%以上。
NVLink互连拓扑优化:NCCL默认使用的Binary-Tree算法在V100机型上并不能充分发挥多通道性能。针对NVLink互连拓扑的通信优化,可以通过扩展单机内部不同的N-Trees拓扑结构组合,实现了拓扑调优并发挥多通道性能。
例如,在通信数据量超过128 MB的场景下,NVLink互连拓扑优化方案相比NCCL原生在性能上提升了20%以上。
多机优化
多机优化体现在通信算子编译优化、TCP多流优化、多机CPU-Reduce优化三个方面,具体说明如下:
通信算子编译优化:针对阿里云上不同机型,以及网卡与GPU的不同拓扑连接等特点,相比较基于全局拓扑结构实现的Allreduce、Allgather或Reduce-scatter等算法,Hybrid+算法支持单机和多机的分层通信,充分利用单机内部高速带宽的同时降低了多机之间的通信量,通信算子编译优化方案相比NCCL原生在性能上提升了50%以上。
通信多流优化:通常情况下,因网络带宽没有被充分利用,会导致上层集合通信算法的跨机性能无法达到最优。而采用基于TCP/IP的多流功能,提升分布式训练的并发通信能力,可以实现多机训练性能提升5%~20%。
多机CPU-Reduce:该优化继承了单机内CPU-Reduce高效的异步流水线,并将跨机Socket通信也设计为流水线形态,实现多机通信全过程流水化,有效减少通信延迟,提高整体训练性能。
例如,在通信量较大的Transformer-based模型的多机训练场景下,多机CPU-Reduce优化方案可将端到端性能提升20%以上。
性能说明
DeepNCCL通信加速库具有Allreduce单机优化、Allreduce多机优化、Reduce-scatter多机优化以及Allgather多机优化性能,具体说明如下:
特性 | 支持范围 | 性能提升率说明 |
Allreduce单机优化 | 支持A10的8卡机型,例如ecs.ebmgn7ix.32xlarge。 | 相比NCCL原生,使用DeepNCCL进行Allreduce单机优化后,当通信数据量为512 B~2 M时,其通信性能提升10%~100%。 |
Allreduce多机优化 | 支持V100或A10等机型,例如 ecs.gn6v-c10g1.20xlarge或 ecs.ebmgn7ix.32xlarge。 |
|
Reduce-scatter多机优化 | 支持V100或A10等机型,例如 ecs.gn6v-c10g1.20xlarge或 ecs.ebmgn7ix.32xlarge。 |
|
allgather多机优化 | 支持V100或A10等机型,例如 ecs.gn6v-c10g1.20xlarge或 ecs.ebmgn7ix.32xlarge。 |
|
相关文档
针对分布式训练或者多卡推理中的AI通信场景,在不同的GPU云服务器上安装DeepNCCL通信库,可以加速分布式训练或推理性能。具体操作,请参见安装并使用Deepnccl。