peft和pytorch不兼容

less than 1 minute read

Published:

最近在跑LoRA微调Stable Diffusion的时候,发现程序在最后加载LoRA权重时报错:

  File "/anaconda3/envs/lora/lib/python3.10/site-packages/peft/utils/save_and_load.py", line 445, in set_peft_model_state_dict
  load_result = model.load_state_dict(peft_model_state_dict, strict=False, assign=True)
  TypeError: Module.load_state_dict() got an unexpected keyword argument 'assign'

搜了一大圈之后才搞清楚原来assign关键字是在 Pytorch 2.1.x 新增的,而我自己的版本是 Pytorch 2.0.x,所以并没有这个参数…

解决方法是把peft版本降低到peft==0.12.0,这个版本是支持Pytorch 2.0.x的。 而从peft==0.13.0开始就引入了上述不兼容的代码。