已关闭
【实践文档】Qwen3-VL Megatron 后端训练性能优化实践 #482
Ruiyu_Qiu创建于  7月5日关闭于  18 小时前
Ruiyu_Qiu
7月5日 创建

Qwen3-VL-8B Megatron 后端训练性能优化实践

概述

本文以 Qwen3-VL-8B-Instruct 的组件式 Megatron 训练为例,记录一次梯度通信重叠的性能对照:先从已跑通的配置建立基线,采集 Profiling,再尝试开启 --overlap-grad-reduce,比较训练耗时和 loss。

模型接入、权重转换和数据配置见 开发实践,通用接口见 [Megatron 后端迁移指南]https://gitcode.com/Ascend/MindSpeed-MM/pull/2773)。本文使用同一模型和图文数据,不重复接入步骤。

基线配置

基线使用开发实践中的完整模型、原始权重和冻结范围。已有的 Flash Attention、融合 RMSNorm/SwiGLU 和分布式优化器保持开启,以这套能够正常训练的配置作为对照。

项目 配置
模型 Qwen3-VL-8B-Instruct,完整 27 层视觉编码器、36 层文本解码器
设备 单机 8 张昇腾 910B3,每张 64GB
并行 TP2、PP1、CP1、DP4
Batch MBS1,梯度累积 2 次,GBS8
数据 固定的 2000 条 LLaVA/COCO 图文样本,关闭 shuffle
输入规模 序列上限 1024,图像像素上限 65536
计算精度 BF16,启用确定性计算,seed42
优化器与调度 分布式 Adam;LR1e-5、cosine、warmup20步,总200步,其他超参沿用开发实践
通信重叠 overlap_grad_reduce=False,overlap_param_gather=False

性能计时单独运行 200 步,关闭 Profiling 和输入指纹审计,不保存检查点。第 21—200 步用于统计,避开初始化和前 20 步的 warmup;优化配置也使用相同窗口和样本顺序。

基线计时结果如下:

指标 基线结果
平均单步耗时 1168.544 ms
样本吞吐 6.846 samples/s

样本吞吐按统计窗口内的样本数除以总耗时计算。变长图文数据的实际 token 数不同,这里不使用序列长度上限估算 tokens/s。当前结果为单次运行;如果后续差异较小,应重复测量。

Profiling 与通信开销

通过 --mm-tool 指向独立的工具配置,采集全部 8 个 rank 的数据。当前 CP=1,Profiling 元数据中的 dp_cp 组就是本例的 DP 组。rank0 在采集的 3 步内记录到:

通信操作 次数 累计耗时
DP ReduceScatter 3 818.770 ms
DP AllGather 3 340.703 ms
TP AllGather 与 ReduceScatter 3000 978.317 ms

这些是操作累计时间,包含等待,不能相加当作单步耗时,也不能直接换算成可获得的加速比例。它们说明 DP 通信值得检查;结合时间线中的计算、通信和等待区间,再判断能否通过重叠减少暴露的通信时间。

CPU 统计还记录了较多标量读取和 copy_ 等待。对应等待可能来自设备执行或其他同步,不能全部归因于数据加载。本篇先测试 DP 梯度通信重叠。

开启梯度通信重叠

本例采用分布式优化器,梯度归约使用 ReduceScatter,基线未开启梯度通信重叠。本实验尝试在一批参数的梯度就绪后异步发起归约,使这部分通信与后续反向计算重叠。

在原训练命令中增加一个参数:

--use-distributed-optimizer \
--overlap-grad-reduce \

--use-distributed-optimizer 是基线已有参数,新增项只有 --overlap-grad-reduce。启动后检查日志中的 DistributedDataParallelConfig,确认 overlap_grad_reduce=True。

对照配置如下:

配置 梯度通信重叠 参数聚合重叠
基线 关闭 关闭
本次实验 开启 关闭

模型、权重、数据、冻结范围、TP/SP、batch、优化器和学习率调度均保持一致。两边从相同初始权重独立起训,所有训练设定保持一致。

对照方法

开启重叠后,同样完成 200 个优化器更新步,比较第 21—200 步的平均耗时和样本吞吐。

精度检查逐步核对学习率、consumed samples、loss 和梯度有限性,记录相对 loss 偏差。

结果记录

以下为第 21—200 步的计时结果,两组均完成 200 个优化器更新步:

指标 基线 开启梯度通信重叠
平均单步耗时 1168.544 ms 1060.515 ms
单步耗时 P50 1161.250 ms 1058.250 ms
单步耗时 P90 1204.160 ms 1080.940 ms
样本吞吐 6.846 samples/s 7.544 samples/s
NaN / 跳步次数 0 / 0 0 / 0

本次测量记录的平均耗时比基线低 9.24%,样本吞吐高 10.19%。

200 步的学习率、consumed samples 和 global batch size 逐步一致,loss 在日志精度上逐步一致,梯度有限,无 NaN 或跳步。

likedislike
ascend-robotascend-robot成员
7月7日 关联了看板:MindStudio ISSUE管理
young256young256成员
7月8日 关联了里程碑:MindSpeed 26.2.0
yeqm成员
7月14日 评论:

感谢您对 MindSpeed-MM 社区的贡献!相关实践文档及关联 PR 已收到,后续将由社区 Maintainer 进行审核,请关注评审意见并及时更新。

likedislike
且奏长歌且奏长歌成员
18 天前 issue状态由 TODO 改变为 DONE
且奏长歌且奏长歌成员
18 天前 关闭了 issue
ascend-robotascend-robot成员
18 天前 添加了label:resolved
Yyeqm成员
4 天前 关联了里程碑:MindSpeed 26.3.0
Yyeqm成员
4 天前 issue状态由 DONE 改变为 TODO
Yyeqm成员
4 天前 重新打开了 issue
ascend-robot
ascend-robot成员
4 天前 评论:

您好,当前Issue标记为resolved且有一段时间未进一步更新,因此我们将其标记为'stale'(闲置)状态。若您认为这是误操作,可通过添加任意评论来去除'stale'标签。标记为stale的Issue在4天内无更新活动将自动关闭。

likedislike
ascend-robotascend-robot成员
4 天前 添加了label:stale
RRuiyu_Qiu
4 天前 修改标题为 “【实践文档】Qwen3-VL Megatron 后端训练性能优化实践”,原标题为“【实践文档】Qwen2.5-VL Megatron 后端训练性能优化实践”
RRuiyu_Qiu
4 天前 修改了issue 的描述
RRuiyu_Qiu
4 天前 修改了issue 的描述
RRuiyu_Qiu
4 天前 修改了issue 的描述
ascend-robotascend-robot成员
18 小时前 关闭了 issue
ascend-robotascend-robot成员
18 小时前 issue状态由 TODO 改变为 CLOSED