L0、L1、mix级别的dump能力存在盲区,网络中的非API或module的输入输出不会被批量dump下来。单点保存提供类似np.save和print的功能和使用体验,可以保存指定的变量。同时针对大模型场景进行了增强,具备以下特性:
- 可保存变量的反向梯度结果。
- 能直接保存嵌套结构数据(如 list、dict),无需手动遍历。
- 自动分 Rank 保存。
- 可分 Step 保存数据。
- 多次调用时会自动计数。
- 可配置保存统计值(MindSpore静态图暂不支持)或者张量。
- 支持异步保存。
单点保存工具的使用过程中可能会涉及到工具跨文件使用的场景,具体使能方式见。
环境准备
约束
支持PyTorch和MindSpore框架。
"statistics" 任务子配置项:
"tensor" 任务无子配置项。
调用PrecisionDebugger.save,传入需要保存的变量,指定变量名称以及是否需要保存反向数据。接口入参说明详见或。
(以PyTorch场景为例,MindSpore场景只需要从msprobe.mindspore模块导包即可) 配置文件
初始化
初始化(无配置文件)
调用保存接口示例(以PyTorch代码为例,MindSpore使用方法相同)
分step保存数据(以PyTorch代码为例,MindSpore使用方法相同)
工具提供三个对外接口用于保存训练过程中的数据:
参数说明:
[object Object]: 数据保存目录路径[object Object]: 数据标识名称(将作为文件名前缀)[object Object]: 支持多种数据类型:[object Object]单个张量[object Object]嵌套结构(会自动展开保存)
使用示例:
参数说明:
[object Object]: 梯度保存目录路径[object Object]: 梯度标识名称(将作为文件名前缀)[object Object]: 必须是[object Object]类型
特别注意:
- 必须接收返回值并传回原计算图
- 此操作不会影响计算精度
使用示例:
功能说明:
- 递增训练步数计数器
- 控制数据保存到不同的step目录(如step0/, step1/等)
- 如果不调用,所有数据会保存到同一个step目录
使用示例:
"task" 配置为 "statistics" 场景 :在 dump 目录下会生成包含变量统计值信息的
[object Object]文件。[object Object]中统计值的key命名格式为[object Object]。"task" 配置为 "tensor" 场景 :除了在 dump 目录下生成包含变量统计值信息的
[object Object]文件外,还会在 dump 子目录[object Object]中保存张量二进制文件,文件名称格式为[object Object]。- variable_name: 传入save接口的变量名称。
- grad_flag: 反向数据标识,反向数据为"_grad",正向数据为""。
- count: 调用计数,多次以相同变量名称调用时的计数。
- indexes: 索引,在保存嵌套结构数据时的索引。例如:嵌套结构为
[object Object],"value2"的索引为"key2.0"。 - file_suffix:文件后缀,PyTorch场景为"pt",MindSpore场景为"npy"。
在指定目录 [object Object]下生成 [object Object]目录,目录下生成指定 [object Object]的npy文件,如果是save_grad接口调用,则会生成 [object Object]的npy文件。
如 [object Object] -> [object Object]。
或如 [object Object] -> [object Object]。
结构如下: