大模型部署到生产环境,吞吐和显存是两道硬门槛。vLLM在这两个维度上表现稳定,核心是PagedAttention把KV Cache做分页管理,显存碎片问题被降级为页表管理,相同显存下能塞进更多并发请求。本文直接给出从安装、启动到压测的完整参数配置。
vLLM大模型推理部署的环境准备
部署前确认三件事:GPU驱动、CUDA版本、Python版本。vLLM推荐CUDA 12.1以上与Python 3.9-3.12,7B-8B模型建议显存不低于32GB。安装完成后先验证torch能否识别GPU,再启动服务。
pip install vllm
nvidia-smi
python -c "import torch; print(torch.cuda.get_device_name(0))"
启动命令与服务参数说明
用官方入口拉起OpenAI兼容服务,指定模型路径、并行卡数和显存利用率。
python -m vllm.entrypoints.openai.api_server \
--model /data/models/Qwen2.5-7B-Instruct \
--served-model-name qwen2.5-7b \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.9 \
--port 8000
tensor-parallel-size对多卡场景按模型层数切分,单卡部署填1。显存利用率建议0.85-0.95,给CUDA context和后续扩展留余量。
KV Cache量化降低长上下文显存开销
长对话场景里KV Cache占用会持续增长,是显存消耗的大头。vLLM 0.8及以上支持KV Cache量化,用FP8或INT8压缩缓存,显存占用下降,同卡能放更多序列。
python -m vllm.entrypoints.openai.api_server \
--model /data/models/Qwen2.5-7B-Instruct \
--kv-cache-dtype fp8 \
--max-model-len 32768
量化后生成质量损失可忽略,长上下文吞吐提升明显。若权重本身已是AWQ/GPTQ量化格式,直接加载权重即可,不再叠加KV量化,避免精度叠加损耗。
连续批处理与并发调度参数调整
vLLM默认开启continuous batching,请求到达即进入当前批次。生产环境调整三个参数:
- max-num-seqs:单批次最大序列数,显存充足时调大提升吞吐。
- max-num-batched-tokens:单批最大token总数,控制计算峰值。
- enable-chunked-prefill:长提示词拆块预填,降低首token延迟。
python -m vllm.entrypoints.openai.api_server \
--model /data/models/Qwen2.5-7B-Instruct \
--max-num-seqs 512 \
--max-num-batched-tokens 4096 \
--enable-chunked-prefill
长文档问答场景chunked-prefill收益明显,首token延迟可降低40%以上;短对话场景保持默认即可。
OpenAI兼容接口接入业务
服务启动后暴露/v1接口,业务端用OpenAI SDK换base_url即可对接,不需要改调用逻辑。
from openai import OpenAI
client = OpenAI(
api_key="EMPTY",
base_url="http://127.0.0.1:8000/v1"
)
resp = client.chat.completions.create(
model="qwen2.5-7b",
messages=[{"role": "user", "content": "请说明PagedAttention的原理"}],
temperature=0.7,
max_tokens=256
)
print(resp.choices[0].message.content)
压测基准与容量评估方法
上线前跑吞吐压测,用vLLM自带的benchmark脚本给出参考数据。
python benchmark/benchmark_throughput.py \
--model /data/models/Qwen2.5-7B-Instruct \
--num-prompts 500 \
--input-len 512 \
--output-len 256 \
--stream
参考值:单张A800下Qwen2.5-7B吞吐约700-1100 tokens/s;双卡张量并行下约为1.8倍。容量按公式估算:峰值并发数=吞吐tokens/s除单请求平均token耗时,再留30%余量。
vLLM部署链路把环境、参数、压测三件事固定下来,模型上线后调整点集中在量化方式和并发数,其余交给服务自身调度即可。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/vllm-da-mo-xing-tui-li-bu-shu-shi-jian-kvcache-liang-hua-yu/