vllm部署大模型出现NameError: name ‘vllm_ops‘ is not defined问题
vllm部署大模型出现NameError: name ‘vllm_ops‘ is not defined问题
1、问题现象
在ubuntu系统中尝试使用vllm进行多GPU部署本地模型时,出现:
[rank0]: File "/usr/local/lib/python3.10/dist-packages/vllm/_custom_ops.py", line 118, in rms_norm
[rank0]: vllm_ops.rms_norm(out, input, weight, epsilon)
[rank0]: NameError: name 'vllm_ops' is not defined
2、问题原因
问题出在文件: /usr/local/lib/python3.10/dist-packages/vllm/_custom_ops.py,查看其源码时发现该文件在ops时没有正确处理异常,导致报错的原因与真实问题不一致,如下:
try:
from vllm._C import cache_ops as vllm_cache_ops
from vllm._C import ops as vllm_ops
except ImportError:
pass
将该行代码单独拷贝出来运行:
from vllm._C import ops as vllm_ops
出现真正的原因:
ImportError: libcudart.so.12: cannot open shared object file: No such file or directory
出现这个问题可能包含两个方面的内容(vllm默认是采用cuda 12.1编译)
已正确安装cuda但环境路径不对,比如未正确的设置PATH和LD_LIBRARY_PATH
未正确安装cuda版本,比如nvidia-smi命令中是12.4的版本,但与torch的cuda版本不一致(查看命令:torch.version),输出是2.3.0+cu118,其cuda版本为11.8,
3、解决问题
通过执行命令:find / -name ‘libcudart.so’,找到cuda的目录(或者没有),在lib64这个目录中会发现确实没有libcudart.so.12这个文件,此时可以根据nvidia-smi命令显示的CUDA版本去NVIDIA官网下载对应的cuda版本(CUDA Toolkit Archive | NVIDIA Developer),进行安装即可。
安装时在选择安装内容时,将默认的driver取消掉,其他默认
在选择是否更新时,选择upgrade all
在选择软链接时,可不选
设置环境变量路径
方法1:vim打开文件~/.bashrc,在末尾加上:
export PATH=/usr/local/cuda-12.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64:$LD_LIBRARY_PATH
路径/usr/local/cuda-12.0替换为你的实际路径
方法2:shell脚本写入~/.bashrc,将如下shell代码写入shell文件
echo 'PATH=/usr/local/cuda-12.4/bin:$PATH' >> ~/.bashrc
echo 'LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
路径/usr/local/cuda-12.0替换为你的实际路径
最后激活使其立即生效
source ~/.bashrc
验证,再次执行代码:
from vllm._C import ops as vllm_ops
参考资料
报错解决:libcudart.so.10.2: cannot open shared object file: No such file or directory_importerror: libcudart.so.10.2: cannot open shared-CSDN博客
CUDA Toolkit Archive | NVIDIA Developer
【Pytorch、torchvision、CUDA 各个版本对应关系以及安装指令】_torch和cuda对应关系-CSDN博客
更多推荐
所有评论(0)