昇腾CANN集合通信技术解读——细粒度分级流水算法

随着AI技术的演进,模型的计算复杂度和参数量呈现几何级数增长,这使得传统单机单卡部署在算力供给与显存容量方面显得力不从心,从而直接推动了分布式训练/推理技术的快速发展。今年年初爆火的DeepSeek在训练及推理Prefill阶段采用了分级流水AlltoAll算法,具体实现为:首先在Server间执行Token传输,当Token到达目标Server后,再在目标Server内执行Bcast操作,Server内和Server间的操作以Token为粒度进行流水掩盖。

HCCL支持细粒度的分级流水算法,基于Atlas A2 训练系列产品,可大幅提升DeepSeek集群训练中Allgather、ReduceScatter、AlltoAll等集合通信算子的执行效率。

1、简单分级算法存在的问题

为降低网络流量冲突,AI计算集群中常常采用Server内Server间分级网络架构,即Server内通过直连电缆互联,Server间同号卡通过交换机互联。

然而,在Server内Server间分级网络对应的全局通信域中执行集合通信算子,将面临以下两个挑战:

1)Server内链路和Server间链路带宽不同,一般情况下Server内带宽大于Server间带宽,如果使用全局Ring或RHD(Recursive Halving Doubling)算法会存在慢链路的问题。

2)不同Server的不同号卡之间无直连链路,算法设计时,需要考虑连通性问题。

为了解决上述问题,在Server内Server间分级网络中,通常使用分级算法,将全局通信操作分解为多层次的局部操作,利用分阶段、分层递进的方式优化通信效率。例如Allgather操作,Server间先执行一次同号卡间的Allgather(下图红色箭头),再在Server内执行一次Allgather(下图蓝色箭头)。

该分级算法仍然存在一些问题:

1)带宽浪费:上图中Server间数据传输时,Server内的链路处于空闲状态,无法实现带宽利用率的最大化。

2)存在离散数据:以Rank0为例,Server间完成数据传输后,持有Rank0、Rank2、Rank4的数据,这三块数据在Server内数据传输过程中需要发送到Rank1上,但是这三块数据在Rank1上并不是连续分布的,如果将这三块数据分别发送到Rank1上,会引入每次发送的头开销;如果将这三块数据合并发送,又需要引入数据重排的开销。

2、细粒度分级流水算法技术解读

带宽浪费的问题,通常采用流水的方式解决。如下图所示,通过切分数据块,使得完成一部分Server内的数据传输后,就可以开始Server间的数据传输,同时启动第二部分的Server内数据传输。这样,Server内和Server间的数据传输可以并行进行(如红框所示),从而提高总的带宽利用率。

虽然这种方法可以解决带宽利用率不足的问题,但是通过切分数据块的方式进行流水掩盖,会导致单次数据传输的数据量变小,头开销占比过大,通信效率降低,而且无法解决离散数据的问题。

因此,采用细粒度分级流水算法,一方面挖掘通信算法本身的数据依赖,另一方面结合流水并行的方式,解决带宽利用率不足与离散数据的问题。以Allgather为例,Server间的通信选择Ring算法,Server内的通信选择Full Mesh算法。让我们先回顾一下Ring算法的步骤:假设共有n个Server,那么Ring算法会执行n-1步操作,在第i步时,本Rank将获得前i个Rank上的数据。

在简单分级算法中,执行完全部n-1步操作后才会进行Server内的数据传输。然而,观察Rank上每个步骤的数据状态可以发现:每完成一步数据传输,都会有新的数据块被传输到Rank上,该数据块在下一步数据传输时,可以同时完成Server间的数据传输和Server内的数据传输。如下中图所示,绿色数据块从Rank5被发送到Rank1上(仅陈述部分Rank的行为,其它Rank对称处理),在接下来的步骤中,Rank1继续向Rank3发送绿色数据块(Ring算法标准步骤),同时Rank1也可以向同Server中的Rank0发送绿色数据块。

继续执行Ring算法,每一步在进行Server间数据传输的同时,还会向Server内其它Rank传输上一步接收到的数据块,Ring算法的最后一个步骤结束后,仅需要在Server内再进行一次数据块的传输即可完成全部算法步骤(Rank初始数据块的Server内传输操作,可以隐藏在Ring算法的第一步中进行),Rank0上的全部传输任务编排如下图所示,LocalCpy操作仅在输入输出内存不同场景中执行,用于将数据块从输入内存移动到输出内存,在输入输出内存相同场景中,则无需执行该操作。

该算法利用Ring算法的数据依赖关系,实现了Server内/Server间的并发执行,以提高带宽利用率。同时,由于该算法的切分方式是对传输数据块进行重排,每次数据传输所操作的数据块仅包含一个Rank的初始数据,因此在跨卡传输时,数据可以直接传输到最终位置,从而避免了离散数据的问题。

3、性能收益评估

