44 Star 163 Fork 497

Ascend/mstt

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

📖 msprobe 使用手册

version python platform

msprobe 是 MindStudio Training Tools 工具链下精度调试部分的工具包。主要包括精度预检、溢出检测和精度比对等功能,目前适配 PyTorchMindSpore 框架。这些子工具侧重不同的训练场景,可以定位模型训练中的精度问题。

为方便使用,本工具提供了统一、简易的程序接口:PrecisionDebugger。以 PyTorch 框架为例,通过以下示例模板和 config.json 可以轻松使用各种功能。

from msprobe.pytorch import PrecisionDebugger

debugger = PrecisionDebugger(config_path='./config.json')
...
debugger.start() # 一般在训练循环开头启动工具
... # 循环体
debugger.stop() # 一般在训练循环末尾结束工具。必须调用,否则可能导致精度数据落盘不全
debugger.step() # 在训练循环的最后需要重置工具,非循环场景不需要

此外,根据以下规则,可以通过环境变量设置日志级别。

  • MSPROBE_LOG_LEVEL=4,不打印任何日志;
  • MSPROBE_LOG_LEVEL=3,仅打印 ERROR;
  • MSPROBE_LOG_LEVEL=2,仅打印 WARNING、ERROR;
  • MSPROBE_LOG_LEVEL=1,仅打印 INFO、WARNING、ERROR(默认配置);
  • MSPROBE_LOG_LEVEL=0,打印 DEBUG、INFO、WARNING、ERROR。

例如在 shell 脚本:

export MSPROBE_LOG_LEVEL={x}

config.json 的配置要求和各功能具体的使用指导详见后续章节。

环境和依赖

以上环境依赖请根据实际环境选择适配的版本。

版本配套说明

  • msprobe支持AscendPyTorch 1.11.0或更高版本,支持的PyTorch和CANN以及PyTorch和python软件版本配套关系请参见《Ascend Extension for PyTorch插件》。
  • msprobe支持MindSpore 2.4.0或更高版本,支持的MindSpore和CANN以及MindSpore和python软件版本配套关系请参见《MindSpore版本发布列表》。
  • msprobe支持MSAdapter 2.1.0。
  • msprobe支持的固件驱动版本与配套CANN软件支持的固件驱动版本相同,开发者可通过“昇腾社区-固件与驱动”页面根据产品型号与CANN软件版本获取配套的固件与驱动。

🚨 工具限制与注意事项

1. Pytorch 框架下,工具暂不支持 Fully Sharded Data Parallel(FSDP)。

2. 工具读写的所有路径,如config_path、dump_path等,只允许包含大小写字母、数字、下划线、斜杠、点和短横线。

⚙️ 安装

请参见安装指导说明

🌟 新版本特性

请参见特性变更说明

🛠️ config.json 介绍示例

🧰 主要功能

0 用前必看

使用工具前,建议先浏览工具功能模块简介、适用场景和当前版本局限性,了解功能特性。

1 数据采集

msprobe 通过在训练脚本中添加 PrecisionDebugger 接口的方式对 API 执行精度数据 dump 操作。对应 config.json 中的 "statistics" 或 "tensor" task。

PyTorch 场景的数据采集

MindSpore 场景的数据采集

MSAdapter 场景的数据采集

2 精度预检

精度预检旨在昇腾 NPU 上扫描训练模型中的所有 API 进行 API 复现,给出精度情况的诊断和分析。对应 config.json 中的 "run_ut" task。

PyTorch 场景的离线预检在线预检

MindSpore 动态图场景的离线预检

3 分级可视化构图比对

该功能将msprobe工具dump的精度数据进行解析,还原模型图结构,实现模型各个层级的精度数据比对,方便用户理解模型结构、分析精度问题。

PyTorch 场景的分级可视化构图比对

MindSpore 场景的分级可视化构图比对

4 精度比对

该功能进行 PyTorch 整网 API 粒度的数据 dump、精度比对,进而定位训练场景下的精度问题。

PyTorch 场景的精度比对

MindSpore 场景的精度比对

5 数据解析

该功能用于比对前后两次 NPU ACL 层级 dump 数据的一致性。

PyTorch 场景的数据解析

6 无标杆比对

PyTorch 场景的无标杆比对

MindSpore 场景的无标杆比对

7 梯度状态监测

本功能用于采集梯度数据并进行梯度相似度比对,可以精准定位出现问题的 step。

兼容 PyTorch 和 MindSpore 框架的梯度监测

8 在线精度比对

在线精度比对是实现在PyTorch训练过程中直接完成精度比对并输出比对结果的功能,是NPU与CPU之间的精度比对。

PyTorch 场景的在线精度比对

9 训练状态监控

该功能收集和聚合模型训练过程中的网络层,优化器, 通信算子的中间值,帮助诊断模型训练过程中计算, 通信,优化器各部分出现的异常情况。

兼容 PyTorch 和 MindSpore 框架的训练状态监控

10 单算子API自动生成脚本

该功能将msprobe工具dump的精度数据进行解析,自动生成单API脚本,用于复现整网中出现的算子问题,降低用户复现问题的成本,供开发分析算子问题。

PyTorch 单算子API自动生成脚本

MindSpore 单算子API自动生成脚本

11 数码关联

该功能只支持 MindSpore 静态图场景,用于将IR图与dump数据进行关联,获取dump数据和代码调用栈的关联关系。

MindSpore 场景的数码关联

12 溢出检测与解析

溢出检测用于采集溢出 API 或 模块的精度数据,而溢出解析则是通过对溢出数据的分析,进一步判断是否为正常溢出。对应 config.json 中的 "overflow_check" task。 推荐直接使用数据采集功能采集统计量信息,检测溢出问题。

PyTorch 场景的溢出检测与解析

MindSpore 场景的溢出检测

MSAdapter 场景的溢出检测

13 训练检查

该工具主要包括:

训练前或精度比对前,对比两个环境下可能影响训练精度的配置差异。

PyTorch 训练前配置检查

训练过程中或结束后,比较两个不同的checkpoint,评估模型相似度。

checkpoint比对

14 强化学习数据采集

主要能力:

灵活采集强化学习中重要关键过程数据,并支持比对。

强化学习数据采集

15 整网首个溢出节点分析

多rank场景下通过dump数据找到首个出现Nan或Inf的节点。

PyTorch 场景整网首个溢出节点分析

📑 补充材料

无标杆比对功能在 PyTorch 场景的性能基线报告

❗ 免责声明

本工具建议执行用户与安装用户保持一致,如果您要使用 root 执行,请自行关注 root 高权限触及的安全风险。

❓ FAQ

FAQ for PyTorch

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/ascend/mstt.git
git@gitee.com:ascend/mstt.git
ascend
mstt
mstt
master

搜索帮助