集合通信库初步调研 NCCL、BCCL、TCCL、ACCL、HCCL

幕后黑手是否基于NCCL扩展是否支持异构通信核心设计目标是否开源
BCCL百度故障诊断容错性能优化
TCCL腾讯为腾讯星脉网络定制通信库极致优化性能
ACCL阿里不详不详面向阿里云灵骏架构设计优化性能
HCCL华为不详基于昇腾硬件

不同厂商的集合通信库,就是针对他们网络或者硬件做了定制化。已达到支持特定硬件,定制化性能最优,集群容错

百度和腾讯是明确说,基于NCCL扩展,也就是改的NCCL代码,或者在NCCL上加了些东西。但是阿里和华为没有明确说,可能是重写的一套,当然参考NCCL是必然的,NCCL毕竟行业老大。

可惜啊,没找到这些通信库的开源项目,参考意义就小了很多,如果有开源的,一定通知我啊,感谢感谢。

NVIDIA Collective Communications Library (NCCL)

 NVIDIA 集合通信库可实现针对 NVIDIA GPU 和网络进行性能优化的多 GPU 和多节点通信基元。NCCL 提供了 all-gather、all-reduce、broadcast、reduce、reduce-scatter、point-to-point send 和 receive 等例程,这些例程均经过优化,可通过节点内的 PCIe 和 NVLink 高速互联以及节点间的 NVIDIA Mellanox 网络实现高带宽和低延迟。

BCCLBaidu Collective Communication Library

BCCL 基于开源的 NCCL 进行了功能扩展和能力增强,针对大模型训练场景在可观测性、故障诊断、稳定性等方面进行优化,进一步提升集合通信库的可运维能力。同时,BCCL 针对百度智能云的特定 GPU 芯片进行了集合通信性能优化,进一步提升资源利用率。相比 NCCL,BCCL 的关键特性如下:

  • 可观测性:新增集合通信带宽实时统计能力;

  • 故障诊断:新增集合通信 hang 时的故障诊断能力;

  • 稳定性:增强网络稳定性和故障容错能力;

  • 性能优化:提升大模型训练主流 GPU 芯片的集合通信性能。

百度自研的BCCL,可以实现 GPU、昆仑芯等标准 RDMA 设备的互联互通。在已有 AI 算力集群的基础上,构建由GPU、昆仑芯、昇腾等不同芯片混合组成的单一集群。

百度百舸为了实现跨芯的互联互通,使用了CPU转发来实现跨昇腾910B子集群和GPU子集群的连接。

Accelerator抽象,屏蔽硬件差异充分发挥不同芯片的算力效能

Accelerator抽象层面向应用,屏蔽底层芯片在硬件层面的差异,将芯片算子与上层策略解耦开来,芯片厂商仅需要进行各自芯片的算子调优。百度百舸在GPU上沉淀的上层各项策略(比如通信overlap、显存offload、张量并行、数据并行等)都会平滑地迁移到各种芯片上,确保了各种国产芯片在百度百舸上能达到一个非常高的运行效率。

参考资料: 

专为大模型训练优化,百度集合通信库 BCCL 万卡集群快速定位故障

安装BCCL库 - 百舸异构计算平台AIHC | 百度智能云文档

TCCL(Tencent Collective Communication Library)

TCCL(Tencent Collective Communication Library)是一款针对腾讯云星脉网络架构的高性能定制加速通信库。主要功能是依托星脉网络硬件架构,为 AI 大模型训练提供更高效的网络通信性能,同时具备网络故障快速感知与自愈的智能运维能力。TCCL 基于开源的 NCCL 代码做了扩展优化,完全兼容 NCCL 的功能与使用方法。TCCL 目前支持主要特性包括:

双网口动态聚合优化,发挥 bonding 设备的性能极限。

全局 Hash 路由(Global Hash Routing),负载均衡,避免拥塞。

拓扑亲和性流量调度,最小化流量绕行。

TCCL 加速通信库,实现您在腾讯云RDMA环境中多机多卡通信的性能提升。在大模型训练场景,对比开源的 NCCL 方案,TCCL 预计约可以提升 50% 带宽利用率。

定制通信库TCCL。通信库在训练过程中负责管理计算节点间的数据通信。面对定制设计的高性能组网架构,业界开源的GPU集合通信库(比如NCCL)并不能将网络的通信性能发挥到极致,从而影响大模型训练的集群效率。为解决星脉网络的适配问题,我们基于NCCL开发了腾讯高性能集合通信库TCCL(Tencent Collective Communication Library),定制适配星脉网络平台,在AllReduce/AllGather/ReduceScatter等常用通信模式下带来40%的性能加速。在网卡设备管理、全局网络路由、拓扑感知亲和性调度、网络故障自动告警等方面融入了定制设计的解决方案。

