3、环境搭建:硬件要求与软件依赖
好,咱们正式开始动手之前,先把“家伙事儿”备齐了。环境搭建这事儿,说简单也简单,说坑也多。我见过不少同学,代码写得飞起,结果一跑就报错,最后发现是CUDA版本没对上。嗯,咱们今天就把这事一次说清楚。
3.1 硬件要求:你的机器够不够“硬”?
vLLM这玩意儿,说白了就是个“吃显存”的怪兽。你想想看,大模型动辄几十亿参数,全塞进显存里,那可不是闹着玩的。
GPU:首选NVIDIA,别无他选
目前vLLM只支持NVIDIA的GPU。AMD的卡?暂时别想了。我个人习惯用A100或H100做生产环境,但如果你只是学习或小规模测试,RTX 3090/4090也能凑合。
| GPU型号 | 显存 | 适合场景 |
|---|---|---|
| A100 (80GB) | 80GB | 生产环境,7B~70B模型 |
| V100 (32GB) | 32GB | 中等规模,7B模型 |
| RTX 4090 (24GB) | 24GB | 个人开发,7B以下模型 |
| RTX 3090 (24GB) | 24GB | 个人开发,7B以下模型 |
CPU与内存:别让CPU拖后腿
GPU负责计算,CPU负责调度。vLLM的调度器是跑在CPU上的,所以CPU也不能太弱。我建议至少8核以上,内存32GB起步。如果你要加载70B模型,内存建议128GB以上——因为模型加载时,会先解压到内存里。
3.2 软件依赖:版本对不上,一切白搭
软件依赖这块,我踩过的坑最多。说白了,就是版本匹配问题。CUDA、PyTorch、vLLM三者之间,版本必须“门当户对”。
CUDA:驱动与工具包
CUDA版本取决于你的显卡驱动。怎么查?命令行跑一下:
nvidia-smi
看右上角的“CUDA Version”。比如显示12.1,那你就装CUDA 12.x的工具包。我个人习惯用CUDA 12.1,因为兼容性最好。
PyTorch:跟着CUDA走
PyTorch版本必须和CUDA版本匹配。比如CUDA 12.1,就装PyTorch 2.1.x。怎么装?去PyTorch官网,选你的系统、CUDA版本,它会生成安装命令。
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121
嗯,这里要注意:别用conda装PyTorch,我试过几次,依赖解析慢得要命,还容易冲突。pip又快又稳。
vLLM安装:一行命令搞定?不一定
理论上,vLLM安装很简单:
pip install vllm
但实际中,我遇到过不少问题。比如编译时缺gcc、缺ninja。所以建议先装好这些:
# Ubuntu/Debian
sudo apt-get install build-essential cmake ninja-build
# CentOS/RHEL
sudo yum groupinstall "Development Tools"
sudo yum install cmake ninja-build
装完依赖,再跑pip install vllm。如果还报错,八成是CUDA版本不对。去vLLM的GitHub Issues里搜一下,基本都有答案。
3.3 验证:跑个Hello World
环境搭好了,怎么知道能不能用?跑个最简单的例子:
from vllm import LLM, SamplingParams
# 加载一个超小模型,比如Qwen2.5-0.5B
llm = LLM(model="Qwen/Qwen2.5-0.5B-Instruct")
# 设置采样参数
sampling_params = SamplingParams(temperature=0.7, top_p=0.9)
# 推理
outputs = llm.generate(["Hello, how are you?"], sampling_params)
# 打印结果
for output in outputs:
print(output.outputs[0].text)
如果能看到输出,恭喜你,环境搭建成功了!
- 模型加载不报错(显存够用)
- 推理速度正常(别卡死)
- 输出结果合理(不是乱码)
我曾经在验证这一步卡了半小时,因为忘了设置trust_remote_code=True。有些模型需要这个参数才能加载。所以,如果报错说“不受信任的代码”,加上这个参数:
llm = LLM(model="Qwen/Qwen2.5-0.5B-Instruct", trust_remote_code=True)
3.4 知识体系总览
下面这张图,帮你理清环境搭建的整个逻辑:
这张图把环境搭建分成了三层:硬件层、软件层、应用层。每一层都有对应的组件,而且层与层之间是依赖关系。说白了,硬件是地基,软件是砖瓦,应用是房子。地基不稳,房子就塌。
好了,环境搭建就聊到这儿。记住一句话:版本匹配是王道,显存够用是底线。下一节咱们开始玩真的——模型热加载。