THUDM / ChatGLM2-6B

ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型
Other
15.62k stars 1.85k forks source link

[BUG/Help] <title>dataclasses.FrozenInstanceError: cannot assign to field generation_max_length #494

Open leoluopy opened 10 months ago

leoluopy commented 10 months ago

Is there an existing issue for this?

Current Behavior

transformers/training_args.py", line 1712, in setattr raise FrozenInstanceError(f"cannot assign to field {name}") dataclasses.FrozenInstanceError: cannot assign to field generation_max_length ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) local_rank: 0

Expected Behavior

No response

Steps To Reproduce

  1. clone repo
  2. using train.sh to finetune

Environment

- OS:
- Python:
- Transformers:
- PyTorch:
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :

Anything else?

No response

leoluopy commented 10 months ago

这是报错: 哪位大佬碰到过: transformers/training_args.py", line 1712, in setattr raise FrozenInstanceError(f"cannot assign to field {name}") dataclasses.FrozenInstanceError: cannot assign to field generation_max_length ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) local_rank: 0

leoluopy commented 10 months ago

after reinstall all the python environment , the problem is sovled

night-is-yong commented 10 months ago

在参数解析中,传入了Seq2SeqTrainingArguments parser = HfArgumentParser((ModelArguments, DataTrainingArguments, Seq2SeqTrainingArguments))

可以查看源代码,在新版本中,Seq2SeqTrainingArguments是不可变的 @dataclass @add_start_docstrings(TrainingArguments.doc) class Seq2SeqTrainingArguments(TrainingArguments):

所以要解决这个问题,可以注释修改training_args的代码,或者在train.sh中指定相关的参数,初始化后就不能修改了

dijkstra-mose commented 6 months ago

python 库版本的问题,实在是太麻烦了。

mawentao007 commented 5 months ago

python 3.9下: finetune.py注释掉这两行 training_args.ddp_find_unused_parameters = False training_args.save_safetensors = False

shell脚本增加两行 --ddp_find_unused_parameters 0 \ --save_safetensors 0 \

原因应该是上面提过的,参数不能修改只能传递。

yzqxhhm commented 3 months ago

注释掉这一行又报其他错误

yzqxhhm commented 3 months ago

python 库版本的问题,实在是太麻烦了。

不是python库版本的问题,可以手动修改这个问题

GreenHornDong commented 3 months ago

可以手动把无法修改的参数进行赋值,或者继承TrainingArguments类,自己写一个类用来接收参数,TrainingArguments类的实体经过命令行解析参数以后,无法再次赋值,所以你可以在主文件定义相关参数并赋值,这样可以避免运行的时候赋值

xiahuadong1981 commented 2 months ago

上述方法都不行,以下方法可以解决问题。 pip install transformers==4.38.1 夏华东,2024-04-27