MindStudio助你三步定位NaN问题,为大模型训练保驾护航
收藏回复举报
MindStudio助你三步定位NaN问题,为大模型训练保驾护航
发表于2025-04-02 09:47:56
0 查看

       当前,大模型技术正经历爆发式发展——模型架构持续创新,算法性能不断突破,推动其在各领域的应用快速扩然而,随着模型规模的指数级增长和系统复杂度的提升,训练过程也面临着更严峻的技术挑战。在分布式训练场景下,数值异常问题(如负数开根号、梯度同步失败等)极易引发NaN(Not a Number)错误,导致训练任务失败这对开发者提出了双重挑战:既需要扎实的数学与工程基础,又必须深度掌握模型实现细节。如何高效定位并解决NaN问题,已成为影响大模型训练效率的关键因素之一。

MindStudio Probe 训练状态观测预警功能小时级定位NaN问题

      MindStudio Probe(简称msProbe)工具提供了训练状态观测预警功能,能够采集模型训练过程中每一个模块的激活值、权重梯度等信息开发者通过分析采集的数据可以快速定位训练精度异常的源头,提高模型的训练效率和准确性

1.png

      在大模型训练过程中,一旦某个计算环节产生NaN,这个异常值就会通过前向传播和反向传播迅速扩散,导致后续所有相关计算结果均被"污染"为NaN。所以在定位NaN问题时,我们需要找到NaN出现的第一现场,再依据模型整体计算流,逐层追溯问题根因优先定界前反向阶段,再阶段内的异常模块,最终找到出现问题的API完成问题定位

      本将以常见的大模型加速库Megatron-LM为例,教你如何使用msProbe工具“打开”模型,快速定位NaN问题。

1 向、反向阶段定界

      首先确定NaN首次出现在前向计算还是反向传播阶段常用的大模型加速库会在训练日志中打印每步的loss和grad norm。loss是模型在训练过程中衡量其性能的指标,它用来预测模型输出与目标值之间的差距loss值越小意味着模型性能好。grad norm模型参数梯度的范数,通常用于衡量梯度的大小。过大的grad norm可能表明梯度爆炸,导致模型训练不稳定;小的grad norm则可能表明梯度消失,同样会导致训练困难。

      在定界时,通过判定日志中NaN出现的顺序,区分问题在前向阶段还是反向阶段。如果loss首先出现NaN,说明前向传播过程先出现异常,需要进一步确认激活值最早出现NaN的模块如果是grad norm先出现NaN,则说明反向传播过程先出现异常,需要确认梯度最早出现NaN的模块

21 阶段模块定界

      msProbe训练状态观测预警功能借助PyTorch框架的hook机制,能灵活地监控大模型中每个module的激活值,并统计张量中出现NaN的数量用户只需要在代码中导入工具TrainerMon接口,根据需求完成参数配置,再运行模型即可开始采集工具使能样例如下所示,用户根据需要观测的指标,指导资料调整monitor_config.json的配置

2.png

      下展示了msProbe工具的采集结果,input.nansoutput.nans两列统计了模块输入、输出张量中出现NaN的数量图中,module_name0.self_attention.dense_5的输出首次出现了4096个NaN,并导致后续模块的输入也包含NaNmodule_name表示模型第0层的self_attention.dense模块6次前向计算这样我们就确定了当前卡在训练时首次出现NaN的位置。此外,若存在张量并行场景需要进一步排查同一并行组中其他卡的相同位置是否有问题,判断NaN是来自通信传播还是当前卡的计算。

5.png

前向激活值NaN数量统计

2.2 反向模块定界

      通过msProbe训练状态观测预警功能,我们可以采集权重聚合前后的梯度统计信息,这对于诊断梯度相关的问题非常有帮助。例如,在图 2 中,pre_grad.nanspost_grad.nans分别表示权重聚合前后梯度中NaN的数量,对比可以发现聚合前梯度正常(左侧),聚合后全都出现了NaN(右侧)这说明问题很可能出现在梯度聚合过程中,比如异步通信未同步原因导致梯度聚合结果不正确,我们可以根据具体问题,结合聚合操作的实现进一步分析问题根因。

3.png

权重梯度的NaN数量统计

3 API定位

      确定NaN出现的具体模块后,可以使用msProbe工具提供的数据采集功能采集API粒度的数据,用户只需要在代码中导入工具的PrecisionDebugger接口并完成对应参数配置即可通过采集API数据找到最早出现NaNAPI,锁定问题的最终源头,使用样例如下所示

4.png

      接下来,只需要修复API中存在的问题,重新启动训练进程,即可让模型继续AI领域的广阔天地中驰骋,发挥其强大的潜力。

      msProbe工具除了训练状态观测预警功能外,还有训练数据采集分级可视化构图比对等功能,我们将持续升级,欢迎广大开发者点击阅读原文了解试用msProbe工具

本帖最后由 匿名用户2025/07/22 17:06:25 编辑

我要发帖子