mindconverter

MindConverter是一种迁移工具,用于将模型脚本从PyTorch转换为Mindspore。 根据转换报告,只需稍作更改,用户便可以快速地将PyTorch模型迁移到Mindspore。

mindconverter.pytorch2mindspore(model, dummy_inputs, output_dir=None)[源代码]

实现PyTorch模型到MindSpore模型的快速等价迁移。

该方法可以将已经加载预训练权重信息的PyTorch模型实例,转换为等价的MindSpore模型脚本以及可加载的权重文件。

参数:

  • model (torch.nn.Module) - 加载权重的PyTorch模型实例。

  • dummy_inputs (tuple<torch.tensor>) - 由PyTorch模型的输入张量组成的元组。该元组中的张量数量,以及每个张量的Shape信息和DType信息和PyTorch模型所需的输入保持一致。

  • output_dir (str) - 生成的文件和转换报告的保存路径。如果没有设置,则默认使用 ./output 目录进行保存。默认值:None。

异常:

  • BaseConverterError - 由于不明确异常导致的转换异常。具体信息可在 mindconverter.log 中查看。

  • GraphInitFailError - 生成PyTorch计算图时发生异常。

  • FileSaveError - 保存转换生成的文件时发生异常。

  • GeneratorError - 生成MindSpore网络脚本代码时发生异常。

  • SubGraphSearchingError - 搜索重复子图时发生异常。

支持平台:

Ascend GPU

样例:

>>> 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)