影响显存占用的关键参数
| 参数 | 作用 | 建议值 |
|---|---|---|
--gpu-memory-utilization | GPU 显存预留比例 | 单卡场景 0.85~0.9 |
--max-model-len | 最大上下文长度 | 按实际业务设置,避免过大浪费 |
--max-num-seqs | 同时处理的最大序列数 | 根据显存余量调整 |
--block-size | PagedAttention 分页大小 | 默认 16,一般无需更改 |
--swap-space | CPU 侧交换空间(GB) | 显存紧张时可设置 4~8 |
量化降低显存占用
对 7B 级别模型,FP16 大约需要 14GB 显存用于权重本身,加上 KV Cache 后往往超过消费级显卡容量。使用 AWQ 或 GPTQ 4-bit 量化可将权重显存需求降低到原来的 1/4 左右:
vllm serve Qwen/Qwen2.5-7B-Instruct-AWQ --quantization awq
提升吞吐的关键:Continuous Batching
vLLM 默认启用连续批处理,无需手动配置。但可以通过 --max-num-batched-tokens 控制单次调度的 token 总量,值越大吞吐越高,但延迟波动也会增加,需要根据 SLA 要求权衡。
多卡场景:张量并行
vllm serve meta-llama/Llama-3-70B-Instruct \
--tensor-parallel-size 4 \
--gpu-memory-utilization 0.9
--tensor-parallel-size 需与实际 GPU 数量匹配,且各卡显存尽量一致,否则会以最小显存的卡为瓶颈。
监控建议
结合 nvidia-smi -l 1 观察显存与利用率变化,同时关注 vLLM 自带的 /metrics Prometheus 端点,重点关注 num_requests_waiting 与 gpu_cache_usage_perc 两个指标,用于判断是否需要扩容或调整批处理参数。