您的位置:首页 > 娱乐 > 明星 > 网页后端开发_网上创业有什么好项目_青岛网络推广公司哪家好_seo建站技巧

网页后端开发_网上创业有什么好项目_青岛网络推广公司哪家好_seo建站技巧

2025/3/7 0:03:58 来源:https://blog.csdn.net/a66920164/article/details/145914198  浏览:    关键词:网页后端开发_网上创业有什么好项目_青岛网络推广公司哪家好_seo建站技巧
网页后端开发_网上创业有什么好项目_青岛网络推广公司哪家好_seo建站技巧

背景

原方案是通过移动硬盘安装linux双系统,需要使用时手动重启切换,但一是移动硬盘开机有概率识别不到,需要重新插拔,二是个人常用软件、登录账户都在window,切换麻烦,因此考虑通过wsl在window环境下搭建开发调试环境。

网上找到的资料都缺少了几个关键点导致安装不成功,因此在此梳理分享。

  • 首先给出结论:vllm运行的必要条件 – vllm编译版本(pip安装的0.7.3是cu121版本)、pytorch cuda版本、系统cuda版本,三者一致,缺一不可。

软件版本

window 11 专业版
WSL 版本: 2.4.11.0
WSL 镜像: Ubuntu 22.04
CUDA版本: 12.1.1
torch 版本: 2.5.1+cu121
vllm 版本: 0.7.3

搭建流程

开启hyper-v、安装wsl、wsl载入ubuntu镜像

未踩坑,自行搜索即可,此处省略。

安装cuda toolkit

有的资料里提到需要window + wsl 均需要安装相同版本的cuda
toolkit,但是我推测window只需要安装显卡驱动即可,因为之前尝试在linux下安装docker时,系统环境和docker环境中的toolkit版本不一致,运行并没有问题,兼cuda
toolkit只是工具库,实体机与虚拟机通信应当不会主动调用,因此作此猜想,暂未验证。
我的window环境中是已经存在cuda toolkit的,因此作为复现条件在此提及。

首先检查cuda toolkit是否安装(window、wsl相同):

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Mon_Apr__3_17:36:15_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.1, V12.1.105
Build cuda_12.1.r12.1/compiler.32688072_0

如果没有安装,在以下链接安装,需要注意CUDA版本, CUDA ToolKit下载链接
在这里插入图片描述

window下载安装WSL安装
如果下载很慢,可以使用这个工具并发下载 motrix

此处需要注意CUDA Toolkit版本和显卡驱动版本的关系,终端执行 nvidia-smi ,此处的CUDA Version 即为当前显卡驱动支持的最高CUDA版本。(注意,此处是支持的最高版本,而不是必须安装这个版本,vllm支持cuda 11.8、12.1,因此我安装cuda 12.1而非12.8)

Thu Feb 27 22:04:50 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 572.47                 Driver Version: 572.47         CUDA Version: 12.8     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                  Driver-Model | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|

显卡计算能力 || 计算能力与CUDA版本对应关系

此表格体现各显卡的计算能力和CUDA版本对应关系,可以以此查询目标显卡对CUDA的支持情况(计算能力并非计算性能,可以理解为硬件版本,相同数值的显卡能够支持一样的算子,对应支持CUDA版本相同)

下载安装成功后,执行 nvcc -V 应当能够显示正确的cuda版本。
如果在window环境提示找不到nvcc,需要将Cuda Toolkit安装目录下的bin目录添加到环境变量中,以我的环境为实例:
在这里插入图片描述
WSL下有以下异常情况:

  1. Command 'nvcc' not found, 先确认/usr/local/cuda/bin/nvcc -V 是否执行成功,如果执行成功,则说明是环境变量的问题,执行 vim ~/.bashrc ,在文件的底部插入以下行,随后:wq 退出,执行 source ~/.bashrc 生效,再次执行,应当可以正确执行;
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda:$CUDA_HOME
  1. nvcc -V 有打印,但显示的cuda版本与安装的toolkit版本不一致,这种情况是之前安装过其他版本的cuda toolkit,首先执行 whereis nvcc 确认当前索引的nvcc的位置,如果找到的nvcc只有版本不一致的这个,参考情况1添加环境变量。然后 ll /usr/local/ ,检查cuda索引的是否为预期的版本(此处的cuda通常为一个软链接,指向/etc/alternatives/cuda,而/etc/alternatives/cuda是一个指向目标版本的软链接,最好按照这个顺序排查),如果版本不一致,则执行以下操作,将预期的cuda-12x建立软链接为cuda:(此处示例为cuda 12.1版本)
rm /etc/alternatives/cuda
rm /etc/alternatives/cuda-12
rm /etc/alternatives/cufile.json
ln -s /usr/local/cuda-12.1 /etc/alternatives/cuda
ln -s /usr/local/cuda-12.1 /etc/alternatives/cuda-12
ln -s /usr/local/cuda-12.1/gds/cufile.json /etc/alternatives/cufile.json