参考资料:

高性能计算集群 GPU 型实例安装 TCCL 说明-操作指南-文档中心-腾讯云

ACCL(Alibaba Collective Communication Library)

ACCL(Alibaba Collective Communication Library)是一款高性能通信库,提供了AllReduce、 AllToAllV、Broadcast等常用集合操作接口以及点到点Send/Recv接口,为多机多卡训练提供高效的通信支持。

ACCL面向阿里云灵骏架构设计,通过算法与拓扑的深入协同来收获更好的通信性能,充分挖掘高性能RoCE网络的带宽效率,最大化分布式训练系统的可扩展性。

ACCL提供了简单易用的C++ API,语义与MPI等主流集合操作接口相近。ACCL提供了对PyTorch、Horovod 等深度学习框架以及数据并行、模型并行等主流并行训练模式的支持,便于深度学习用户快速使用。

ACCL的关键特性包括:

  • 异构拓扑感知,例如节点内PCIE与NVLink/NVSwitch、节点间多轨RDMA网络,分层混合算法设计,充分利用不同互连的带宽。

  • 端网协同选路,算法与拓扑协同设计实现无拥塞通信,支撑训练性能上规模可扩展。

  • 端侧RoCE LAG感知、在网多流负载均衡,多任务并发、资源争抢时保障整体吞吐。

参考资料:

安装ACCL库_人工智能平台 PAI(PAI)-阿里云帮助中心

ACCL: Architecting Highly Scalable Distributed Training Systems With Highly Efficient Collective Communication Library | IEEE Journals & Magazine | IEEE Xplore

HCCL(Huawei Collective Communication Library)

HCCL集合通信库( Huawei Collective Communication Library ,简称HCCL)是基于昇腾硬件的高性能集合通信库,提供单机多卡以及多机多卡间的数据并行、模型并行集合通信方案。HCCL支持AllReduce、Broadcast、Allgather、ReduceScatter、AlltoAll等通信原语,Ring、Mesh、HD等通信算法,在HCCS、RoCE和PCIe高速链路实现集合通信。

1、高性能集合通信算法,提升大规模并行计算通信效率

服务器内基础拓扑为Full Mesh互联拓扑,每个Full Mesh互联拓扑内的基础算法为Mesh算法。服务器间为Fat Tree互联拓扑,支持HD、Ring、NHR等通信算法。

2、计算通信统一硬化调度,降低调度开销,优化硬件资源利用率

专用硬件调度引擎和硬件通信原语,实现计算任务与通信任务全硬化调度,降低调度开销,精准控制系统抖动。

3、计算通信高性能并发,计算与通信并发流水执行,系统性能进一步提升

“归约”类集合通信操作( AllReduce 、ReduceScatter 、Reduce)通过随路方式实现,不占用计算资源。计算通信任务并发执行,总执行时长大幅降低。

参考资料:

HCCL-昇腾社区 (hiascend.com)

  • 46
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PyTorch的NCCL(NVIDIA Collective Communication Library)是专为加速深度学习训练中分布式计算而设计的。它是基于CUDA的高性能、低延迟的通信,特别适合在多个GPU和NVIDIA的GPU集群上进行模型并行训练。NCCL支持GPU之间的全双工数据通信,可以显著提高多GPU模型之间的同步和数据交换效率。 NCCL的主要特点包括: 1. **高效的GPU到GPU通信**:NCCL使用了优化的算法来减少内存拷贝和提高数据传输速率,这对于大规模并行训练至关重要。 2. **广播和收集操作**:支持所有节点同时对同一张张量进行广播或收集操作,这对于训练中的梯度同步非常关键。 3. **可扩展性**:随着越来越多的GPU加入,NCCL能轻松地扩展到数百甚至数千个GPU的大型集群。 4. **容错机制**:提供了错误检测和恢复功能,即使在一些节点出现故障时,也可以保证其他节点的正常运行。 5. **兼容性**:与PyTorch的DistributedDataParallel (DDP) 和 DistributedCPU等模块无缝集成,使得开发者可以方便地实现模型在多GPU和分布式环境下的训练。 如果你正在使用PyTorch构建分布式应用,了解如何设置NCCL环境、配置过程以及如何优化通信策略是非常重要的。相关问题可能包括: 1. 如何在PyTorch中启用NCCL支持? 2. NCCL如何影响模型的训练速度? 3. 如何调整NCCL的配置参数以优化性能? 4. NCCL是否支持跨GPU机群通信?如果需要,如何配置网络连接? 5. 有没有特定的场景下,不推荐使用NCCL

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值