当前位置: 首页 > article >正文

HCCL 集合通信:昇腾集群的参数同步引擎

大模型训练的本质是将一个超大矩阵乘法拆到多张 NPU 上并行计算每张卡算完自己的分片后把梯度合并。合并操作就是集合通信。HCCLHuawei Collective Communication Library是 CANN 的集合通信库对应 NVIDIA NCCL。它不参与模型计算不管理训练循环只做一件事——在多卡之间高效搬运数据。为什么大模型训练离不开通信以 LLaMA-70B 为例。单张 Ascend 910 显存 32GB模型参数 140GBFP16放不下。必须把模型切到 8 张卡上每张卡负责八分之一的参数。前向计算时每张卡算出自己那部分的梯度然后需要把所有卡的梯度加起来每张卡才能更新自己的参数。这个加起来就是 AllReduce 操作。没有通信库的帮助AllReduce 需要手动写一个算法——每张卡把自己的梯度发给某个收集者收集者相加完后广播回去。通信量O(N²)N 为卡数卡越多通信效率越低。HCCL 用 Ring AllReduce 把通信量降到O(N)。Ring 通信为什么常见Ring AllReduce 是所有集合通信库的标配算法。以 4 张卡为例卡 0 → 卡 1 → 卡 2 → 卡 3 → 卡 0逻辑 Ring每张卡只跟前后邻居通信。梯度被切成 N 块N卡数每张卡持有不同块的数据。Reduce-Scatter 阶段4 步Step 1: 卡0把块0发给卡1卡1把块1发给卡2卡2把块2发给卡3卡3把块3发给卡0 Step 2: 每张卡收到后做元素求和再把结果传给下一张 Step 3: 继续传递和累加 Step 4: 每张卡持有某个块的完整和AllGather 阶段3 步每张卡把自己持有的完整块广播给所有卡所有卡最终持有全部块的完整和总通信量 2 × (N-1) × (gradient_size / N)跟卡数 N 无关。N 越大每张卡承担的通信量反而越小。这就是 Ring 算法扩展性的来源。HCCL 与 NCCL 的区别拓扑感知不同。NCCL 为 NVIDIA 的 NVLink 和 InfiniBand 拓扑做了深度优化——知道 GPU 之间是 NVLink 直连还是走 PCIe 交换机通信路径选择不同。HCCL 针对的是昇腾集群的 HCCSHuawei Cache Coherence System互联和 RoCE 网络拓扑结构自然不同。HCCL 也会自动检测卡间拓扑但检测方式和通信路径算法跟 NCCL 不一样。通信原语实现不同。NCCL 有 150 种算法变体Ring、Tree、NVLink Direct 等HCCL 的算法数量少一些但覆盖了核心场景AllReduce、AllGather、ReduceScatter、Broadcast、AllToAll。集成方式不同。NCCL 通过 PyTorch 的 DistributedDataParallel 和 DeepSpeed 集成。HCCL 同样集成进了 PyTorch通过torch_npu训练脚本里的torch.distributed.all_reduce在昇腾上走的就是 HCCL。应用层代码完全一致——换卡不换代码。昇腾集群如何同步参数一条典型的分布式训练命令torchrun--nproc_per_node8train.pyPyTorch 内部为每张卡创建独立的进程每个进程绑定一张 NPU。DDP 初始化时调用torch.distributed.init_process_group(backendhccl)HCCL 在背后做的事情通信域初始化。8 个进程互相发现建立通信拓扑。HCCL 自动检测 NPU 之间的物理拓扑HCCS 直连、PCIe 交换机、RoCE 网络为每对卡选择最短通信路径。Buffer 注册。每张卡在显存中分配通信 BufferHCCL 把 Buffer 地址注册到 DMA 引擎。注册完成后通信走硬件 DMA不经过 CPU 拷贝。通信就绪。所有卡之间建立好通信链路后DDP 开始训练循环。训练每步的反向传播结束后PyTorch 调用all_reduce(gradients)HCCL 执行 Ring AllReduce所有卡的梯度同步同值。HCCL 在 CANN 中的位置CANN 跟通信相关有三个仓库hccl — 集合通信库AllReduce、AllGather 等 hcom — 通信算子库更底层的通信原语 hixl — 单边通信库零拷贝场景hccl 在最高层直接对接 PyTorch DDP 和 DeepSpeed。hcom 是 hccl 的下层——hccl 的 AllReduce 调用 hcom 的发送和接收算子。hixl 是另一条路径用于推理场景的 PD 分离通信。大模型训练中的通信优化实际分布式训练中通信开销不只是一个算法问题还涉及工程层面的各种权衡。计算通信重叠。Ring AllReduce 的 Reduce-Scatter 阶段可以在反向传播的同时异步启动——模型最后一层的梯度刚算出来通信就开始了不用等到所有层都算完。这种重叠可以让通信开销消失在计算的时间里。HCCL 支持通过hccl_stream让通信和计算使用不同的 Stream实现异步重叠。梯度压缩。通信的数据量跟模型大小成正比。LLaMA-70B 每步更新要同步约 140GB 的梯度。FP16 下即便用 Ring 拆分每张卡每步仍要传输约 35GB。常见压缩手段FP16 → FP32 混精度梯度用 FP16 通信通信量减半梯度裁剪只同步大于阈值的梯度元素TopK 稀疏化只同步梯度值最大的 K% 元素前两种 HCCL 原生支持。TopK 稀疏化需要训练框架配合——DeepSpeed 和 Megatron-LM 有自己的稀疏通信实现。性能参考在 8×Ascend 910 集群上HCCL AllReduce 的实测带宽数据量NCCL (A100×8 NVLink)HCCL (Ascend 910×8 HCCS)1MB12 GB/s9 GB/s16MB58 GB/s42 GB/s128MB92 GB/s78 GB/s512MB108 GB/s95 GB/sHCCL 在大数据量下的带宽能达到对标硬件的 88%95/108。小数据量差距大一些75%主要原因是 HCCL 的 Ring 算法在小 Buffer 场景的初始化开销偏高。HCCL 仓库hcom 通信算子库通信拓扑与带宽利用率HCCL 的另一个关键优化是拓扑感知的通信路径选择。在一个 8 卡节点上实际的物理拓扑可能是NPU 0 ── HCCS ── NPU 1 NPU 4 ── HCCS ── NPU 5 │ │ │ │ PCIe PCIe PCIe PCIe │ │ │ │ NPU 2 ── HCCS ── NPU 3 NPU 6 ── HCCS ── NPU 7NPU 0 和 NPU 1 之间是 HCCS 直连带宽 100GB/s。NPU 0 和 NPU 2 之间走 PCIe 交换机带宽只有 32GB/s。HCCL 在通信域初始化阶段通过探测每对卡之间的延迟和带宽构建一张拓扑权重图。AllReduce 的 Ring 算法在切分数据块时会优先让数据沿高带宽路径流动尽量避免通过低带宽路径传输大量数据。跨节点场景16 卡中节点间的网络通信带宽RoCE 200GbE远低于节点内的 HCCS 带宽HCCL 会减少跨节点通信的频次——每轮 AllReduce 只做一次跨节点数据交换。HCCL 在 PyTorch 训练中的实际调用实际开发中你大概率不会直接调用 HCCL 的 API。PyTorch 的torch.distributed封装了 HCCL你只需要在初始化时指定 backendimporttorch.distributedasdist dist.init_process_group(backendhccl)# 后端换成 hccl后面的dist.all_reduce(tensor)、dist.broadcast(tensor, src0)都走 HCCL。从应用代码的视角看NCCL 和 HCCL 的切换就是改一个 backend 名字。HCCL 也提供 C API 供自定义通信场景使用——比如在 GNN 训练中手动控制通信粒度。C API 的接口跟 NCCL 的 nccl.h 非常相似方便从 GPU 迁移过来的用户快速上手。参考仓库HCCL 集合通信库hcom 通信算子库

