Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

'GPT2Decoder' object has no attribute 'decoder' #4

Open
jinghaoliu opened this issue Oct 25, 2022 · 5 comments
Open

'GPT2Decoder' object has no attribute 'decoder' #4

jinghaoliu opened this issue Oct 25, 2022 · 5 comments

Comments

@jinghaoliu
Copy link

Hi Aaron, thank you for your great work. I tried to train for IU X-Ray data. But the program returns this error:

AttributeError
'GPT2Decoder' object has no attribute 'decoder'
File "/media/data/cvt2distilgpt2/transmodal/utils.py", line 234, in _getattr
return getattr(obj, attr, *args)
File "/media/data/cvt2distilgpt2/transmodal/utils.py", line 235, in rgetattr
return functools.reduce(_getattr, [obj] + attr.split('.'))
File "/media/data/cvt2distilgpt2/transmodal/model.py", line 684, in configure_optimizers
named_params = rgetattr(self, k).named_parameters()
File "/media/data/lcvt2distilgpt2/main.py", line 48, in objective
trainer.fit(transmodal, datamodule=dataset)
File "/media/data/cvt2distilgpt2/main.py", line 65, in main
objective(config)
File "/media/data/cvt2distilgpt2/main.py", line 175, in
main(clargs)

I debug the bug, GPT2Decoder only has a similar attribute named 'encoder_decoder'. I suspect the problem is caused by the huggingface checkpoint version not matching your codes. Because the same error also exists in predict mode.

I used your latest repository and installed all needed packages with your pip requirements.txt.

transformers==4.15.0
download CvT2DistilGPT2 checkpoint from your website.
download DistilGPT2 checkpoint from huggingface.
download CvT-21 Checkpoint from Microsoft
download Bert-base-uncased checkpoint from huggingface
download chexbert from stanfordmlgroup repository

@anicolson
Copy link
Member

Hi jinghaoliu,

I think I know the issue, I'll fix it and then get back to you. Shouldn't take too long.

@anicolson
Copy link
Member

There was an error in the configuration file. I've pushed an update, but the error was caused by lines 131 and 140 of https://github.com/aehrc/cvt2distilgpt2/blob/main/config/cvt_21_to_distilgpt2.py (which has been updated).

Thanks for letting me know about this issue. If there are any more issues please let me know.

@jinghaoliu
Copy link
Author

Hi Aaron,

I have modified these codes according to your reply. The same codes need to be modified :(https://github.com/aehrc/cvt2distilgpt2/blob/main/task/iu_x_ray_chen/config/cvt_21_to_distilgpt2_scst.py
and
https://github.com/aehrc/cvt2distilgpt2/blob/main/task/mimic_cxr_jpg_chen/config/cvt_21_to_distilgpt2_scst.py)

The error has been solved by modifying these codes, but I am facing a new error. It still seems to be related to the previous error:

TypeError
'DummyEncoder' object is not callable
File "/media/data/cvt2distilgpt2/transmodal/generate.py", line 141, in sample_log_probs
outputs = decoder(
File "/media/data/cvt2distilgpt2/transmodal/generate.py", line 81, in generate
return sample_log_probs(
File "/media/data/cvt2distilgpt2/transmodal/network/gpt2decoder.py", line 139, in generate
return generate(
File "/media/data/cvt2distilgpt2/transmodal/model.py", line 295, in generate
outputs = getattr(self, i).generate(
File "/media/data/cvt2distilgpt2/transmodal/model.py", line 567, in self_critical_step
sample = self.generate(
File "/media/data/cvt2distilgpt2/transmodal/model.py", line 352, in training_step
return self.self_critical_step(batch, batch_idx)
File "/media/data/cvt2distilgpt2/main.py", line 49, in objective
trainer.fit(transmodal, datamodule=dataset)
File "/media/data/cvt2distilgpt2/main.py", line 66, in main
objective(config)
File "/media/data/cvt2distilgpt2/main.py", line 176, in
main(clargs)

@anicolson
Copy link
Member

Hi jinghaoliu,

There were a few issues in:

https://github.com/aehrc/cvt2distilgpt2/blob/main/transmodal/generate.py
https://github.com/aehrc/cvt2distilgpt2/blob/main/transmodal/model.py

I updated the code a bit after doing these experiments and did not test everything after the updates (silly me).

I have run the code through to completion, so it should also work for you now.

Please pull the latest version of the repo.

I hope this helps and please let me know if there are any more issues.

@jinghaoliu
Copy link
Author

Yes, it is very helpful. Thank you.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants