第二章 环境准备: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 本章知识体系总览

下面这张图是我画的整体流程,你对照着看会更清楚:

vLLM 环境准备知识体系 GPU 服务器选型 CUDA + PyTorch Docker 镜像 Python 虚拟环境 选型决定性能上限,环境决定稳定性下限

说白了,这一章的核心就三件事:选对卡、装对驱动、配好环境。别小看这些基础工作,我见过太多人花几万块买了 GPU,结果因为环境问题折腾一周还没跑起来。

最后提醒一句:环境搭建完成后,记得跑一遍 vLLM 的官方示例,确认推理结果正确再上生产。我曾经跳过这步,结果模型输出全是乱码——嗯,那次加班到凌晨三点。


专注资料整理