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)