打开网易新闻 查看精彩图片

演讲嘉宾|郑加利

编辑 |Kitty

策划 |QCon 全球软件开发大会

大模型的训练过程极其复杂,不仅涵盖了众多技术层面,同时也面临着巨大的挑战。面对巨大规模的模型参数量与计算量,单靠一张计算卡难以满足需求,必须依赖多张计算卡进行并行计算。然而大规模集群计算带来的复杂性显著增加,在一定程度上拖慢了模型训练的速度。

在 2025 年 InfoQ 举办的 QCon 全球软件开发大会 上,华为工程师郑加利分享了《昇腾 MindSpeed:分布式训练加速库的创新实践与突破》,他介绍了昇腾 MindSpeed 分布式训练加速库通过在计算、通信以及显存等多个维度上的优化措施,来加速模型的训练过程,有效提升了训练效率,为大模型的训练提供了强有力支持的实践案例。

预告:将于 2026 年 4 月 16 - 18 召开的 QCon 北京站策划了「AI 原生基础设施」专题,重点交流探讨如何构建 AI 原生基础设施,包括业界容器 / Serverless 等云原生基础设施如何朝 AI 演进,以及如何利用一些新兴分布式技术构建 AI 原生基础设施等等。如果你也有相关方向案例想要分享,欢迎提交至 https://jinshuju.com/f/Cu32l5。

以下是演讲实录(经 InfoQ 进行不改变原意的编辑整理)。

大模型训练的趋势与挑战

从 ChatGPT 开始,模型的规模越来越大,从千亿参数的稠密模型一直到万亿参数的稀疏模型,越来越大的参数量对算力的需求也是越来越大的。以 GPT-3 为例,训练 300B 的 tokens,3000 张卡差不多要 10 天左右;到了 GPT-4,13000B 的数据量,3000 张卡就差不多要两年时间,这是非常夸张的。业界为了应对这些挑战也推出了很多并行方式去解决这些问题,包括 DP、TP、PP 等等。

打开网易新闻 查看精彩图片

MindSpeed 也是支持这些最基础加速并行技术。

除了之前我们做的传统的技术摸高,另一个方向是 DeepSeek 的发布开创了新的范式,我们叫做工程创新。之前我们做模型训练加速时一般都是算法优先,就是说我不能改变模型训练的效果,它是第一优先级的,我只能在对等的情况下去做各种修改。而 DeepSeek 开创了一个新的路线,它通过一些精度上的可接受的损失极快降低模型训练的成本,这也是未来业界需要挖掘的新方向。

业界加速库

当前业界比较有名的加速库最主要的就是这两个,一个是英伟达的 Megatron,另一个就是微软的 DeepSpeed,这两个是最基础的。下面也有一些像国内潞晨科技的 Colossal-AI 以及最基础的 Pytorch。

打开网易新闻 查看精彩图片

在训练领域,这些并行加速库主要做的都是各种并行算法、算子优化、融合算子,还有内存和通信的优化。在推理领域它们会支持各种并行推理、融合算子以及量化压缩。以经典的 Megatron 为例,它支持了各种经典的并行技术,也支持各种主流的大模型。另外它的模型架构非常合理,社区也挺活跃,非常易于改造成自己自有的框架,相信各位公司里肯定也有一部分代码是从 Megatron 里薅过来的。

MindSpeed 架构设计

打开网易新闻 查看精彩图片

MindSpeed 分布式训练加速库架构主要有三个模块组成,上面两个是语言模块,一个是大语言,另一个是多模态。这里我们两个套件会对主流的模型,包括千问、LLama、DeepSeek,多模态这边类 Sora、LLaVA 这些系列全都会做支持。另外 MindSpeed 也提供了一套端到端的训练方案,从最开始的数据处理、流程训练,到后面的后训练、偏好对齐,以及各种评价体系,这些我们都有支持。

本次分享要讲的重点就是 MindSpeed Core 亲和加速模块。我们会通过在不同维度上对模型去做优化,来提升模型训练的效率。MindSpeed Core 除了对上面两个模型仓库做使能外,它也支持单独用在客户自有的框架上。它使用时非常简单,只用下载、安装,然后一键代码就能使能了。

打开网易新闻 查看精彩图片

我们这里是通过各种装饰器替换接口,就能做到和用户的框架解耦,可以非侵入式地修改用户框架,使用我们这些加速特性。

MindSpeed 优化策略

