使用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
相关产品推荐
相关产品推荐

