mindstudio-probe 8.1.1__py3-none-any.whl → 8.1.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. {mindstudio_probe-8.1.1.dist-info → mindstudio_probe-8.1.2.dist-info}/METADATA +1 -1
  2. {mindstudio_probe-8.1.1.dist-info → mindstudio_probe-8.1.2.dist-info}/RECORD +95 -94
  3. msprobe/core/common/const.py +3 -0
  4. msprobe/core/common/file_utils.py +45 -5
  5. msprobe/core/common/utils.py +117 -13
  6. msprobe/core/common_config.py +15 -1
  7. msprobe/core/compare/acc_compare.py +21 -9
  8. msprobe/core/compare/compare_cli.py +10 -2
  9. msprobe/core/compare/merge_result/merge_result.py +1 -1
  10. msprobe/core/compare/utils.py +8 -2
  11. msprobe/core/config_check/checkers/base_checker.py +2 -0
  12. msprobe/core/config_check/checkers/hyperparameter_checker.py +5 -4
  13. msprobe/core/config_check/ckpt_compare/ckpt_comparator.py +4 -1
  14. msprobe/core/config_check/config_check_cli.py +1 -1
  15. msprobe/core/config_check/config_checker.py +1 -2
  16. msprobe/core/data_dump/data_collector.py +4 -1
  17. msprobe/core/data_dump/data_processor/mindspore_processor.py +23 -1
  18. msprobe/core/data_dump/data_processor/pytorch_processor.py +3 -25
  19. msprobe/core/debugger/precision_debugger.py +13 -8
  20. msprobe/core/hook_manager.py +112 -82
  21. msprobe/core/monitor/utils.py +338 -0
  22. msprobe/core/service.py +2 -1
  23. msprobe/core/single_save/single_comparator.py +5 -3
  24. msprobe/docs/01.installation.md +1 -0
  25. msprobe/docs/05.data_dump_PyTorch.md +4 -4
  26. msprobe/docs/07.accuracy_checker_PyTorch.md +14 -11
  27. msprobe/docs/09.accuracy_checker_MindSpore.md +13 -11
  28. msprobe/docs/10.accuracy_compare_PyTorch.md +3 -1
  29. msprobe/docs/11.accuracy_compare_MindSpore.md +4 -2
  30. msprobe/docs/12.overflow_check_PyTorch.md +3 -2
  31. msprobe/docs/13.overflow_check_MindSpore.md +1 -1
  32. msprobe/docs/14.data_parse_PyTorch.md +35 -32
  33. msprobe/docs/21.visualization_PyTorch.md +9 -8
  34. msprobe/docs/22.visualization_MindSpore.md +1 -0
  35. msprobe/docs/23.generate_operator_PyTorch.md +1 -1
  36. msprobe/docs/24.code_mapping_Mindspore.md +6 -5
  37. msprobe/docs/31.config_check.md +15 -5
  38. msprobe/docs/33.generate_operator_MindSpore.md +2 -2
  39. msprobe/docs/34.RL_collect.md +18 -9
  40. msprobe/docs/35.nan_analyze.md +4 -3
  41. msprobe/docs/FAQ.md +3 -0
  42. msprobe/docs/img/ms_layer.png +0 -0
  43. msprobe/mindspore/api_accuracy_checker/api_runner.py +29 -1
  44. msprobe/mindspore/cell_processor.py +35 -14
  45. msprobe/mindspore/code_mapping/bind.py +23 -4
  46. msprobe/mindspore/code_mapping/graph_parser.py +6 -4
  47. msprobe/mindspore/common/utils.py +3 -0
  48. msprobe/mindspore/compare/common_dir_compare.py +32 -12
  49. msprobe/mindspore/compare/ms_graph_compare.py +7 -2
  50. msprobe/mindspore/compare/utils.py +9 -1
  51. msprobe/mindspore/debugger/debugger_config.py +13 -11
  52. msprobe/mindspore/debugger/precision_debugger.py +67 -45
  53. msprobe/mindspore/dump/dump_tool_factory.py +2 -0
  54. msprobe/mindspore/dump/hook_cell/hook_cell.py +14 -9
  55. msprobe/mindspore/dump/hook_cell/ms_hook_manager.py +12 -7
  56. msprobe/mindspore/dump/hook_cell/primitive_hooks.py +27 -13
  57. msprobe/mindspore/dump/jit_dump.py +6 -3
  58. msprobe/mindspore/dump/kernel_kbyk_dump.py +13 -6
  59. msprobe/mindspore/dym_loader/hook_dynamic_loader.cpp +6 -5
  60. msprobe/mindspore/dym_loader/hook_dynamic_loader.h +2 -2
  61. msprobe/mindspore/grad_probe/grad_analyzer.py +2 -0
  62. msprobe/mindspore/mindspore_service.py +2 -2
  63. msprobe/mindspore/monitor/common_func.py +1 -1
  64. msprobe/mindspore/monitor/module_hook.py +3 -3
  65. msprobe/mindspore/monitor/utils.py +0 -252
  66. msprobe/mindspore/ms_config.py +0 -1
  67. msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +1 -1
  68. msprobe/nan_analyze/graph.py +4 -0
  69. msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +15 -6
  70. msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +1 -1
  71. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +1 -1
  72. msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/utils.py +2 -4
  73. msprobe/pytorch/common/utils.py +0 -16
  74. msprobe/pytorch/compare/pt_compare.py +5 -0
  75. msprobe/pytorch/debugger/debugger_config.py +12 -5
  76. msprobe/pytorch/debugger/precision_debugger.py +8 -1
  77. msprobe/pytorch/dump/module_dump/hook_wrapper.py +1 -3
  78. msprobe/pytorch/dump/module_dump/module_processer.py +44 -13
  79. msprobe/pytorch/free_benchmark/result_handlers/base_handler.py +2 -0
  80. msprobe/pytorch/hook_module/hook_module.py +9 -9
  81. msprobe/pytorch/hook_module/pt_hook_manager.py +7 -7
  82. msprobe/pytorch/monitor/csv2tb.py +3 -10
  83. msprobe/pytorch/monitor/features.py +5 -0
  84. msprobe/pytorch/monitor/module_hook.py +6 -7
  85. msprobe/pytorch/monitor/module_metric.py +0 -3
  86. msprobe/pytorch/monitor/optimizer_collect.py +1 -1
  87. msprobe/pytorch/monitor/utils.py +1 -317
  88. msprobe/pytorch/online_dispatch/dispatch.py +1 -1
  89. msprobe/pytorch/online_dispatch/dump_compare.py +7 -1
  90. msprobe/pytorch/parse_tool/lib/utils.py +2 -4
  91. msprobe/visualization/graph_service.py +1 -1
  92. {mindstudio_probe-8.1.1.dist-info → mindstudio_probe-8.1.2.dist-info}/LICENSE +0 -0
  93. {mindstudio_probe-8.1.1.dist-info → mindstudio_probe-8.1.2.dist-info}/WHEEL +0 -0
  94. {mindstudio_probe-8.1.1.dist-info → mindstudio_probe-8.1.2.dist-info}/entry_points.txt +0 -0
  95. {mindstudio_probe-8.1.1.dist-info → mindstudio_probe-8.1.2.dist-info}/top_level.txt +0 -0
@@ -21,8 +21,9 @@ import numpy as np
21
21
  import pandas as pd
22
22
  from tqdm import tqdm
23
23
 
24
- from msprobe.core.common.file_utils import check_file_or_directory_path, create_directory, save_excel
24
+ from msprobe.core.common.file_utils import check_file_or_directory_path, create_directory, load_npy, save_excel
25
25
  from msprobe.core.common.log import logger
