第二章 环境准备:GPU服务器选型与开发环境搭建
各位同学,咱们直接进入正题。这一章聊的是「地基」——没有合适的硬件和干净的环境,后面所有推理优化都是空中楼阁。我个人习惯先把服务器选型定下来,再谈软件栈,顺序别搞反了。
2.1 GPU服务器选型:A100、H100、L40S 怎么选?
先问个问题:你手头要部署的模型有多大?如果是 7B 以下的模型,其实 L40S 完全够用。但如果你要跑 70B 甚至 130B 的大家伙,那 H100 才是正解。我去年帮一家金融客户搭推理服务,他们一开始买了 L40S 跑 13B 模型,结果并发一上来显存就爆了——嗯,这就是选型没算清楚账。
下面这张表是我自己整理的对比,你直接拿去用:
| 指标 | A100 (80GB) | H100 (80GB) | L40S (48GB) |
|---|---|---|---|
| 显存带宽 | 2 TB/s | 3.35 TB/s | 864 GB/s |
| FP8 算力 | 不支持 | 1979 TFLOPS | 733 TFLOPS |
| 典型功耗 | 400W | 700W | 350W |
| 适合场景 | 70B 以下模型 | 130B+ 大模型 | 7B-13B 轻量推理 |
| 价格参考 | 约 15-20 万 | 约 30-40 万 | 约 6-8 万 |
我的建议:如果预算有限,优先考虑 A100。H100 虽然快,但价格翻倍不止。L40S 适合做边缘节点或低并发场景。
避坑指南:我曾经遇到过客户买了 H100 但电源功率不够,结果服务器频繁重启。H100 满载 700W,你至少得配 1600W 的电源模块,别省这个钱。
2.2 CUDA 与 PyTorch 环境搭建
环境搭建这事儿,说简单也简单,说坑也多。我建议你直接用 NVIDIA 官方推荐的版本组合。目前 vLLM 对 CUDA 12.1 和 PyTorch 2.1 支持最好。
安装步骤其实就三条命令:
# 安装 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
# 安装 PyTorch 2.1
pip install torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu121
# 验证安装
python -c "import torch; print(torch.cuda.is_available())"
小技巧:安装 CUDA 时记得取消勾选「Driver」选项,除非你确定要覆盖系统驱动。我一般只装 Toolkit 和 CUDA Samples。
为什么会这样?因为系统驱动版本和 CUDA Toolkit 版本可能不匹配。你想想看,如果驱动是 535,CUDA 是 12.1,其实完全兼容。但如果你装了 CUDA 自带的 530 驱动,反而可能把系统搞崩。
2.3 Docker 镜像准备:官方镜像 vs 自定义构建
我个人习惯用 Docker 部署推理服务。原因很简单——环境隔离、快速回滚、团队协作方便。vLLM 官方提供了 Docker 镜像,但说实话,那个镜像有点「重」。
咱们对比一下两种方案:
- 官方镜像:开箱即用,但包含很多你用不到的包,镜像体积 8GB+
- 自定义构建:只装必要组件,镜像可以压缩到 3GB 左右
我建议你这么做:先用官方镜像跑通流程,再根据实际需求裁剪。下面是我常用的 Dockerfile:
FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04
RUN apt-get update && apt-get install -y python3 python3-pip
# 安装 vLLM 核心依赖
RUN pip install vllm==0.4.0 torch==2.1.0
# 设置工作目录
WORKDIR /app
# 暴露端口
EXPOSE 8000
CMD ["python3", "-m", "vllm.entrypoints.openai.api_server"]
注意:自定义构建时,别忘了安装 nvidia-container-toolkit,否则 Docker 容器里用不了 GPU。我曾经因为这个排查了整整半天——嗯,说出来都是泪。
2.4 Python 虚拟环境与依赖安装
如果你不用 Docker,那 Python 虚拟环境就是你的救命稻草。我见过太多人直接在 base 环境里装包,最后依赖冲突到想砸电脑。
推荐用 conda 创建虚拟环境:
# 创建环境
conda create -n vllm_env python=3.10
# 激活环境
conda activate vllm_env
# 安装 vLLM
pip install vllm==0.4.0
# 安装其他依赖
pip install transformers accelerate sentencepiece
这里有个细节:vLLM 对 transformers 的版本有要求。我建议你安装时指定版本,别用最新版。目前 vLLM 0.4.0 搭配 transformers 4.36.0 最稳定。
避坑指南:千万别用 pip install vllm 不加版本号。我曾经在生产环境上遇到过,最新版 vLLM 和旧版 CUDA 不兼容,推理结果全是乱码。血的教训。
2.5 本章知识体系总览
下面这张图是我画的整体流程,你对照着看会更清楚:
说白了,这一章的核心就三件事:选对卡、装对驱动、配好环境。别小看这些基础工作,我见过太多人花几万块买了 GPU,结果因为环境问题折腾一周还没跑起来。
最后提醒一句:环境搭建完成后,记得跑一遍 vLLM 的官方示例,确认推理结果正确再上生产。我曾经跳过这步,结果模型输出全是乱码——嗯,那次加班到凌晨三点。