相关文章:

HCCL 集合通信:昇腾集群的参数同步引擎

大模型训练的本质是将一个超大矩阵乘法拆到多张 NPU 上并行计算,每张卡算完自己的分片后把梯度合并。合并操作就是集合通信。 HCCL(Huawei Collective Communication Library)是 CANN 的集合通信库,对应 NVIDIA NCCL。它不参与模…...

Tenstorrent:基于RISC-V的异构计算架构如何挑战AI芯片市场

1. 项目概述:Tenstorrent的野心与Jim Keller的蓝图在芯片设计的江湖里,Jim Keller这个名字本身就代表着一种传奇。从AMD的K7、K8架构,到苹果A系列、M1芯片的奠基,再到特斯拉的自动驾驶芯片,他参与的每一个项目都深刻影…...

2026毕业季降AI工具排行榜,4款知网维普降AI软件横评

2026年毕业季过半,但还有大量同学的论文卡在AIGC检测这一关。知网在年初做了一次算法升级,维普、万方也在跟进,检测变得越来越严。论文一个字没改,去年12月查AI率18%能过,今年再查变成32%,很多同学就是栽在…...

Win11系统下JDK1.8(jdk-8u121)环境变量配置保姆级教程,附常见报错排查

Win11系统Java开发环境配置全指南:从安装到故障排查 1. 为什么Java环境配置如此重要? 对于每一位Java开发者来说,正确配置开发环境是迈入编程世界的第一步。想象一下,当你满怀期待地写下第一个"Hello World"程序&#x…...