接下来的重点讲讲通信、显存、计算、并行几个维度上我们分别做了哪些优化。

首先是通信优化,第一个是计算通信掩盖技术。

打开网易新闻 查看精彩图片

我们知道在 TP、SP 的场景下我们会多两个通信,一个是 Allgather+Matmul,另一个是 Matmul+Reduce-scatter。在传统的并行上它们是串行执行的,就是我先做一个计算,然后再做一个通信,或者反过来我先做一个通信,再做一个计算。这样我们就想到这个任务其实我可以把一个大任务拆成多个小任务,可以先做一个计算任务 0,然后再做通信任务 0,然后在做通信任务 0 的时候,可以并行执行计算任务 1,这样就能实现计算和通信并行起来的效果,从而减少通信耗时,提升模型训练的效率。我们实测下来,在大部分的模型上它性能的收益都有百分之七八,是非常不错的一个优化点。

打开网易新闻 查看精彩图片

下一个思路上是类似的,是对 DualPipe 的一个改进。幻方开源了 DualPipe,我们知道它是利用不同 microbatch 之间做掩盖,然后在 1F1B 上做掩盖。但它会有两个阶段,分别是 Warmup 和 Cooldown 阶段,它们是没法通过 microbatch 之间去做通信掩盖的。

这样我们就提出,我发现计算流上我的共享专家的计算和我 A2A 的通信其实是没有依赖关系的,这样我们就可以把共享专家的计算和 A2A 的通信并起来,就像上图下面画的这样。我在做共享专家前向的时候同时去做 A2A 的通信,反向的时候也是一样,我做通信的时候同时去做共享专家的两个反向。以及 MLP 里对权重梯度的计算也是可以同时并行的,这样做完之后就可以在 1F1B 的基础上再额外掩盖 50% 的异步通信,也有不错的收益。

接下来是从显存上做优化。

当前在模型训练时我们用的大部分都是混合精度。之前用的是 fp16,现在几乎所有人都会用 bf16 做训练。混合精度训练有一个问题,会导致我的权重有两份,因为模型更新的时候要求更高的精度,所以在优化器里我的权重是 fp32 的。到了模型前反向训练时我没有那么高的精度要求,我可以把它换成 bf16 做计算,反向算完后我再把梯度转回 fp32,再做优化器的更新,这样就会多出两份权重。

打开网易新闻 查看精彩图片

我们看到 bf16 和 fp32 的数据格式很像,最开始都有一个 1 位的符号位,然后 8 位的指数位,唯一不同就是后面的尾数 fp32 是 23 位的尾数位,bf16 是 7 位。这样我们想到可以申请一块显存,让它同时表示 fp32 和 bf16。我会申请两个 tensor,其中 bf16 tensor 的指针也是指向 fp32 的内存地址上,这样我就可以用同一块内存地址同时表达两个数据格式。

而在实际训练场景下,由于四舍五入的问题,它会多引入一个残差。具体逻辑就会变成在梯度累积前反向计算的时候,我会把残差值给它加上,然后变成 bf16,去做前反向的计算。前反向做完了之后我再把这个剪掉,变回 fp32 的数据,再做优化器的更新,这样我们就可以把 bf16 的这一份权重节省掉了。以 70B 的模型为例,在 TP 开到 8 的时候,每张卡大约可以节省 17G 的显存,收益非常不错。

下一个也是显存上的优化,刚讲的是对静态显存的优化,这里是对动态显存的优化。我们做了一个分析,激活函数的输出是非常大的,但它的计算又非常小,非常快,天然适合重计算的技术。传统的重计算有个问题,它没法把我的输出释放掉,我的输出必须是要在的。如果想要做的话,我必须把下面的 Matmul 给它合在一起去做重计算,这样又会导致我需要多做一份 Matmul 的计算,又会拖累模型的训练时间。

打开网易新闻 查看精彩图片

这里我们就想到可以在我的输出 B 给 Matmul 计算完后释放它的显存,但我保留它的逻辑视图,通过 storage resize 等于 0,这样就能把它的显存占用释放掉,但逻辑视图还是在的。然后再挂一个 hook,在它做反向的时候触发它的前向计算,然后重新得到 B,再这样去做激活函数的反向,这样就能省掉这一块显存。由于激活函数的计算是非常快的,所以对整个模型训练的影响可以说是微乎其微。省的显存也非常大,是一个性价比非常高的优化特性。