26
+ from msprobe.core.common.utils import check_process_num
26
27
 
27
28
 
28
29
  @dataclass
@@ -57,6 +58,7 @@ class SingleComparator:
57
58
  data_dir2 = os.path.join(dir2, "data")
58
59
  check_file_or_directory_path(data_dir1, isdir=True)
59
60
  check_file_or_directory_path(data_dir2, isdir=True)
61
+ check_process_num(num_processes)
60
62
  # 确保输出目录存在,如果不存在则创建
61
63
  if not os.path.exists(output_path):
62
64
  create_directory(output_path)
@@ -189,8 +191,8 @@ class SingleComparator:
189
191
  common_keys = set(path_dict1.keys()) & set(path_dict2.keys())
190
192
  for key in common_keys:
191
193
  try:
192
- array1 = np.load(path_dict1[key])
193
- array2 = np.load(path_dict2[key])
194
+ array1 = load_npy(path_dict1[key])
195
+ array2 = load_npy(path_dict2[key])
194
196
  result = cls.compare_arrays(array1, array2)
195
197
  step, rank, micro_step, array_id = key
196
198
  data.append([
@@ -16,6 +16,7 @@ pip install mindstudio-probe
16
16
 
17
17
  |版本|发布日期|支持 PyTorch 版本|支持 MindSpore 版本|下载链接|校验码|
18
18
  |:--:|:--:|:--:|:--:|:--:|:--:|
19
+ |8.1.1|2025.6.20|1.11/2.0/2.1/2.2|2.4.0/2.5.0/2.6.0|[mindstudio_probe-8.1.1-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/msprobe/8.1/mindstudio_probe-8.1.1-py3-none-any.whl)|2aad10a243575544d7feef552caf4d06aa93028488ebd0bbc9aa350379da859d|
19
20
  |8.1.0|2025.6.14|1.11/2.0/2.1/2.2|2.4.0/2.5.0/2.6.0|[mindstudio_probe-8.1.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/msprobe/8.1/mindstudio_probe-8.1.0-py3-none-any.whl)|d10c0a57d073bbe7c681042a11e93a0eaaaf5aa45e1cec997142ce2593d77afd|
20
21
  |8.0.0|2025.5.07|1.11/2.0/2.1/2.2|2.4.0/2.5.0/2.6.0|[mindstudio_probe-8.0.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/msprobe/8.0/mindstudio_probe-8.0.0-py3-none-any.whl)|6810eade7ae99e3b24657d5cab251119882decd791aa76a7aeeb94dea767daec|
21
22
  |1.3.0|2025.4.17|1.11/2.0/2.1/2.2|2.4.0/2.5.0/2.6.0|[mindstudio_probe-1.3.0-py3-none-any.whl](https://ptdbg.obs.myhuaweicloud.com/msprobe/1.3/mindstudio_probe-1.3.0-py3-none-any.whl)|85dbc5518b5c23d29c67d7b85d662517d0318352f372891f8d91e73e71b439c3|
@@ -104,7 +104,7 @@ level 配置为"L0"|"mix"或token_range不为None时,必须在该接口或 **P
104
104
  **功能说明**:停止精度数据采集。在 **start** 函数之后的任意位置添加。
105
105
  若 **stop** 函数添加在反向计算代码(如loss.backward)之后,则会采集 **start** 和该函数之间的前反向数据。
106
106
  若 **stop** 函数添加在反向计算代码之前,则需要将 [**step**](#15-step) 函数添加到反向计算代码之后,才能采集 **start** 和该函数之间的前反向数据。
107
- 使用示例可参见 [2.1 快速上手](#21-快速上手) 和 [2.2 采集完整的前反向数据](#22-采集完整的前反向数据)。
107
+ 使用示例可参见 [快速上手](#快速上手) 和 [2.1 采集完整的前反向数据](#21-采集完整的前反向数据)。
108
108
 
109
109
  **注意**:**stop** 函数必须调用,否则可能导致精度数据落盘不全。
110
110
 
@@ -117,7 +117,7 @@ debugger.stop()
117
117
  ### 1.4 forward_backward_dump_end
118
118
 
119
119
  **功能说明**:停止精度数据采集。与 **stop** 函数功能相同,该函数在将来会被移除,建议使用 **stop** 函数。
120
- 使用示例可参见 [2.3 采集指定代码块的前反向数据](#23-采集指定代码块的前反向数据)。
120
+ 使用示例可参见 [2.2 采集指定代码块的前反向数据](#22-采集指定代码块的前反向数据)。
121
121
 
122
122
  **原型**:
123
123
 
@@ -128,7 +128,7 @@ forward_backward_dump_end()
128
128
  ### 1.5 step
129
129
 
130
130
  **功能说明**:结束一个 step 的数据采集,完成所有数据落盘并更新 dump 参数。在一个 step 结束的位置添加,且必须在 **stop** 函数之后的位置调用。
131
- 该函数需要配合 **start** 和 **stop** 函数使用,尽量添加在反向计算代码(如loss.backward)之后,否则可能会导致反向数据丢失。使用示例可参见[2.2 采集完整的前反向数据](#22-采集完整的前反向数据)。
131
+ 该函数需要配合 **start** 和 **stop** 函数使用,尽量添加在反向计算代码(如loss.backward)之后,否则可能会导致反向数据丢失。使用示例可参见[2.1 采集完整的前反向数据](#21-采集完整的前反向数据)。
132
132
 
133
133
  **原型**:
134
134
 
@@ -139,7 +139,7 @@ debugger.step()
139
139
  ### 1.6 module_dump
140
140
 
141
141
  **功能说明**:开启模块级精度数据dump。该接口为函数模块化接口,即只会dump输入的模块数据,不会dump子模块和模块内API的数据。
142
- 需要配合start、stop和step等接口使用。使用示例可参考[2.4 采集函数模块化数据](#24-采集函数模块化数据)
142
+ 需要配合start、stop和step等接口使用。使用示例可参考[2.3 采集函数模块化数据](#23-采集函数模块化数据)
143
143
 
144
144
  **原型**:
145
145
 
@@ -34,16 +34,17 @@ run_ut 预检操作包括以下两种方式:
34
34
  msprobe -f pytorch run_ut -api_info ./dump_path/step{step_number}/rank{rank_number}/dump.json
35
35
  ```
36
36
 
37
- | 参数名称 | 解释 | 是否必选 |
38
- | ---------------------------- | ------------------------------------------------------------ | ---------------------------------- |
39
- | -api_info 或 --api_info_file | 指定 API 信息文件 dump.json | 是 |
40
- | -save_error_data | 保存精度未达标的 API 输入输出数据。 | |
41
- | -o 或 --out_path | 指定 run_ut 执行结果存盘路径,默认“./”。 | 否 |
42
- | -j 或 --jit_compile | 开启 jit 编译。 | 否 |
43
- | -d 或 --device | 指定 Device ID,选择 UT 代码运行所在的卡,默认值为 0。 | 否 |
37
+ | 参数名称 | 解释 | 是否必选 |
38
+ |-------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---------------------------------- |
39
+ | -f 或 --framework | 指定训练框架。pytorch | 是 |
40
+ | -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。 | |
41
+ | -save_error_data | 保存精度未达标的 API 输入输出数据。 | 否 |
42
+ | -o 或 --out_path | 指定 run_ut 执行结果存盘路径,默认“./”。 | 否 |
43
+ | -j 或 --jit_compile | 开启 jit 编译。 | 否 |
44
+ | -d 或 --device | 指定 Device ID,选择 UT 代码运行所在的卡,默认值为 0。 | 否 |
44
45
  | -csv_path 或 --result_csv_path | 指定本次运行中断时生成的 `accuracy_checking_result_{timestamp}.csv` 文件路径,执行 run_ut 中断时,若想从中断处继续执行,配置此参数即可。需要指定为上次中断的 `accuracy_checking_result_{timestamp}.csv` 文件。详见 [3.3 断点续检](#33-断点续检)。 | run_ut 操作中断后继续执行场景下必须配置 |
45
- | -f 或 --filter_api | 过滤模型中除最大值和最小值以外其他参数和结构相同的 API。适用于模型较大且重复 API 较多的场景。 | 否 |
46
- | -config 或 --config_path | 指定离线预检操作过程中额外配置(包括黑名单、白名单等)的 [config.json](../config.json) 文件,默认未配置。config.json 文件的配置可参考[配置文件介绍](./02.config_introduction.md)。 | 否 |
46
+ | -f 或 --filter_api | 过滤模型中除最大值和最小值以外其他参数和结构相同的 API。适用于模型较大且重复 API 较多的场景。 | 否 |
47
+ | -config 或 --config_path | 指定离线预检操作过程中额外配置(包括黑名单、白名单等)的 [config.json](../config.json) 文件,默认未配置。config.json 文件的配置可参考[配置文件介绍](./02.config_introduction.md)。 | 否 |
47
48
 
48
49
  run_ut 执行结果包括 `accuracy_checking_result_{timestamp}.csv` 和 `accuracy_checking_details_{timestamp}.csv` 两个文件。`accuracy_checking_result_{timestamp}.csv` 属于 API 级,标明每个 API 是否通过测试。建议用户先查看 `accuracy_checking_result_{timestamp}.csv` 文件,对于其中没有通过测试的或者特定感兴趣的 API,根据其 API name 字段在 `accuracy_checking_details_{timestamp}.csv` 中查询其各个输出的达标情况以及比较指标。详细介绍请参见[ 4 预检结果](#4-预检结果)。
49
50
 
@@ -103,6 +104,7 @@ msprobe -f pytorch multi_run_ut -api_info ./dump_path/step{step_number}/rank{ran
103
104
 
104
105
  | 参数名称 | 解释 | 是否必选 |
105
106
  | ---------------------------- | ------------------------------------------------------------ | ---------------------------------- |
107
+ | -f 或 --framework | 指定训练框架。pytorch。 | 是 |
106
108
  | -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。 | 是 |
107
109
  | -save_error_data | 保存精度未达标的 API 输入输出数据。 | 否 |
108
110
  | -o 或 --out_path | 指定 run_ut 执行结果存盘路径,默认“./”。 | 否 |
@@ -212,8 +214,9 @@ Forward Test Success 和 Backward Test Success 是否通过测试是由 `accurac
212
214
  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/
213
215
  ```
214
216
 
215
- | 参数名称 | 说明 | 是否必选 |
216
- | -------------------- | ------------- | -------- |
217
+ | 参数名称 | 说明 | 是否必选 |
218
+ |-----------------------| ------------- | -------- |
219
+ | -f 或 --framework | 指定训练框架。pytorch。 | 是 |
217
220
  | -npu 或 --npu_csv_path | NPU 预检结果 `accuracy_checking_details_{timestamp}.csv` 文件路径。默认从当前目录下识别该文件。 | 是 |
218
221
  | -gpu 或 --gpu_csv_path | GPU 预检结果 `accuracy_checking_details_{timestamp}.csv` 文件路径。默认从当前目录下识别该文件。 | 是 |
219
222
  | -o 或 --out_path | 指定 api_precision_compare.py 执行结果存盘路径,默认为当前目录。 | 否 |
@@ -6,7 +6,7 @@
6
6
 
7
7
  a. 支持 Mindspore 版本:2.4/2.5;
8
8
 
9
- b. (可选)当使用Msadapter时,由于需要环境中同时存在 Torch 与 Msadapter,所以只支持在**安装原生Torch**的场景下通过export PYTHONPATH="xx/msadapter/build/lib"等通过**环境变量使能Msadapter的方式**的环境中进行预检,预检工具能够自动索引得到所需的 Torch 与 Msadapter环境,环境安装详细参考:[msadapter官网](https://gitee.com/mindspore/msadapter)
9
+ b. (可选)当使用Msadapter时,由于需要环境中同时存在 Torch 与 Msadapter,所以只支持在**安装原生Torch**的场景下通过export PYTHONPATH="xx/msadapter/build/lib"等通过**环境变量使能Msadapter的方式**的环境中进行预检,预检工具能够自动索引得到所需的 Torch 与 Msadapter环境,环境安装详细参考:[msadapter官网](https://gitee.com/mindspore/msadapter)(该网站需要申请权限方可访问)。
10
10
 
11
11
  c. 在预检时可以由工具构造随机数据或者获取真实dump数据进行预检操作。随机生成模式执行效率高,可以快速获得结果,但结果准确度低,只能大致判断精度问题;真实数据模式执行效率略低于随机生成模式,并且需要较大磁盘空间存放待预检数据,但是结果准确度高,可以准确判断精度问题。
12
12
 
@@ -29,12 +29,13 @@ c. 在预检时可以由工具构造随机数据或者获取真实dump数据进
29
29
  msprobe -f mindspore run_ut -api_info ./dump.json -o ./checker_result
30
30
  ```
31
31
 
32
- | 参数名称 | 说明 |参数类型 | 是否必选 |
33
- | ---------------------------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------- | ---------------------------------- |
34
- | -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。对其中的mint api以及部分Tensor api进行预检,预检支持的Tensor api列表详见 [ 预检支持列表](../mindspore/api_accuracy_checker/checker_support_api.yaml) | str | 是 |
35
- | -o 或 --out_path | 指定预检结果存盘路径,默认“./”。 | str | |
36
- | -csv_path 或 --result_csv_path | 指定本次运行中断时生成的 `accuracy_checking_result_{timestamp}.csv` 文件路径,执行 run_ut 中断时,若想从中断处继续执行,配置此参数即可。需要指定为上次中断的 `accuracy_checking_result_{timestamp}.csv` 文件。详见 [3.3 断点续检](#33-断点续检)。 | str | 否 |
37
- | -save_error_data | 保存(随机数据模式)精度未达标的 API 输入输出数据。 | | 否 |
32
+ | 参数名称 | 说明 | 参数类型 | 是否必选 |
33
+ | ---------------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------| ---------------------------------- |
34
+ | -f 或 --framework | 指定训练框架。mindspore。 | str | 是 |
35
+ | -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。对其中的mint api以及部分Tensor api进行预检,预检支持的Tensor api列表详见 [ 预检支持列表](../mindspore/api_accuracy_checker/checker_support_api.yaml)。 | str | |
36
+ | -o 或 --out_path | 指定预检结果存盘路径,默认“./”。 | str | 否 |
37
+ | -csv_path 或 --result_csv_path | 指定本次运行中断时生成的 `accuracy_checking_result_{timestamp}.csv` 文件路径,执行 run_ut 中断时,若想从中断处继续执行,配置此参数即可。需要指定为上次中断的 `accuracy_checking_result_{timestamp}.csv` 文件。详见 [3.3 断点续检](#33-断点续检) | str | 否 |
38
+ | -save_error_data | 保存(随机数据模式)精度未达标的 API 输入输出数据。 | 空 | 否 |
38
39
 
39
40
  预检执行结果包括 `accuracy_checking_result_{timestamp}.csv` 和 `accuracy_checking_details_{timestamp}.csv` 两个文件。`accuracy_checking_result_{timestamp}.csv` 属于 API 级,标明每个 API 是否通过测试。建议用户先查看 `accuracy_checking_result_{timestamp}.csv` 文件,对于其中没有通过测试的或者特定感兴趣的 API,根据其 API Name 字段在 `accuracy_checking_details_{timestamp}.csv` 中查询其各个输出的达标情况以及比较指标。详细介绍请参见 [4 预检结果](#4-预检结果)。
40
41
 
@@ -54,13 +55,14 @@ multi_run_ut 脚本,可以并行在多个Device执行 run_ut 操作,从而
54
55
  msprobe -f mindspore multi_run_ut -api_info ./dump.json -d 0 1 2 3
55
56
  ```
56
57
 
57
- | 参数名称 | 说明 | 参数类型 | 是否必选 |
58
- | ---------------------------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------| ---------------------------------- |
58
+ | 参数名称 | 说明 | 参数类型 | 是否必选 |
59
+ |-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------| ---------------------------------- |
60
+ | -f 或 --framework | 指定训练框架。mindspore。 | str | 是 |
59
61
  | -api_info 或 --api_info_file | 指定 API 信息文件 dump.json。对其中的mint api以及部分Tensor api进行预检,预检支持的Tensor api列表详见 [ 预检支持列表](../mindspore/api_accuracy_checker/checker_support_api.yaml)。 | str | 是 |
60
- | -o 或 --out_path | 指定预检结果存盘路径,默认“./”。 | str | 否 |
62
+ | -o 或 --out_path | 指定预检结果存盘路径,默认“./”。 | str | 否 |
61
63
  | -csv_path 或 --result_csv_path | 指定本次运行中断时生成的 `accuracy_checking_result_{timestamp}.csv` 文件路径,执行 run_ut 中断时,若想从中断处继续执行,配置此参数即可。需要指定为上次中断的 `accuracy_checking_result_{timestamp}.csv` 文件。详见 [3.3 断点续检](#33-断点续检)。 | str | 否 |
62
64
  | -d 或 --device | 指定 Device ID,选择 UT 代码运行所在的卡,默认值为 0,支持同时指定 0 ~ Device数量 - 1 ,例如 0 1 2 3 4。 | List[int] | 否 |
63
- | -save_error_data | 保存(随机数据模式)精度未达标的 API 输入输出数据。 | 空 | 否 |
65
+ | -save_error_data | 保存(随机数据模式)精度未达标的 API 输入输出数据。 | 空 | 否 |
64
66
 
65
67
  在不同卡数下,使用38B语言大模型的预检耗时基线参考 [multi_run_ut耗时基线](accuracy_checker_MindSpore/accuracy_checker_MindSpore_baseline.md)
66
68
 
@@ -53,6 +53,7 @@ msprobe -f pytorch compare -i ./compare.json -o ./output -s
53
53
 
54
54
  | 参数名 | 说明 | 是否必选 |
55
55
  |-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -------- |
56
+ | -f 或 --framework | 指定训练框架。pytorch。 | 是 |
56
57
  | -i 或 --input_path | 指定[比对文件](#51-比对文件),str 类型。 | 是 |
57
58
  | -o 或 --output_path | 配置比对结果文件存盘目录,str 类型,默认在当前目录创建output目录。文件名称基于时间戳自动生成,格式为:`compare_result_{timestamp}.xlsx`。<br>提示:output目录下与结果件同名文件将被删除覆盖。 | 否 |
58
59
  | -s 或 --stack_mode | 比对结果展示调用栈信息(NPU_Stack_Info)的开关,bool 类型。单卡场景开启时,根据[比对文件](#51-比对文件)的参数说明配置stack_path;多卡场景开启时,自动识别npu_dump目录下stack.json文件,如存在生成详细调用栈信息,否则不生成,此参数不生效。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 |
@@ -314,7 +315,8 @@ msprobe -f pytorch merge_result -i ./input_dir -o ./output_dir -config ./config.
314
315
  **完整参数说明**
315
316
 
316
317
  | 参数名 | 说明 | 是否必选 |
317
- | ---------------------- |-------------------------------------------------------------------------------------------------------------------| -------- |
318
+ | --------------------- |-------------------------------------------------------------------------------------------------------------------| -------- |
319
+ | -f 或 --framework | 指定训练框架。pytorch。 | 是 |
318
320
  | -i 或 --input_dir | 多卡比对结果存盘目录,即使用compare比对的结果输出目录,str类型。所有比对结果应全部为真实数据比对结果或统计数据比对结果,否则可能导致汇总数据不完整。 | 是 |
319
321
  | -o 或 --output_dir | 数据提取汇总结果存盘目录,str类型。文件名称基于时间戳自动生成,格式为:`multi_ranks_compare_merge_{timestamp}.xlsx`。<br>提示:output目录下与结果件同名文件将被删除覆盖。 | 是 |
320
322
  | -config或--config-path | 指定需要汇总数据的API和比对指标的yaml文件路径,str类型。<br>yaml文件详细介绍见下文“**yaml文件说明**”。 | 是 |
@@ -37,6 +37,7 @@ msprobe -f mindspore compare -i ./compare.json -o ./output -s
37
37
 
38
38
  | 参数名 | 说明 | 是否必选 |
39
39
  | -------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -------- |
40
+ | -f 或 --framework | 指定训练框架。mindspore。 | 是 |
40
41
  | -i或--input_path | 指定比对文件。比对文件内容及示例请参见[比对文件](#41-比对文件)或[比对文件(kernel)](#42-比对文件kernel)(比对文件(kernel)仅[不同版本下的全量kernel比对](#23-不同版本下的全量kernel比对)场景支持)。 | 是 |
41
42
  | -o或--output_path | 配置比对结果文件存盘目录,默认会在当前目录创建output目录。文件名称基于时间戳自动生成,格式为:<br> `compare_result_{timestamp}.xlsx`<br/> `compare_result_{rank_id}_{step_id}_{timestamp}.xlsx`(仅[不同版本下的全量kernel比对](#23-不同版本下的全量kernel比对)场景支持)。<br>提示:output目录下与结果件同名文件将被删除覆盖。 | 否 |
42
43
  | -s或--stack_mode | 比对结果展示调用栈信息(NPU_Stack_Info)的开关,bool 类型。单卡场景开启时,需要使用[比对文件](#41-比对文件)的单卡场景配置stack_path指定stack.json文件,才能生成详细调用栈信息,否则在比对时会报错;暂不支持多卡场景。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 |
@@ -222,8 +223,9 @@ msprobe -f mindspore merge_result -i ./input_dir -o ./output_dir -config ./confi
222
223
 
223
224
  **完整参数说明**
224
225
 
225
- | 参数名 | 说明 | 是否必选 |
226
- | ---------------------- |-------------------------------------------------------------------------------------------------------------------| -------- |
226
+ | 参数名 | 说明 | 是否必选 |
227
+ |-----------------------|-------------------------------------------------------------------------------------------------------------------| -------- |
228
+ | -f 或 --framework | 指定训练框架。mindspore。 | 是 |
227
229
  | -i 或 --input_dir | 多卡比对结果存盘目录,即使用compare比对的结果输出目录,str类型。所有比对结果应全部为真实数据比对结果或统计数据比对结果,否则可能导致汇总数据不完整。 | 是 |
228
230
  | -o 或 --output_dir | 数据提取汇总结果存盘目录,str类型。文件名称基于时间戳自动生成,格式为:`multi_ranks_compare_merge_{timestamp}.xlsx`。<br>提示:output目录下与结果件同名文件将被删除覆盖。 | 是 |
229
231
  | -config或--config-path | 指定需要汇总数据的API和比对指标的yaml文件路径,str类型。<br>yaml文件详细介绍见下文“**yaml文件说明**”。 | 是 |
@@ -58,8 +58,9 @@ export INF_NAN_MODE_ENABLE=1
58
58
  msprobe -f pytorch run_overflow_check -api_info ./dump_path/step{step_number}/rank{rank_number}/dump.json
59
59
  ```
60
60
 
61
- | 参数名称 | 说明 | 是否必选 |
62
- | -------------------------- |------------------------------------| -------- |
61
+ | 参数名称 | 说明 | 是否必选 |
62
+ |---------------------------|------------------------------------| -------- |
63
+ | -f 或 --framework | 指定训练框架。pytorch。 | 是 |
63
64
  | -api_info或--api_info_file | 指定采集下来的 API 信息文件 dump.json。 | 是 |
64
65
  | -j或--jit_compile | 开启 jit 编译。 | 否 |
65
66
  | -d或--device | 指定 Device ID,选择 UT 代码运行所在的卡,默认值为0。 | 否 |
@@ -13,7 +13,7 @@ export MS_ASCEND_CHECK_OVERFLOW_MODE="INFNAN_MODE"
13
13
 
14
14
  **a**:在处理浮点数计算溢出问题时,NPU 当前支持两种溢出模式:INF/NAN 模式与饱和模式。INF/NAN 模式遵循 IEEE 754 标准,根据定义输出 INF/NAN 的计算结果。与之对应的饱和模式在计算出现溢出时,饱和为浮点数极值(+-MAX)。对于 CANN 侧配置,Atlas 训练系列产品,默认为饱和模式,且不支持使用 INF/NAN 模式;Atlas A2训练系列产品,默认为 INF/NAN 模式,且不建议使用饱和模式。对于 MindSpore 框架侧配置,仅支持对 Atlas A2 训练系列产品进行设置,默认为 INF/NAN 模式。CANN 侧 与 MindSpore 框架侧配置须一致。
15
15
 
16
- 溢出检测任务的配置示例见[MindSpore 静态图场景下 task 配置为 overflow_check](https://gitee.com/ascend/mstt/blob/master/debug/accuracy_tools/msprobe/docs/03.config_examples.md#23-task-%E9%85%8D%E7%BD%AE%E4%B8%BA-overflow_check)、[MindSpore 动态图场景下 task 配置为 overflow_check](https://gitee.com/ascend/mstt/blob/master/debug/accuracy_tools/msprobe/docs/03.config_examples.md#33-task-%E9%85%8D%E7%BD%AE%E4%B8%BA-overflow_check)。
16
+ 溢出检测任务的配置示例见[MindSpore 静态图场景下 task 配置为 overflow_check](03.config_examples.md#23-task-配置为-overflow_check)、[MindSpore 动态图场景下 task 配置为 overflow_check](03.config_examples.md#33-task-配置为-overflow_check)。
17
17
 
18
18
 
19
19
  ## 1 接口介绍
@@ -18,6 +18,9 @@
18
18
  msprobe -f pytorch parse
19
19
  Parse >>>
20
20
  ```
21
+ | 参数名称 | 说明 | 是否必选 |
22
+ |---------------------------|------------------------------------| -------- |
23
+ | -f 或 --framework | 指定训练框架。pytorch。 | 是 |
21
24
 
22
25
  可在 parse 的界面中执行 Shell 命令,以及如下场景的相关解析命令(详细介绍请参见以下章节。):
23
26
 
@@ -38,11 +41,11 @@ Ctrl+C 可以退出 parse 交互式界面。
38
41
  cad -m my_dump_path [-out output_path] [-asc msaccucmp_path]
39
42
  ```
40
43
 
41
- | 参数名称 | 说明 | 是否必选 |
42
- | -------- | ------------------------------------------------------------ | -------- |
43
- | -m | 待转换 kernel dump 数据目录。需要指定到 kernel dump 数据的 deviceid 级目录。 | 是 |
44
- | -out | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_convert。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 |
45
- | -asc | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py。 | 否 |
44
+ | 参数名称 | 说明 | 是否必选 |
45
+ |-------------------------| ------------------------------------------------------------ | -------- |
46
+ | -m 或 --my_dump_path | 待转换 kernel dump 数据目录。需要指定到 kernel dump 数据的 deviceid 级目录。 | 是 |
47
+ | -out 或 --output_path | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_convert。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 |
48
+ | -asc 或 --msaccucmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py。 | 否 |
46
49
 
47
50
  **示例代码**:
48
51
 
@@ -99,12 +102,12 @@ Parse >>> cad -m /home/xxx/my_dump_path/20000124003856/0
99
102
  vc -m my_dump_path -g golden_dump_path [-out output_path] [-cmp_path msaccucmp_path]
100
103
  ```
101
104
 
102
- | 参数名称 | 说明 | 是否必选 |
103
- | --------- | ------------------------------------------------------------ | -------- |
104
- | -m | 待比对 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 |
105
- | -g | 标杆 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 |
106
- | -out | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_compare。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 |
107
- | -cmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 |
105
+ | 参数名称 | 说明 | 是否必选 |
106
+ |------------------------------| ------------------------------------------------------------ | -------- |
107
+ | -m 或 --my_dump_path | 待比对 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 |
108
+ | -g 或 --golden_dump_path | 标杆 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 |
109
+ | -out 或 --output_path | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_compare。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 |
110
+ | -cmp_path 或 --msaccucmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 |
108
111
 
109
112
  输出结果:`batch_compare_{timestamp}.csv` 文件。
110
113
 
@@ -124,12 +127,12 @@ Parse >>> vc -m ./my_dump_path -g ./golden_data_path
124
127
  dc -n file_name/file_path [-f format] [-out output_path]
125
128
  ```
126
129
 
127
- | 参数名称 | 说明 | 是否必选 |
128
- | --------- | ------------------------------------------------------------ | -------- |
129
- | -n | 需转换的 dump 数据文件或 dump 数据文件目录。 | 是 |
130
- | -f | 开启 format 转换,指定该参数时需要配置 format 格式。当前内置的 Format 转换支持如下类型:<br/> FRACTAL_NZ 转换 NCHW; <br/>FRACTAL_NZ 转换成 NHWC; <br/>FRACTAL_NZ 转换 ND; <br/>HWCN 转换 FRACTAL_Z; <br/>HWCN 转换成 NCHW; <br/>HWCN 转换成 NHWC; <br/>NC1HWC0 转换成 HWCN; <br/>NC1HWC0 转换成 NCHW; <br/>NC1HWC0 转换成 NHWC; <br/>NCHW 转换成 FRACTAL_Z; <br/>NCHW转换成NHWC; <br/>NHWC转换成FRACTAL_Z;<br/> NHWC转换成HWCN; <br/>NHWC转换成NCHW;<br/>NDC1HWC0转换成NCDHW。 | 否 |
131
- | -out | 结果输出目录。 | 否 |
132
- | -cmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 |
130
+ | 参数名称 | 说明 | 是否必选 |
131
+ |-------------------------| ------------------------------------------------------------ | -------- |
132
+ | -n 或 --name | 需转换的 dump 数据文件或 dump 数据文件目录。 | 是 |
133
+ | -f 或 --format | 开启 format 转换,指定该参数时需要配置 format 格式。当前内置的 Format 转换支持如下类型:<br/> FRACTAL_NZ 转换 NCHW; <br/>FRACTAL_NZ 转换成 NHWC; <br/>FRACTAL_NZ 转换 ND; <br/>HWCN 转换 FRACTAL_Z; <br/>HWCN 转换成 NCHW; <br/>HWCN 转换成 NHWC; <br/>NC1HWC0 转换成 HWCN; <br/>NC1HWC0 转换成 NCHW; <br/>NC1HWC0 转换成 NHWC; <br/>NCHW 转换成 FRACTAL_Z; <br/>NCHW转换成NHWC; <br/>NHWC转换成FRACTAL_Z;<br/> NHWC转换成HWCN; <br/>NHWC转换成NCHW;<br/>NDC1HWC0转换成NCDHW。 | 否 |
134
+ | -out 或 --output_path | 结果输出目录。 | 否 |
135
+ | -cmp_path 或 --msaccucmp | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 |
133
136
 
134
137
  - 输出结果:npy 文件。
135
138
 
@@ -143,9 +146,9 @@ dc -n file_name/file_path [-f format] [-out output_path]
143
146
  pt -n file_path
144
147
  ```
145
148
 
146
- | 参数名称 | 说明 | 是否必选 |
147
- | -------- | ------------- | -------- |
148
- | -n | npy 文件路径。 | 是 |
149
+ | 参数名称 | 说明 | 是否必选 |
150
+ |-------------| ------------- | -------- |
151
+ | -n 或 --name | npy 文件路径。 | 是 |
149
152
 
150
153
  打印统计信息:shape, dtype, max, min 和 mean。默认在 npy 文件路径下将该数据保存为 txt 文件。
151
154
 
@@ -191,10 +194,10 @@ TextFile:./parse_data/dump_convert/Add.fp32_vars_add_1fp32_vars_Relu_6.24.5.1636
191
194
  pk -f pkl_path -n api_name
192
195
  ```
193
196
 
194
- | 参数名称 | 说明 | 是否必选 |
195
- | -------- | ----------------------- | -------- |
196
- | -f | 指定 dump.json 文件路径。 | 是 |
197
- | -n | 指定 API 名称。 | 是 |
197
+ | 参数名称 | 说明 | 是否必选 |
198
+ |-------------| ----------------------- | -------- |
199
+ | -f 或 --file | 指定 dump.json 文件路径。 | 是 |
200
+ | -n 或 --name | 指定 API 名称。 | 是 |
198
201
 
199
202
  - 输出结果:打印统计信息(shape, dtype, max和min mean)。
200
203
  - 若 pkl 文件中存在相应的堆栈信息,则会打印堆栈信息。
@@ -225,14 +228,14 @@ cn -m my_data*.npy -g golden*.npy [-p num] [-al atol] [-rl rtol]
225
228
  - 统计级比对:对 tensor 整体进行余弦值及相对误差的计算。
226
229
  - 像素级比对:对输入的两个 npy 文件进行逐元素比对。若两个 tensor 对应元素的相对误差或绝对误差大于**误差阈值**(-al 和 -rl 配置)则被标记为错误数据。
227
230
 
228
- | 参数名称 | 说明 | 是否必选 |
229
- | -------- | ----------------------------------------------- | -------- |
230
- | -m | 待比对数据。 | 是 |
231
- | -g | 标杆数据。 | 是 |
232
- | -p | 设置比对结束后打印错误元素的个数,默认值 20。 | 否 |
233
- | -al | 判定数据存在精度问题的绝对误差阈值,默认 0.001。 | 否 |
234
- | -rl | 判定数据存在精度问题的相对误差阈值,默认 0.001。 | 否 |
235
- | -s | 将 npy 文件保存成 txt 文件,用于查看,默认开启。 | 否 |
231
+ | 参数名称 | 说明 | 是否必选 |
232
+ |-------------------------| ----------------------------------------------- | -------- |
233
+ | -m 或 --my_dump_path | 待比对数据。 | 是 |
234
+ | -g 或 --golden_dump_path | 标杆数据。 | 是 |
235
+ | -p 或 --print | 设置比对结束后打印错误元素的个数,默认值 20。 | 否 |
236
+ | -al 或 --atol | 判定数据存在精度问题的绝对误差阈值,默认 0.001。 | 否 |
237
+ | -rl 或 --rtol | 判定数据存在精度问题的相对误差阈值,默认 0.001。 | 否 |
238
+ | -s 或 --save | 将 npy 文件保存成 txt 文件,用于查看,默认开启。 | 否 |
236
239
 
237
240
  输出结果:
238
241
 
@@ -57,14 +57,15 @@ msprobe -f pytorch graph -i ./compare.json -o ./output
57
57
  ```
58
58
  **命令行参数说明**:
59
59
 
60
- | 参数名 | 说明 | 是否必选 |
61
- |------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------|
62
- | -i 或 --input_path | 指定比对文件,参考[比对文件说明](#313-比对文件说明) | 是 |
63
- | -o 或 --output_path | 配置比对结果文件存盘目录,str 类型。文件名称基于时间戳自动生成,格式为:`compare_{timestamp}.vis或build_{timestamp}.vis`。 | 是 |
64
- | -lm 或 --layer_mapping | 跨套件比对,例如同一个模型分别使用了DeepSpeed和Megatron套件的比对场景。配置该参数时表示开启跨套件Layer层的比对功能,指定模型代码中的Layer层后,可以识别对应dump数据中的模块或API。需要指定自定义映射文件*.yaml。自定义映射文件的格式请参见[自定义映射文件(Layer)](#71-自定义映射文件layer),如何配置自定义映射文件请参考[模型分级可视化如何配置layer mapping映射文件](./visualization/layer_mapping_example.md)。 配置该参数后,将仅按节点名称进行比对,忽略节点的 type 和 shape。如果调试侧和标杆侧有名称不同的节点,则需要配置自定义映射文件,-lm参数传入自定义映射文件路径;如果调试侧和标杆侧节点名称相同,则仅指定-lm即可。| 否 |
65
- | -oc 或 --overflow_check | 是否开启溢出检测模式,开启后会在输出vis文件中(`compare_{timestamp}.vis或build_{timestamp}.vis`)对每个溢出节点进行标记溢出等级,溢出等级说明参考[溢出等级说明](#312-溢出等级说明) | 否 |
66
- | -f 或 --fuzzy_match | 是否开启模糊匹配,bool类型。模糊匹配说明参考[匹配说明](#311-匹配说明) | 否 |
67
- | -cs 或 --complete_stack | 是否使用完整的堆栈信息,bool类型。默认使用精简的堆栈信息,数据量小有助于增加流畅度。完整堆栈和精简堆栈信息参考[堆栈信息说明](#72-堆栈信息说明) | 否 |
60
+ | 参数名 | 说明 | 是否必选 |
61
+ |------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------|
62
+ | -f 或 --framework | 指定训练框架。pytorch。 | 是 |
63
+ | -i 或 --input_path | 指定比对文件,参考[比对文件说明](#313-比对文件说明) | 是 |
64
+ | -o 或 --output_path | 配置比对结果文件存盘目录,str 类型。文件名称基于时间戳自动生成,格式为:`compare_{timestamp}.vis或build_{timestamp}.vis`。 | |
65
+ | -lm 或 --layer_mapping | 跨套件比对,例如同一个模型分别使用了DeepSpeed和Megatron套件的比对场景。配置该参数时表示开启跨套件Layer层的比对功能,指定模型代码中的Layer层后,可以识别对应dump数据中的模块或API。需要指定自定义映射文件*.yaml。自定义映射文件的格式请参见[自定义映射文件(Layer)](#71-自定义映射文件layer),如何配置自定义映射文件请参考[模型分级可视化如何配置layer mapping映射文件](./visualization/layer_mapping_example.md)。 配置该参数后,将仅按节点名称进行比对,忽略节点的 type 和 shape。如果调试侧和标杆侧有名称不同的节点,则需要配置自定义映射文件,-lm参数传入自定义映射文件路径;如果调试侧和标杆侧节点名称相同,则仅指定-lm即可。 | 否 |
66
+ | -oc 或 --overflow_check | 是否开启溢出检测模式,开启后会在输出vis文件中(`compare_{timestamp}.vis或build_{timestamp}.vis`)对每个溢出节点进行标记溢出等级,溢出等级说明参考[溢出等级说明](#312-溢出等级说明) | 否 |
67
+ | -f 或 --fuzzy_match | 是否开启模糊匹配,bool类型。模糊匹配说明参考[匹配说明](#311-匹配说明) | 否 |
68
+ | -cs 或 --complete_stack | 是否使用完整的堆栈信息,bool类型。默认使用精简的堆栈信息,数据量小有助于增加流畅度。完整堆栈和精简堆栈信息参考[堆栈信息说明](#72-堆栈信息说明) | 否 |
68
69
 
69
70
  #### 3.1.1 匹配说明
70
71
 
@@ -59,6 +59,7 @@ msprobe -f mindspore graph -i ./compare.json -o ./output
59
59
 
60
60
  | 参数名 | 说明 | 是否必选 |
61
61
  |-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -------- |
62
+ | -f 或 --framework | 指定训练框架。mindspore。 | 是 |
62
63
  | -i 或 --input_path | 指定比对文件,参考[比对文件说明](#313-比对文件说明) | 是 |
63
64
  | -o 或 --output_path | 配置比对结果文件存盘目录,str 类型。文件名称基于时间戳自动生成,格式为:`compare_{timestamp}.vis或build_{timestamp}.vis`。 | 是 |
64
65
  | -lm 或 --layer_mapping| 跨框架比对,MindSpore和PyTorch的比对场景。配置该参数时表示开启跨框架Layer层的比对功能,指定模型代码中的Layer层后,可以识别对应dump数据中的模块或API。需要指定自定义映射文件*.yaml。自定义映射文件的格式请参见[自定义映射文件(Layer)](#71-自定义映射文件layer), 如何配置自定义映射文件请参考[模型分级可视化如何配置layer mapping映射文件](./visualization/layer_mapping_example.md)。配置该参数后,将仅按节点名称进行比对,忽略节点的 type 和 shape。如果调试侧和标杆侧有名称不同的节点,则需要配置自定义映射文件,-lm参数传入自定义映射文件路径;如果调试侧和标杆侧节点名称相同,则仅指定-lm即可。 | 否 |
@@ -15,7 +15,7 @@ b. 在生成单API脚本时可以选择由工具构造随机数获得 dump 数
15
15
  2. 已完成对训练过程的dump,获得dump.json文件。
16
16
  [PyTorch场景的数据采集](https://gitee.com/ascend/mstt/blob/master/debug/accuracy_tools/msprobe/docs/05.data_dump_PyTorch.md)
17
17
 
18
- **目前仅支持复现API级的数据,故dump时level可选择L0(API信息)或者mix(module信息+API信息)。如需复现真实数据场景的API脚本,dump时task应选择tensor,如需复现随机数据场景的API脚本,dump时task选择statistics**。
18
+ **目前仅支持复现API级的数据,故dump时level可选择L1(API信息)或者mix(module信息+API信息)。如需复现真实数据场景的API脚本,dump时task应选择tensor,如需复现随机数据场景的API脚本,dump时task选择statistics**。
19
19
  3. 发现某个算子疑似存在精度问题,并得知算子名,如Functional.softmax.3、Tensor.add.0、Torch.matmul.5等
20
20
 
21
21
  ### 2.1 配置config_op.json
@@ -20,9 +20,10 @@ msprobe -f mindspore code_mapping --ir <ir_file> --dump_data <dump_data> [--outp
20
20
  ```
21
21
 
22
22
 
23
- | 参数名称 | 说明 |参数类型 | 是否必选 |
24
- | ---------------------------- |-------------------------------------------------------------------------------------------------------------------------------------------|---------------------- | ---------------------------------- |
25
- | --ir | 指定 MindSpore 静态图运行时生成的IR图文件。 | str | 是 |
26
- | --dump_data | 指定dump数据文件(支持tensor或statistic模式的dump数据)。可指定单个dump数据 文件或dump数据文件的父目录,指定父目录表示关联目录下的所有dump数据文件。 | str | 是 |
27
- | --output | 关联结果输出目录,默认为"./",只在tensor模式时生效,会把数据文件路径和代码调用栈的关联关系存到output路径下的code_mapping_{时间戳}.csv中。如果关联的是statistic模式,则会把statistic.csv中每个条目加上该条目对应的代码栈。 | str | |
23
+ | 参数名称 | 说明 | 参数类型 | 是否必选 |
24
+ | ---------------------------- |-------------------------------------------------------------------------------------------------------------------------------------------|------| ---------------------------------- |
25
+ | -f 或 --framework | 指定训练框架。mindspore。 | str | 是 |
26
+ | --ir | 指定 MindSpore 静态图运行时生成的IR图文件。 | str | 是 |
27
+ | --dump_data | 指定dump数据文件(支持tensorstatistic模式的dump数据)。可指定单个dump数据 文件或dump数据文件的父目录,指定父目录表示关联目录下的所有dump数据文件。 | str | |
28
+ | --output | 关联结果输出目录,默认为"./",只在tensor模式时生效,会把数据文件路径和代码调用栈的关联关系存到output路径下的code_mapping_{时间戳}.csv中。如果关联的是statistic模式,则会把statistic.csv中每个条目加上该条目对应的代码栈。 | str | 否 |
28
29
 
@@ -31,11 +31,11 @@
31
31
  ```shell
32
32
  msprobe -f pytorch/mindspore config_check -d **.sh **.yaml -o output_path
33
33
  ```
34
- -f 代表训练框架,传入pytorch或mindspore,必选。
34
+ -f或--framework 代表训练框架,传入pytorch或mindspore,必选。
35
35
 
36
- -d 代表数据采集模式,可传入启动训练的 shell 脚本路径或 yaml 配置文件路径,可选,不传入代表不采集。
36
+ -d或--dump 代表数据采集模式,可传入启动训练的 shell 脚本路径或 yaml 配置文件路径,可选,不传入代表不采集。
37
37
 
38
- -o 代表输出路径,可选,默认为 config_check_pack.zip。
38
+ -o或--output 代表输出路径,可选,默认为 config_check_pack.zip。
39
39
 
40
40
  #### 动态数据采集
41
41
 
@@ -48,6 +48,8 @@ ConfigChecker.apply_patches(fmk)
48
48
 
49
49
  说明:
50
50
 
51
+ apply_patches:启动数据采集所需的各项patch,参数如下:
52
+
51
53
  - fmk:训练框架。可选 pytorch 和 mindspore ,不传默认为 pytorch。
52
54
 
53
55
  在模型初始化好之后插入如下代码:
@@ -58,6 +60,8 @@ ConfigChecker(model, shell_path, output_zip_path, fmk)
58
60
 
59
61
  说明:
60
62
 
63
+ ConfigChecker:对模型挂上数据采集所需的hook,会在每次模型前向将要被执行的一刻进行数据采集。参数如下:
64
+
61
65
  - model:初始化好的模型。不传或缺省就不会采集权重和数据集。
62
66
  - shell_path:动态采集模式下支持 **megatron** 训练超参自动捕获,使用 **megatron** 时推荐不传入,其他情况下可传入训练脚本路径,类型为列表,传入一个或多个训练配置/启动脚本。不传或缺省就不会采集超参。
63
67
  - output_zip_path:输出zip包的路径,不传默认为"./config_check_pack.zip"。
@@ -75,9 +79,9 @@ ConfigChecker(model, shell_path, output_zip_path, fmk)
75
79
  msprobe -f pytorch config_check -c bench_zip_path cmp_zip_path -o output_path
76
80
  ```
77
81
 
78
- 其中**bench_zip_path** 为标杆侧采集到的数据, **cmp_zip_path** 为待对比侧采集到的数据。
82
+ -c或--compare 表示compare,数据对比,有两个参数。其中**bench_zip_path** 为标杆侧采集到的数据, **cmp_zip_path** 为待对比侧采集到的数据。
79
83
 
80
- **output_path 会被删掉再新建**,不传默认为"./config_check_result", 在 **output_path** 里会生成2个目录和1个文件:
84
+ **output_path 里原有的比对结果会被覆盖**,不传默认为"./config_check_result", 在 **output_path** 里会生成2个目录和1个文件:
81
85
  - bench:bench_zip_path里打包的数据。
82
86
  - cmp:cmp_zip_path里打包的数据。
83
87
  - result.xlsx:比对结果。里面会有多个sheet页,其中**summary**总览通过情况,其余页是具体检查项的详情。其中step为micro_step。
@@ -93,3 +97,9 @@ msprobe -f pytorch config_check -c bench_zip_path cmp_zip_path -o output_path
93
97
  - 数据集
94
98
 
95
99
  这五项检查在**精度比对**前必须保证达成。
100
+
101
+
102
+ ## FAQ
103
+
104
+ 1. 在使用 MindSpeed-LLM 进行数据采集时,需要注意动态数据采集中的 [apply_patches](#动态数据采集) 函数需要在 MindSpeed-LLM
105
+ 框架 pretrain_gpt.py 的 megatron_adaptor 函数导入之后执行。
@@ -15,7 +15,7 @@ a. 在生成单API脚本时可以选择由工具构造随机数获得 dump 数
15
15
 
16
16
  3. 发现某个算子疑似存在精度问题,并得知算子名,如Mint.split.1、Functional.softmax.3、Tensor.add.0、Torch.matmul.5等,要求API入参与torch场景相同。
17
17
 
18
- 4.(可选)当需要使用Msadapter时,由于需要环境中同时存在 Torch 与 Msadapter,所以只支持在**安装原生Torch**的场景下通过export PYTHONPATH="xx/msadapter/build/lib"等通过**环境变量使能Msadapter的方式**的环境中进行预检,预检工具能够自动索引得到所需的 Torch 与 Msadapter环境,环境安装详细参考:[msadapter官网](https://gitee.com/mindspore/msadapter)
18
+ 4.(可选)当需要使用Msadapter时,由于需要环境中同时存在 Torch 与 Msadapter,所以只支持在**安装原生Torch**的场景下通过export PYTHONPATH="xx/msadapter/build/lib"等通过**环境变量使能Msadapter的方式**的环境中进行预检,预检工具能够自动索引得到所需的 Torch 与 Msadapter环境,环境安装详细参考:[msadapter官网](https://gitee.com/mindspore/msadapter)(该网站需要申请权限方可访问)。
19
19
 
20
20
  ### 2.1 dump.json 示例(由dump生成)
21
21
  ```
@@ -172,7 +172,7 @@ python api_name.py
172
172
  | Backward Test Success | 反向 API 是否通过测试,pass 为通过,error 为错误,如果是空白的话代表该 API 没有反向输出。 |
173
173
  | Message | 提示信息。 |
174
174
 
175
- Forward Test Success 和 Backward Test Success 是否通过测试是由 `accuracy_checking_details_{timestamp}.csv` 中的余弦相似度、最大绝对误差判定结果决定的。具体规则详见 [4.1 API 预检指标](#41-api-预检指标)。
175
+ Forward Test Success 和 Backward Test Success 是否通过测试是由 `accuracy_checking_details_{timestamp}.csv` 中的余弦相似度、最大绝对误差判定结果决定的。具体规则详见 [3.1 API 预检指标](#31-api-预检指标)。
176
176
  需要注意的是 `accuracy_checking_details_{timestamp}.csv` 中可能存在一个 API 的前向(反向)有多个输出,那么每个输出记录一行,而在 `accuracy_checking_result_{timestamp}.csv` 中的结果需要该 API 的所有结果均为 pass 才能标记为 pass,只要存在一个 error 则标记 error。
177
177
 
178
178
  ### 3.1 API 预检指标
@@ -21,12 +21,15 @@
21
21
  当确定需要采集数据的地方,例如response,可以按如下方式对数据进行存储:
22
22
  ```
23
23
  from msprobe.core import SingleSave
24
- SingleSave("./dump_path", fmk="pytorch")
25
- SingleSave.save({"response": response})
24
+ SingleSave(dump_path="./dump_path", fmk="pytorch")
25
+ SingleSave.save(data={"response": response})
26
26
  ```
27
- 其中"./dump_path"为输出路径,没有默认值,需要自己配置;fmk可选"pytorch"或者"mindspore",默认"pytorch"。
27
+ SingleSave:初始化一个单点存储模块,参数如下:
28
+ - dump_path:输出路径,"./dump_path"为输出路径,没有默认值,需要自己配置。
29
+ - fmk:当前训练框架。可选"pytorch"或者"mindspore",默认"pytorch"。
28
30
 
29
- 其中"response"是可以任意指定的key,response是训练过程中的真实tensor变量。
31
+ SingleSave.save:将需要存储的数据落盘,数据会分step分rank存储,并支持后续比对,参数如下:
32
+ - data:是需要存储的数据,是一批key和value组成的dict,key是用户自己决定的数据名称,会成为后续落盘数据中的目录,value是代码里需要存储的变量,支持tensor、tuple、list。比如其中"response"是可以任意指定的key,response是训练过程中的真实tensor变量。
30
33
 
31
34
  也支持一次性存储多个数据:
32
35
  ```
@@ -44,9 +47,11 @@ SingleSave.save({
44
47
  ```
45
48
  from msprobe.core import SingleSave
46
49
  SingleSave("./dump_path")
47
- SingleSave.save_config(configurations_json)
50
+ SingleSave.save_config(data=configurations_json)
48
51
  ```
49
52
 
53
+ SingleSave.save_config:将配置信息进行存储,入参如下:
54
+ - data:需要存储的配置信息,需要是一个dict。
50
55
 
51
56
  采集到的数据目录结构如下:
52
57
  ```txt
@@ -67,11 +72,15 @@ dump_path/
67
72
  ```
68
73
  from msprobe.core import SingleComparator
69
74
  SingleComparator.compare(
70
- "dump_path1",
71
- "dump_path2",
72
- "output_path")
75
+ dir1="dump_path1",
76
+ dir2="dump_path2",
77
+ output_path="output_path")
73
78
  ```
74
-
79
+ SingleComparator.compare:将两次采集的数据进行比对,参数如下:
80
+ - dir1:需要比对的其中一个dump_path,对应SingleSave的dump_path。
81
+ - dir2:需要比对的令一个dump_path,对应SingleSave的dump_path。
82
+ - output_path:比对结果输出路径,默认为"./msprobe_compare_output"。
83
+ - num_processes:比对的时候起多少个进程,默认为8。
75
84
  会在output_path下对每种关键数据都生成excel结果表格,比如response.xlsx,形式为关键数据的名字加上.xlsx后缀。
76
85
 
77
86
  表格会体现每一个对应tensor的差异,解释: