阿里云的ACCL(Alibaba Cloud Collective Communication Library)是一个高性能的集合通信库,主要用于大规模分布式深度学习训练场景中的GPU间通信。它并非从零构建,而是在NVIDIA NCCL(NVIDIA Collective Communications Library)的基础上进行了深度优化和扩展,以更好地适应阿里云的硬件基础设施、网络环境和大规模训练需求。
以下是ACCL在NCCL基础上所做的主要工作和改进的详细总结与归纳:
一、核心定位与目标
ACCL的目标是在阿里云的异构基础设施上,提供比标准NCCL更高性能、更强稳定性、更好可扩展性和更优资源利用率的集合通信能力。它继承了NCCL在GPU通信领域的成熟设计,同时针对云环境的特点进行了定制化增强。
二、主要改进与增强方向
1. 网络栈深度优化与多协议支持
-
RDMA/ROCE支持增强:
- NCCL原生支持InfiniBand和RoCE(RDMA over Converged Ethernet),但在大规模云部署中,网络拓扑复杂,延迟和带宽波动较大。
- ACCL对RoCE协议栈进行了深度调优,包括拥塞控制算法、PFC(Priority Flow Control)配置、DCQCN参数优化等,显著降低了长距离通信延迟,提升了高负载下的稳定性。
- 在阿里云自研的高性能网络(如HCCN,High-Performance Cloud Computing Network)上,ACCL能更好地利用底层RDMA能力。
-
融合以太网(Ethernet)与RDMA的混合通信路径:
- 在非RDMA或混合网络环境中,ACCL引入了基于TCP/UDP的高效通信路径,并结合零拷贝技术、用户态协议栈(如基于DPDK或eBPF)减少内核开销。
- 实现了自适应通信路径选择,根据网络类型、拓扑、负载动态选择最优通信协议。
2. 拓扑感知与智能路由
-
云环境拓扑感知:
- NCCL依赖于PCIe/CPU拓扑进行通信路径选择,但在云环境中,跨节点通信可能涉及复杂的虚拟化层、NUMA、SR-IOV、VPC网络等。
- ACCL集成了阿里云的物理与逻辑拓扑信息,能够更精确地感知GPU之间的实际通信成本(如跨NUMA、跨Socket、跨机架、跨AZ等),从而优化AllReduce、AllGather等操作的通信树或环结构。
-
动态拓扑调整:
- 支持运行时拓扑探测与动态调整,应对虚拟机迁移、网络波动等云环境常见问题。
3. 大规模集群下的可扩展性优化
-
分层通信算法(Hierarchical Collectives):
- 在数千卡甚至上万卡的训练场景中,ACCL采用更高效的分层AllReduce、AllGather等算法。
- 例如:在节点内使用NCCL的ring或tree算法,在节点间采用基于参数服务器或分组通信的优化策略,减少跨节点通信开销。
-
通信压缩与稀疏化支持(可选):
- 虽然NCCL主要处理全量通信,ACCL可集成梯度压缩、稀疏通信等高级功能(通过插件或扩展接口),在特定场景下降低通信量。
4. 与阿里云基础设施深度集成
-
与神龙架构(X-Dragon)协同优化:
- 神龙架构提供高性能虚拟化底座,ACCL利用其低延迟、高带宽的vSwitch和虚拟化I/O能力,减少通信路径中的虚拟化开销。
-
与PAI平台(Platform for AI)无缝集成:
- ACCL作为阿里云PAI平台的底层通信库,与训练框架(如TensorFlow、PyTorch)、调度系统(如Kubernetes + Volcano)深度集成,支持自动配置、性能监控、故障诊断。
-
支持多种硬件组合:
- 不仅支持NVIDIA GPU,还针对阿里云自研的含光NPU、倚天CPU等异构计算单元进行适配,提供统一的集合通信接口。
5. 性能监控与诊断能力增强
-
细粒度性能 profiling:
- ACCL提供了比NCCL更详细的通信性能指标,如各阶段延迟、带宽利用率、重传次数、拥塞事件等,便于定位性能瓶颈。
-
故障自愈与降级机制:
- 在网络抖动或节点异常时,ACCL支持通信路径切换、重试、降级到备用协议,提升训练任务的鲁棒性。
6. API兼容性与易用性
-
NCCL API 兼容:
- ACCL完全兼容NCCL的C/C++ API,用户无需修改代码即可替换NCCL,实现“无缝迁移”。
- 同时提供扩展API,支持更高级的控制(如指定通信后端、设置QoS策略等)。
-
自动配置与调优:
- 提供智能配置工具,根据集群规模、网络类型、GPU型号自动选择最优参数(如nthreads, max_rings, chunk_size等),降低用户调优门槛。
三、典型应用场景
- 大规模语言模型(LLM)训练:如通义千问系列模型,在数千GPU上进行高效AllReduce。
- 多租户AI训练集群:在共享资源环境下,通过QoS控制和隔离机制保障通信性能。
- 跨地域/跨AZ训练:利用ACCL的广域网优化能力,支持地理分布式的协同训练。
四、总结对比(ACCL vs NCCL)
特性 | NCCL | ACCL |
---|---|---|
基础通信 | PCIe, NVLink, InfiniBand, RoCE | 在NCCL基础上增强RoCE、支持混合网络 |
拓扑感知 | 本地PCIe/CPU拓扑 | 云环境全局拓扑(物理+逻辑) |
可扩展性 | 支持数百到数千卡 | 针对万卡级优化,分层通信 |
网络适应性 | 固定协议栈 | 自适应协议选择(RDMA/TCP/UDP) |
云集成 | 通用 | 深度集成阿里云神龙、PAI、VPC等 |
监控诊断 | 基础性能计数 | 细粒度profiling与故障自愈 |
API兼容 | 标准API | 兼容NCCL API + 扩展接口 |
易用性 | 需手动调优 | 提供自动配置与优化工具 |
五、结论
ACCL并非简单地“替代”NCCL,而是在NCCL的坚实基础上,针对阿里云的大规模、多租户、异构化、虚拟化的AI训练场景,进行系统性增强和定制化优化。它通过:
- 网络协议栈优化
- 拓扑感知与智能路由
- 大规模可扩展性设计
- 与云基础设施深度集成
- 增强的监控与运维能力
实现了在阿里云环境下更高性能、更强稳定性和更好用户体验的集合通信能力,是支撑阿里云大模型训练的核心底层技术之一。