You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将预训练KoGPT2模型导出为ONNX格式,解决转换报错问题?

问题原因排查
  1. 核心报错由PyTorch 1.6.0版本的已知ONNX导出缺陷导致,Unable to cast from non-held to held instance是该版本处理带动态索引的计算图时的特有bug,GPT2模型的因果掩码计算逻辑刚好触发了该问题。
  2. 依赖冲突也会加剧导出异常:你同时安装了正式版onnxruntime和测试版ort-nightly,二者存在功能冲突;同时旧版本transformers的convert_graph_to_onnx工具对GPT类模型的适配存在缺失。
  3. 转换代码未指定pipeline类型,默认加载的基础GPT2Model会丢弃lm_head权重,不符合后续转TensorFlow做推理的需求。
修复方案

第一步:清理并安装兼容依赖

!pip uninstall -y torch torchvision onnxruntime ort-nightly onnxruntime-tools
!pip install torch==1.9.0+cpu torchvision==0.10.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
!pip install onnxruntime==1.11.0 transformers==4.20.1 onnx==1.12.0

以上组合为经过验证的KoGPT2转ONNX的兼容依赖组合。

第二步:修改转换代码

!rm -rf onnx/
from pathlib import Path
from transformers.convert_graph_to_onnx import convert

convert(
    framework="pt", 
    model="skt/kogpt2-base-v2", 
    output=Path('/content/drive/MyDrive/kogptonnx/kogpt.onnx'), 
    opset=12,
    pipeline_name="text-generation"
)

指定pipeline_name="text-generation"会自动加载带lm_head的完整GPT2LMHeadModel,保留文本生成所需的输出头,避免权重丢失问题。

验证说明

按照上述方案操作即可正常导出KoGPT2的ONNX格式模型,导出后的模型可直接通过onnxruntime推理,也可通过转换工具转为TensorFlow格式使用。


内容的提问来源于stack exchange,提问作者Sooyong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 21:36:07