PaddleNLP icon indicating copy to clipboard operation
PaddleNLP copied to clipboard

ERNIE 3.0-Base 导出onnx

Open pengaoao opened this issue 2 years ago • 9 comments

请问这个怎么导出onnx呢? 使用paddle2onnx是需要pdmodel的,但是下载链接貌似只提供了ernie_3.0_base_zh.pdparams

pengaoao avatar Jul 18 '22 01:07 pengaoao

具体看一下这个文档,https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/ernie-3.0/deploy/paddle2onnx

wawltor avatar Jul 18 '22 02:07 wawltor

具体看一下这个文档,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

pengaoao avatar Jul 18 '22 02:07 pengaoao

目前动态图转成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)

wawltor avatar Jul 18 '22 02:07 wawltor

目前动态图转成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,看起来是脚本其他地方写错了?

pengaoao avatar Jul 18 '22 08:07 pengaoao

在上面的回复有提过,ernie-3.0的模型是一个预训练模型,需要经过场景数据来微调才能体现出效果,如果直接拿预训练模型直接来分类是不可以的 ,如果需要自己的场景进行分类,可以参考 https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/text_classification

wawltor avatar Jul 18 '22 08:07 wawltor

在上面的回复有提过,ernie-3.0的模型是一个预训练模型,需要经过场景数据来微调才能体现出效果,如果直接拿预训练模型直接来分类是不可以的 ,如果需要自己的场景进行分类,可以参考 https://github.com/PaddlePaddle/PaddleNLP/tree/develop/applications/text_classification 但是我是在clue数据集上运行的,就是将BASE导出onnx, 然后用你们提供的脚本评测了一下,1是出现上面那个错误,需要修改237,238行,2是修改之后acc是0.473

pengaoao avatar Jul 18 '22 08:07 pengaoao

在上面的回复有提过,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任务导出模型来预测的结果 image image

wawltor avatar Jul 18 '22 08:07 wawltor

有没有 paddle2onnx的 文本匹配例子啊?就是:text1 \t text2 \t label 这种

TestNLP avatar Aug 25 '22 12:08 TestNLP

目前所有 paddle2onnx的例子都是 单个句子分类,没有文本对的分类吗?

TestNLP avatar Aug 25 '22 12:08 TestNLP

This issue is stale because it has been open for 60 days with no activity. 当前issue 60天内无活动,被标记为stale。

github-actions[bot] avatar Dec 08 '22 06:12 github-actions[bot]

This issue was closed because it has been inactive for 14 days since being marked as stale. 当前issue 被标记为stale已有14天,即将关闭。

github-actions[bot] avatar Dec 22 '22 16:12 github-actions[bot]