接下来是一个虚拟显存的技术,在这里我们做了一个接口,支持对显存上做一个转发。我们知道 Host 内存要比 Device 显存要大很多,便宜很多,我们就想到可以在这里做一个内存转发。对算子来说它访问的就是 Device 显存,但这块显存会转发到 Host 侧,这样就可以减少我们显存的占用。

打开网易新闻 查看精彩图片

大家肯定就会说这不就是传统的 offload?但我们对比 offload 有两个优势。一个是非常简单,因为我是对申请的显存做更改,它不需要我自己手动帮助搬回 Device 侧,然后再搬回 Host 侧,因为对算子来说它访问的就是一个 Device 的显存。还有一个优点是算子本身会做数据的搬运和计算的流水。由于它认为自己访问的就是一块 Device 显存,这一块搬运天然支持 H2D、D2H 的并行,能减少搬运耗时。我们在 DeepSeek V3 上做了实验,在梯度累积比较大的情况下,测试下来端到端的性能损耗大概在 1% 左右,但能节省的显存却有十几 G,也是非常好用的一个特性。

接下来是计算优化,我们也提供各种融合算子,还有一些激活函数的融合,这些我们都是支持的。打开一个参数开关就能使能上了。

打开网易新闻 查看精彩图片

另外一种优化是等价改写。我们发现这边有一个对 Mask 赋值的操作,这个操作其实是可以等价改写成我对 Mask 取反,变成一个纯计算操作,这样我就可以把一个赋值操作变成一个纯计算操作,对性能的提升也是挺大的。

下一个计算优化是矩阵和向量的优化。我们的矩阵计算单元和向量计算单元是分开的,这样我们就想到我可以同时去做矩阵计算以及向量计算。

举一个例子,这个是 DualPipe 里 1F1B 阶段的流水排布,和幻方开源的会有一点差别,因为我们是根据自己硬件的特点重新排了一下。

打开网易新闻 查看精彩图片

这里我们发现它最开始有一个 Unpermute 的反向,接着马上是一个 Attention 的计算。Attention 计算里首先是一个矩阵计算,再接 FA 的计算。这里我们可以把 Permute 的计算再开一条向量的流,原来的这条流就留给矩阵计算,下面这一块就只给向量的计算,这样我们就可以做到矩阵计算和向量计算并在一起。后面的这些 Permute 和 Unpermute 也是一样,可以和共享专家的前反向并在一起,也能大大减少时间消耗。

但这个优化点有一个比较大的局限性,就是在同时做矩阵和向量计算时对访存的压力是比较大的。这会导致在比较大的计算量的情况下会导致算子劣化,所以这块优化点适合比较小点的,对访存没什么压力的计算,就能得到非常不错的收益。

下面是并行优化。

打开网易新闻 查看精彩图片

首先上面这个是原始的 VPP 虚拟流水并行,我们知道它会有一个 Warmup 阶段和一个 1F1B 阶段, Warmup 的数量等于设备的数量。以这边的图为例,这边我有 4 个设备,就必须要做 4 次前向。接下来进入 1F1B 阶段,做一次前向做一次反向。这样会有一个问题就是这个反向必须要依赖前向,前向做完之后才能做反向,造成了它们之间的通信等待,都不能做掩盖。这里我们提出了一个非常巧妙的思路,就是只要多做一个 Warmup,就可以把前向和反向之间的依赖关系拆开来。

在下面我做了 5 个 Warmup,到第六个的时候,我的前向是 2,反向是 1,这样它们之间就没有依赖关系,我就可以像幻方的 Dualpipe 一样去使能 1F1B 的掩盖了。

对比 DualPipe 它有两个优势,一个是简单,就是你自己开发一个 DualPipe 肯定要改一大堆代码,但我这边只用对 Warmup 的数量加 1 就能实现这样的流水排布。另外一个,DualPipe 是双向并行的,使用的卡要多一倍才能使能 1F1B 的流水。

接下来是一个 MoE 里的并行优化。我们做了一些实验,发现 MoE 速度缓慢的主要原因就是负载不均,不管是在 EP 之间还是 Layer 之间还是 Stage 之间,它都会存在不同的负载不均,这样就会造成不均衡的 A2A 通信,会拖慢 EP 通信。不均衡的计算会导致计算快的卡要等慢的卡,计算效率会劣化。Layer 之间的不均衡又会导致整个 PP Stage 之间都在互相等待,等待又会传导到 PP 的空泡,向后传导下去,这样就会拖慢整个模型的训练。

