Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
hanjr b71baebcda | 1 month ago | |
---|---|---|
.. | ||
__init__.py | 3 months ago | |
convert_tensor.py | 2 months ago | |
debug_layer_info.py | 1 month ago | |
mstorch_enable.py | 2 months ago | |
pth2ckpt.py | 2 months ago | |
pytorch_enable.py | 2 months ago | |
readme.md | 6 months ago | |
replace_import_msadapter_old_version.sh | 6 months ago | |
replace_import_msadapter_to_mindtorch.sh | 6 months ago | |
replace_import_package.sh | 6 months ago | |
support_wrap_ops.yaml | 6 months ago | |
utils.py | 1 month ago |
工具名称 | 路经 | 功能说明 |
---|---|---|
替换导入包工具 | replace_import_package.sh | 该工具用于快速将工程代码中的导入包名从torch及torchvision替换成mindtorch中对应的包名。 |
替换导入包工具(msadapter->mindtorch) | replace_import_msadapter_to_mindtorch.sh | 该工具用于快速将工程代码中的导入包名从‘msadapter’替换成‘mindtorch’。 |
信息调试工具 | debug_layer_info.py | 该工具用于观察各网络层输入输出的信息,便于用户快速定位精度异常层,提升精度调试分析效率。 |
权重转换工具 | pth2ckpt.py | 该工具用于将Torch的权重文件转换为MindSpore的权重文件。 |
张量转换工具 | convert_tensor.py | 该工具用于将原生torch.utils.data.DataLoader 迭代输出的PyTorch张量数据转换成为MindSpore框架张量数据。 |
利用replace_import_package工具可快速完成工程代码中torch及torchvision相关导入包的替换。使用方法如下:
bash replace_import_package.sh [Project Path]
Project Path
为需要进行替换的工程路经,默认为"./"。
在最新版本上,导入包名已经从'msadapter'变更为'mindtorch'。 对于已经在之前版本中,使用'msadapter'作为导入包名的工程代码,可以使用replace_import_msadapter_to_mindtorch工具快速将导入包名从'msadapter'替换成‘mindtorch’。使用方法如下:
bash replace_import_msadapter_to_mindtorch.sh [Project Path]
Project Path
为需要进行替换的工程路经,默认为"./"。
当网络输出误差过大情况,可以结合我们提供的debug_layer_info
工具,观察各网络层输入输出的信息,便于快速定位精度异常网络层(Module),提升精度调试分析效率。
使用方式:
from mindtorch.tools import debug_layer_info
...
net = Net()
net.load_state_dict(torch.load(config_args.load_path))
net.eval()
debug_layer_info(net) # debug_layer_info(net, frame='torch') in original PyTorch script.
for X, y in train_data:
pred = net(x)
...
exit() # Just compare the first step
使用上,用户只需要在模型实例化对象后调用debug_layer_info
接口,即可输出模型内各层的输入输出信息。推荐在第一个step结束时直接exit()
程序,分别捕获MindTorch和PyTorch第一个step的推理信息并进行比较就可以确定精度异常的网络层。
debug_layer_info
接口包含以下属性,用户可根据需要自行配置:
model ([nn.Module]):期望输出debug信息的网络结构,当前仅支持torch.nn.Module, mindtorch.torch.nn.Module以及它们的派生类;
frame (String):用于指定执行框架,可选 "mindtorch" 和 "torch" ,在PyTorch脚本中运行时需显示指定为 "torch",默认值 "mindtorch";
type_info (Bool):打印输入输出的数据类型,可用于分析MindTorch脚本是否存在过程Tensor被转换为MindSpore原生Tensor的情况(预期网络执行过程中所有Tensor对象数据类型均为'mindtorch.torch.tensor.Tensor'
,如果出现Tensor类对象来自'mindspore.xxx'
的情况可调用x = mindtorch.torch.cast_to_adapter_tensor(x)
转换为MindTorch Tensor 对象,保证后续代码正常执行),默认值Fasle;
tensor_info (Bool):打印输入输出中Tensor对象的基本信息,包括Shape、Dtype、最大值、最小值和均值,默认值为True;
params_info (Bool):打印网络中的parameters和buffers的基础信息,包括Shape、Dtype、最大值、最小值和均值,默认值为True;
pth2ckpt.py
文件中的pth2ckpt
接口可以将PyTorch的权重文件转换为MindSpore的权重文件。使用方法如下:
from mindtorch.tools import pth2ckpt
path = './xx.pth'
pth2ckpt(path)
# "convert ckpt finish."
convert_tensor.py
文件中的convert_to_ms_tensor
方法是过渡阶段的Tensor转换接口。该接口用于将torch.utils.data.DataLoader
迭代输出的数据转换成为MindSpore框架张量数据。
在过渡阶段数据预处理和数据集相关接口和过程均使用torch原生接口,导入的包使用torch以及torchvision。为了避免导入包之间冲突请务必保证文件结构如下:
folder/
└── dataset_and_dataloader.py
└── model_and_train.py
其中dataset_and_dataloader.py
文件中编写数据预处理操作以及数据集处理,此时可以导入torch包进行处理。
from torch.utils.data.dataset import Dataset
from torch.utils.data.dataloader import DataLoader
dataset = make_dataset ...
train_dataloader = DataLoader(dataset)...
model_and_train.py
文件中编写模型文件和训练过程,此时可以导入MindTorch包进行处理。
该接口对迭代数据进行转换:
from mindtorch.tools import convert_to_ms_tensor
from dataset_and_dataloader import train_dataloader, test_dataloader
for x, y in train_dataloader:
x = convert_to_ms_tensor(x)
y = convert_to_ms_tensor(y)
model_train... or model_inference...
MindSpore对PyTorch接口的支持工具
Python Markdown
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》