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

hccl 集合通信架构剖析:Ring-AllReduce 与通信-计算重叠设计

前言分布式训练做多了会发现多卡之间的通信往往比计算更吃时间。八张昇腾NPU跑一个LLaMA-70BAllReduce在总耗时里能占30-40%这个比例在卡数更多的时候还会继续涨。昇腾CANN的hcclHuawei Collective Communication Library就是专门解决这个问题的——提供高性能的集合通信原语让多NPU之间的梯度同步、激活重算、参数广播都能跑满互联带宽。hccl支持的原语很全AllReduce、AllGather、ReduceScatter、Broadcast、AlltoAll常用的分布式通信pattern都覆盖了。这些原语在Ascend 910上有对应的底层实现——比如AllReduce用的是Ring-AllReduce或者Tree-AllReduce具体选哪个取决于NPU之间的拓扑结构。如果是8卡以内的小集群Ring的效率更高延迟低如果是几十上百卡的大集群Tree的带宽利用率更好。Ring-AllReduce vs Tree-AllReducehccl的AllReduce有两种实现路径自动根据拓扑选择。Ring-AllReduce8卡以内最优。数据在环上转一圈每个卡只跟左右邻居通信延迟低。流程Step1: Scatter-Reduce数据累加 NPU0 → NPU1 → NPU2 → ... → NPU7 → NPU0 每步累加 1/8 的数据7步完成 Step2: AllGather结果广播 NPU7 → NPU6 → ... → NPU0 → NPU7 每步广播 1/8 的结果7步完成总通信量2×(N-1)×D/NN卡数D数据大小。Tree-AllReduce16卡以上最优。数据像树一样往下传带宽利用率高。流程Root / \ NPU0 NPU1 / \ / \ NPU2 NPU3 NPU4 NPU5数据从叶子节点往根节点累加Reduce再从根节点往叶子节点广播Broadcast总通信量更少。实测数据Ascend 910HCCS互联消息大小128MB卡数Ring-AllReduce 延迟(ms)Tree-AllReduce 延迟(ms)最优选择21218Ring42832Ring86558Tree1614289Tree32310156Tree工程经验8卡是个拐点hccl里有个HCCL_ALGO_THRESHOLD环境变量改这个可以强制选Ring或者Tree。调试的时候先试默认如果带宽利用率不到70%手动设HCCL_ALGO_THRESHOLD16强制用Tree。通信-计算重叠的实现传统做法里反向传播的梯度算完然后调用AllReduce做同步计算和通信串行NPU的Cube单元在通信的时候是闲置的。hccl支持通信-计算重叠梯度算完一部分就可以开始AllReduce同时Cube继续算下一部分的梯度两个操作在时间上重叠。实现原理hccl把梯度tensor切成若干chunk每个chunk单独做AllReduce。Cube算完chunk i立刻启动chunk i的AllReduce同时Cube继续算chunk i1。Cube: 算chunk1梯度 → 算chunk2梯度 → 算chunk3梯度 → ... hccl: 等chunk1 → AllReduce(chunk1) → AllReduce(chunk2) → ... 时间轴: |--chunk1--|--chunk2--|--chunk3--| Cube: [算grad1] [算grad2] [算grad3] hccl: [idle] [AR(grad1)][AR(grad2)]重叠率取决于chunk大小和计算/通信时间比。chunk太小通信启动开销占比大chunk太大Cube等hccl的时间长。最优chunk大小让「Cube算一个chunk的时间」≈「hccl传一个chunk的时间」。实测数据LLaMA-2-7B8卡Ascend 910FP16chunk大小重叠率端到端吞吐(TPS)提升1MB23%3200基准4MB58%410028%16MB72%480050%64MB68%460044%256MB51%390022%chunk16MB最优重叠率72%。工程经验chunk大小不是固定的跟模型大小有关。7B模型chunk16MB最优70B模型chunk64MB最优梯度更大通信时间更长需要更大的chunk来隐藏延迟。hccl里有自动chunk选择逻辑但默认配置偏保守chunk4MB建议手动设HCCL_CHUNK_SIZE1677721616MB。HCCS 互联与 RoCE 跨节点通信Ascend 910的卡间互联有两种HCCSHuawei Cache Coherent System和RoCERDMA over Converged Ethernet。HCCS同一台服务器内的卡间通信带宽56GB/s延迟1μs。8卡以内走HCCS。RoCE跨服务器通信带宽取决于网卡通常是100Gb/s~200Gb/s Ethernet延迟~10μs。16卡以上开始走RoCE。hccl自动选择通信路径同服务器内走HCCS跨服务器走RoCE。不需要上层代码配置。实测带宽利用率消息大小128MB通信路径理论带宽实际带宽利用率HCCS8卡内56GB/s48GB/s86%RoCE 100Gb/s12.5GB/s9.8GB/s78%RoCE 200Gb/s25GB/s21GB/s84%工程经验RoCE的带宽利用率在消息大小16MB的时候掉得很厉害只有40-50%因为RDMA的启动开销占比大。hccl里有个消息合并逻辑多个小消息合并成一个大消息再发这个逻辑默认是关的要手动开HCCL_ENABLE_MSG_MERGE1。开了之后小消息的带宽利用率能到70%。与 NCCL 的接口对齐hccl的接口设计尽量跟NCCLNVIDIA的通信库对齐从GPU平台迁移过来的代码改动量很小。PyTorch DDP的backend切换# GPU 版本dist.init_process_group(backendnccl,...)# 昇腾 NPU 版本dist.init_process_group(backendhccl,...)就改一个参数模型代码不需要动。如果有自定义的通信逻辑比如MoE模型里的Expert Parallel可以直接调hccl的C接口// hccl C接口示例hcclComm_tcomm;hcclCommInitAll(comm,world_size,NULL);hcclAllReduce(send_buf,recv_buf,count,HCCL_FLOAT16,HCCL_SUM,comm,stream);接口参数跟NCCL几乎一模一样只有类型名前缀从nccl改成hccl。工程经验从NCCL迁到hccl最大的坑是数据类型映射。NCCL的ncclFloat16对应hccl的HCCL_FLOAT16但NCCL的ncclBfloat16在hccl里是HCCL_BF16名字不一样要逐个检查。另外一个坑是hcclAllReduce默认是阻塞的NCCL默认也是阻塞的如果要非阻塞要加HCCL_OP_NONBLOCKING标志。性能数据汇总hccl核心原语在Ascend 910上的性能数据FP168卡HCCS互联原语消息大小带宽(GB/s)利用率AllReduce1MB1221%AllReduce16MB3868%AllReduce128MB4886%AllGather16MB4275%AllGather128MB5191%ReduceScatter16MB4071%ReduceScatter128MB4988%AlltoAll16MB3563%AlltoAll128MB4479%消息大小16MB的时候带宽利用率才上得来因为通信启动开销是~15μs消息太小启动开销占比大。跟NCCL在A100上的性能比hccl的AllReduce在消息大小64MB的时候差距在10%以内消息大小16MB的时候差距在25%左右hccl的启动开销更大。踩坑实录坑18卡AllReduce带宽利用率只有40%原因默认用的是Ring-AllReduce8卡的时候Tree更快但hccl默认选了Ring。解决设HCCL_ALGO_THRESHOLD8强制8卡也用Tree。设完带宽利用率从40%涨到72%。坑2跨节点通信RoCE带宽利用率只有30%原因消息大小太小4MBRDMA启动开销占比大。解决开消息合并HCCL_ENABLE_MSG_MERGE1把多个小消息合并成一个大消息再发。开了之后带宽利用率涨到68%。坑3通信-计算重叠率只有20%远低于预期的70%原因chunk大小设得太小1MB通信启动开销占比大。解决设HCCL_CHUNK_SIZE1677721616MB重叠率从20%涨到72%端到端吞吐涨50%。坑432卡训练AllReduce在总耗时里占50%原因32卡走RoCE但RoCE的带宽只有HCCS的1/4AllReduce时间太长。解决改用Pipeline Parallel把32卡拆成4个pipeline stage每stage 8卡stage内做Tensor Parallelstage间做Pipeline Parallel。AllReduce的范围从32卡缩小到8卡通信时间降75%。https://atomgit.com/cann/hcclhttps://atomgit.com/cann/hcommhttps://atomgit.com/cann/ascend-boost-comm

