From 9e4e450c745284db1cf5668d8db43f6b1e2c03b9 Mon Sep 17 00:00:00 2001 From: cai-weiwei1989 <734267852@qq.com> Date: Mon, 26 Aug 2024 11:24:48 +0800 Subject: [PATCH] =?UTF-8?q?[msprobe\mindspore\compare]=E6=94=AF=E6=8C=81AP?= =?UTF-8?q?I=E6=95=B0=E6=8D=AE=E8=B7=A8=E6=A1=86=E6=9E=B6=E6=AF=94?= =?UTF-8?q?=E5=AF=B9=E8=B5=84=E6=96=99=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msprobe/mindspore/doc/compare.md | 139 ++++++++++++++---- .../pytorch/doc/ptdbg_ascend_compare.md | 2 +- 2 files changed, 115 insertions(+), 26 deletions(-) diff --git a/debug/accuracy_tools/msprobe/mindspore/doc/compare.md b/debug/accuracy_tools/msprobe/mindspore/doc/compare.md index 01b4da70b9..ddadb82d1a 100644 --- a/debug/accuracy_tools/msprobe/mindspore/doc/compare.md +++ b/debug/accuracy_tools/msprobe/mindspore/doc/compare.md @@ -1,5 +1,10 @@ # 精度比对工具 -msprobe精度比对工具主要通过对同一个模型,在两个不同的MindSpore环境下,输入相同的训练数据,在分别得到dump数据后,对这两个dump数据进行全量自动对比,从而快速定位不同版本之间的精度问题。 +msprobe精度比对工具主要用于如下场景: + +- 通过对同一个网络模型,在两个不同版本的MindSpore环境下,输入相同的训练数据,在分别得到API dump数据后,对这两个API dump数据进行全量自动比对,从而快速定位不同版本之间的精度问题。 +- 通过对同一个网络模型,在两个不同版本的MindSpore环境下,输入相同的训练数据,在分别得到cell dump数据后,对这两个cell模块进行全量自动比对,从而快速定位不同版本之间的精度问题。 +- 通过对同一个网络模型,在整网环境下分别在MindSpore和PyTorch环境下获得API dump数据,以PyTorch数据作为标杆,进行自动比对,从而实现跨框架的精度对比。 +- 通过对同一个网络模型,在整网环境下分别在MindSpore和PyTorch环境下获得cell dump数据,由用户指定可以比对的cell list,以PyTorch数据作为标杆,进行自动比对,从而实现跨框架的精度对比。 执行精度比对操作需要安装msprobe工具。详见《[MindStudio精度调试工具](../../README.md)》的“工具安装”章节。 @@ -7,11 +12,27 @@ msprobe精度比对工具主要通过对同一个模型,在两个不同的Mind 精度比对工具目前使用方式为命令行形式,对MindSpore的dump数据仅支持单卡。 -请先参见《[精度数据采集](./dump.md)》完成不同环境下MindSpore精度数据的采集。 +### 命令格式说明 + +```shell +msprobe -f mindspore compare -i ./compare.json -o ./output -s +``` + +**完整参数说明** -### 操作步骤 +| 参数名 | 说明 | 是否必选 | +| ------------------- | ------------------------------------------------------------ | -------- | +| -i或--input_path | 指定比对文件路径。比对文件内容及示例请参见“**比对文件**”。 | 是 | +| -o或--output_path | 配置比对结果文件存盘目录。文件名称基于时间戳自动生成,格式为:`compare_result_{timestamp}.xlsx`。 | 是 | +| -s或--stack_mode | 配置stack_mode的开关。仅当**比对文件**配置"stack_path"需要开启。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 | +| -c或--compare_only | 仅比对开关。未配置默认关闭仅比对,使用自动精度分析,工具自动针对比对结果进行分析,识别到第一个精度不达标节点(在比对结果文件中的“Accuracy Reached or Not”列显示为No),并给出问题可能产生的原因(打屏展示并生成advisor_{timestamp}.txt文件)。该参数默认未配置,使用自动精度分析,通过配置该参数开启仅比对,关闭自动精度分析,仅输出比对结果表格。 | 否 | +| -f或--fuzzy_match | 模糊匹配。开启后,对于网络中同一层级且命名仅调用次数不同的API,可匹配并进行比对。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 | +| -am或--api_mapping | 跨框架比对。配置该参数时表示开启跨框架API比对功能。 | 否 | +| -cm或--cell_mapping | 跨框架比对。配置该参数时表示开启跨框架cell模块比对功能,可以指定自定义映射文件*.yaml,不指定映射文件时按照msprobe定义的默认映射关系进行比对。自定义映射文件的格式请参见“**自定义映射文件**”。 | 否 | -1. 使用MindSpore进行dump,得到不同框架版本的dump数据。 +### 不同版本下的全量API比对 + +1. 参见《[精度数据采集](./dump.md)》完成不同环境下MindSpore精度数据的采集,得到不同框架版本的dump数据。 2. 创建比对文件,文件内容及示例请参见“**比对文件**”。 @@ -21,17 +42,63 @@ msprobe精度比对工具主要通过对同一个模型,在两个不同的Mind msprobe -f mindspore compare -i ./compare.json -o ./output -s ``` - **完整参数说明** +4. 查看比对结果,请详见PyTorch目录下的《[精度比对工具](../../pytorch/doc/compare.md)》的“比对结果分析”章节。 + +### 不同版本下的cell模块比对 + +1. 配置[config.json](../../config/config.json)文件level配置为L0、task配置为tensor并指定需要dump的cell模块名。 + +2. 参见《[精度数据采集](./dump.md)》完成不同环境下MindSpore精度数据的采集,得到不同框架版本的cell模块dump数据。 + +3. 创建比对文件,文件内容及示例请参见“**比对文件**”。 + +4. 执行如下示例命令进行比对: + + ```shell + msprobe -f mindspore compare -i ./compare.json -o ./output -s + ``` + +5. 查看比对结果,请详见PyTorch目录下的《[精度比对工具](../../pytorch/doc/compare.md)》的“比对结果分析”章节。 + +### 跨框架的API比对 + +1. 配置[config.json](../../config/config.json)文件level配置为L1、task配置为tensor。 + +2. 参见《[MindSpore_精度数据采集](./dump.md)》和《[PyTorch_精度数据采集](https://gitee.com/ascend/mstt/blob/master/debug/accuracy_tools/msprobe/pytorch/doc/dump.md)》完成不同环境下API精度数据的采集,得到两个框架的API dump数据。 + +3. 创建比对文件,文件内容及示例请参见“**比对文件**”。 + +4. 执行如下示例命令进行比对: + + ```shell + msprobe -f mindspore compare -i ./compare.json -o ./output -s -am + ``` + +5. 查看比对结果,请详见PyTorch目录下的《[精度比对工具](../../pytorch/doc/compare.md)》的“比对结果分析”章节。 + +### 跨框架的cell模块比对 + +1. 配置[config.json](../../config/config.json)文件level配置为L0、task配置为tensor并指定需要dump的cell模块名。 + +2. 参见《[MindSpore_精度数据采集](./dump.md)》和《[PyTorch_精度数据采集](https://gitee.com/ascend/mstt/blob/master/debug/accuracy_tools/msprobe/pytorch/doc/dump.md)》完成不同环境下cell模块精度数据的采集,得到两个框架的cell模块dump数据。 + +3. 创建比对文件,文件内容及示例请参见“**比对文件**”。 + +4. 执行如下示例命令进行比对: + + ```shell + msprobe -f mindspore compare -i ./compare.json -o ./output -s -cm + ``` + + 或 + + ```shell + msprobe -f mindspore compare -i ./compare.json -o ./output -s -cm cell_mapping.yaml + ``` - | 参数名 | 说明 | 是否必选 | - |-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -------- | - | -i或--input_path | 指定比对文件路径。比对文件内容及示例请参见“**比对文件**”。 | 是 | - | -o或--output_path | 配置比对结果文件存盘目录。文件名称基于时间戳自动生成,格式为:`compare_result_{timestamp}.xlsx`。 | 是 | - | -s或--stack_mode | 配置stack_mode的开关。仅当**比对文件**配置"stack_path"需要开启。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 | - | -c或--compare_only | 仅比对开关。未配置默认关闭仅比对,使用自动精度分析,工具自动针对比对结果进行分析,识别到第一个精度不达标节点(在比对结果文件中的“Accuracy Reached or Not”列显示为No),并给出问题可能产生的原因(打屏展示并生成advisor_{timestamp}.txt文件)。该参数默认未配置,使用自动精度分析,通过配置该参数开启仅比对,关闭自动精度分析,仅输出比对结果表格。 | 否 | - | -f或--fuzzy_match | 模糊匹配。开启后,对于网络中同一层级且命名仅调用次数不同的API,可匹配并进行比对。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 | +5. 查看比对结果,请详见PyTorch目录下的《[精度比对工具](../../pytorch/doc/compare.md)》的“比对结果分析”章节。 -4. 查看比对结果,请详见PyTorch目录下的《[精度比对工具](../../pytorch/doc/ptdbg_ascend_compare.md)》的“比对结果分析”章节。 +## 附录 ### 比对文件 @@ -39,20 +106,42 @@ msprobe精度比对工具主要通过对同一个模型,在两个不同的Mind ```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/dump.json", +"bench_path": "./bench_dump/dump.json", +"stack_path": "./npu_dump/stack.json", +"is_print_compare_log": true +} ``` **参数说明** -| 参数名 | 说明 | 是否必选 | -| -------------------- | ------------------------------------------------------------ | ------------------ | -| npu_path | 配置NPU环境下的dump.json文件(单卡场景)。数据类型:str。 | 是 | -| bench_path | 配置CPU、GPU或NPU环境下的dump.json文件(单卡场景)。数据类型:str。 | 是 | -| stack_path | 配置NPU dump目录下的stack.json文件。数据类型:str。 | 是| -| is_print_compare_log | 配置是否开启日志打屏。可取值True或False,默认为True。数据类型:bool | 否 | \ No newline at end of file +| 参数名 | 说明 | 是否必选 | +| -------------------- | ------------------------------------------------------------ | -------- | +| npu_path | 配置NPU环境下的dump.json文件(单卡场景)。跨框架场景指定为MindSpore的json文件。数据类型:str。 | 是 | +| bench_path | 配置CPU、GPU或NPU环境下的dump.json文件(单卡场景)。 跨框架场景指定为PyTorch的json文件。数据类型:str。 | 是 | +| stack_path | 配置NPU dump目录下的stack.json文件。数据类型:str。 | 是 | +| is_print_compare_log | 配置是否开启日志打屏。可取值true或false,默认为true。数据类型:bool | 否 | + +### 自定义映射文件 + +文件名格式:\*.yaml,*为文件名,可自定义。 + +文件内容格式: + +```yaml +{cell_name}.{class_name}: {cell_name}.{class_name} +``` + +左侧为MindSpore框架cell模块的{cell_name}.{class_name},右侧为PyTorch框架cell模块的{cell_name}.{class_name}。 + +{cell_name}.{class_name}从dump cell模块级.npy文件名获取,命名格式为:`{Cell}_{cell_name}_{class_name}_{前向反向}.{index}.{input/output}.{参数序号}` + +文件内容示例: + +```yaml +fc2.Dense: fc2.Linear +conv1.Conv2d: conv3.Conv2d +``` + diff --git a/debug/accuracy_tools/msprobe/pytorch/doc/ptdbg_ascend_compare.md b/debug/accuracy_tools/msprobe/pytorch/doc/ptdbg_ascend_compare.md index ffff1f44f7..67a461190e 100644 --- a/debug/accuracy_tools/msprobe/pytorch/doc/ptdbg_ascend_compare.md +++ b/debug/accuracy_tools/msprobe/pytorch/doc/ptdbg_ascend_compare.md @@ -78,7 +78,7 @@ | npu_path | 配置NPU环境下的dump.json文件(单卡场景)或真实数据目录(多卡场景)。数据类型:str。 | 是 | | bench_path | 配置CPU、GPU或NPU环境下的dump.json文件(单卡场景)或真实数据目录(多卡场景)。数据类型:str。 | 是 | | stack_path | 配置NPU dump目录下的stack.json文件。数据类型:str。 | 单卡必选,多卡不选 | -| is_print_compare_log | 配置是否开启日志打屏。可取值True或False。数据类型:bool | 否 | +| is_print_compare_log | 配置是否开启日志打屏。可取值true或false,默认为true。数据类型:bool | 否 | ## 比对函数方式比对 -- Gitee