首页 > 其他分享 >集合通信库初步调研 NCCL、BCCL、TCCL、ACCL、HCCL

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

时间:2024-06-22 21:28:38浏览次数:12  
标签:NCCL ACCL BCCL 通信 Library TCCL 集合

幕后黑手是否基于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 网络实现高带宽和低延迟。

BCCL(Baidu 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)

标签:NCCL,ACCL,BCCL,通信,Library,TCCL,集合
From: https://blog.csdn.net/lianghuaju/article/details/139470668

相关文章

  • deepspeed 训练多机多卡报错 ncclSystemError Last error
     最近在搞分布式训练大模型,踩了两个晚上的坑今天终于爬出来了我们使用2台8*H100遇到过错误110.255.19.85:ncclSystemError:Systemcall(e.g.socket,malloc)orexternallibrarycallfailedordeviceerror.10.255.19.85:Lasterror:10.255.19.85:socketStartCo......
  • 用友NCCloud FS文件管理SQL注入
    用友NCCloudFS文件管理SQL注入用友NCCloudFS文件管理登录页面对用户名参数没有过滤,存在SQL注入。Fofa:"/platform/yonyou-yyy.js"、app="用友-NC-Cloud"&&icon_hash="1596996317"nccloud登录界面:文件服务器管理登录页面:http://x.x.x.x/fs/username参数存在注入,......
  • 容器集群实现多机多卡分布式微调大模型chatglm2-6b(deepseed + LLaMA + NCCL)
    环境信息2台物理机(187.135,187.136),各两张p4显卡,安装好docker=20.10.0,安装好nvidia驱动(driverversion=470.223.02,cudaversion=11.4)构造容器集群(dockerswarm187.136节点作为manager节点,187.135节点作为worker节点)[root@host-136~]#dockerswarminit--advertise-addr......
  • 对比Spring Boot中的JdbcClient与JdbcTemplate
    本文我们一起看看SpringBoot中JdbcClient和JdbcTemplate之间的差异。以下内容使用的Java和SpringBoot版本为:Java21SpringBoot3.2.1假设我们有一个ICustomerService接口:publicinterfaceICustomerService{List<Customer>getAllCustomer();Option......
  • 对比Spring Boot中的JdbcClient与JdbcTemplate
    本文我们一起看看SpringBoot中JdbcClient和JdbcTemplate之间的差异。以下内容使用的Java和SpringBoot版本为:Java21SpringBoot3.2.1假设我们有一个ICustomerService接口:publicinterfaceICustomerService{List<Customer>getAllCustomer();Optio......
  • NCCL下载及安装教程
    1、查看cuda版本whichcuda12、在确定cuda版本之后,注册并登录英伟达官网,查找指定cuda版本的NCCL软件;管网链接:https://developer.nvidia.com/nccl/nccl-legacy-downloads指定版本为:不确定系统,本地安装 3、下载到本地之后,压缩包文件名为:nccl_2.6.4-1+cuda10.0_ppc64le.txz解......
  • 从安卓模拟器中获取 expo-av 库录音得到的音频文件 file:///data/user/0/mo.com.nccl.
    在使用expo-av录制音频时,录制结束通过recording.getURI()可以获取得到的音频文件的地址。想要获取该文件可以通过发送请求的方式:consturi=recording.getURI();letresponse=awaitfetch(uri);letblob=awaitresponse.blob();如果想直接根据文件路径找到这个文......
  • [Mac软件]MacCleaner 3 PRO 3.2.1应用程序清理和卸载
    应用介绍MacCleanerPRO是一个应用程序包,将帮助您清除磁盘空间并加快Mac的速度!MacCleanerPRO-让您的Mac始终快速、干净和有条理。AppCleaner&UninstallerPRO-完全删除未使用的应用程序并管理Mac扩展。磁盘空间分析仪PRO-分析磁盘空间的使用情况,并找到最庞大的内容。重复文......
  • NCCL接口测试
    准备知识PyTorch分布式通信的程序包相关的API。torch.distributed.init_process_group(),初始化进程组。torch.distributed.get_rank(),可以获得当前进程的rank,rank%torch.torch.cuda.device_count()可以得到当前节点的ranklocal_rank。torch.distributed.get_world_size()......
  • ubuntu 22.04离线安装cuda 11.7.1、cudnn 8.9.3.28、nccl 2.18.3、tensorrt 8.6.1
    最近在使用飞桨OCR,有几个特殊的符号需要进行识别,手上只有两台机器,一台1080TI单卡(windows11),一台1080Ti双卡(linux22.04),习惯性追新到飞桨最高支持的cuda11.7,其实1080Ti到cuda10就够用了,后面的新版本差没有明显的性能提升。windows上无脑安装,linux上安装比较麻烦,记录下安装过程......