mindconverter
- mindconverter.pytorch2mindspore(model, dummy_inputs, output_dir=None)
实现PyTorch模型到MindSpore模型的快速等价迁移。
该方法可以将已经加载预训练权重信息的PyTorch模型实例,转换为等价的MindSpore模型脚本以及可加载的权重文件。
参数:
model (torch.n.Module):加载权重的PyTorch模型实例。
dummy_inputs (tuple<torch.tensor>):由PyTorch模型的输入张量组成的元组。该元组中的张量数量,以及每个张量的Shape信息和DType信息和PyTorch模型所需的输入保持一致。
output_dir (str):生成的文件和转换报告的保存路径。如果没有设置,则默认使用 $PWD/output 目录进行保存。默认值:None。
异常:
BaseConverterError: 由于不明确异常导致的转换异常。具体信息可在 mindconverter.log 中查看。
GraphInitFailError: 生成PyTorch计算图时发生异常。
FileSaveError: 保存转换生成的文件时发生异常。
GeneratorError: 生成MindSpore网络脚本代码时发生异常。
SubGraphSearchingError: 搜索重复子图时发生异常。
样例:
>>> import torch >>> import numpy as np >>> from transformers import BertModel >>> from mindconverter import pytorch2mindspore >>> model = BertModel.from_pretrained("bert-base-uncased") >>> model.eval() ... >>> input_ids = np.random.uniform(0, 100, (1, 512)).astype(np.int64) >>> attention_mask = np.zeros((1, 512)).astype(np.int64) >>> token_type_ids = np.zeros((1, 512)).astype(np.int64) >>> dummy_inputs = (torch.tensor(input_ids), torch.tensor(attention_mask), torch.tensor(token_type_ids)) >>> with torch.no_grad(): ... model(*dummy_inputs) ... >>> output_dir = "./output" >>> pytorch2mindspore(model, dummy_inputs, output_dir)