advisor异常值分析
msprobe advisor异常值分析功能可快速定位训练过程中出现的异常值(例如NaN、Infinity等),通过分析msprobe dump的统计量数据,结合通信建模和联立分析,能够自动定位问题发生的初始位置。
适用场景
该功能主要针对以下训练问题现象:
- 训练日志中出现loss、grad norm等关键指标异常:
- 出现Nan、Infinity等无效值。
- 数值异常增大,超出常规认知范围。
- 存量模型训练中发现:
- 当前loss与历史loss差异显著。
- loss值突然异常波动(“loss飞掉”现象)。
此类异常现象可能由以下原因引起:
- 硬件层面:可能存在硬件静默故障(如坏卡)。
- 软件层面:可能是算子或软件栈问题。
环境准备
msprobe advisor已集成到ModelArts发布的镜像环境中,建议使用以下镜像进行相关操作。
swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_ascend:pytorch_2.5.1-cann_8.1.rc1-py_3.10-hce_2.0.2503-aarch64-snt9b-20250514161205-a9c5055
获取NPU和GPU的dump数据
在PyTorch训练脚本中插入dump接口的方式如下:
from msprobe.pytorch import PrecisionDebugger debugger = PrecisionDebugger(config_path='./config.json') ... debugger.start() # 一般在训练循环开头启动工具。 ... # 循环体 debugger.stop() # 一般在训练循环末尾结束工具。 debugger.step() # 在训练循环的最后需要重置工具,非循环场景不需要。
此处config.json配置使用统计量dump方式,示例如下:
{ "task": "statistics", "dump_path": "./dump_path", "rank": [], "step": [3, 4, 5], "level": "L1", "enable_dataloader": false, "async_dump": false, "statistics": { "scope": [], "list":[], "data_mode": ["all"], "summary_mode": "statistics" } }
这里指定了在第3、4、5个step进行数据dump。具体的step可以根据实际怀疑有精度问题的step前后进行调整。
执行advisor分析命令
使用以下命令执行msprobe advisor分析:
msprobe -f pytorch advisor -i ${dump_path} -o ${log_path}
- -i参数指定的目录是采集到指定step的dump数据(例如step4)。
- -o参数指定输出advisor建议落盘到文本文件(例如advisor.log)。
命令执行后会回显类似下图的terminal打印,其中包含了根因节点、异常函数名称、位置、置信度等信息。置信度从1到0按照大小依次排列,为1表示分析到根因,小于1的情形可按照顺序再做二次问题排查。

通过上述信息,您可以快速定位并解决训练过程中出现的异常值问题。
优化建议与注意事项
通过以下优化建议和注意事项,可以更高效地进行训练过程中的异常值分析,快速定位问题并解决问题。
- 选择合适的step:根据实际怀疑有精度问题的step前后进行dump,确保采集到足够的数据用于分析。例如,如果怀疑在step4附近出现精度问题,可以dump step3、step4和step5的数据,以便更全面地分析。
- 检查dump数据路径:确保${dump_path}指向正确的dump数据目录,避免因路径错误导致分析失败。例如,如果dump数据存储在/data/dump/step4,则${dump_path}应设置为/data/dump/step4。
- 分析结果解读:根据置信度值优先排查置信度高的异常,逐步缩小问题范围。例如,如果置信度为1的异常显示在某个节点的某个函数中,应优先检查该节点和函数的实现是否正确。
- 优化数据读取效率:如果数据集存在较多小文件,建议将小文件压缩打包(如.zip格式),上传至OBS,训练时直接下载压缩文件至/cache目录,避免反复与OBS交互导致效率低下。例如,可以使用以下代码将压缩文件下载并解压:
import moxing as mox TMP_CACHE_PATH = '/cache/data' mox.file.copy_parallel('OBS_path/your_data.zip', TMP_CACHE_PATH) # 解压文件
- 确保训练环境与镜像版本兼容:确保使用的msprobe版本与昇腾环境和其他相关软件版本兼容。版本不兼容可能会导致分析工具无法正常工作。
- 配置文件中的路径和参数需根据实际训练场景进行调整:确保配置文件中的路径(如数据路径、日志路径)和参数(如batch_size、train_steps)与实际训练场景一致。例如,如果数据存储在/cache/data,则代码中读取数据的路径应设置为/cache/data。
- 检查数据路径和权限:确保数据路径正确,并且ModelArts服务有权限访问数据存储的位置(如OBS桶)。例如,确保OBS桶的权限设置允许ModelArts服务读取数据。