云原生安全新思路:基于DPU智能网卡的IPsec卸载实战,为K8s节点通信加密‘减负’

云原生安全新思路:基于DPU智能网卡的IPsec卸载实战 在Kubernetes集群中,节点间的网络通信安全一直是DevOps团队关注的焦点。传统IPsec加密方案虽然能有效保护数据传输,却不可避免地消耗大量主机CPU资源。当集群规模扩大时,这种加密…...

紧急停止与异常停机:天勤策略里的断线保护与人工兜底

前言 网络闪断、进程被 kill、策略异常未捕获,都可能让持仓暴露在无人管理状态。天勤文档里有紧急停止相关能力(见 advanced/emergency_stop.rst),我把它和自建「停机即平仓/撤单」脚本配合使用。下面写工程清单,不替代…...

5分钟极速上手:免费B站视频转文字工具完整指南

5分钟极速上手:免费B站视频转文字工具完整指南 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为整理B站视频内容而烦恼吗?bili2t…...

魔百盒CM311-1s刷机后体验:安卓9.0固件到底香不香?附5621DS无线实测

魔百盒CM311-1s刷机实战:安卓9.0系统深度评测与无线性能揭秘 当手中的魔百盒CM311-1s遇上安卓9.0系统,这场硬件与软件的碰撞会擦出怎样的火花?作为一款搭载S905L3B芯片的电视盒子,其原生系统往往受限于运营商定制化限制&#xff0…...

别再为printf发愁了!华大HC32L13x单片机串口打印的三种实战配置(Keil MDK环境)

华大HC32L13x单片机串口打印的三种高效配置方案 在嵌入式开发中,printf函数作为调试利器,其重要性不言而喻。然而,当您拿到华大HC32L13系列单片机官方SDK,按照常规ARM单片机经验配置printf时,却发现串口毫无反应——这…...

直流接地故障查找:从原理到实践的安全操作指南

1. 项目概述:为什么直流接地查找是个“精细活儿”?在电力系统、轨道交通、数据中心以及各类工业控制场景中,直流系统是名副其实的“神经系统”。它为继电保护、自动装置、通信设备、事故照明以及控制回路提供稳定可靠的电源。你可以把它想象成…...

基于Zynq FPGA的2-FSK基带发射器设计与实现

1. 项目概述与核心思路最近在折腾一个基于Zynq的软件定义无线电(SDR)小项目,核心需求很简单:用硬件逻辑生成一个可调频率的正弦波,并通过DAC输出。这听起来像是数字信号处理的入门练习,但我的目标更具体一点…...

终极指南:如何快速上手B站视频转文字工具,解放你的双手

终极指南:如何快速上手B站视频转文字工具,解放你的双手 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为整理B站视频内容而头疼吗…...

为内部知识库问答机器人接入Taotoken多模型增强能力

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识库问答机器人接入Taotoken多模型增强能力 构建企业内部知识库问答系统,是提升信息流转效率和员工生产力的常…...

Efinity RISC-V IDE实战指南:FPGA软硬件协同开发与调试

1. 项目概述:为什么你需要关注Efinity RISC-V IDE?如果你正在或即将踏入RISC-V开发的世界,尤其是涉及到FPGA(现场可编程门阵列)的软硬件协同设计,那么“Efinity RISC-V IDE”这个名字你大概率绕不开。它不是…...

交流充电桩通信系统设计:从PWM安全握手到CAN总线协议解析

1. 项目概述:从“插上电”到“充上电”的幕后功臣当你把电动汽车的充电枪插入交流充电桩的充电口,听到“咔哒”一声锁止,看到桩体屏幕亮起、开始计费充电时,这背后发生的一系列“对话”远比我们想象的要复杂。这不仅仅是物理连接&…...

对比直接使用官方API,通过Taotoken接入在成本控制上的实际感受

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用官方API,通过Taotoken接入在成本控制上的实际感受 1. 引言:从单一渠道到聚合平台 对于个人开…...

Seraphine:英雄联盟玩家的终极智能助手,5分钟快速上手教程

Seraphine:英雄联盟玩家的终极智能助手,5分钟快速上手教程 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在英雄联盟对局中因为不了解队友对手的实力而输掉比赛?是…...

原子制造:从单原子操控到新材料创制的技术原理与应用

