2、vLLM环境搭建与基础配置:GPU环境检查、vLLM安装、模型下载与加载、基础推理测试
说实话,环境搭建这件事,看着简单,但坑是真不少。我刚开始搞vLLM那会儿,光装个环境就折腾了大半天。后来总结出一套流程,基本能一次搞定。今天就把这套东西掰开揉碎了讲给你听。
2.1 GPU环境检查:别急着装,先看看你的卡
装vLLM之前,第一件事就是确认你的GPU能不能干活。我见过太多人上来就pip install,结果跑起来才发现CUDA版本不对,白忙活一场。
先跑个命令看看家底:
nvidia-smi
这个命令会告诉你三件事:
- GPU型号 —— 比如A100、V100、RTX 3090这些
- CUDA版本 —— 比如12.1、11.8,这个很重要
- 显存大小 —— 决定了你能跑多大的模型
我个人习惯用这个命令看更详细的信息:
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.device_count()); print(torch.cuda.get_device_name(0))"
嗯,这里要注意一点:vLLM对显存要求不低。7B的模型至少需要16GB显存,13B的模型建议32GB以上。你想想看,如果显存不够,模型加载到一半就OOM了,多尴尬。
2.2 vLLM安装:选对版本很重要
装vLLM其实就一行命令,但版本选择有讲究。
pip install vllm
不过,我建议你指定版本安装。为什么?因为vLLM迭代太快,最新版可能跟你的CUDA版本不兼容。我曾经踩过这个坑——装了0.4.0版本,结果CUDA 11.8不支持,又得降级重装。
推荐的做法是这样的:
# 先查一下你的CUDA版本
nvcc --version
# 然后安装对应版本
pip install vllm==0.3.3 # CUDA 11.8 推荐
pip install vllm==0.4.2 # CUDA 12.1 推荐
装完之后,验证一下:
python -c "import vllm; print(vllm.__version__)"
没报错就说明装好了。就这么简单。
2.3 模型下载与加载:从HuggingFace到本地
模型下载,说白了就是从HuggingFace把权重拉到本地。但这里有个问题——模型文件动不动几十个G,下载慢不说,还容易断。
我推荐用 huggingface-cli 工具:
# 先装工具
pip install huggingface-hub
# 登录(需要token)
huggingface-cli login
# 下载模型
huggingface-cli download meta-llama/Llama-2-7b-chat-hf --local-dir ./models/llama2-7b
如果你网速慢,可以试试镜像站:
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download meta-llama/Llama-2-7b-chat-hf --local-dir ./models/llama2-7b
模型下载完后,用vLLM加载:
from vllm import LLM
# 加载模型
llm = LLM(
model="./models/llama2-7b",
tensor_parallel_size=1, # 单卡就设1
dtype="auto", # 自动选择精度
gpu_memory_utilization=0.9 # 显存利用率
)
tensor_parallel_size:多卡并行时设置,比如2张卡就设2gpu_memory_utilization:控制显存占用,默认0.9,显存不够可以调低dtype:推荐用"auto",vLLM会自动选float16或bfloat16
加载过程中,你会看到一堆日志输出。别怕,这是正常的。vLLM在初始化KV cache、分配显存。等看到 INFO 02-03 10:00:00 llm_engine.py:xxx 这样的日志,就说明加载完成了。
2.4 基础推理测试:跑通第一个对话
模型加载好了,来测一下能不能正常推理。我习惯先跑个简单的:
from vllm import SamplingParams
# 设置采样参数
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=512
)
# 准备输入
prompts = ["什么是大语言模型?"]
# 推理
outputs = llm.generate(prompts, sampling_params)
# 输出结果
for output in outputs:
print(output.outputs[0].text)
如果顺利的话,你会看到模型输出一段文字。嗯,到这里,你的vLLM环境就算搭好了。
不过,我建议你再测几个场景:
- 多轮对话:把历史对话拼到prompt里
- 长文本生成:把max_tokens设到2048,看看会不会崩
- 批量推理:一次传多个prompt,测测吞吐量
我曾经在批量推理上栽过跟头——一次传了100个prompt,结果显存爆了。后来发现是 gpu_memory_utilization 设得太高,调低到0.8就稳了。
2.5 知识体系总览
下面这张图,把整个环境搭建的流程串起来了。你跟着走,基本不会迷路:
这张图把整个流程串起来了。你跟着走,基本不会迷路。从GPU检查开始,到安装、下载、加载,最后跑通推理,每一步都有对应的命令和参数。
好了,环境搭好了,模型也能跑了。接下来你就可以开始玩vLLM的各种高级功能了——比如流式输出、量化推理、多卡并行这些。不过那是后面的事了,先把基础打牢再说。
公众号:蓝海资料掘金营,微信deep3321