我正在尝试将HuggingFace变形金刚模型中的Pegasus新闻编辑室转换为ONNX格式。我遵循了Huggingface出版的指南。安装prereqs后,我运行了以下代码:
!rm -rf onnx/
from pathlib import Path
from transformers.convert_graph_to_onnx import convert
convert(framework="pt", model="google/pegasus-newsroom", output=Path("onnx/google/pegasus-newsroom.onnx"), opset=11)
得到了这些错误:
ValueError Traceback (most recent call last)
<ipython-input-9-3b37ed1ceda5> in <module>()
3 from transformers.convert_graph_to_onnx import convert
4
----> 5 convert(framework="pt", model="google/pegasus-newsroom", output=Path("onnx/google/pegasus-newsroom.onnx"), opset=11)
6
7
6 frames
/usr/local/lib/python3.6/dist-packages/transformers/models/pegasus/modeling_pegasus.py in forward(self, input_ids, attention_mask, encoder_hidden_states, encoder_attention_mask, head_mask, encoder_head_mask, past_key_values, inputs_embeds, use_cache, output_attentions, output_hidden_states, return_dict)
938 input_shape = inputs_embeds.size()[:-1]
939 else:
--> 940 raise ValueError("You have to specify either decoder_input_ids or decoder_inputs_embeds")
941
942 # past_key_values_length
ValueError: You have to specify either decoder_input_ids or decoder_inputs_embeds
我以前从未见过这种错误。有什么想法吗
Pegasus是一个^{} 模型,您不能使用此方法直接转换} 用于作为编码器模型的BERT。使用此方法可以转换任何仅编码器或仅解码器变压器模型
seq2seq
模型(编码器-解码器模型)。^{要转换
seq2seq
模型(编码器-解码器),您必须拆分它们并分别将它们转换为onnx和onnx。您可以遵循this guide(这是为T5完成的,T5也是seq2seq
模型)为什么会出现此错误?
转换PyTorch to onnx时
您需要向编码器和解码器separately提供一个伪变量。默认情况下,使用此方法进行转换时,它向编码器提供虚拟变量。由于此转换方法不接受此seq2seq模型的解码器,因此它不会向解码器提供虚拟变量,您将得到上述错误。
ValueError: You have to specify either decoder_input_ids or decoder_inputs_embeds
相关问题 更多 >
编程相关推荐