PaddleNLP icon indicating copy to clipboard operation
PaddleNLP copied to clipboard

albert静态图

Open ZTurboX opened this issue 3 years ago • 2 comments

请提出你的问题

Albert是否支持了静态图导出

ZTurboX avatar Oct 14 '22 01:10 ZTurboX

您好,2.4.1版本是直接转成静态图导出的

wawltor avatar Oct 18 '22 06:10 wawltor

您好,2.4.1版本是直接转成静态图导出的

报错信息:

The behavior of expression A + B has been unified with elementwise_add(X, Y, axis=-1) from Paddle 2.0. If your code works well in the older versions but crashes in this version, try to use elementwise_add(X, Y, axis=0) instead of A + B. This transitional warning will be dropped in the future.
  op_type, op_type, EXPRESSION_MAP[method_name]))
Traceback (most recent call last):
  File, line 31, in <module>
    main()
  File line 27, in main
    paddle.jit.save(model, './checkpoints/albert/inference')
  File "<decorator-gen-101>", line 2, in save
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\wrapped_decorator.py", line 25, in __impl__
    return wrapped_func(*args, **kwargs)
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\dygraph\base.py", line 40, in __impl__
    return func(*args, **kwargs)
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\dygraph\jit.py", line 744, in save
    inner_input_spec)
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 517, in concrete_program_specify_input_spec
    *desired_input_spec)
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 427, in get_concrete_program
    concrete_program, partial_program_layer = self._program_cache[cache_key]
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 744, in __getitem__
    self._caches[item] = self._build_once(item)
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 735, in _build_once
    **cache_key.kwargs)
  File "<decorator-gen-99>", line 2, in from_func_spec
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\wrapped_decorator.py", line 25, in __impl__
    return wrapped_func(*args, **kwargs)
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\dygraph\base.py", line 40, in __impl__
    return func(*args, **kwargs)
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 689, in from_func_spec
    error_data.raise_new_exception()
  File "E:\anaconda\envs\py37\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\error.py", line 336, in raise_new_exception
    six.exec_("raise new_exception from None")
  File "<string>", line 1, in <module>
TypeError: In transformed code:

    File "G:\paddlenlp\transformers\albert\modeling.py", line 1455, in forward
	return_dict=return_dict)
    File "G:\paddlenlp\transformers\albert\modeling.py", line 1135, in forward
	return_dict=return_dict)
    File "G:\paddlenlp\transformers\albert\modeling.py", line 459, in forward
	output_hidden_states=output_hidden_states)
    File "G:\paddlenlp\transformers\albert\modeling.py", line 376, in forward
	output_attentions=output_attentions,
    File "G:\paddlenlp\transformers\albert\modeling.py", line 319, in forward
	output_attentions=output_attentions,
    File "G:\paddlenlp\transformers\albert\modeling.py", line 238, in forward
	query_layer = self.transpose_for_scores(mixed_query_layer)
    File "G:\paddlenlp\transformers\albert\modeling.py", line 221, in transpose_for_scores
        # Copied from transformers.models.bert.modeling_bert.BertSelfAttention.transpose_for_scores
        def transpose_for_scores(self, x):
            new_x_shape = x.shape[:-1] + [
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <--- HERE
                self.num_attention_heads, self.attention_head_size
            ]
    TypeError: can only concatenate tuple (not "list") to tuple

动转静代码

def main():
    model = AlbertForMaskedLM.from_pretrained('./checkpoints/albert-chinese-tiny')
    model.eval()
    model = paddle.jit.to_static(
        model,
        input_spec=[
            paddle.static.InputSpec(
                shape=[None, None], dtype="int64"),
            paddle.static.InputSpec(
                shape=[None, None], dtype="int64"),
            paddle.static.InputSpec(
                shape=[None, None], dtype="int64")
    paddle.jit.save(model, './checkpoints/albert/inference')

ZTurboX avatar Oct 18 '22 08:10 ZTurboX

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

github-actions[bot] avatar Dec 18 '22 00: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 Jan 01 '23 00:01 github-actions[bot]