3. 环境准备:GPU服务器选型建议、CUDA与NVIDIA驱动安装、Docker与NVIDIA Container Toolkit配置、Python虚拟环境搭建
好,咱们进入实战前的最后一道工序——搭环境。
说实话,我见过太多人在这一步翻车了。明明代码写得没问题,结果跑起来报错说CUDA版本不对,或者Docker里找不到显卡。嗯,咱们今天就把这些坑一个个填平。
3.1 GPU服务器选型建议
先聊聊硬件。vLLM这玩意儿,说白了就是吃显存大户。你想想看,一个大模型光参数就要占几十GB,再加上KV Cache、中间激活值……显存不够?那根本跑不起来。
我个人习惯,选型时主要看三个指标:
- 显存容量:这是硬门槛。跑7B模型至少需要24GB,13B模型建议40GB以上,70B模型?老老实实上80GB的A100或H100吧。
- 显存带宽:直接影响推理速度。H100的HBM3带宽高达3.35TB/s,比A100的2TB/s快了近70%。
- 卡间互联:多卡部署时,NVLink比PCIe快得多。我遇到过客户用4张3090跑分布式,结果卡在PCIe带宽上,吞吐量还不如两张A100。
| GPU型号 | 显存 | 带宽 | 推荐场景 |
|---|---|---|---|
| RTX 4090 | 24GB GDDR6X | 1.0 TB/s | 单卡小模型、开发调试 |
| A100 80GB | 80GB HBM2e | 2.0 TB/s | 7B-13B模型单卡部署 |
| H100 80GB | 80GB HBM3 | 3.35 TB/s | 70B大模型、高并发场景 |
| L40S | 48GB GDDR6 | 864 GB/s | 性价比之选,适合中等规模 |
我的建议:如果预算有限,优先保证显存容量。带宽慢一点只是推理慢几毫秒,显存不够直接跑不了。
3.2 CUDA与NVIDIA驱动安装
驱动和CUDA的版本匹配,是新手最容易踩的坑。我曾经帮一个团队排查问题,折腾了两天,最后发现是驱动版本太老,不支持CUDA 12.1。
安装步骤:
- 检查当前驱动:
nvidia-smi看右上角的CUDA Version。注意,这个版本号只是驱动支持的最高CUDA版本,不代表已经安装了CUDA Toolkit。 - 卸载旧驱动(如果有):
sudo apt purge nvidia-* - 安装新驱动:推荐从NVIDIA官网下载.run文件,或者用
ubuntu-drivers autoinstall自动安装。 - 安装CUDA Toolkit:去NVIDIA官网下载对应版本的runfile或deb包。我个人习惯用runfile,因为可以指定安装路径,方便多版本共存。
# 查看显卡信息
nvidia-smi
# 安装CUDA 12.1(以runfile为例)
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run
# 配置环境变量
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
# 验证安装
nvcc --version
注意:vLLM目前对CUDA 11.8和12.1支持最好。别装太新的CUDA 12.4或12.5,有些算子还没适配。
3.3 Docker与NVIDIA Container Toolkit配置
Docker化部署是我强烈推荐的方式。为什么?因为环境隔离做得干净,换机器、换团队都能一键复现。
安装Docker:
# 安装Docker Engine
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 将当前用户加入docker组(避免每次sudo)
sudo usermod -aG docker $USER
newgrp docker
# 验证
docker run hello-world
安装NVIDIA Container Toolkit:
这一步是关键。没有它,Docker容器里根本认不出GPU。
# 添加NVIDIA仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# 安装
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 重启Docker服务
sudo systemctl restart docker
# 测试GPU是否可用
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
避坑指南:我曾经在Ubuntu 20.04上装nvidia-container-toolkit,结果发现默认源里的版本太旧,不支持--gpus参数。后来手动添加了NVIDIA官方源才解决。所以,一定要用官方源,别用系统自带的。
3.4 Python虚拟环境搭建
最后一步,Python环境。我见过有人直接在系统Python里pip install,结果把系统搞崩了。虚拟环境是基本素养。
推荐方案:conda
为什么用conda?因为它不光管Python包,还能管CUDA、cuDNN这些底层库。vLLM依赖的PyTorch版本和CUDA版本要严格匹配,conda能自动处理这些依赖关系。
# 安装Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 创建vLLM专用环境
conda create -n vllm_env python=3.10
conda activate vllm_env
# 安装PyTorch(以CUDA 12.1为例)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# 安装vLLM
pip install vllm
# 验证
python -c "import vllm; print(vllm.__version__)"
小技巧:如果你在多个项目间切换,可以用
conda env export > environment.yml导出环境配置,换机器时直接conda env create -f environment.yml一键复现。
嗯,到这里环境就全搭好了。你可以跑一个简单的测试:
# 测试vLLM是否能正常加载模型
python -m vllm.entrypoints.openai.api_server --model facebook/opt-125m
如果看到类似 INFO: Uvicorn running on http://0.0.0.0:8000 的输出,恭喜你,环境准备大功告成!