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。