首页 PaddleNLP 帖子详情
ERNIE导出inference model报错
收藏
快速回复
PaddleNLP 问答NLP部署 728 2
ERNIE导出inference model报错
收藏
快速回复
PaddleNLP 问答NLP部署 728 2

ERNIE转静态图模型导出inference model时,出现错误

导出代码如下

model = ErnieModelForTokenClassification.from_pretrained(
"./model/pretrain",
num_labels=44,
name='',
has_pooler=False)

x_spec = InputSpec(shape=[None, 15], dtype='int64', name='src_ids') # 动态 shape
y_spec = InputSpec(shape=[None, 15], dtype='int64', name='sent_ids')
model = P.jit.to_static(model, input_spec=[x_spec, y_spec])
path = "./model/inference_model/ner"
P.jit.save(model, path)

倘若to_static里面参数为空,to_static(model, input_spec=[]),将报错TypeError: forward() missing 1 required positional argument: 'src_ids'

倘若改为to_static(model, input_spec=[x_spec, y_spec]),将报错ValueError: The decorated function `forward` requires 0 arguments: [], but received 2 with (InputSpec(shape=(-1, 15), dtype=paddle.int64, name=None), InputSpec(shape=(-1, 15), dtype=paddle.int64, name=None)).

 

所以,有没有参数都有错,我觉得这是个bug

 

如果改用别的方式导出inference model,则batchsize的维度没法设置为None

0
收藏
回复
全部评论(2)
时间顺序
T
TiTiwung
#2 回复于2021-10

所用的项目地址是:https://github.com/PaddlePaddle/ERNIE/,动态图实现的ERNIE

0
回复
T
TiTiwung
#3 回复于2021-10

下面是设置两个参数的详细报错信息:
Traceback (most recent call last):
File "predict.py", line 19, in
P.jit.save(layer, path)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/wrapped_decorator.py", line 25, in __impl__
return wrapped_func(*args, **kwargs)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/base.py", line 40, in __impl__
return func(*args, **kwargs)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/jit.py", line 726, in save
inner_input_spec)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 491, in concrete_program_specify_input_spec
*desired_input_spec)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 392, in get_concrete_program
kwargs)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/function_spec.py", line 82, in unified_args_and_kwargs
raise ValueError(error_msg)
ValueError: The decorated function `forward` requires 0 arguments: [], but received 2 with (InputSpec(shape=(-1, 15), dtype=paddle.int64, name=None), InputSpec(shape=(-1, 15), dtype=paddle.int64, name=None)).

 

下面是设置0个参数的详细报错信息:

Traceback (most recent call last):
File "predict.py", line 22, in
P.jit.save(model, path)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/wrapped_decorator.py", line 25, in __impl__
return wrapped_func(*args, **kwargs)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/base.py", line 40, in __impl__
return func(*args, **kwargs)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/jit.py", line 726, in save
inner_input_spec)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 491, in concrete_program_specify_input_spec
*desired_input_spec)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 401, in get_concrete_program
concrete_program, partial_program_layer = self._program_cache[cache_key]
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 714, in __getitem__
self._caches[item] = self._build_once(item)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 705, in _build_once
class_instance=cache_key.class_instance)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/wrapped_decorator.py", line 25, in __impl__
return wrapped_func(*args, **kwargs)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/base.py", line 40, in __impl__
return func(*args, **kwargs)
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 661, in from_func_spec
error_data.raise_new_exception()
File "/usr/local/python3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/error.py", line 192, in raise_new_exception
six.exec_("raise new_exception from None")
File "", line 1, in
TypeError: In transformed code:

File "/usr/local/python3.7.0/lib/python3.7/site-packages/ernie/modeling_ernie.py", line 565, in forward (* user code *)
self).forward(*args, **kwargs)
TypeError: forward() missing 1 required positional argument: 'src_ids'

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户