ghosthamlet / gpt2-ml-torch

Pytorch model for https://github.com/imcaspar/gpt2-ml
Apache License 2.0
79 stars 16 forks source link

触发了output_attentions的参数报错 #29

Closed RuoYear closed 2 years ago

RuoYear commented 2 years ago

您好,我在torch=1.12.0、transformers=4.21.2的环境下配置了mega-clue-tok的model,在generate.py调试到build_output,res=nlp()时出现了以下报错:

File "C:\Python\lib\site-packages\torch\nn\modules\module.py", line 1130, in _call_impl return forward_call(*input, **kwargs) TypeError: GPT2LMHeadModel.forward() got an unexpected keyword argument 'output_attentions'

而在尝试修改modeling_gpt2.py里包含这些参数、重新赋值时均如此,尝试改掉GPT2Model时则会报错提示缺少这个参数;各搜索引擎查了几乎都是提示降回3.x,请问是不是Pipeline里面不支持该参数,还是哪里传错值了?我可以怎么修复这个问题呢?烦请你指点。

ghosthamlet commented 2 years ago

需要在这个位置:https://github.com/ghosthamlet/gpt2-ml-torch/blob/master/gpt2_ml_torch/modeling_gpt2.py#L781 ,增加output_attentions参数,如果还是报错,应该是其他错误提示,不会是你发的这个提示: GPT2LMHeadModel.forward() got an unexpected keyword argument 'output_attentions', 最好可以贴一下你修改过的代码片段。

RuoYear commented 2 years ago

谢谢指点,代码在调试后都改回去了。 按您说的测试了下,output_attentions定义后还缺少一个output_hidden_states,全部默认参数为False之后可以顺利跑了,但最后报了个Numpy is not available,是不是还是因为显存不够?原ml就是因为显存不够才尝试改成CPU,并且尝试用Torch来测试,因为在Tensorflow的话会直接报显存不足。

RuoYear commented 2 years ago

问题已解决,原来是我的numpy版本为1.22.4,执行torch.from_numpy()时也会报这样的错误;

所以在执行“pip install numpy --upgrade”更新成1.23.2之后已经可以正常使用了,谢谢你。