让我们对该算法进行简单的收益分析,假设n个Server,每个Server中有m张卡,Server内采用Full Mesh通信算法,每条链路的带宽为bw_a,Server间Clos连接,带宽为bw_e;假设输入数据量s足够大,仅考虑带宽时延,并且bw_a > bw_e。

采用简单分级算法,算子耗时为:

图片

 采用细粒度分级流水算法,算子耗时为:

图片

可以看到,当bw_e和bw_a接近时,n越大,算法性能提升越大,最大提升接近1倍。

4、更多学习资源

HCCL集合通信库,通过高性能集合通信算法、计算通信统一硬化调度、计算通信高性能并发等创新技术,可充分利用硬件资源,显著提升大模型通信效率。欢迎昇腾社区HCCL学习专区,获取海量学习资源。

图片

昇腾社区HCCL信息专区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…

Copilot for Xcode (iOS的 AI辅助编程)

Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot,它能根据上下文补全代码,快速生成常用…

React 进阶特性

1. ref ref 是 React 提供的一种机制,用于访问和操作 DOM 元素或 React 组件的实例。它可以用于获取某个 DOM 元素的引用,从而执行一些需要直接操作 DOM 的任务,例如手动设置焦点、选择文本或触发动画。 1.1. 使用 ref 的步骤 1. 创建一个 ref:使用 React.createRef 或 …

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…

【大厂机试题解法笔记】报文响应时间

题目 IGMP 协议中,有一个字段称作最大响应时间 (Max Response Time) ,HOST收到查询报文,解折出 MaxResponseTime 字段后,需要在 (0,MaxResponseTime] 时间 (s) 内选取随机时间回应一个响应报文,如果在随机…

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…

Python爬虫实战:研究demiurge框架相关技术

1. 引言 在当今数字化时代,互联网上蕴含着海量的有价值信息。爬虫技术作为获取这些信息的重要手段,被广泛应用于学术研究、商业分析、舆情监测等多个领域。然而,构建一个高效、稳定且可维护的爬虫系统面临诸多挑战,如网页结构复杂多变、反爬机制日益严格、数据处理流程繁琐…

Jenkins | Jenkins构建成功服务进程关闭问题

Jenkins构建成功服务进程关闭问题 1. 原因2. 解决 1. 原因 Jenkins 默认会在构建结束时终止所有由构建任务启动的子进程,即使使用了nohup或后台运行符号&。 2. 解决 在启动脚本中加上 BULID_IDdontkillme #--------------解决jenkins 自动关闭进程问题-----…

深度学习习题2

1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…

猜字符位置游戏-position gasses

import java.util.*;public class Main {/*字符猜位置游戏;每次提交只能被告知答对几个位置;根据提示答对的位置数推测出每个字符对应的正确位置;*/public static void main(String[] args) {char startChar A;int gameLength 8;List<String> ballList new ArrayList&…

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…

Towards Open World Object Detection概述(论文)

论文&#xff1a;https://arxiv.org/abs/2103.02603 代码&#xff1a;https://github.com/JosephKJ/OWOD Towards Open World Object Detection 迈向开放世界目标检测 Abstract 摘要 Humans have a natural instinct to identify unknown object instances in their environ…

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…

夏普比率(Sharpe ratio)​

具有投资常识的人都明白&#xff0c;投资光看收益是不够的&#xff0c;还要看承受的风险&#xff0c;也就是收益风险比。 夏普比率描述的正是这个概念&#xff0c;即每承受一单位的总风险&#xff0c;会产生多少超额的报酬。 用数学公式描述就是&#xff1a; 其中&#xff1…

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…

计算机网络备忘录

计算机网络 - 网络互联与互联网 计算机网络重点学习本章&#xff0c;属于核心知识 包含网络层和传输层 的 相关协议 计算机网络层次重点掌握网络层与传输层。其中网络层主要是IP协议&#xff0c;解决主机-主机通信&#xff0c;传输层主要是TCP/UDP 协议&#xff0c;解决应用-…

跨界破局者鲁力:用思辨与创新重塑汽车流通行业标杆

来源&#xff1a;投资家 在汽车流通行业深度变革的浪潮中&#xff0c;东莞东风南方汽车销售服务有限公司塘厦分公司总经理鲁力历经近二十年行业深耕&#xff0c;构建了一条从汽车销售顾问到区域运营掌舵者的进阶范本。作为东风日产体系内兼具理论建构与实战穿透力的标杆管理者…

玄机-日志分析-IIS日志分析

1.phpstudy-2018站点日志.(.log文件)所在路径&#xff0c;提供绝对路径 2.系统web日志中状态码为200请求的数量是多少 3.系统web日志中出现了多少种请求方法 4.存在文件上传漏洞的路径是什么(flag{/xxxxx/xxxxx/xxxxxx.xxx} 5.攻击者上传并且利用成功的webshell的文件名是什…