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 本章知识体系
下面这张图,帮你理清整个环境准备的逻辑链条:
你看,整个流程是串行的。硬件选型不对,后面全白搭。CUDA版本不匹配,PyTorch跑不起来。Docker没配好,容器化部署就是空谈。每一步都踩实了,后面的Kubernetes部署才能顺风顺水。
好了,环境准备就到这里。你按这个流程走一遍,保证不会出幺蛾子。如果遇到问题,回头看看我标注的那些坑——都是真金白银换来的经验。
公众号:蓝海资料掘金营,微信deep3321