ModuleNotFoundError: No module named ‘vllm.lora.peft_helper‘原因和解决方式
在使用llamafactory框架微调模型时,使用了unsloth和vllm,我已经安装了,但微调时出现报错如下:
File "/usr/local/miniconda3/envs/llama/lib/python3.10/site-packages/unsloth_zoo/vllm_lora_worker_manager.py", line 16, in <module>from vllm.lora.peft_helper import PEFTHelper
ModuleNotFoundError: No module named 'vllm.lora.peft_helper'
我cuda版本12.1,python版本3.10,torch版本2.4.0,几个关键包版本如下:
torch==2.4.0
transformers==4.48.3
triton==3.0.0
flash-attn==2.7.1.post4
xformers==0.0.27.post2
vllm==0.6.3.post1
vllm-flash-attn==2.6.1
unsloth==2025.3.18
unsloth_zoo==2025.3.16
出现No module named 'vllm.lora.peft_helper'
的原因顾名思义是unsloth_zoo引用的vllm不存在相关模块,这一般都是因为版本不匹配,在https://github.com/hiyouga/LLaMA-Factory/issues/4623 看到llamafactory作者给出的解决方案也是升级vllm版本。
但是我尝试pip install -U vllm
,却没有匹配的vllm版本,我也不想再去尝试别的torch和cuda版本,因此在当前版本进行修改:
打开/usr/local/miniconda3/envs/llama/lib/python3.10/site-packages/unsloth_zoo/vllm_lora_worker_manager.py
对应的文件,注释掉from vllm.lora.peft_helper import PEFTHelper
,以及接下来引用到PEFTHelper
的部分,我的是以下三行:
python peft_helper = PEFTHelper.from_local_dir(lora_path, self.max_position_embeddings) peft_helper = PEFTHelper.from_dict(lora_request.config) peft_helper.validate_legal(self.lora_config)
再运行就可使用了,在我的运行场景中是不会报错的,不知道其它场景是否可以这么操作(我只用了普通有监督Lora微调、flash-attn和unsloth加速、Qlora微调、RLHF,以及导出)