mindstudio-probe 1.2.2__py3-none-any.whl → 8.1.0__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.
- {mindstudio_probe-1.2.2.dist-info → mindstudio_probe-8.1.0.dist-info}/METADATA +4 -3
- {mindstudio_probe-1.2.2.dist-info → mindstudio_probe-8.1.0.dist-info}/RECORD +243 -191
- msprobe/README.md +57 -21
- msprobe/core/__init__.py +17 -0
- msprobe/core/common/const.py +224 -82
- msprobe/core/common/decorator.py +50 -0
- msprobe/core/common/exceptions.py +5 -3
- msprobe/core/common/file_utils.py +274 -40
- msprobe/core/common/framework_adapter.py +169 -0
- msprobe/core/common/global_lock.py +86 -0
- msprobe/core/common/runtime.py +25 -0
- msprobe/core/common/utils.py +148 -72
- msprobe/core/common_config.py +7 -0
- msprobe/core/compare/acc_compare.py +640 -462
- msprobe/core/compare/check.py +36 -107
- msprobe/core/compare/compare_cli.py +4 -0
- msprobe/core/compare/config.py +72 -0
- msprobe/core/compare/highlight.py +217 -215
- msprobe/core/compare/layer_mapping/layer_mapping.py +4 -1
- msprobe/core/compare/merge_result/merge_result.py +12 -6
- msprobe/core/compare/multiprocessing_compute.py +227 -107
- msprobe/core/compare/npy_compare.py +32 -16
- msprobe/core/compare/utils.py +218 -244
- msprobe/{mindspore/runtime.py → core/config_check/__init__.py} +2 -4
- msprobe/{pytorch/dump/kernel_dump/kernel_config.py → core/config_check/checkers/__init__.py} +8 -16
- msprobe/core/config_check/checkers/base_checker.py +60 -0
- msprobe/core/config_check/checkers/dataset_checker.py +138 -0
- msprobe/core/config_check/checkers/env_args_checker.py +96 -0
- msprobe/core/config_check/checkers/hyperparameter_checker.py +170 -0
- msprobe/core/config_check/checkers/pip_checker.py +90 -0
- msprobe/core/config_check/checkers/random_checker.py +367 -0
- msprobe/core/config_check/checkers/weights_checker.py +147 -0
- msprobe/core/config_check/ckpt_compare/ckpt_comparator.py +74 -0
- msprobe/core/config_check/ckpt_compare/megatron_loader.py +302 -0
- msprobe/core/config_check/ckpt_compare/metrics.py +83 -0
- msprobe/core/config_check/ckpt_compare/name_mapping.yaml +12 -0
- msprobe/core/config_check/config_check_cli.py +51 -0
- msprobe/core/config_check/config_checker.py +100 -0
- msprobe/{pytorch/parse.py → core/config_check/resource/dependency.yaml} +7 -4
- msprobe/core/config_check/resource/env.yaml +57 -0
- msprobe/core/config_check/resource/hyperparameter.yaml +21 -0
- msprobe/core/config_check/utils/hyperparameter_parser.py +115 -0
- msprobe/core/config_check/utils/utils.py +107 -0
- msprobe/core/data_dump/api_registry.py +239 -0
- msprobe/core/data_dump/data_collector.py +36 -9
- msprobe/core/data_dump/data_processor/base.py +74 -53
- msprobe/core/data_dump/data_processor/mindspore_processor.py +119 -78
- msprobe/core/data_dump/data_processor/pytorch_processor.py +134 -96
- msprobe/core/data_dump/json_writer.py +146 -57
- msprobe/core/debugger/precision_debugger.py +143 -0
- msprobe/core/grad_probe/constant.py +2 -1
- msprobe/core/grad_probe/grad_compare.py +2 -2
- msprobe/core/grad_probe/utils.py +1 -1
- msprobe/core/hook_manager.py +242 -0
- msprobe/core/monitor/anomaly_processor.py +384 -0
- msprobe/core/overflow_check/abnormal_scene.py +2 -0
- msprobe/core/service.py +356 -0
- msprobe/core/single_save/__init__.py +0 -0
- msprobe/core/single_save/single_comparator.py +243 -0
- msprobe/core/single_save/single_saver.py +157 -0
- msprobe/docs/01.installation.md +6 -5
- msprobe/docs/02.config_introduction.md +89 -30
- msprobe/docs/03.config_examples.md +1 -0
- msprobe/docs/04.kernel_dump_PyTorch.md +1 -1
- msprobe/docs/05.data_dump_PyTorch.md +184 -50
- msprobe/docs/06.data_dump_MindSpore.md +193 -28
- msprobe/docs/07.accuracy_checker_PyTorch.md +13 -3
- msprobe/docs/08.accuracy_checker_online_PyTorch.md +72 -10
- msprobe/docs/09.accuracy_checker_MindSpore.md +19 -7
- msprobe/docs/10.accuracy_compare_PyTorch.md +266 -102
- msprobe/docs/11.accuracy_compare_MindSpore.md +117 -43
- msprobe/docs/12.overflow_check_PyTorch.md +5 -3
- msprobe/docs/13.overflow_check_MindSpore.md +6 -4
- msprobe/docs/14.data_parse_PyTorch.md +4 -10
- msprobe/docs/17.grad_probe.md +2 -1
- msprobe/docs/18.online_dispatch.md +3 -3
- msprobe/docs/19.monitor.md +211 -103
- msprobe/docs/21.visualization_PyTorch.md +100 -28
- msprobe/docs/22.visualization_MindSpore.md +103 -31
- msprobe/docs/23.generate_operator_PyTorch.md +9 -9
- msprobe/docs/25.tool_function_introduction.md +23 -22
- msprobe/docs/26.data_dump_PyTorch_baseline.md +14 -3
- msprobe/docs/27.dump_json_instruction.md +278 -8
- msprobe/docs/28.debugger_save_instruction.md +111 -20
- msprobe/docs/28.kernel_dump_MindSpore.md +1 -1
- msprobe/docs/29.data_dump_MSAdapter.md +229 -0
- msprobe/docs/30.overflow_check_MSAdapter.md +31 -0
- msprobe/docs/31.config_check.md +95 -0
- msprobe/docs/32.ckpt_compare.md +69 -0
- msprobe/docs/33.generate_operator_MindSpore.md +190 -0
- msprobe/docs/34.RL_collect.md +92 -0
- msprobe/docs/35.nan_analyze.md +72 -0
- msprobe/docs/FAQ.md +3 -11
- msprobe/docs/data_dump_MindSpore/data_dump_MindSpore_baseline.md +12 -1
- msprobe/docs/data_dump_MindSpore/dynamic_graph_quick_start_example.md +3 -1
- msprobe/docs/img/compare_result.png +0 -0
- msprobe/docs/img/merge_result.png +0 -0
- msprobe/docs/img/save_compare_result_sample.png +0 -0
- msprobe/docs/img/visualization/proxy.png +0 -0
- msprobe/docs/img/visualization/vis_browser_1.png +0 -0
- msprobe/docs/img/visualization/vis_match_info.png +0 -0
- msprobe/docs/img/visualization/vis_precision_info.png +0 -0
- msprobe/docs/img/visualization/vis_search_info.png +0 -0
- msprobe/docs/img/visualization/vis_show_info.png +0 -0
- msprobe/docs/img/visualization/vis_showcase.png +0 -0
- msprobe/docs/img/visualization/vis_unmatch_info.png +0 -0
- msprobe/mindspore/__init__.py +3 -3
- msprobe/mindspore/api_accuracy_checker/api_accuracy_checker.py +151 -55
- msprobe/mindspore/api_accuracy_checker/api_runner.py +25 -11
- msprobe/mindspore/api_accuracy_checker/base_compare_algorithm.py +2 -1
- msprobe/mindspore/api_accuracy_checker/bench_functions/flash_attention_score.py +580 -0
- msprobe/mindspore/api_accuracy_checker/bench_functions/fusion_operator.py +41 -0
- msprobe/mindspore/api_accuracy_checker/cmd_parser.py +4 -0
- msprobe/mindspore/api_accuracy_checker/data_manager.py +4 -3
- msprobe/mindspore/api_accuracy_checker/generate_op_script/config_op.json +9 -0
- msprobe/mindspore/api_accuracy_checker/generate_op_script/op_generator.py +451 -0
- msprobe/mindspore/api_accuracy_checker/generate_op_script/operator_replication.template +2081 -0
- msprobe/mindspore/api_accuracy_checker/multi_api_accuracy_checker.py +11 -1
- msprobe/mindspore/api_accuracy_checker/torch_mindtorch_importer.py +2 -1
- msprobe/mindspore/cell_processor.py +204 -33
- msprobe/mindspore/code_mapping/graph_parser.py +4 -21
- msprobe/mindspore/common/const.py +73 -2
- msprobe/mindspore/common/utils.py +157 -29
- msprobe/mindspore/compare/common_dir_compare.py +382 -0
- msprobe/mindspore/compare/distributed_compare.py +2 -26
- msprobe/mindspore/compare/ms_compare.py +18 -398
- msprobe/mindspore/compare/ms_graph_compare.py +20 -10
- msprobe/mindspore/compare/utils.py +37 -0
- msprobe/mindspore/debugger/debugger_config.py +59 -7
- msprobe/mindspore/debugger/precision_debugger.py +83 -90
- msprobe/mindspore/dump/cell_dump_process.py +902 -0
- msprobe/mindspore/dump/cell_dump_with_insert_gradient.py +889 -0
- msprobe/mindspore/dump/dump_tool_factory.py +18 -8
- msprobe/mindspore/dump/graph_mode_cell_dump.py +139 -0
- msprobe/mindspore/dump/graph_tensor_dump.py +123 -0
- msprobe/mindspore/dump/hook_cell/api_register.py +176 -0
- msprobe/mindspore/dump/hook_cell/hook_cell.py +22 -12
- msprobe/mindspore/dump/hook_cell/ms_hook_manager.py +88 -0
- msprobe/mindspore/dump/hook_cell/primitive_hooks.py +8 -2
- msprobe/mindspore/dump/hook_cell/support_wrap_ops.yaml +42 -26
- msprobe/mindspore/dump/jit_dump.py +35 -27
- msprobe/mindspore/dump/kernel_kbyk_dump.py +6 -3
- msprobe/mindspore/dym_loader/hook_dynamic_loader.cpp +110 -0
- msprobe/mindspore/dym_loader/hook_dynamic_loader.h +15 -16
- msprobe/mindspore/free_benchmark/api_pynative_self_check.py +22 -12
- msprobe/mindspore/free_benchmark/common/utils.py +1 -1
- msprobe/mindspore/free_benchmark/perturbation/perturbation_factory.py +4 -2
- msprobe/mindspore/free_benchmark/self_check_tool_factory.py +6 -3
- msprobe/mindspore/grad_probe/global_context.py +9 -2
- msprobe/mindspore/grad_probe/grad_analyzer.py +2 -1
- msprobe/mindspore/grad_probe/grad_stat_csv.py +3 -2
- msprobe/mindspore/grad_probe/hook.py +2 -4
- msprobe/mindspore/mindspore_service.py +111 -0
- msprobe/mindspore/monitor/common_func.py +52 -0
- msprobe/mindspore/monitor/data_writers.py +237 -0
- msprobe/mindspore/monitor/distributed/wrap_distributed.py +1 -1
- msprobe/mindspore/monitor/features.py +13 -1
- msprobe/mindspore/monitor/module_hook.py +568 -444
- msprobe/mindspore/monitor/optimizer_collect.py +331 -0
- msprobe/mindspore/monitor/utils.py +71 -9
- msprobe/mindspore/ms_config.py +16 -15
- msprobe/mindspore/overflow_check/overflow_check_tool_factory.py +5 -3
- msprobe/mindspore/task_handler_factory.py +5 -2
- msprobe/msprobe.py +19 -0
- msprobe/nan_analyze/__init__.py +14 -0
- msprobe/nan_analyze/analyzer.py +255 -0
- msprobe/nan_analyze/graph.py +189 -0
- msprobe/nan_analyze/utils.py +211 -0
- msprobe/pytorch/api_accuracy_checker/common/config.py +2 -2
- msprobe/pytorch/api_accuracy_checker/compare/api_precision_compare.py +3 -6
- msprobe/pytorch/api_accuracy_checker/compare/compare.py +36 -34
- msprobe/pytorch/api_accuracy_checker/generate_op_script/op_generator.py +15 -13
- msprobe/pytorch/api_accuracy_checker/generate_op_script/operator_replication.template +206 -4
- msprobe/pytorch/api_accuracy_checker/run_ut/multi_run_ut.py +9 -9
- msprobe/pytorch/api_accuracy_checker/run_ut/run_overflow_check.py +6 -5
- msprobe/pytorch/api_accuracy_checker/run_ut/run_ut.py +31 -9
- msprobe/pytorch/api_accuracy_checker/run_ut/run_ut_utils.py +28 -20
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/attl.py +3 -1
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/client.py +29 -13
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/device_dispatch.py +12 -2
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/server.py +45 -31
- msprobe/pytorch/api_accuracy_checker/tensor_transport_layer/utils.py +154 -0
- msprobe/pytorch/attl_manager.py +65 -0
- msprobe/pytorch/bench_functions/moe_gating_top_k_softmax.py +6 -0
- msprobe/pytorch/bench_functions/npu_fusion_attention.py +27 -0
- msprobe/pytorch/common/utils.py +53 -19
- msprobe/pytorch/compare/distributed_compare.py +4 -36
- msprobe/pytorch/compare/pt_compare.py +13 -84
- msprobe/pytorch/compare/utils.py +47 -0
- msprobe/pytorch/debugger/debugger_config.py +34 -17
- msprobe/pytorch/debugger/precision_debugger.py +50 -96
- msprobe/pytorch/dump/module_dump/hook_wrapper.py +93 -0
- msprobe/pytorch/dump/module_dump/module_dump.py +15 -61
- msprobe/pytorch/dump/module_dump/module_processer.py +150 -114
- msprobe/pytorch/free_benchmark/common/utils.py +1 -1
- msprobe/pytorch/free_benchmark/compare/single_benchmark.py +1 -1
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/add_noise.py +3 -3
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/bit_noise.py +3 -3
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/change_value.py +1 -1
- msprobe/pytorch/free_benchmark/perturbed_layers/npu/improve_precision.py +1 -1
- msprobe/pytorch/free_benchmark/result_handlers/check_handler.py +1 -1
- msprobe/pytorch/function_factory.py +1 -1
- msprobe/pytorch/grad_probe/grad_monitor.py +2 -2
- msprobe/pytorch/grad_probe/grad_stat_csv.py +3 -2
- msprobe/pytorch/hook_module/api_register.py +155 -0
- msprobe/pytorch/hook_module/hook_module.py +18 -22
- msprobe/pytorch/hook_module/jit_script_wrapper.py +33 -0
- msprobe/pytorch/hook_module/pt_hook_manager.py +68 -0
- msprobe/pytorch/hook_module/register_optimizer_hook.py +2 -1
- msprobe/pytorch/hook_module/support_wrap_ops.yaml +193 -75
- msprobe/pytorch/hook_module/utils.py +28 -2
- msprobe/pytorch/monitor/csv2tb.py +14 -4
- msprobe/pytorch/monitor/data_writers.py +259 -0
- msprobe/pytorch/monitor/distributed/wrap_distributed.py +8 -2
- msprobe/pytorch/monitor/module_hook.py +336 -241
- msprobe/pytorch/monitor/module_metric.py +17 -0
- msprobe/pytorch/monitor/optimizer_collect.py +244 -224
- msprobe/pytorch/monitor/utils.py +84 -4
- msprobe/pytorch/online_dispatch/compare.py +0 -2
- msprobe/pytorch/online_dispatch/dispatch.py +13 -2
- msprobe/pytorch/online_dispatch/dump_compare.py +8 -2
- msprobe/pytorch/online_dispatch/utils.py +3 -0
- msprobe/pytorch/parse_tool/lib/interactive_cli.py +1 -6
- msprobe/pytorch/parse_tool/lib/utils.py +5 -4
- msprobe/pytorch/pt_config.py +16 -11
- msprobe/pytorch/pytorch_service.py +70 -0
- msprobe/visualization/builder/graph_builder.py +69 -10
- msprobe/visualization/builder/msprobe_adapter.py +24 -12
- msprobe/visualization/compare/graph_comparator.py +63 -51
- msprobe/visualization/compare/mode_adapter.py +22 -20
- msprobe/visualization/graph/base_node.py +11 -4
- msprobe/visualization/graph/distributed_analyzer.py +1 -10
- msprobe/visualization/graph/graph.py +2 -13
- msprobe/visualization/graph/node_op.py +1 -2
- msprobe/visualization/graph_service.py +251 -104
- msprobe/visualization/utils.py +26 -44
- msprobe/mindspore/dump/hook_cell/api_registry.py +0 -207
- msprobe/mindspore/dump/hook_cell/wrap_api.py +0 -212
- msprobe/mindspore/dym_loader/hook_dynamic_loader.cc +0 -140
- msprobe/mindspore/monitor/anomaly_detect.py +0 -404
- msprobe/mindspore/monitor/module_spec_verifier.py +0 -94
- msprobe/mindspore/service.py +0 -543
- msprobe/pytorch/hook_module/api_registry.py +0 -166
- msprobe/pytorch/hook_module/wrap_distributed.py +0 -79
- msprobe/pytorch/hook_module/wrap_functional.py +0 -66
- msprobe/pytorch/hook_module/wrap_npu_custom.py +0 -85
- msprobe/pytorch/hook_module/wrap_tensor.py +0 -69
- msprobe/pytorch/hook_module/wrap_torch.py +0 -84
- msprobe/pytorch/hook_module/wrap_vf.py +0 -60
- msprobe/pytorch/monitor/anomaly_analyse.py +0 -201
- msprobe/pytorch/monitor/anomaly_detect.py +0 -410
- msprobe/pytorch/monitor/module_spec_verifier.py +0 -95
- msprobe/pytorch/monitor/unittest/test_monitor.py +0 -160
- msprobe/pytorch/service.py +0 -470
- {mindstudio_probe-1.2.2.dist-info → mindstudio_probe-8.1.0.dist-info}/LICENSE +0 -0
- {mindstudio_probe-1.2.2.dist-info → mindstudio_probe-8.1.0.dist-info}/WHEEL +0 -0
- {mindstudio_probe-1.2.2.dist-info → mindstudio_probe-8.1.0.dist-info}/entry_points.txt +0 -0
- {mindstudio_probe-1.2.2.dist-info → mindstudio_probe-8.1.0.dist-info}/top_level.txt +0 -0
- /msprobe/{mindspore → core}/compare/ms_to_pt_api.yaml +0 -0
- /msprobe/{mindspore/dump → core}/kernel_dump/kernel_config.py +0 -0
- /msprobe/{pytorch/monitor/unittest → core/monitor}/__init__.py +0 -0
|
@@ -19,7 +19,7 @@ msprobe精度比对工具主要用于如下场景:
|
|
|
19
19
|
- 通过对同一个网络模型,在整网环境下分别在MindSpore动态图和PyTorch环境下获得API或模块dump数据,由用户指定可以比对的API或模块,以PyTorch数据作为标杆,进行自动比对,从而实现跨框架的精度对比。
|
|
20
20
|
- 通过对同一个网络模型,在整网环境下分别在MindSpore动态图和PyTorch环境下获得API或模块dump数据,由用户指定可以比对的模型代码中的Layer层,以PyTorch数据作为标杆,进行自动比对,从而实现跨框架的精度对比。
|
|
21
21
|
|
|
22
|
-
执行精度比对操作需要安装msprobe
|
|
22
|
+
执行精度比对操作需要安装msprobe工具。详见[《msprobe 工具安装指南》](./01.installation.md)。
|
|
23
23
|
|
|
24
24
|
## 2 命令行比对
|
|
25
25
|
|
|
@@ -35,17 +35,17 @@ msprobe -f mindspore compare -i ./compare.json -o ./output -s
|
|
|
35
35
|
|
|
36
36
|
**完整参数说明**
|
|
37
37
|
|
|
38
|
-
| 参数名 | 说明
|
|
39
|
-
| --------------------
|
|
40
|
-
| -i或--input_path | 指定比对文件。比对文件内容及示例请参见[比对文件](#
|
|
41
|
-
| -o或--output_path | 配置比对结果文件存盘目录,默认会在当前目录创建output目录。文件名称基于时间戳自动生成,格式为:<br> `compare_result_{timestamp}.xlsx`<br/> `compare_result_{rank_id}_{step_id}_{timestamp}.xlsx`(仅[不同版本下的全量kernel比对](#23-不同版本下的全量kernel比对)
|
|
42
|
-
| -s或--stack_mode | 比对结果展示调用栈信息(NPU_Stack_Info)的开关,bool 类型。单卡场景开启时,需要使用[比对文件](#
|
|
43
|
-
| -c或--compare_only | 仅比对开关,bool 类型。该参数默认未配置,会启用自动精度分析,工具自动针对比对结果进行分析,识别到第一个精度可能不达标节点(在比对结果文件中的 Accuracy Reached or Not 列显示为 No),并给出问题可能产生的原因(打屏展示并生成 `advisor_{timestamp}.txt` 文件)。通过配置该参数取消自动精度分析,仅输出比对结果表格。
|
|
44
|
-
| -f或--fuzzy_match | 模糊匹配。开启后,对于网络中同一层级且命名仅调用次数不同的API,可匹配并进行比对。通过直接配置该参数开启,默认未配置,表示关闭。
|
|
45
|
-
| -am或--api_mapping | 跨框架比对。配置该参数时表示开启跨框架API比对功能,可以指定自定义映射文件*.yaml,不指定映射文件时按照msprobe定义的默认映射关系进行比对。自定义映射文件的格式请参见[自定义映射文件(api_mapping)](#
|
|
46
|
-
| -cm或--cell_mapping | 跨框架比对。配置该参数时表示开启跨框架cell模块比对功能,可以指定自定义映射文件*.yaml,不指定映射文件时按照msprobe定义的默认映射关系进行比对。自定义映射文件的格式请参见[自定义映射文件(cell_mapping)](#
|
|
47
|
-
| -dm或--data_mapping | 同框架或跨框架比对。通过映射文件指定两个具体参数的对应关系,可以在L0、L1或mix采集场景下使用。配置该参数的同时需要指定自定义映射文件*.yaml。自定义映射文件的格式请参见[自定义映射文件(data_mapping)](#
|
|
48
|
-
| -lm或--layer_mapping | 跨框架比对。配置该参数时表示开启跨框架Layer层的比对功能,指定模型代码中的Layer层后,可以识别对应dump数据中的模块或API。需要指定自定义映射文件*.yaml。自定义映射文件的格式请参见[自定义映射文件(Layer_mapping)](#
|
|
38
|
+
| 参数名 | 说明 | 是否必选 |
|
|
39
|
+
| -------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -------- |
|
|
40
|
+
| -i或--input_path | 指定比对文件。比对文件内容及示例请参见[比对文件](#41-比对文件)或[比对文件(kernel)](#42-比对文件kernel)(比对文件(kernel)仅[不同版本下的全量kernel比对](#23-不同版本下的全量kernel比对)场景支持)。 | 是 |
|
|
41
|
+
| -o或--output_path | 配置比对结果文件存盘目录,默认会在当前目录创建output目录。文件名称基于时间戳自动生成,格式为:<br> `compare_result_{timestamp}.xlsx`<br/> `compare_result_{rank_id}_{step_id}_{timestamp}.xlsx`(仅[不同版本下的全量kernel比对](#23-不同版本下的全量kernel比对)场景支持)。<br>提示:output目录下与结果件同名文件将被删除覆盖。 | 否 |
|
|
42
|
+
| -s或--stack_mode | 比对结果展示调用栈信息(NPU_Stack_Info)的开关,bool 类型。单卡场景开启时,需要使用[比对文件](#41-比对文件)的单卡场景配置stack_path指定stack.json文件,才能生成详细调用栈信息,否则在比对时会报错;暂不支持多卡场景。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 |
|
|
43
|
+
| -c或--compare_only | 仅比对开关,bool 类型。该参数默认未配置,会启用自动精度分析,工具自动针对比对结果进行分析,识别到第一个精度可能不达标节点(在比对结果文件中的 Accuracy Reached or Not 列显示为 No),并给出问题可能产生的原因(打屏展示并生成 `advisor_{timestamp}.txt` 文件)。通过配置该参数取消自动精度分析,仅输出比对结果表格。 | 否 |
|
|
44
|
+
| -f或--fuzzy_match | 模糊匹配。开启后,对于网络中同一层级且命名仅调用次数不同的API,可匹配并进行比对。通过直接配置该参数开启,默认未配置,表示关闭。 | 否 |
|
|
45
|
+
| -am或--api_mapping | 跨框架比对。配置该参数时表示开启跨框架API比对功能,可以指定自定义映射文件*.yaml,不指定映射文件时按照msprobe定义的默认映射关系进行比对。自定义映射文件的格式请参见[自定义映射文件(api_mapping)](#43-自定义映射文件api_mapping)。仅[跨框架的API比对](#25-跨框架的api比对)场景需要配置。 | 否 |
|
|
46
|
+
| -cm或--cell_mapping | 跨框架比对。配置该参数时表示开启跨框架cell模块比对功能,可以指定自定义映射文件*.yaml,不指定映射文件时按照msprobe定义的默认映射关系进行比对。自定义映射文件的格式请参见[自定义映射文件(cell_mapping)](#44-自定义映射文件cell_mapping)。仅[跨框架的cell模块比对](#26-跨框架的cell模块比对)场景需要配置。 | 否 |
|
|
47
|
+
| -dm或--data_mapping | 同框架或跨框架比对。通过映射文件指定两个具体参数的对应关系,可以在L0、L1或mix采集场景下使用。配置该参数的同时需要指定自定义映射文件*.yaml。自定义映射文件的格式请参见[自定义映射文件(data_mapping)](#45-自定义映射文件data_mapping)。 | 否 |
|
|
48
|
+
| -lm或--layer_mapping | 跨框架比对。配置该参数时表示开启跨框架Layer层的比对功能,指定模型代码中的Layer层后,可以识别对应dump数据中的模块或API。需要指定自定义映射文件*.yaml。自定义映射文件的格式请参见[自定义映射文件(Layer_mapping)](#46-自定义映射文件layer_mapping)。仅[跨框架的Layer层比对](#27-跨框架的layer层比对)场景需要配置。 | 否 |
|
|
49
49
|
|
|
50
50
|
动态图模式没有填写任何mapping时,按照同框架比对的方式进行比对,比对数据和标杆数据的Cell或Api名称需要完全相同才能匹配得上。
|
|
51
51
|
|
|
@@ -53,7 +53,7 @@ msprobe -f mindspore compare -i ./compare.json -o ./output -s
|
|
|
53
53
|
|
|
54
54
|
1. 参见《[MindSpore 场景的精度数据采集](./06.data_dump_MindSpore.md)》完成不同环境下MindSpore静态图精度数据的采集,得到不同框架版本的API dump数据。
|
|
55
55
|
|
|
56
|
-
2. 创建比对文件,文件内容及示例请参见[比对文件](#
|
|
56
|
+
2. 创建比对文件,文件内容及示例请参见[比对文件](#41-比对文件)。
|
|
57
57
|
|
|
58
58
|
3. 执行如下示例命令进行比对:
|
|
59
59
|
|
|
@@ -67,7 +67,7 @@ msprobe -f mindspore compare -i ./compare.json -o ./output -s
|
|
|
67
67
|
|
|
68
68
|
1. 参见《[MindSpore 场景的精度数据采集](./06.data_dump_MindSpore.md)》完成不同环境下MindSpore静态图精度数据的采集,得到不同框架版本的kernel dump数据。
|
|
69
69
|
|
|
70
|
-
2. 创建比对文件,文件内容及示例请参见[比对文件(kernel)](#
|
|
70
|
+
2. 创建比对文件,文件内容及示例请参见[比对文件(kernel)](#42-比对文件kernel)。
|
|
71
71
|
|
|
72
72
|
3. 执行如下示例命令进行比对:
|
|
73
73
|
|
|
@@ -85,7 +85,7 @@ msprobe -f mindspore compare -i ./compare.json -o ./output -s
|
|
|
85
85
|
|
|
86
86
|
2. 参见《[MindSpore 场景的精度数据采集](./06.data_dump_MindSpore.md)》完成不同环境下MindSpore动态图精度数据的采集,得到不同框架版本的cell模块dump数据。
|
|
87
87
|
|
|
88
|
-
3. 创建比对文件,文件内容及示例请参见[比对文件](#
|
|
88
|
+
3. 创建比对文件,文件内容及示例请参见[比对文件](#41-比对文件)。
|
|
89
89
|
|
|
90
90
|
4. 执行如下示例命令进行比对:
|
|
91
91
|
|
|
@@ -101,7 +101,7 @@ msprobe -f mindspore compare -i ./compare.json -o ./output -s
|
|
|
101
101
|
|
|
102
102
|
2. 参见《[MindSpore 场景的精度数据采集](./06.data_dump_MindSpore.md)》和《[PyTorch 场景的精度数据采集](./05.data_dump_PyTorch.md)》完成不同环境下API精度数据的采集,得到两个框架的API dump数据。
|
|
103
103
|
|
|
104
|
-
3. 创建比对文件,文件内容及示例请参见[比对文件](#
|
|
104
|
+
3. 创建比对文件,文件内容及示例请参见[比对文件](#41-比对文件)。
|
|
105
105
|
|
|
106
106
|
4. 执行如下示例命令进行比对:
|
|
107
107
|
|
|
@@ -115,14 +115,14 @@ msprobe -f mindspore compare -i ./compare.json -o ./output -s
|
|
|
115
115
|
msprobe -f mindspore compare -i ./compare.json -o ./output -s -am api_mapping.yaml
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
api_mapping.yaml文件配置请参见[自定义映射文件(api_mapping)](#
|
|
118
|
+
api_mapping.yaml文件配置请参见[自定义映射文件(api_mapping)](#43-自定义映射文件api_mapping)。
|
|
119
119
|
不传入api_mapping.yaml的情况下将按照内置的api映射进行匹配;传入api_mapping.yaml的情况下优先按照api_mapping.yaml的内容进行匹配,api_mapping.yaml中没有涉及的按照内置的api映射进行匹配。
|
|
120
120
|
|
|
121
121
|
此外,也可以通过data_mapping.yaml文件实现具体参数的匹配,例:
|
|
122
122
|
```shell
|
|
123
123
|
msprobe -f mindspore compare -i ./compare.json -o ./output -s -dm data_mapping.yaml
|
|
124
124
|
```
|
|
125
|
-
data_mapping.yaml的写法请参见[自定义映射文件(data_mapping)](#
|
|
125
|
+
data_mapping.yaml的写法请参见[自定义映射文件(data_mapping)](#45-自定义映射文件data_mapping)。
|
|
126
126
|
|
|
127
127
|
5. 查看比对结果,请详见PyTorch目录下的《[PyTorch 场景的精度比对-精度比对结果分析](./10.accuracy_compare_PyTorch.md#3-精度比对结果分析)》章节。
|
|
128
128
|
|
|
@@ -132,7 +132,7 @@ msprobe -f mindspore compare -i ./compare.json -o ./output -s
|
|
|
132
132
|
|
|
133
133
|
2. 参见《[MindSpore 场景的精度数据采集](./06.data_dump_MindSpore.md)》和《[PyTorch 场景的精度数据采集](./05.data_dump_PyTorch.md)》完成不同环境下cell模块精度数据的采集,得到两个框架的cell模块dump数据。
|
|
134
134
|
|
|
135
|
-
3. 创建比对文件,文件内容及示例请参见[比对文件](#
|
|
135
|
+
3. 创建比对文件,文件内容及示例请参见[比对文件](#41-比对文件)。
|
|
136
136
|
|
|
137
137
|
4. 执行如下示例命令进行比对:
|
|
138
138
|
|
|
@@ -146,14 +146,14 @@ msprobe -f mindspore compare -i ./compare.json -o ./output -s
|
|
|
146
146
|
msprobe -f mindspore compare -i ./compare.json -o ./output -s -cm cell_mapping.yaml
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
-
cell_mapping.yaml文件配置请参见[自定义映射文件(cell_mapping)](#
|
|
149
|
+
cell_mapping.yaml文件配置请参见[自定义映射文件(cell_mapping)](#44-自定义映射文件cell_mapping)。
|
|
150
150
|
不传入cell_mapping.yaml的情况下仅将Cell改成Module后进行匹配;传入cell_mapping.yaml的情况下将按照cell_mapping.yaml的内容进行匹配。
|
|
151
151
|
|
|
152
152
|
此外,也可以通过data_mapping.yaml文件实现具体参数的匹配,例:
|
|
153
153
|
```shell
|
|
154
154
|
msprobe -f mindspore compare -i ./compare.json -o ./output -s -dm data_mapping.yaml
|
|
155
155
|
```
|
|
156
|
-
data_mapping.yaml的写法请参见[自定义映射文件(data_mapping)](#
|
|
156
|
+
data_mapping.yaml的写法请参见[自定义映射文件(data_mapping)](#45-自定义映射文件data_mapping)。
|
|
157
157
|
|
|
158
158
|
5. 查看比对结果,请详见PyTorch目录下的《[PyTorch 场景的精度比对-精度比对结果分析](./10.accuracy_compare_PyTorch.md#3-精度比对结果分析)》章节。
|
|
159
159
|
|
|
@@ -165,7 +165,7 @@ layer_mapping可以从Layer层识别整网的API和Cell,简化配置。
|
|
|
165
165
|
|
|
166
166
|
2. 参见《[MindSpore 场景的精度数据采集](./06.data_dump_MindSpore.md)》和《[PyTorch 场景的精度数据采集](./05.data_dump_PyTorch.md)》完成不同环境下API或模块精度数据的采集,得到两个框架的API或模块dump数据。
|
|
167
167
|
|
|
168
|
-
3. 创建比对文件,文件内容及示例请参见[比对文件](#
|
|
168
|
+
3. 创建比对文件,文件内容及示例请参见[比对文件](#41-比对文件)。
|
|
169
169
|
|
|
170
170
|
4. 执行如下示例命令进行比对:
|
|
171
171
|
|
|
@@ -173,20 +173,42 @@ layer_mapping可以从Layer层识别整网的API和Cell,简化配置。
|
|
|
173
173
|
msprobe -f mindspore compare -i ./compare.json -o ./output -s -lm layer_mapping.yaml
|
|
174
174
|
```
|
|
175
175
|
|
|
176
|
-
layer_mapping.yaml文件配置请参见[自定义映射文件(layer_mapping)](#
|
|
176
|
+
layer_mapping.yaml文件配置请参见[自定义映射文件(layer_mapping)](#46-自定义映射文件layer_mapping)。
|
|
177
177
|
|
|
178
178
|
此外,也可以通过data_mapping.yaml文件实现具体参数的匹配,例:
|
|
179
179
|
```shell
|
|
180
180
|
msprobe -f mindspore compare -i ./compare.json -o ./output -s -dm data_mapping.yaml
|
|
181
181
|
```
|
|
182
|
-
data_mapping.yaml的写法请参见[自定义映射文件(data_mapping)](#
|
|
182
|
+
data_mapping.yaml的写法请参见[自定义映射文件(data_mapping)](#45-自定义映射文件data_mapping)。
|
|
183
183
|
|
|
184
184
|
5. 查看比对结果,请详见PyTorch目录下的《[PyTorch 场景的精度比对-精度比对结果分析](./10.accuracy_compare_PyTorch.md#3-精度比对结果分析)》章节。
|
|
185
185
|
|
|
186
|
+
### 2.8 单点数据比对
|
|
187
|
+
1. 参见 [单点保存工具](./28.debugger_save_instruction.md)章节完成 CPU 或 GPU 与 NPU 的单点数据采集。
|
|
188
|
+
|
|
189
|
+
2. 创建比对文件,文件内容及示例请参见[比对文件(单点数据)](#47-比对文件单点数据)。
|
|
190
|
+
|
|
191
|
+
3. 执行如下示例命令进行比对:
|
|
192
|
+
|
|
193
|
+
```shell
|
|
194
|
+
msprobe -f mindspore compare -i ./compare.json -o ./output
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
4. Pytorch & MindSpore 动态图场景查看比对结果,请详见PyTorch目录下的《[PyTorch 场景的精度比对-精度比对结果分析](./10.accuracy_compare_PyTorch.md#3-精度比对结果分析)》章节。
|
|
198
|
+
MindSpore静态图场景比对结果:
|
|
199
|
+
- `result.csv` 文件列出了所有执行精度比对的 单点保存数据 详细信息和比对结果,示例如下:
|
|
200
|
+
|
|
201
|
+

|
|
202
|
+
具体字段含义同PyTorch目录下的《[PyTorch 场景的精度比对-精度比对结果分析](./10.accuracy_compare_PyTorch.md#3-精度比对结果分析)》章节。
|
|
203
|
+
|
|
186
204
|
## 3 多卡比对结果提取汇总通信算子数据
|
|
187
205
|
|
|
188
206
|
本功能是将多卡比对场景的比对结果,进行通信算子数据提取和汇总,输出整理好的通信算子多卡比对精度表。
|
|
189
207
|
|
|
208
|
+
**使用场景**
|
|
209
|
+
|
|
210
|
+
已完成精度比对,获得多卡精度比对结果,但是通信算子数据分布在多个结果件中,不利于精度问题的分析。通过此功能,可以汇总多卡通信算子数据,减少问题定位时间。
|
|
211
|
+
|
|
190
212
|
**约束**
|
|
191
213
|
|
|
192
214
|
- 不支持MD5比对结果。
|
|
@@ -200,11 +222,11 @@ msprobe -f mindspore merge_result -i ./input_dir -o ./output_dir -config ./confi
|
|
|
200
222
|
|
|
201
223
|
**完整参数说明**
|
|
202
224
|
|
|
203
|
-
| 参数名 | 说明
|
|
204
|
-
| ----------------------
|
|
205
|
-
| -i 或 --input_dir | 多卡比对结果存盘目录,即使用compare比对的结果输出目录,str类型。所有比对结果应全部为真实数据比对结果或统计数据比对结果,否则可能导致汇总数据不完整。
|
|
206
|
-
| -o 或 --output_dir | 数据提取汇总结果存盘目录,str类型。文件名称基于时间戳自动生成,格式为:`multi_ranks_compare_merge_{timestamp}.xlsx
|
|
207
|
-
| -config或--config-path | 指定需要汇总数据的API和比对指标的yaml文件路径,str类型。<br>yaml文件详细介绍见下文“**yaml文件说明**”。
|
|
225
|
+
| 参数名 | 说明 | 是否必选 |
|
|
226
|
+
| ---------------------- |-------------------------------------------------------------------------------------------------------------------| -------- |
|
|
227
|
+
| -i 或 --input_dir | 多卡比对结果存盘目录,即使用compare比对的结果输出目录,str类型。所有比对结果应全部为真实数据比对结果或统计数据比对结果,否则可能导致汇总数据不完整。 | 是 |
|
|
228
|
+
| -o 或 --output_dir | 数据提取汇总结果存盘目录,str类型。文件名称基于时间戳自动生成,格式为:`multi_ranks_compare_merge_{timestamp}.xlsx`。<br>提示:output目录下与结果件同名文件将被删除覆盖。 | 是 |
|
|
229
|
+
| -config或--config-path | 指定需要汇总数据的API和比对指标的yaml文件路径,str类型。<br>yaml文件详细介绍见下文“**yaml文件说明**”。 | 是 |
|
|
208
230
|
|
|
209
231
|
**yaml文件说明**
|
|
210
232
|
|
|
@@ -220,10 +242,10 @@ compare_index:
|
|
|
220
242
|
- MeanRelativeErr
|
|
221
243
|
```
|
|
222
244
|
|
|
223
|
-
| 参数名 | 说明
|
|
224
|
-
| -------------
|
|
225
|
-
| api | 表示需要汇总的API或module名称。如果没有配置,工具会提示报错。<br/>api名称配置格式为:`{api_type}.{api_name}.{API调用次数}.{前向反向}`<br/>须按顺序配置以上四个字段,可按如下组合配置:<br/> {api_type}<br/> {api_type}.{api_name}<br/> {api_type}.{api_name}.{API调用次数}<br/> {api_type}.{api_name}.{API调用次数}.{前向反向}<br/>这里的api指代API或module。
|
|
226
|
-
| compare_index | 表示需要汇总的比对指标。compare_index需为dump_mode对应比对指标的子集。如果没有配置,工具将根据比对结果自动提取dump_mode对应的全部比对指标进行汇总。<br>统计数据模式比对指标:Max diff、Min diff、Mean diff、
|
|
245
|
+
| 参数名 | 说明 |
|
|
246
|
+
| ------------- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
247
|
+
| api | 表示需要汇总的API或module名称。如果没有配置,工具会提示报错。<br/>api名称配置格式为:`{api_type}.{api_name}.{API调用次数}.{前向反向}`<br/>须按顺序配置以上四个字段,可按如下组合配置:<br/> {api_type}<br/> {api_type}.{api_name}<br/> {api_type}.{api_name}.{API调用次数}<br/> {api_type}.{api_name}.{API调用次数}.{前向反向}<br/>这里的api指代API或module。 |
|
|
248
|
+
| compare_index | 表示需要汇总的比对指标。compare_index需为dump_mode对应比对指标的子集。如果没有配置,工具将根据比对结果自动提取dump_mode对应的全部比对指标进行汇总。<br>统计数据模式比对指标:Max diff、Min diff、Mean diff、L2norm diff、MaxRelativeErr、MinRelativeErr、MeanRelativeErr、NormRelativeErr<br>真实数据模式比对指标:Cosine、EucDist、MaxAbsErr、MaxRelativeErr、One Thousandth Err Ratio、Five Thousandths Err Ratio |
|
|
227
249
|
|
|
228
250
|
**汇总结果件说明**
|
|
229
251
|
|
|
@@ -235,6 +257,26 @@ compare_index:
|
|
|
235
257
|
2. rank*列为多卡数据。
|
|
236
258
|
3. 不同比对指标的数据通过不同sheet页呈现。
|
|
237
259
|
4. 如果一个API或module在某张卡上找不到数据,汇总结果中将空白呈现。
|
|
260
|
+
5. 如果比对指标值为N/A,unsupported,Nan,表示无法计算该比对指标值,汇总结果将以”NPU:’NPU max值‘ Bench:’Bench max值‘“呈现。
|
|
261
|
+
6. 针对图示案例,此处NPU:N/A Bench:N/A表示output为None。
|
|
262
|
+
|
|
263
|
+
<br>
|
|
264
|
+
如何基于group信息查看分组数据:
|
|
265
|
+
|
|
266
|
+
以Distributed.all_reduce.0.forward为例。这个API将多卡数据规约操作,输出为一个group内的规约结果,同一个group内的输出保持一致。<br>这个API中,rank0-3为一个group,Distributed.all_reduce.0.forward.input.group展示为tp-0-1-2-3,rank0-3输出一致;rank4-7为一个group,展示为tp-4-5-6-7,rank4-7输出一致。<br>group除了这种形式,还有如[0, 1, 2, 3]的呈现形式。
|
|
267
|
+
|
|
268
|
+
<br>
|
|
269
|
+
常见通信API预期结果:
|
|
270
|
+
|
|
271
|
+
1. Distributed.all_gather:多卡数据汇总,每张卡输入可以不一致,同group内输出一致,输出是张量列表。
|
|
272
|
+
2. Distributed.all_gather_into_tensor:多卡数据汇总,每张卡输入可以不一致,同group内输出一致,输出是张量。
|
|
273
|
+
3. Distributed.all_reduce:多卡数据规约操作,每张卡输入可以不一致,同group内输出一致,为规约结果。
|
|
274
|
+
4. Distributed.reduce_scatter:多卡数据规约操作,每张卡输入可以不一致,输出为group内规约结果的不同部分,输入是张量列表。
|
|
275
|
+
5. Distributed.reduce_scatter_tensor:多卡数据规约操作,每张卡输入可以不一致,输出为group内规约结果的不同部分,输入是张量。
|
|
276
|
+
6. Distributed.broadcast:输入为要广播的数据,输出为广播后的数据。
|
|
277
|
+
7. Distributed.isend:点对点通信,输入为要发送的数据,输出为发送的数据。
|
|
278
|
+
8. Distributed.irecv:点对点通信,输入为原数据,输出为接收的新数据。
|
|
279
|
+
9. Distributed.all_to_all_single:输出数据为所有卡上的数据切分后合并的结果。
|
|
238
280
|
|
|
239
281
|
## 4 附录
|
|
240
282
|
|
|
@@ -255,20 +297,20 @@ compare_index:
|
|
|
255
297
|
多卡场景示例如下:
|
|
256
298
|
```json
|
|
257
299
|
{
|
|
258
|
-
"npu_path": "./npu_dump/step0",
|
|
259
|
-
"bench_path": "./bench_dump/step0",
|
|
300
|
+
"npu_path": "./npu_dump/step0", # 需填写到step层级(rank的上一层级)
|
|
301
|
+
"bench_path": "./bench_dump/step0", # 需填写到step层级(rank的上一层级)
|
|
260
302
|
"is_print_compare_log": true
|
|
261
303
|
}
|
|
262
304
|
```
|
|
263
305
|
|
|
264
306
|
**参数说明**
|
|
265
307
|
|
|
266
|
-
| 参数名 | 说明
|
|
267
|
-
| --------------------
|
|
268
|
-
| npu_path | 配置NPU环境下的dump.json
|
|
269
|
-
| bench_path | 配置CPU、GPU或NPU环境下的dump.json
|
|
270
|
-
| stack_path | 配置NPU dump目录下的stack.json文件。数据类型:str
|
|
271
|
-
| is_print_compare_log | 配置是否开启单个算子的日志打屏。可取值true或false,默认为true。关闭后则只输出常规日志。数据类型:bool
|
|
308
|
+
| 参数名 | 说明 | 是否必选 |
|
|
309
|
+
| -------------------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------|
|
|
310
|
+
| npu_path | 配置NPU环境下的dump.json文件(单卡场景)或dump目录(多卡场景)。跨框架场景指定为MindSpore的dump.json文件或dump目录。数据类型:str。 | 是 |
|
|
311
|
+
| bench_path | 配置CPU、GPU或NPU环境下的dump.json文件(单卡场景)或dump目录(多卡场景)。跨框架场景指定为PyTorch的dump.json文件或dump目录。数据类型:str。 | 是 |
|
|
312
|
+
| stack_path | 配置NPU dump目录下的stack.json文件。数据类型:str。如果没有配置stack_path,命令行-s参数不生效,程序自动识别是否存在stack.json文件,如存在,则比对结果中呈现NPU_Stack_Info,如不存在,则不呈现。如果配置了stack_path,比对结果中是否呈现NPU_Stack_Info则通过命令行参数-s来控制。 | 否 |
|
|
313
|
+
| is_print_compare_log | 配置是否开启单个算子的日志打屏。可取值true或false,默认为true。关闭后则只输出常规日志。数据类型:bool。 | 否 |
|
|
272
314
|
|
|
273
315
|
### 4.2 比对文件(kernel)
|
|
274
316
|
|
|
@@ -549,7 +591,7 @@ input_args、input_kwargs和output使用统一的命名规则,当值是list类
|
|
|
549
591
|
"md5": "28f8f74f"
|
|
550
592
|
}
|
|
551
593
|
]
|
|
552
|
-
}
|
|
594
|
+
}
|
|
553
595
|
```
|
|
554
596
|
,
|
|
555
597
|
初始名称为`Cell.network.module.NetworkWithLoss.forward.0`,`input_args`是`list`,长度为2,按照顺序命名为
|
|
@@ -622,4 +664,36 @@ yaml文件中只需配置MindSpore与PyTorch模型代码中功能一致但名称
|
|
|
622
664
|
|
|
623
665
|
模型代码示例:
|
|
624
666
|
|
|
625
|
-

|
|
667
|
+

|
|
668
|
+
|
|
669
|
+
### 4.7 比对文件(单点数据)
|
|
670
|
+
|
|
671
|
+
MindSpore动态图单卡场景示例如下:
|
|
672
|
+
```json
|
|
673
|
+
{
|
|
674
|
+
"npu_path": "./npu_dump/debug.json",
|
|
675
|
+
"bench_path": "./bench_dump/debug.json"
|
|
676
|
+
}
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
MindSpore动态图多卡场景(step0目录下包含debug.json文件)示例如下:
|
|
680
|
+
```json
|
|
681
|
+
{
|
|
682
|
+
"npu_path": "./npu_dump/step0",
|
|
683
|
+
"bench_path": "./bench_dump/step0"
|
|
684
|
+
}
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
MindSpore静态图场景(不区分单/多卡)示例如下:
|
|
688
|
+
```json
|
|
689
|
+
{
|
|
690
|
+
"npu_path": "./npu_dump/",
|
|
691
|
+
"bench_path": "./bench_dump/",
|
|
692
|
+
"map_dict": {"input": "x"},
|
|
693
|
+
"common": true
|
|
694
|
+
}
|
|
695
|
+
```
|
|
696
|
+
- `npu_path`表示NPU dump文件目录,可指定到./npu_dump/ 或者./npu_dump/step0 或者./npu_dump/step0/rank0 保证对应即可,比对结果保持相同目录结构。
|
|
697
|
+
- `bench_path`表示bench dump文件目录,指定同上。
|
|
698
|
+
- `common`表示开启MindSpore静态图单点保存比对,默认关闭。
|
|
699
|
+
- `map_dict`可用于当单点保存比对的`npy`文件名称不完全对应时,通过手动指定保证比对正确执行,比对指定名称对应,如{"input": "x"},则`input_float32_1.npy`会对应`x_float32_1.npy`。
|
|
@@ -12,13 +12,13 @@ msprobe 工具在 PyTorch 场景下提供溢出数据采集功能和溢出数据
|
|
|
12
12
|
|
|
13
13
|
### 1.2 接口介绍
|
|
14
14
|
|
|
15
|
-
溢出检测功能提供的接口与数据采集任务一致,详见[ PyTorch 场景的精度数据采集](./05.data_dump_PyTorch.md)中的"
|
|
15
|
+
溢出检测功能提供的接口与数据采集任务一致,详见[ PyTorch 场景的精度数据采集](./05.data_dump_PyTorch.md)中的"**接口介绍**"章节。
|
|
16
16
|
其中 PrecisionDebugger 中的 task 或是 config.json 中的 task 需要指定为 **overflow_check**,详见[配置文件介绍](./02.config_introduction.md)中的
|
|
17
17
|
"**1.1 通用配置介绍**"和"**1.5 task 配置为 overflow_check**"章节。
|
|
18
18
|
|
|
19
19
|
### 1.3 示例代码
|
|
20
20
|
|
|
21
|
-
溢出检测功能使用方式与数据采集任务一致,详见[ PyTorch 场景的精度数据采集](./05.data_dump_PyTorch.md)中的"
|
|
21
|
+
溢出检测功能使用方式与数据采集任务一致,详见[ PyTorch 场景的精度数据采集](./05.data_dump_PyTorch.md)中的"**示例代码**"章节。
|
|
22
22
|
|
|
23
23
|
### 1.4 结果文件介绍
|
|
24
24
|
|
|
@@ -26,7 +26,9 @@ msprobe 工具在 PyTorch 场景下提供溢出数据采集功能和溢出数据
|
|
|
26
26
|
|
|
27
27
|
### 1.5 其他说明
|
|
28
28
|
|
|
29
|
-
溢出数据采集功能在昇腾 NPU
|
|
29
|
+
溢出数据采集功能在昇腾 NPU 上支持饱和模式(仅支持 Atlas 训练系列产品)和 INF/NAN 模式。
|
|
30
|
+
|
|
31
|
+
INF/NAN 模式遵循 IEEE 754 标准,根据定义输出 INF/NAN 的计算结果。与之对应的饱和模式在计算出现溢出时,饱和为浮点数极值(+-MAX)。对于 CANN 侧配置,Atlas 训练系列产品,默认为饱和模式,且不支持使用 INF/NAN 模式;Atlas A2 训练系列产品,默认为 INF/NAN 模式,且不建议使用饱和模式。
|
|
30
32
|
|
|
31
33
|
INF/NAN 模式的使能方式如下:
|
|
32
34
|
|
|
@@ -11,21 +11,23 @@ export INF_NAN_MODE_ENABLE=1
|
|
|
11
11
|
export MS_ASCEND_CHECK_OVERFLOW_MODE="INFNAN_MODE"
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
**a**:在处理浮点数计算溢出问题时,NPU 当前支持两种溢出模式:INF/NAN 模式与饱和模式。INF/NAN 模式遵循 IEEE 754 标准,根据定义输出 INF/NAN 的计算结果。与之对应的饱和模式在计算出现溢出时,饱和为浮点数极值(+-MAX)。对于 CANN 侧配置,Atlas
|
|
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
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)。
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
## 1 接口介绍
|
|
20
20
|
|
|
21
|
-
溢出检测功能提供的接口与数据采集任务一致,详见MindSpore 场景的精度数据采集中的["
|
|
21
|
+
溢出检测功能提供的接口与数据采集任务一致,详见MindSpore 场景的精度数据采集中的["**接口介绍**"](./06.data_dump_MindSpore.md#6-接口介绍)章节。
|
|
22
22
|
|
|
23
23
|
需要注意,目前暂不支持动态图 "L1" level 下 primitive op 的溢出检测。
|
|
24
24
|
|
|
25
25
|
## 2 示例代码
|
|
26
26
|
|
|
27
|
-
溢出检测功能使用方式与数据采集任务一致,详见MindSpore 场景的精度数据采集中的["
|
|
27
|
+
溢出检测功能使用方式与数据采集任务一致,详见MindSpore 场景的精度数据采集中的["**示例代码**"](./06.data_dump_MindSpore.md#7-示例代码)节。
|
|
28
28
|
|
|
29
29
|
## 3 溢出检测结果文件介绍
|
|
30
30
|
|
|
31
|
-
溢出检测结果文件目录结构与含义与数据采集任务一致,但仅保存溢出 API 或 kernel 的真实数据或统计信息。详见MindSpore 场景的精度数据采集中的["**
|
|
31
|
+
溢出检测结果文件目录结构与含义与数据采集任务一致,但仅保存溢出 API 或 kernel 的真实数据或统计信息。详见MindSpore 场景的精度数据采集中的["**8. dump 结果文件介绍**"](./06.data_dump_MindSpore.md#8-dump-结果文件介绍)章节。
|
|
32
|
+
|
|
33
|
+
**说明**:在静态图 O2 编译等级下,若 MindSpore 版本为 2.4,或者 MindSpore 版本为 2.5,且未使用编包时添加了`--include-mod=adump`选项的 mindstudio-probe whl 包,则会产生 kernel_graph_overflow_check.json 中间文件,一般情况下无需关注。
|
|
@@ -26,13 +26,7 @@ Parse >>>
|
|
|
26
26
|
- 支持交互式指定 pkl 文件中 API 对应 dump 数据查看。
|
|
27
27
|
- 支持 API 进行可选层级比对和打印(统计级和像素级)。
|
|
28
28
|
|
|
29
|
-
Ctrl+C 可以退出 parse
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
msprobe -f pytorch parse
|
|
33
|
-
Parse >>> run vim cli.py
|
|
34
|
-
Parse >>> vim cli.py
|
|
35
|
-
```
|
|
29
|
+
Ctrl+C 可以退出 parse 交互式界面。
|
|
36
30
|
|
|
37
31
|
### 2.2 kernel 层级算子数据批量转换
|
|
38
32
|
|
|
@@ -109,7 +103,7 @@ vc -m my_dump_path -g golden_dump_path [-out output_path] [-cmp_path msaccucmp_p
|
|
|
109
103
|
| --------- | ------------------------------------------------------------ | -------- |
|
|
110
104
|
| -m | 待比对 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 |
|
|
111
105
|
| -g | 标杆 kernel dump 数据目录。如果比对单个算子,需要指定到 kernel dump 数据的 model_id 级目录;如果批量比对,则指定到 cad 转换后的 timestamp 级目录。 | 是 |
|
|
112
|
-
| -out | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/
|
|
106
|
+
| -out | 结果输出目录,须指定已存在的目录,默认为 ./parse_data/acl_batch_compare。未指定时保存在默认路径下,比对结束后会打印 log 提示输出结果存放路径。 | 否 |
|
|
113
107
|
| -cmp_path | 指定 msaccucmp 路径,默认路径为:/usr/local/Ascend/ascend-toolkit/latest/tools/operator_cmp/compare/msaccucmp.py | 否 |
|
|
114
108
|
|
|
115
109
|
输出结果:`batch_compare_{timestamp}.csv` 文件。
|
|
@@ -119,7 +113,7 @@ vc -m my_dump_path -g golden_dump_path [-out output_path] [-cmp_path msaccucmp_p
|
|
|
119
113
|
```bash
|
|
120
114
|
# 传入待比对数据目录以及标杆数据目录
|
|
121
115
|
Parse >>> vc -m ./my_dump_path -g ./golden_data_path
|
|
122
|
-
[INFO]Compare result is saved in : parse_data/
|
|
116
|
+
[INFO]Compare result is saved in : parse_data/acl_batch_compare/batch_compare_1707271118.csv
|
|
123
117
|
```
|
|
124
118
|
|
|
125
119
|
### 2.3 kernel 算子数据的 npy 转换
|
|
@@ -225,7 +219,7 @@ Statistic Info:
|
|
|
225
219
|
输入以下命令, 进行统计级和像素级比对。
|
|
226
220
|
|
|
227
221
|
```bash
|
|
228
|
-
cn -m my_data*.npy -g
|
|
222
|
+
cn -m my_data*.npy -g golden*.npy [-p num] [-al atol] [-rl rtol]
|
|
229
223
|
```
|
|
230
224
|
|
|
231
225
|
- 统计级比对:对 tensor 整体进行余弦值及相对误差的计算。
|
msprobe/docs/17.grad_probe.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
- 将模型权重的梯度数据导出。这种功能可以将模型权重的梯度值以统计量的形式采集出来,用以分析问题。
|
|
6
6
|
- 将两份梯度数据进行相似度对比。在有标杆问题中,可以确认训练过程中精度问题出现的step,以及抓取反向过程中的问题。
|
|
7
7
|
|
|
8
|
-
工具支持PyTorch版本:2.0/2.1/2.2;支持MindSpore版本:r2.3。暂不支持deepspeed的
|
|
8
|
+
工具支持PyTorch版本:2.0/2.1/2.2;支持MindSpore版本:r2.3。暂不支持deepspeed的ZeRO-1、ZeRO-2、ZeRO-3。
|
|
9
9
|
|
|
10
10
|
## 工具特性
|
|
11
11
|
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
|
|
66
66
|
+ 值分布:梯度数据落在各个区间的元素个数占总元素个数的比例。
|
|
67
67
|
+ bounds:一个列表,用来划分出区间以统计值分布。例如传入bounds = [-10, 0, 10],此时有一个 grad_value: Tensor = [9.3 , 5.4, -1.0, -12.3],依据 bounds 划分出 (-inf, -10]、(-10, 0]、(0, 10]、(10, inf) 四个区间,然后统计grad_value里的数据落在每个区间内的个数,得到 1、1、2、0。如下图所示:
|
|
68
|
+
|
|
68
69
|

|
|
69
70
|
|
|
70
71
|
2. 插入代码。示例代码如下:
|
|
@@ -70,15 +70,15 @@ PyTorch NPU在线精度比对是msprobe工具实现在PyTorch训练过程中直
|
|
|
70
70
|
| api_list | dump范围,dump_mode="list"时设置,需要Dump Aten Ir API名称,默认为None,Aten Ir API名称可以通过dir(torch.ops.aten)查看。 | 否 |
|
|
71
71
|
| dump_path| dump文件生成的路径。 | 是 |
|
|
72
72
|
| tag | 传入tag字符串,成为dump文件夹名一部分,默认为None。 | 否 |
|
|
73
|
-
| process_num | 多进程并发数,默认为0
|
|
73
|
+
| process_num | 多进程并发数,默认为0,最大不超过CPU核数的四分之一。 | 否 |
|
|
74
74
|
| debug | debug信息打印,默认为False。 | 否 |
|
|
75
75
|
### dump数据存盘说明
|
|
76
|
-
dump数据存盘目录名格式:`
|
|
76
|
+
dump数据存盘目录名格式:`msprobe_rankid_{timestamp}`。
|
|
77
77
|
|
|
78
78
|
子目录下包含1个比对结果csv文件、cpu和npudump数据目录,npu目录下包含Aten IR在NPU上的输入输出的dump数据,由于CPU的输入是直接使用NPU的输入执行,因此cpu目录下只包含执行输出的dump数据。
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
|
-
|
|
81
|
+
msprobe_rank4_20230911170521
|
|
82
82
|
├── compare_result_rank4_20230911170521.csv
|
|
83
83
|
├── cpu
|
|
84
84
|
│ ├── native_batch_norm_backward_10_output.0.npy
|