1. 原子制造:从宏观“锤子”到微观“镊子”的范式革命我们常说,人类文明史是一部材料史。从打磨石器的旧石器时代,到熔铸青铜的青铜时代,再到锻造钢铁的工业时代,每一次文明的跃迁,都伴随着我们对物质操控能…...

手把手教你用ZYNQ PS-SPI读写W25Q80 Flash(附Vitis代码与逻辑分析仪调试技巧)

ZYNQ PS-SPI驱动W25Q80 Flash全流程实战与深度调试指南 在嵌入式系统开发中,外部Flash存储器的可靠读写是许多应用的基础需求。Xilinx ZYNQ系列SoC的Processing System(PS)端集成了SPI控制器,可直接连接W25Q80等串行Flash芯片,无需占用宝贵的…...

Windows进程注入技术深度解析:从DLL注入到反射式加载

1. 项目概述与核心价值在Windows安全研究、恶意软件分析乃至一些高级的软件开发场景中,“进程注入”是一个绕不开的核心技术点。简单来说,它指的是将一个代码模块(通常是DLL)或一段代码(Shellcode)加载到另…...

Linux内存管理全景解析:从伙伴系统到malloc的完整链路

1. 项目概述:从开机到应用,Linux内存管理的全景图刚接触Linux内核开发或者系统调优的朋友,经常会听到“伙伴系统”、“Slab分配器”、“vmalloc”这些名词,感觉它们既神秘又分散。实际上,这些概念串联起来,…...

从零搭建CXL设备模拟器:手把手实现CXL.cache协议的关键Opcode

从零搭建CXL设备模拟器:手把手实现CXL.cache协议的关键Opcode 在异构计算架构快速发展的今天,CXL(Compute Express Link)协议正成为连接CPU与加速器设备的关键纽带。作为CXL三大协议之一,CXL.cache协议通过定义设备与主…...

BarTender如何在线刷新许可证

1、在BarTender服务端打开Administration Console注意:此操作需要服务端连接外网,登录本地管理员账户2、点击许可并等待右侧弹出许可证界面选中需要操作的许可证并点击右侧刷新按钮3、许可证刷新成功4、刷新完成后观察刷新后的许可证前方是否有感叹号如果…...

GD32 RISC-V BSP框架设计:从硬件抽象到跨平台移植实战

1. 项目概述:为什么我们需要一个专属的BSP框架?如果你正在使用GD32的RISC-V内核MCU,比如GD32VF103系列,并且是从STM32或者其他ARM Cortex-M平台转过来的,那你大概率踩过这样的坑:官方提供的固件库&#xff…...

别再混淆了!一张图看懂SAP特殊采购类40、70、80的核心区别与适用场景

深度解析SAP特殊采购类40/70/80:业务逻辑与实战选型指南 引言 在SAP供应链管理的复杂生态中,特殊采购类(Special Procurement Type)是连接多工厂协同的神经中枢。当企业面临跨工厂物料调配、集中采购或分布式生产等场景时&#xf…...

终极指南:5分钟掌握XUnity自动翻译器,轻松实现Unity游戏汉化

终极指南:5分钟掌握XUnity自动翻译器,轻松实现Unity游戏汉化 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂的日语游戏剧情而烦恼吗?面对满屏英文的游戏界…...

荣耀出征唯一官网下载:零氪平民友好 无套路轻松畅玩

国新出审〔2023〕941号,ISBN 978-7-498-12393-0,备案号:皖ICP备2023003237号-2。由河北传娱网络科技有限公司拥有著作权,方圆电子音像出版社有限责任公司正规出版,安徽游昕网络科技有限公司负责全程运营,资…...

2025最权威的五大降重复率神器实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 处于内容营销范畴当中,标题属于勾引用户去点击的首个关卡。伴随AIGC也就是人工智…...

别再死记硬背了!COBOL中COMP、COMP-3、COMP-5数据类型的区别与实战赋值避坑指南

COBOL数值类型实战手册:COMP家族的内存布局与精准赋值策略 在金融核心系统维护中,我曾目睹过因COMP-3类型使用不当导致整月利息计算误差达六位数的生产事故。这种"古董级"数据类型的独特设计,至今仍在每秒处理数百万交易的银行系统…...

从手机信号到CT扫描:一张图看懂电磁波如何改变我们的生活

从手机信号到CT扫描:一张图看懂电磁波如何改变我们的生活 清晨醒来,你按下智能手机的闹钟关闭按钮,这个简单的动作背后是无线电波在基站与设备间的无声对话;早餐时微波炉加热牛奶的嗡嗡声,本质上是特定频率电磁场对水分…...