文档

什么是AI通信加速库Deepnccl

更新时间:

Deepnccl是为阿里云神龙异构产品开发的一种用于多GPU互联的AI通信加速库,在AI分布式训练或多卡推理任务中用于提升通信效率。本文主要介绍Deepnccl的架构、优化原理和性能说明。

产品简介

Deepnccl基于NCCL(NVIDIA Collective Communications Library)通信算子的调用,能够实现更高效的多GPU互联通信,无感地加速分布式训练或多卡推理等任务。

Deepnccl的关联架构布局图如下所示:

image

架构层

说明

AI模型

Deepnccl在AI场景下使用时,具备通用性能,适用模型包括但不限于LLM大模型和SD文生图等AI模型。

AI框架层

在AI框架层,支持的AI框架和功能如下:

  • 支持通用的AI框架,例如PyTorch、TensorFlow、Mxnet等AI框架。

  • 支持基于AI框架之上的并行框架,例如Megatron、DeepSpeed、Collossal-AI等衍生框架。

  • Deepnccl通过底层Deepytorch实现了PyTorch框架的充分兼容和无感分布式训练性能优化,增加融合优化等额外调优手段。

    说明

    如需了解Deepytorch的更多信息,请参见什么是AI加速器Deepytorch

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。

  • 相比NCCL原生,使用Deepnccl进行Allreduce双机优化后,当通信数据量为128 M~256 M时,其通信性能提升10%~20%。

  • Deepnccl目前支持最多在8台机器上进行协同训练。

Reduce-scatter多机优化

支持V100或A10等机型,例如

ecs.gn6v-c10g1.20xlarge或 ecs.ebmgn7ix.32xlarge。

  • 相比NCCL原生,使用Deepnccl进行Reduce-scatter双机优化后,其通信性能提升30%。

  • Deepnccl目前支持特定的多机进行扩展,即2机2卡、2机4卡、2机8卡、4机8卡、7机8卡或8机8卡机型。

allgather多机优化

支持V100或A10等机型,例如

ecs.gn6v-c10g1.20xlarge或

ecs.ebmgn7ix.32xlarge。

  • 相比NCCL原生,使用Deepnccl进行Allgather双机优化后,其通信性能提升80%。

  • Deepnccl目前支持最多在20台机器上进行协同训练。

相关文档

安装并使用Deepnccl

  • 本页导读 (1)
文档反馈