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

使用Optimum Exporter导出Longformer模型至ONNX遇版本错误求助

解决LongformerForQuestionAnswering导出ONNX的MinimumVersionError问题

以下是针对你遇到问题的排查和解决步骤:

1. 检查自定义OnnxConfig的版本常量

你的自定义LongformerOnnxConfig类可能继承了父类的高版本要求,或者你自己硬编码了不符合当前环境的版本值。需要显式覆盖版本常量:

from optimum.exporters.onnx import QuestionAnsweringOnnxConfig

class LongformerOnnxConfig(QuestionAnsweringOnnxConfig):
    # 显式设置适配你当前Transformers版本的最小值
    MIN_TRANSFORMERS_VERSION = "4.39.3"

    # 实现必要的配置方法,比如generate_dummy_inputs
    def generate_dummy_inputs(self, framework: str = "pt", **kwargs):
        # 根据Longformer QA的输入格式生成dummy数据
        import torch
        return {
            "input_ids": torch.randint(0, self.config.vocab_size, (1, self.config.max_position_embeddings)),
            "attention_mask": torch.ones((1, self.config.max_position_embeddings), dtype=torch.long),
            "global_attention_mask": torch.zeros((1, self.config.max_position_embeddings), dtype=torch.long)
        }

2. 核对Optimum与Transformers版本兼容性

即便你当前Transformers是4.39.3,Optimum的版本可能对Transformers有严格的范围要求:

  • 执行pip show optimum查看当前Optimum版本
  • 比如Optimum 1.18.0要求Transformers >=4.33.0,<4.41.0,这个范围兼容4.39.3;但如果是Optimum 2.0.0+,可能要求Transformers >=4.40.0,此时你要么升级Transformers到4.40+,要么降级Optimum到1.x版本(比如1.19.0)。

3. 确保导出时传入自定义OnnxConfig

调用Optimum导出函数时,必须明确指定onnx_config参数为你的自定义实例,否则Optimum会尝试使用官方未支持的默认配置,触发版本错误:

from optimum.exporters.onnx import export
from transformers import LongformerForQuestionAnswering

model = LongformerForQuestionAnswering.from_pretrained("your-finetuned-model-path")
custom_onnx_config = LongformerOnnxConfig(model.config)

export(
    model=model,
    config=model.config,
    onnx_config=custom_onnx_config,
    output_dir="./exported_onnx",
    opset=13  # 根据你的ONNX runtime版本选择合适的opset
)

4. 排查Optimum内部的嵌套版本校验

部分Optimum组件会调用Transformers内部的版本校验,即便你覆盖了自定义配置的版本,仍可能触发错误。可临时调试跳过校验(仅用于定位问题,生产环境不建议):

# 在导出代码开头添加如下补丁
from transformers.utils import minimum_version
import transformers.utils

original_check = minimum_version
def patched_minimum_version(required_version, caller=None):
    pass

transformers.utils.minimum_version = patched_minimum_version

# 之后执行导出代码

如果跳过校验后能成功导出,说明是Optimum内部依赖的Transformers版本校验逻辑导致的问题,需回到步骤2调整版本适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:07:09