From 9af08a2a3e9e3689975e6323e703de889cb391fb Mon Sep 17 00:00:00 2001 From: yangxinxian <947098055@qq.com> Date: Fri, 4 Jul 2025 17:32:27 +0800 Subject: [PATCH 1/3] Update script_wrapper.py --- .../msprobe/pytorch/hook_module/script_wrapper.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debug/accuracy_tools/msprobe/pytorch/hook_module/script_wrapper.py b/debug/accuracy_tools/msprobe/pytorch/hook_module/script_wrapper.py index 7d4c3176dbf..136f0c99745 100644 --- a/debug/accuracy_tools/msprobe/pytorch/hook_module/script_wrapper.py +++ b/debug/accuracy_tools/msprobe/pytorch/hook_module/script_wrapper.py @@ -63,7 +63,8 @@ def wrap_compile_script_func(): hooks) # type: ignore[attr-defined] return _wrapped - torch._dynamo.convert_frame = _patched_convert_frame + import torch._dynamo.convert_frame as _cf_mod + _cf_mod.convert_frame = _patched_convert_frame def wrap_script_func(): -- Gitee From 80429b53f87cbaba072ace79b8eec552043f72c6 Mon Sep 17 00:00:00 2001 From: yangxinxian <947098055@qq.com> Date: Wed, 9 Jul 2025 17:31:16 +0800 Subject: [PATCH 2/3] Update 06.data_dump_MindSpore.md --- .../msprobe/docs/06.data_dump_MindSpore.md | 49 ++++++++++++++++++- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md b/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md index 4019c87acfb..28d287bc91d 100644 --- a/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md +++ b/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md @@ -100,7 +100,7 @@ start(model=None, token_range=None) #### 6.1.2 stop **功能说明**:停止精度数据采集。在 **start** 函数之后的任意位置添加。若 **stop** 函数添加在反向计算代码之后,则会采集 **start** 和该函数之间的前反向数据。 -若 **stop** 函数添加在反向计算代码之前,则需要将 [**step**](#613-step) 函数添加到反向计算代码之后,才能采集 **start** 和该函数之间的前反向数据。 +若 **stop** 函数添加在反向计算代码之前,则需要将 [**step**](#613-step) 函数添加到反向计算代码之后,才能采集 **start** 和该函数之间的前反向数据,参考[**采集指定代码块的前反向数据**](#7213-采集指定代码块的前反向数据)。 **仅未使用 Model 高阶 API 的动态图场景支持。** **注意**:**stop** 函数必须调用,否则可能导致精度数据落盘不全。 @@ -346,6 +346,51 @@ for data, label in data_loader: ##### 7.2.1.2 使用 Model 高阶 API +```python +import mindspore as ms +from mindspore.train import Model +ms.set_context(mode=ms.PYNATIVE_MODE, device_target="Ascend") + +from msprobe.mindspore import PrecisionDebugger +from msprobe.mindspore.common.utils import MsprobeStep +debugger = PrecisionDebugger(config_path="./config.json") + +# 模型、损失函数的定义以及初始化等操作 +# ... + +model = Network() +# 只有进行 L0 级别下 Cell 对象,mix 级别,L1 级别下 primitive op 的数据采集时才需要调用 +# debugger.start(model) +trainer = Model(model, loss_fn=loss_fn, optimizer=optimizer, metrics={'accuracy'}) +trainer.train(1, train_dataset, callbacks=[MsprobeStep(debugger)]) +``` + +##### 7.2.1.3 采集指定代码块的前反向数据 + +```python +import mindspore as ms +from mindspore.train import Model +ms.set_context(mode=ms.PYNATIVE_MODE, device_target="Ascend") + +from msprobe.mindspore import PrecisionDebugger +from msprobe.mindspore.common.utils import MsprobeStep +debugger = PrecisionDebugger(config_path="./config.json") + +# 模型、损失函数的定义及初始化等操作 +# ... +# 数据集迭代的位置一般为模型训练开始的位置 +for data, label in data_loader: + debugger.start() # 开启数据dump + # 如下是模型每个step执行的逻辑 + output = model(data) + + debugger.stop() # 插入该函数到start函数之后,只dump start函数到该函数之间的前反向数据,可以支持start-stop-start-stop-step分段采集。 + # ... + loss.backward() + debugger.step() # 结束一个step的dump +``` + + ```python import mindspore as ms from mindspore.train import Model @@ -518,7 +563,7 @@ dump 结果目录结构示例如下: * `dump.json`: 保存API或Cell前反向数据的统计量信息。包含dump数据的API名称或Cell名称,各数据的dtype、 shape、max、min、mean、L2norm(L2范数,平方根)统计信息以及当配置summary_mode="md5"时的CRC-32数据。具体介绍可参考[dump.json文件说明](./27.dump_json_instruction.md#2-mindspore-场景下的-dumpjson-文件)。 * `dump_error_info.log`: 仅在dump工具报错时拥有此记录日志,用于记录dump错误日志。 * `stack.json`:API/Cell的调用栈信息。 -* `construct.json`:分层分级结构,level为L1时,construct.json内容为空。 +* `construct.json`:根据model层级展示分层分级结构,level为L1时,construct.json内容为空。 dump 过程中,npy 文件在对应API或者模块被执行后就会落盘,而 json 文件则需要在正常执行 PrecisionDebugger.stop() 后才会写入完整数据,因此,程序异常终止时,被执行API对应的 npy 文件已被保存,但 json 文件中的数据可能丢失。 -- Gitee From 7ec55f59e1cb6bba4889f093178a7925585f17df Mon Sep 17 00:00:00 2001 From: yangxinxian <947098055@qq.com> Date: Wed, 9 Jul 2025 17:36:32 +0800 Subject: [PATCH 3/3] Revert "Update 06.data_dump_MindSpore.md" This reverts commit 80429b53f87cbaba072ace79b8eec552043f72c6. --- .../msprobe/docs/06.data_dump_MindSpore.md | 49 +------------------ 1 file changed, 2 insertions(+), 47 deletions(-) diff --git a/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md b/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md index 28d287bc91d..4019c87acfb 100644 --- a/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md +++ b/debug/accuracy_tools/msprobe/docs/06.data_dump_MindSpore.md @@ -100,7 +100,7 @@ start(model=None, token_range=None) #### 6.1.2 stop **功能说明**:停止精度数据采集。在 **start** 函数之后的任意位置添加。若 **stop** 函数添加在反向计算代码之后,则会采集 **start** 和该函数之间的前反向数据。 -若 **stop** 函数添加在反向计算代码之前,则需要将 [**step**](#613-step) 函数添加到反向计算代码之后,才能采集 **start** 和该函数之间的前反向数据,参考[**采集指定代码块的前反向数据**](#7213-采集指定代码块的前反向数据)。 +若 **stop** 函数添加在反向计算代码之前,则需要将 [**step**](#613-step) 函数添加到反向计算代码之后,才能采集 **start** 和该函数之间的前反向数据。 **仅未使用 Model 高阶 API 的动态图场景支持。** **注意**:**stop** 函数必须调用,否则可能导致精度数据落盘不全。 @@ -346,51 +346,6 @@ for data, label in data_loader: ##### 7.2.1.2 使用 Model 高阶 API -```python -import mindspore as ms -from mindspore.train import Model -ms.set_context(mode=ms.PYNATIVE_MODE, device_target="Ascend") - -from msprobe.mindspore import PrecisionDebugger -from msprobe.mindspore.common.utils import MsprobeStep -debugger = PrecisionDebugger(config_path="./config.json") - -# 模型、损失函数的定义以及初始化等操作 -# ... - -model = Network() -# 只有进行 L0 级别下 Cell 对象,mix 级别,L1 级别下 primitive op 的数据采集时才需要调用 -# debugger.start(model) -trainer = Model(model, loss_fn=loss_fn, optimizer=optimizer, metrics={'accuracy'}) -trainer.train(1, train_dataset, callbacks=[MsprobeStep(debugger)]) -``` - -##### 7.2.1.3 采集指定代码块的前反向数据 - -```python -import mindspore as ms -from mindspore.train import Model -ms.set_context(mode=ms.PYNATIVE_MODE, device_target="Ascend") - -from msprobe.mindspore import PrecisionDebugger -from msprobe.mindspore.common.utils import MsprobeStep -debugger = PrecisionDebugger(config_path="./config.json") - -# 模型、损失函数的定义及初始化等操作 -# ... -# 数据集迭代的位置一般为模型训练开始的位置 -for data, label in data_loader: - debugger.start() # 开启数据dump - # 如下是模型每个step执行的逻辑 - output = model(data) - - debugger.stop() # 插入该函数到start函数之后,只dump start函数到该函数之间的前反向数据,可以支持start-stop-start-stop-step分段采集。 - # ... - loss.backward() - debugger.step() # 结束一个step的dump -``` - - ```python import mindspore as ms from mindspore.train import Model @@ -563,7 +518,7 @@ dump 结果目录结构示例如下: * `dump.json`: 保存API或Cell前反向数据的统计量信息。包含dump数据的API名称或Cell名称,各数据的dtype、 shape、max、min、mean、L2norm(L2范数,平方根)统计信息以及当配置summary_mode="md5"时的CRC-32数据。具体介绍可参考[dump.json文件说明](./27.dump_json_instruction.md#2-mindspore-场景下的-dumpjson-文件)。 * `dump_error_info.log`: 仅在dump工具报错时拥有此记录日志,用于记录dump错误日志。 * `stack.json`:API/Cell的调用栈信息。 -* `construct.json`:根据model层级展示分层分级结构,level为L1时,construct.json内容为空。 +* `construct.json`:分层分级结构,level为L1时,construct.json内容为空。 dump 过程中,npy 文件在对应API或者模块被执行后就会落盘,而 json 文件则需要在正常执行 PrecisionDebugger.stop() 后才会写入完整数据,因此,程序异常终止时,被执行API对应的 npy 文件已被保存,但 json 文件中的数据可能丢失。 -- Gitee