PaddleNLP
PaddleNLP copied to clipboard
ERNIE 3.0-Base 导出onnx
请问这个怎么导出onnx呢? 使用paddle2onnx是需要pdmodel的,但是下载链接貌似只提供了ernie_3.0_base_zh.pdparams
具体看一下这个文档,https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-3.0/deploy/paddle2onnx
具体看一下这个文档,https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-3.0/deploy/paddle2onnx
https://bj.bcebos.com/paddlenlp/models/transformers/ernie_3.0/ernie_3.0_base_zh.pdparams 看了,这里下载了pdparams,但是缺少.pdmodel,哪里下载呢, paddle2onnx需要.pdmodel才能导出onnx
目前动态图转成onnx的模型流程是 动态图模型->静态图模型(.pdmodel) -> onnx模型,不过ernie-3.0模型是一个预训练模型,需要下游任务微调后的模型才具备使用价值。下面是具体的转成静态图模型的代码
import os
import paddle
from paddlenlp.transformers import AutoModel
model = AutoModel.from_pretrained('ernie-3.0-base-zh')
model.eval()
model = paddle.jit.to_static(
model,
input_spec=[
paddle.static.InputSpec(shape=[None, None],
dtype="int64"), # input_ids
paddle.static.InputSpec(shape=[None, None],
dtype="int64") # segment_ids
])
# Save in static graph model.
save_path = os.path.join("./static/", "inference")
paddle.jit.save(model, save_path)
目前动态图转成onnx的模型流程是 动态图模型->静态图模型(.pdmodel) -> onnx模型,不过ernie-3.0模型是一个预训练模型,需要下游任务微调后的模型才具备使用价值。下面是具体的转成静态图模型的代码
import os import paddle from paddlenlp.transformers import AutoModel model = AutoModel.from_pretrained('ernie-3.0-base-zh') model.eval() model = paddle.jit.to_static( model, input_spec=[ paddle.static.InputSpec(shape=[None, None], dtype="int64"), # input_ids paddle.static.InputSpec(shape=[None, None], dtype="int64") # segment_ids ]) # Save in static graph model. save_path = os.path.join("./static/", "inference") paddle.jit.save(model, save_path)
onnx导出来了,谢谢您,但是https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-3.0/infer.py脚本貌似有问题,237, 238行index写反了? 导出的onnx的模型第一个输入是input_ids,第二个是token_type_ids; 不修改会报错onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Non-zero status code returned while running Gather node. Name:'Gather_2' Status Message: indices element out of data bounds, idx=101 must be within the inclusive range [-4,3];修改之后,BASE模型"csl"任务的精度只有0.473,看起来是脚本其他地方写错了?
在上面的回复有提过,ernie-3.0的模型是一个预训练模型,需要经过场景数据来微调才能体现出效果,如果直接拿预训练模型直接来分类是不可以的 ,如果需要自己的场景进行分类,可以参考 https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/text_classification
在上面的回复有提过,ernie-3.0的模型是一个预训练模型,需要经过场景数据来微调才能体现出效果,如果直接拿预训练模型直接来分类是不可以的 ,如果需要自己的场景进行分类,可以参考 https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/text_classification 但是我是在clue数据集上运行的,就是将BASE导出onnx, 然后用你们提供的脚本评测了一下,1是出现上面那个错误,需要修改237,238行,2是修改之后acc是0.473
在上面的回复有提过,ernie-3.0的模型是一个预训练模型,需要经过场景数据来微调才能体现出效果,如果直接拿预训练模型直接来分类是不可以的 ,如果需要自己的场景进行分类,可以参考 https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/text_classification 但是我是在clue数据集上运行的,就是将BASE导出onnx, 然后用你们提供的脚本评测了一下,1是出现上面那个错误,需要修改237,238行,2是修改之后acc是0.473
你们提供的CLS是 82.63
CLS是 82.63是微调之后的,而不是直接使用ERNIE-3.0任务导出模型来预测的结果
有没有 paddle2onnx的 文本匹配例子啊?就是:text1 \t text2 \t label 这种
目前所有 paddle2onnx的例子都是 单个句子分类,没有文本对的分类吗?
This issue is stale because it has been open for 60 days with no activity. 当前issue 60天内无活动,被标记为stale。
This issue was closed because it has been inactive for 14 days since being marked as stale. 当前issue 被标记为stale已有14天,即将关闭。