从modelscope下载的torch模型怎么转化为onnx模型
时间: 2025-06-28 09:02:45 浏览: 12
### 如何将 ModelScope 上的 PyTorch 模型转换为 ONNX 格式
为了实现这一目标,首先需要加载来自 ModelScope 的预训练模型并将其设置为评估模式。接着定义一个示例输入张量用于导出过程中的形状推断。最后利用 `torch.onnx.export` 函数完成实际的转换工作。
```python
import torch
from modelscope import AutoModelForSequenceClassification, AutoTokenizer
# 加载预训练模型和分词器
model_name = 'damo/nlp_structbert_sentence-similarity_chinese-tiny'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# 设置模型为评估模式
model.eval()
# 构建虚拟输入数据
dummy_input_ids = torch.randint(low=0, high=30522, size=(1, 128), dtype=torch.long)
dummy_attention_mask = torch.ones_like(dummy_input_ids)
# 导出到 ONNX 文件
output_onnx_file = './sequence_classification_model.onnx'
with torch.no_grad():
symbolic_names = {0: 'batch_size', 1: 'max_seq_len'}
torch.onnx.export(
model,
args=((dummy_input_ids, dummy_attention_mask)),
f=output_onnx_file,
opset_version=11,
do_constant_folding=True,
input_names=['input_ids', 'attention_mask'],
output_names=['logits'],
dynamic_axes={
'input_ids': symbolic_names,
'attention_mask' : symbolic_names,
'logits' : symbolic_names
}
)
```
上述代码片段展示了如何从 ModelScope 下载指定名称的序列分类任务模型,并通过给定的参数配置将其保存为 `.onnx` 文件[^1]。
#### 验证导出后的 ONNX 模型
一旦成功导出了 ONNX 文件,则可以通过安装 onnxruntime 来验证新文件的有效性和性能:
```bash
pip install onnxruntime
```
然后编写如下 Python 脚本来测试已导出的 ONNX 模型:
```python
import numpy as np
import onnxruntime as ort
session = ort.InferenceSession('./sequence_classification_model.onnx')
outputs = session.run(None, {
'input_ids': np.array([list(range(128))], dtype=np.int64),
'attention_mask': np.ones((1, 128), dtype=np.int64)
})
print(outputs[0])
```
此脚本会读取之前生成的 ONNX 文件并通过提供一组固定的 token ID 和 attention mask 进行推理操作,最终打印预测的结果向量[^2]。
阅读全文
相关推荐











