今天记录一下,在 Ubuntu 22.04.5 LTS 上使用 Conda 虚拟环境安装 vLLM 框架来布署本地模型。
显卡是NVIDIA GeForce RTX 4090,操作系统为Ubuntu 22.04.5 LTS
执行nvidia-smi验证显卡驱动已安装最高支持12.2版本
执行nvcc -V验证cuda已安装12.1
执行conda --version验证conda 25.5.1已安装
配置 Conda 镜像仓库(国内源)添加阿里镜像频道:
逐条执行以下命令来添加常用的频道(包括主频道、free、r、msys2以及对于深度学习非常重要的 conda-forge 和 PyTorch 专属频道):
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main/ conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/free/ conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/r/ conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/msys2/ conda config --add channels https://mirrors.aliyun.com/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.aliyun.com/anaconda/cloud/pytorch/
检查一下你当前的Conda通道配置:conda config --show channels
Conda虚拟环境的创建
创建一个名为vllm_numpy_pytorch的虚拟环境,并指定 Python 版本(推荐 3.9-3.12):
conda create -n vllm_numpy_pytorch python=3.10 numpy=1.26.4 pytorch=2.1.0 torchvision=0.16.0 cudatoolkit=12.1 conda activate vllm_numpy_pytorch #激活,激活后,终端前缀会显示 (vllm_numpy_pytorch),表示环境已启用。
若已经存在旧环境,先退出删除重建
conda deactivate 退出
conda remove -n vllm_env --all 删除
安装vLLM依赖的关键库
conda install pytorch torchvision torchaudio cudatoolkit=12.1
若cudatoolkit=12.1安装失败,改用pip安装
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
PyTorch的验证
#验证PyTorch是否能正确识别GPU
python -c "import torch; print('PyTorch版本:', torch.__version__); print('CUDA可用:', torch.cuda.is_available()); print('CUDA版本:', torch.version.cuda); print('GPU设备:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'None')"
#检查当前PyTorch的构建配置 在Python环境中运行以下命令,查看当前PyTorch的构建配置:
python -c "import torch;print(torch.__config__.show())"
vllm的安装
若 PyTorch能正确识别GPU,vLLM依赖的关键库已经安装好了,准备安装vllm。
验证vllm版本号:
python -c "import vllm; print(vllm.__version__)"
若执行报错,就是未安装好
这里使用pip安装,适用于大多数场景,vLLM会自动选择与你的CUDA 和PyTorch 兼容的版本
pip install vllm==0.9.0 # 已知稳定版本
再次验证vllm版本号。
下载小模型
这里从魔搭社区下载Qwen2.5-0.5B用来测试
modelscope download --model Qwen/Qwen2.5-0.5B-Instruct
默认下载到: /home/admin1/.cache/modelscope/hub/models/Qwen/Qwen2.5-0.5B-Instruct
加载模型
vllm serve /home/admin1/.cache/modelscope/hub/models/Qwen/Qwen2.5-0.5B-Instruct --port 8000 --gpu-memory-utilization 0.3
#若遇到报错,根据具体情况修复依赖库。
#若遇到报错transformers版本不兼容
Qwen3模型要求transformers>=4.51.0, vllm>=0.8.5,你可以尝试升级或降级Transformers:
尝试降级transformers到 4.51.0 但注意可能引入新的不兼容
pip install "transformers==4.51.0" --upgrade
确认模型是否成功加载:
curl http://localhost:8000/v1/models
用curl调用测试模型问答:
curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ -d '{ "model": "/home/admin1/.cache/modelscope/hub/models/Qwen/Qwen2.5-0.5B-Instruct", "messages": [{"role": "user", "content": "介绍下杭州"}] }'
其它多模态模型
vllm serve /home/admin1/.cache/modelscope/hub/models/Qwen/Qwen2.5-VL-32B-Instruct \ --port 8001 \ --tensor-parallel-size 8 \ --gpu-memory-utilization 0.7 \ --swap-space 16
将vLLM服务启动命令修改为提供标准 OpenAI API 接口的形式
python3 -m vllm.entrypoints.openai.api_server \ --model /home/admin1/.cache/modelscope/hub/models/Qwen/Qwen2.5-VL-32B-Instruct \ --port 8001 \ --tensor-parallel-size 8 \ --gpu-memory-utilization 0.7 \ --swap-space 16 \ --served-model-name Qwen2.5-VL-32B-Instruct \ --host 0.0.0.0 \ --trust-remote-code \ --max-model-len 8192
curl -X POST "http://localhost:8001/v1/chat/completions" \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen2.5-VL-32B-Instruct", "messages": [{"role": "user", "content": "介绍下杭州"}] }'