云服务器内容精选

  • Msprobe API预检 Msprobe是MindStudio Training Tools工具链下精度调试部分的工具包,主要包括精度预检、溢出检测和精度比对等功能,目前适配PyTorch和MindSpore框架。这些子工具侧重不同的训练场景,可以定位模型训练中的精度问题。 精度预检工具旨在计算单个API在整网计算中和标杆场景下的差异,对于无明确精度差异来源情况或者对模型了解不多的情形下都推荐使用预检工具,检查第一个步骤或Loss明显出现问题的步骤。它可以抓取模型中API输入的数值范围,根据范围随机生成输入,用相同的输入分别在NPU(GPU)和CPU上执行算子,比较输出差异。预检最大的好处是,它能根据算子(API)的精度标准来比较输出结果并判定其是否有精度问题。预检工具使用包含以下三步:dump、run_ut以及api_precision_compare。基本步骤如下: 通过pip安装Msprobe工具。 # shell pip install mindstudio-probe 获取NPU和GPU的dump数据。 PyTorch训练脚本插入dump接口方式如下: from msprobe.pytorch import PrecisionDebugger debugger = PrecisionDebugger(config_path='./config.json') ... debugger.start() # 一般在训练循环开头启动工具。 ... # 循环体 debugger.stop() # 一般在训练循环末尾结束工具。 debugger.step() # 在训练循环的最后需要重置工具,非循环场景不需要。 具体的config.json的配置要求请参见介绍。 使用run_ut.py执行预检。 msprobe -f pytorch run_ut -api_info ./dump.json 这里-api_info指定的是步骤2导出的dump.json文件,表示整网计算过程中API的输入输出情况。执行完成run_ut命令之后将输出api_precision_compare_result_{timestamp}.csv和 api_precision_compare_details_{timestamp}.csv文。accuracy_checking_result_{timestamp}.csv属于API级,标明每个API是否通过测试。建议用户先查看accuracy_checking_result_{timestamp}.csv文件,对于其中没有通过测试的或者特定感兴趣的API,根据其API name字段在 accuracy_checking_details_{timestamp}.csv中查询其各个输出的达标情况以及比较指标。 比对NPU和GPU预检结果。 msprobe -f pytorch api_precision_compare -npu /home/xxx/npu/accuracy_checking_details_{timestamp}.csv -gpu /home/xxx/gpu/accuracy_checking_details_{timestamp}.csv -o /home/xxx 这里-npu指定步骤3NPU预检结果中accuracy_checking_details_{timestamp}.csv文件路径,-gpu指定GPU预检结果accuracy_checking_details_{timestamp}.csv文件路径, -o需指定执行比对结果的存盘路径。执行完成后输出api_precision_compare_result_{timestamp}.csv和 api_precision_compare_details_{timestamp}.csv文件。用户可以通过先查看api_precision_compare_result_{timestamp}.csv文件的Forward Test Success和Backward Test Success,判断是否存在未通过测试的API,再查看api_precision_compare_details_{timestamp}.csv文件的API详细达标情况。 详细工具的使用指导请参考离线预检和在线预检介绍。 父主题: Msprobe工具使用指导
  • Msprobe精度比对 精度比对功能主要针对两类场景的问题: 同一模型,从CPU或GPU移植到NPU中存在精度下降问题,对比NPU芯片中的API计算数值与CPU或GPU芯片中的API计算数值,进行问题定位。 同一模型,进行迭代(模型、框架版本升级或设备硬件升级)时存在的精度下降问题,对比相同模型在迭代前后版本的API计算数值,进行问题定位。 首先通过在PyTorch训练脚本中插入dump接口,跟踪计算图中算子的前向传播与反向传播时的输入与输出,然后再使用子命令compare进行比对生成比对表格。当前比对结果支持计算Cosine(余弦相似度)、MaxAbsErr(最大绝对误差)和MaxRelativeErr(最大相对误差)、One Thousandth Err Ratio(双千分之一)和Five Thousandths Err Ratio(双千分之五)这几种评价指标,工具通过阈值过滤筛选出不达标API的输入输出提示用户进行重点关注。使用步骤如下: 通过pip安装Msprobe工具。 # shell pip install mindstudio-probe 获取NPU和标杆的dump数据。 PyTorch训练脚本插入dump接口方式如下: from msprobe.pytorch import PrecisionDebugger debugger = PrecisionDebugger(config_path='./config.json') ... debugger.start() # 一般在训练循环开头启动工具。 ... # 循环体 debugger.stop() # 一般在训练循环末尾结束工具。 debugger.step() # 在训练循环的最后需要重置工具,非循环场景不需要。 具体的config.json的配置要求请参见介绍。 创建比对compare.json文件。 单卡场景 { "npu_path": "./npu_dump/dump.json", "bench_path": "./bench_dump/dump.json", "stack_path": "./npu_dump/stack.json", "is_print_compare_log": true } 多卡场景 { "npu_path": "./npu_dump/step0", "bench_path": "./bench_dump/step0", "is_print_compare_log": true } 单卡场景npu_path、bench_path、stack_path分别表示从步骤2中NPU环境所生成的dump.json、标杆环境生成的dump.json及NPU环境生成的stack.json文件,is_print_compare_log配置是否开启日志打屏。 多卡场景区别于单卡场景会在步骤2按rank标号信息生成多个rank的dump文件结果,npu_path指定NPU环境生成包含多rank目录,gpu_path指定标杆环境包含多rank目录,is_print_compare_log配置是否开启日志打屏。 精度比对生成比对报告 msproe -f pytorch compare -i ./compare.json -o ./output -s 这里-i指定步骤3所创建compare.json文件,-o指定比对结果文件存盘目录,-s配置是否生成堆栈信息。生成结果为advisor_{timestamp}.txt和compare_result_{timestamp}.xlsx文件,advisor_{timestamp}.txt列出了可能存在精度问题的API的专家建议,compare_result_{timestamp}.xlsx文件列出了所有执行精度比对的API详细信息和比对结果。 详细工具的使用指导请参考Pytorch精度比对介绍。 父主题: Msprobe工具使用指导