相关文章:

hccl 集合通信架构剖析:Ring-AllReduce 与通信-计算重叠设计

前言 分布式训练做多了会发现,多卡之间的通信往往比计算更吃时间。八张昇腾NPU跑一个LLaMA-70B,AllReduce在总耗时里能占30-40%,这个比例在卡数更多的时候还会继续涨。昇腾CANN的hccl(Huawei Collective Communication Library&am…...

告别手动打字:87种语言视频字幕5分钟本地提取全攻略

告别手动打字:87种语言视频字幕5分钟本地提取全攻略 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提…...

如何用knitAYABInterface创建复杂图案:从JSON文件到针织成品的完整流程

如何用knitAYABInterface创建复杂图案:从JSON文件到针织成品的完整流程 【免费下载链接】knitAYABInterface A Python library with the interface to the AYAB shield. 项目地址: https://gitcode.com/gh_mirrors/ay/knitAYABInterface 想要将数字图案转化为…...

如何为Public Money Public Code网站添加新的支持组织:完整操作指南

如何为Public Money Public Code网站添加新的支持组织:完整操作指南 【免费下载链接】publiccode.asia-legacy Website of https://publiccode.asia 项目地址: https://gitcode.com/gh_mirrors/pu/publiccode.asia-legacy 想要为publiccode.asia这个开源项目…...

揭秘PSLab Web App硬件交互机制:functionList与硬件Handler工作原理

揭秘PSLab Web App硬件交互机制:functionList与硬件Handler工作原理 【免费下载链接】pslab-webapp-legacy PSLab Web App https://pslab.io 项目地址: https://gitcode.com/gh_mirrors/ps/pslab-webapp-legacy PSLab Web App是一款强大的开源硬件交互工具&a…...

长期使用TaotokenTokenPlan套餐的成本控制实际感受

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken TokenPlan套餐的成本控制实际感受 1. 从按次计费到预付费套餐的转变 在项目开发中引入大模型API调用后&#xf…...

开发者在多模型项目中如何利用 Taotoken 进行灵活路由与降级

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 开发者在多模型项目中如何利用 Taotoken 进行灵活路由与降级 在构建依赖大模型服务的应用时,服务的连续性与稳定性是开…...

3大技术革命:openpilot如何重新定义自动驾驶开源生态

3大技术革命:openpilot如何重新定义自动驾驶开源生态 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.com/GitHub_Trending…...

Ember_Simple_Calculator-merge部署指南:3步将你的Ember计算器应用上线

Ember_Simple_Calculator-merge部署指南:3步将你的Ember计算器应用上线 【免费下载链接】Ember_Simple_Calculator-merge Simple Calculator Web App Using Ember.js 项目地址: https://gitcode.com/gh_mirrors/em/Ember_Simple_Calculator-merge 想要快速部…...

Expecta自定义匹配器开发教程:打造专属测试断言

Expecta自定义匹配器开发教程:打造专属测试断言 【免费下载链接】expecta A Matcher Framework for Objective-C/Cocoa 项目地址: https://gitcode.com/gh_mirrors/ex/expecta Expecta是一款强大的Objective-C/Cocoa匹配器框架,它允许开发者编写清…...

洛雪音乐音源项目完整指南:免费获取全网高品质音乐的终极解决方案

洛雪音乐音源项目完整指南:免费获取全网高品质音乐的终极解决方案 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 洛雪音乐音源项目是一个专为洛雪音乐软件设计的开源音源集合&#xf…...

Mirth Connect终极指南:掌握医疗集成的瑞士军刀 [特殊字符]

Mirth Connect终极指南:掌握医疗集成的瑞士军刀 🚀 【免费下载链接】connect The swiss army knife of healthcare integration. 项目地址: https://gitcode.com/gh_mirrors/conn/connect Mirth Connect被誉为医疗集成领域的瑞士军刀,…...

【企业级AI Agent安全合规红线】:GDPR+等保2.0双标穿透测试报告首次公开,含6类Agent数据泄露路径图谱

更多请点击: https://codechina.net 第一章:【企业级AI Agent安全合规红线】:GDPR等保2.0双标穿透测试报告首次公开,含6类Agent数据泄露路径图谱 在企业级AI Agent规模化落地过程中,合规性已不再是“附加项”&#xf…...

AI Agent培训如何撬动企业人效革命:3个已验证的行业应用范式与5步落地法

更多请点击: https://intelliparadigm.com 第一章:AI Agent培训如何撬动企业人效革命:3个已验证的行业应用范式与5步落地法 AI Agent并非通用智能体,而是经领域知识注入、任务流程对齐与反馈闭环训练后具备自主决策边界的“数字员…...

【限时解密】某千亿级餐饮集团未公开的Agent故障熔断机制:37类异常场景自动降级策略(仅开放72小时技术文档下载)

更多请点击: https://intelliparadigm.com 第一章:AI Agent餐饮行业应用的演进逻辑与业务价值锚点 AI Agent在餐饮行业的落地并非技术驱动的线性叠加,而是由真实业务痛点牵引、数据基础设施成熟度支撑、人机协作范式迭代共同塑造的动态演进过…...

今晚失效!三甲医院刚解禁的Claude医学文献分析SOP(含IRB合规检查清单+敏感信息脱敏协议)

更多请点击: https://codechina.net 第一章:Claude医学文献分析案例 在真实科研场景中,研究者常需从海量PubMed摘要中快速识别与特定疾病机制相关的关键分子通路。以下案例展示如何利用Claude 3.5 Sonnet的多步推理能力,对一组乳…...

【Lovable开发避坑红宝书】:17个被大厂隐藏的移动端情感设计陷阱及修复代码模板

更多请点击: https://intelliparadigm.com 第一章:Lovable移动端情感设计的底层认知与价值重定义 Lovable移动端情感设计并非界面动效或拟物图标的技术叠加,而是以人类情绪反馈回路为锚点,重构交互系统底层逻辑的设计范式。它要求…...

tinychain进阶指南:如何实现区块链分叉与重组功能

tinychain进阶指南:如何实现区块链分叉与重组功能 【免费下载链接】tinychain A pocket-sized implementation of Bitcoin 项目地址: https://gitcode.com/gh_mirrors/ti/tinychain 区块链技术的核心魅力在于其去中心化的共识机制,而分叉与重组功…...

用户测试完整流程:如何在测试阶段验证产品假设

用户测试完整流程:如何在测试阶段验证产品假设 【免费下载链接】design-sprint Product Design Sprint Material 项目地址: https://gitcode.com/gh_mirrors/de/design-sprint 在产品开发过程中,用户测试是验证产品假设、确保产品满足用户需求的关…...

如何快速入门Play框架:5分钟搭建你的第一个Java Web应用

如何快速入门Play框架:5分钟搭建你的第一个Java Web应用 【免费下载链接】play1 Play framework 项目地址: https://gitcode.com/gh_mirrors/pl/play1 Play框架是一个轻量级的Java Web开发框架,它采用了MVC架构模式,提供了快速开发、热…...

终极网站性能优化指南:publiccode.asia 加载速度提升10个技巧

终极网站性能优化指南:publiccode.asia 加载速度提升10个技巧 【免费下载链接】publiccode.asia-legacy Website of https://publiccode.asia 项目地址: https://gitcode.com/gh_mirrors/pu/publiccode.asia-legacy 想要让你的网站像闪电一样快速加载吗&…...

Fortune.js未来路线图:即将推出的功能和改进终极指南

Fortune.js未来路线图:即将推出的功能和改进终极指南 【免费下载链接】fortune Non-native graph database abstraction layer for Node.js and web browsers. 项目地址: https://gitcode.com/gh_mirrors/fo/fortune Fortune.js作为一个创新的非原生图数据库…...

【AI Agent审计实战白皮书】:20年审计专家亲授7大高危场景识别法与合规落地路径

更多请点击: https://intelliparadigm.com 第一章:AI Agent审计的核心范式演进 传统软件系统审计聚焦于代码合规性、日志完整性与权限边界,而AI Agent的自主决策、多步推理与动态工具调用能力,正推动审计范式从静态验证转向“意图…...

10分钟掌握BodyApps 3D Body Visualiser高级技巧:自定义皮肤、视角控制与参数联动

10分钟掌握BodyApps 3D Body Visualiser高级技巧:自定义皮肤、视角控制与参数联动 【免费下载链接】bodyapps-viz 3D body visualizer component for #bodyapps project 项目地址: https://gitcode.com/gh_mirrors/bo/bodyapps-viz BodyApps 3D Body Visuali…...

【限时解密】某上市医美集团未公开的AI Agent知识图谱:覆盖1,843种肤质-成分-疗程关联规则

更多请点击: https://codechina.net 第一章:AI Agent在美容行业应用的范式革命 传统美容服务长期受限于人工经验依赖、个性化响应延迟与跨渠道数据割裂三大瓶颈。AI Agent 的兴起正从根本上重构行业服务逻辑——它不再仅是辅助工具,而是具备…...

微生物网络分析终极指南:如何用NetCoMi轻松解锁微生物互作密码

微生物网络分析终极指南:如何用NetCoMi轻松解锁微生物互作密码 【免费下载链接】NetCoMi Network construction, analysis, and comparison for microbial compositional data 项目地址: https://gitcode.com/gh_mirrors/ne/NetCoMi 还在为复杂的微生物组数据…...

为内部ai工具平台选择统一api网关时taotoken的接入与管理价值

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部AI工具平台选择统一API网关时Taotoken的接入与管理价值 当公司内部需要构建一个集成多种AI能力的工具平台时,技术…...

如何用歌词滚动姬3分钟制作专业级LRC歌词:免费跨平台终极指南

如何用歌词滚动姬3分钟制作专业级LRC歌词:免费跨平台终极指南 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 歌词滚动姬是一款专为音乐爱好者设计的免费…...

为什么选择AdoptOpenJDK HomeBrew Tap?10个理由告诉你它曾是macOS最佳JDK解决方案

为什么选择AdoptOpenJDK HomeBrew Tap?10个理由告诉你它曾是macOS最佳JDK解决方案 【免费下载链接】homebrew-openjdk AdoptOpenJDK HomeBrew Tap 项目地址: https://gitcode.com/gh_mirrors/ho/homebrew-openjdk AdoptOpenJDK HomeBrew Tap曾是macOS系统下管…...

hoverboard-firmware-hack-FOC与ROS集成指南:机器人操作系统通信接口开发

hoverboard-firmware-hack-FOC与ROS集成指南:机器人操作系统通信接口开发 【免费下载链接】hoverboard-firmware-hack-FOC With Field Oriented Control (FOC) 项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC hoverboard-f…...