2、环境准备:GPU服务器选型建议、CUDA与PyTorch环境安装、Docker与NVIDIA Container Toolkit配置

说实话,很多同学在学vLLM部署时,第一步就卡住了。不是模型不会配,而是环境压根没搭对。我见过太多人花了两天装驱动,最后发现CUDA版本和PyTorch对不上——那种感觉,嗯,挺崩溃的。

这一章,咱们就把地基打牢。你跟着我的节奏走,保证不走弯路。

2.1 GPU服务器选型:别花冤枉钱

先聊聊硬件。vLLM这玩意儿,说白了就是吃显存大户。模型参数一多,显存不够直接OOM(内存溢出),连个报错都来不及看。

核心原则:显存容量 > 显存带宽 > 计算核心数

我个人习惯,选卡时先算一笔账:

  • 7B模型(如Llama 2 7B):FP16精度下约14GB显存。加上KV Cache和中间激活,建议至少24GB。一张RTX 3090/4090就够了。
  • 13B模型:约26GB显存。建议40GB以上的卡,比如A100 40GB或两张3090。
  • 70B模型:约140GB显存。别想了,直接上多卡。A100 80GB × 2或H100。

我在项目中遇到过,有人用RTX 3060 12GB跑7B模型,结果batch size只能设1,推理速度慢得像蜗牛。你想想看,省那点钱,最后全搭在时间成本上了。

GPU型号 显存 推荐场景 参考价格(二手)
RTX 3090 24GB 7B模型单卡部署 约5000元
RTX 4090 24GB 7B模型 + 高吞吐 约12000元
A100 40GB 40GB 13B模型单卡 约20000元
A100 80GB 80GB 70B模型多卡 约35000元
H100 80GB 企业级高并发 约250000元

我的建议:如果只是学习和实验,RTX 3090性价比最高。24GB显存,二手才5000左右,跑7B模型绰绰有余。别一上来就追H100,那是给大厂准备的。

2.2 CUDA与PyTorch环境安装:版本匹配是门玄学

硬件选好了,接下来装软件。这里有个坑,我踩过不止一次——CUDA、cuDNN、PyTorch三者的版本必须严格匹配。不匹配?等着报错吧。

为什么会这样?因为PyTorch编译时绑定了特定版本的CUDA运行时库。你用PyTorch 2.0配CUDA 12.0,表面上看能装,但一跑模型就崩。

2.2.1 确定版本组合

我个人习惯,先查PyTorch官方文档,看它支持哪些CUDA版本。以当前主流组合为例:

  • PyTorch 2.0.x → CUDA 11.7 / 11.8
  • PyTorch 2.1.x → CUDA 11.8 / 12.1
  • PyTorch 2.2.x → CUDA 11.8 / 12.1

vLLM目前对PyTorch 2.0以上支持最好。我建议你直接用PyTorch 2.1 + CUDA 11.8,这个组合我验证过很多次,稳得很。

2.2.2 安装步骤

先装NVIDIA驱动。别用系统自带的nouveau开源驱动,那玩意儿跑不了CUDA。

# 1. 卸载旧驱动
sudo apt purge nvidia-*
sudo apt autoremove

# 2. 添加NVIDIA官方源
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt update

# 3. 安装CUDA 11.8
sudo apt install cuda-11-8

# 4. 配置环境变量
echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

# 5. 验证安装
nvcc --version
# 输出应为:Cuda compilation tools, release 11.8

注意:我曾经遇到过,装完CUDA后nvidia-smi显示的CUDA版本和nvcc版本不一致。别慌,nvidia-smi显示的是驱动支持的CUDA最高版本,nvcc才是你实际用的版本。只要nvcc版本对就行。

接下来装PyTorch。直接用pip,别用conda——conda的依赖解析太慢了,而且容易把系统搞乱。

# 安装PyTorch 2.1.0 + CUDA 11.8
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118

# 验证
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
# 输出应为:2.1.0+cu118 和 True

2.3 Docker与NVIDIA Container Toolkit配置:容器化部署的基石

环境搭好了,但咱们的目标是Kubernetes部署。你总不能在每台机器上都手动装一遍CUDA吧?Docker容器化就是来解决这个问题的。

说白了,Docker把环境打包成一个镜像,拿到哪都能跑。而NVIDIA Container Toolkit,就是让Docker容器能用上GPU。

2.3.1 安装Docker

# 1. 安装依赖
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release

# 2. 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 3. 添加稳定版源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 4. 安装Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

# 5. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 6. 验证
sudo docker run hello-world

小技巧:把当前用户加入docker组,以后就不用每次sudo了。

sudo usermod -aG docker $USER
newgrp docker

2.3.2 安装NVIDIA Container Toolkit

这一步很关键。没有它,Docker容器里是看不到GPU的。

# 1. 添加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

# 2. 安装
sudo apt update
sudo apt install nvidia-container-toolkit

# 3. 重启Docker
sudo systemctl restart docker

# 4. 验证:在容器中运行nvidia-smi
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi

如果看到GPU信息,说明配置成功了。嗯,这一步我当年折腾了整整一下午,最后发现是忘了重启Docker服务。

2.3.3 配置Docker默认运行时

为了让Kubernetes能自动识别GPU,我建议把nvidia设置为Docker的默认运行时。

# 编辑Docker daemon配置
sudo vim /etc/docker/daemon.json

# 添加以下内容
{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}

# 重启Docker
sudo systemctl restart docker

避坑指南:我曾经在Ubuntu 20.04上装nvidia-container-toolkit,结果报依赖错误。后来发现是系统源里没有libnvidia-container-tools这个包。解决办法:先装nvidia-docker2,它会自动拉依赖。

sudo apt install nvidia-docker2

2.4 本章知识体系

下面这张图,帮你理清整个环境准备的逻辑链条:

vLLM环境准备知识体系 GPU服务器选型 显存容量 → 显存带宽 → 计算核心数 RTX 3090(24GB) | A100(40/80GB) | H100(80GB) CUDA + PyTorch 环境安装 版本匹配是关键:PyTorch 2.1 + CUDA 11.8 nvcc --version 验证 | torch.cuda.is_available() 验证 Docker 容器化引擎 环境打包 → 跨平台一致性 docker run hello-world 验证 NVIDIA Container Toolkit 让Docker容器识别GPU硬件 docker run --gpus all nvidia/cuda nvidia-smi 验证

你看,整个流程是串行的。硬件选型不对,后面全白搭。CUDA版本不匹配,PyTorch跑不起来。Docker没配好,容器化部署就是空谈。每一步都踩实了,后面的Kubernetes部署才能顺风顺水。

好了,环境准备就到这里。你按这个流程走一遍,保证不会出幺蛾子。如果遇到问题,回头看看我标注的那些坑——都是真金白银换来的经验。


公众号:蓝海资料掘金营,微信deep3321