打开网易新闻 查看精彩图片

在这里幻方做了一个二级路由,在一定程度上掩盖 MoE 负载不均的情况。而 MindSpeed 作为一个底层的加速库,我们会面对很多客户,有些客户就会说我不想用二级路由,觉得我二级路由会对模型的效果有影响,他只想用一级路由,怎么办?

我们提出了数参互寻特性,它有两个思路,一个是传统的数据找计算,我的 tokens 要分发给对应专家所在的那张卡,然后这里去做通信。另外一个,负载不均肯定是有一些热门专家和一些冷门专家,冷门专家算得比较少,热门专家算得比较多,我其实可以不通信 tokens,而是通信专家,这样就一定程度上缓解负载不均的现象。

这里还利用了一个我们昇腾超节点的优势,就是超节点可以把几百张卡当做是同一个节点内,节点间性能劣化的劣势我们是没有的。这样我们就可以做到拿冷门专家的计算去掩盖热门专家的通信,通信完了之后马上接着就是热门专家的计算,相当于没有额外的通信开销,只有计算的耗时。

我们做了实验,在当前训练前期大概能拿到 7% 的收益,也是非常不错。

接下来有更多的并行技术。

打开网易新闻 查看精彩图片

首先是 Swap Attention 技术。我在 Attention 做完后,这些激活在反向之前其实是用不到了,我就可以把这些激活 swap 到 Host 侧再反向。反向的时候,在 MLP 开始的时候,我同时去做取回来的动作,这样就可以把 D2H 和 H2D 的计算和 MLP 的计算给并行起来。这样就能对模型训练的效率几乎没有影响,然后也能节省 Attention 的这部分激活。对比重计算,没有额外的计算,也不会对模型的效率有影响,所以这一块是比较优的减少动态显存的一块技术点。

左边这个是 Ulysses 融合 RingAttention 的技术,我们把这两个长序列的并行做了融合。我们知道在 Ulysses 里它是通过 A2A 去做通信的,节点内的通信比较快,节点间的通信就比较慢了。比如说我一个机器只有 8 张卡,Ulysses 最多就只能开到 8。另一个是 RingAttention,它的通信是 P2P 通信,比较适合在节点间做通信。我们就想到把这两个做融合,节点内通过 A2A 做通信,节点间通过 P2P 做,这样就可以把两个并行的优势全都合在一起,训练一个非常长的长序列模型。

下面重计算独立调度是说我在 PP 流水之间还开了重计算的情况下,我知道 PP 的流水其实是有很多空泡的,我可以把这些重计算的部分拿出来去填 PP 流水的空泡,这样就能压缩 PP 的空泡,也能提升模型训练的效率。

最后一个是 MoE 的 EDP 模式。就是说我在开了 TP 的情况下,原本它是会对专家的权重也做切分,特别是在小专家的情况下,做了切分之后会影响 Matmul 的计算效率。这会导致整个模型到了这里之后计算就慢下来了。

这样我就想到我其实是可以把 TP 的并行只在 Attention 的部分去做,然后 MLP 的这部分不去做 TP 通信,把 TP 通信的域分给 EP。这样由于 EP 扩大了,每个专家分的数量还是一样的,也就是说我的显存并没有增多,还是同样的显存,但我的专家并没有被切分,Matmul 的计算效率并没有降低。这也是一个比较优的特性,是小专家场景必开的。

以上就是本次的分享,谢谢各位。

嘉宾介绍

郑加利,华为高级工程师,主导 MindSpeed 框架基础架构设计构建,推动大模型训练效率的显著提升。主导微软大模型训练框架 DeepSpeed 原生支持华为昇腾软件栈,进一步拓展昇腾生态的兼容性。深度参与了华为昇腾的重点模型开发和客户项目攻关,多次获得昇腾领域总裁嘉奖令。

2026,AI 正在以更工程化的方式深度融入软件生产,Agentic AI 的探索也将从局部试点迈向体系化工程建设!

QCon 北京 2026 已正式启动,本届大会以“Agentic AI 时代的软件工程重塑”为核心主线,推动技术探索从「AI For What」真正落地到可持续的「Value From AI」。从前沿技术雷达、架构设计与数据底座、效能与成本、产品与交互、可信落地、研发组织进化六大维度,系统性展开深度探索。QCon 北京 2026,邀你一起,站在拐点之上。