此处执行完毕后,nvcc的问题应当解决,显示的版本与预期一致。

安装cudnn

CUDNN下载地址 这个页面需要登录下载,注册个邮箱账户即可,支持QQ邮箱。
选择对应版本,我这里选择下载tar包:
在这里插入图片描述下载后执行以下命令将包中文件复制到对应目录即可:(注意目录自己替换)

tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/lib/* /usr/local/cuda-12.1/lib64/
cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/include/* /usr/local/cuda-12.1/include/
安装 pytorch + vllm

首先创建虚拟环境(可选),这里直接使用python自带venv创建(miniconda并非必须)
建议先执行 sudo apt-get install python3-pip python3.10-dev python3.10-venv (我这里是python3.10,请自行替换)

python3 -m venv .venv
. .venv/bin/activate

进入虚拟环境后,执行 python3 -m pip install vllm 安装vllm,完成后尝试执行 vllm serve
这里需要注意,vllm默认未指定torch版本,而直接拉取的torch版本与当前环境安装的torch版本是不一致的,因此,如果到这步,直接尝试执行 vllm serve 会出现以下异常。

  File "/usr/local/lib/python3.12/dist-packages/vllm/utils.py", line 2196, in run_methodreturn func(*args, **kwargs)^^^^^^^^^^^^^^^^^^^^^File "/usr/local/lib/python3.12/dist-packages/vllm/worker/worker.py", line 155, in init_devicetorch.cuda.set_device(self.device)File "/usr/local/lib/python3.12/dist-packages/torch/cuda/__init__.py", line 478, in set_devicetorch._C._cuda_setDevice(device)File "/usr/local/lib/python3.12/dist-packages/torch/cuda/__init__.py", line 319, in _lazy_inittorch._C._cuda_init()
RuntimeError: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 500: named symbol not found
Traceback (most recent call last):File "<frozen runpy>", line 198, in _run_module_as_mainFile "<frozen runpy>", line 88, in _run_codeFile "/usr/local/lib/python3.12/dist-packages/vllm/entrypoints/openai/api_server.py", line 991, in <module>uvloop.run(run_server(args))File "/usr/local/lib/python3.12/dist-packages/uvloop/__init__.py", line 109, in runreturn __asyncio.run(^^^^^^^^^^^^^^File "/usr/lib/python3.12/asyncio/runners.py", line 195, in runreturn runner.run(main)^^^^^^^^^^^^^^^^File "/usr/lib/python3.12/asyncio/runners.py", line 118, in runreturn self._loop.run_until_complete(task)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "uvloop/loop.pyx", line 1518, in uvloop.loop.Loop.run_until_completeFile "/usr/local/lib/python3.12/dist-packages/uvloop/__init__.py", line 61, in wrapperreturn await main^^^^^^^^^^File "/usr/local/lib/python3.12/dist-packages/vllm/entrypoints/openai/api_server.py", line 947, in run_serverasync with build_async_engine_client(args) as engine_client:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3.12/contextlib.py", line 210, in __aenter__return await anext(self.gen)^^^^^^^^^^^^^^^^^^^^^File "/usr/local/lib/python3.12/dist-packages/vllm/entrypoints/openai/api_server.py", line 139, in build_async_engine_client       async with build_async_engine_client_from_engine_args(^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3.12/contextlib.py", line 210, in __aenter__return await anext(self.gen)^^^^^^^^^^^^^^^^^^^^^File "/usr/local/lib/python3.12/dist-packages/vllm/entrypoints/openai/api_server.py", line 233, in build_async_engine_client_from_engine_argsraise RuntimeError(
RuntimeError: Engine process failed to start. See stack trace for the root cause.

这个问题看vllm安装的文档、教程中均未提及,不知是什么原因,我在linux、wsl中安装都出现了这个问题,即torch默认版本与当前环境cuda版本不一致导致。

解决办法:卸载torch,从pytorch重新安装指定cuda版本的pytorch (环境中cuda版本)pytorch官网

在这里插入图片描述此处我们会发现,这里的cuda版本不全,没有需要的 (12.1) 版本,解决办法:手动修改此处提供下载命令中的cu118cu121 即可;(实际是提供了该版本下载的,但有可能不是最新版本)

python3 -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

如果下载太慢,可以把pip获取的下载链接复制出来,用前面提到的下载工具,单独下载torch这个whl文件,下载后直接 python3 -m pip install torch-2.5.1+cu121-cp310-cp310-linux_x86_64.whl 即可。

安装完成后,尝试引入torch,不报异常则成功:

root@DESKTOP-FISOKG5:/mnt/f/cuda/vllm# python
Python 3.10.12 (main, Feb  4 2025, 14:57:36) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>>

此时再次执行 vllm serve 提示的就是没有正确传入参数了,正确传入模型相关配置后,vllm正常运行。


转载声明:此博文未经本人允许,不得转载,请勿爬取

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com