vLLM 推理优化实践
·AI
vLLM 推理优化实践
在大模型落地过程中,推理性能直接决定了用户体验和运营成本。vLLM 作为高性能 LLM 推理引擎,提供了多种优化手段。
PagedAttention 原理
vLLM 的核心创新是 PagedAttention,它借鉴了操作系统的虚拟内存分页思想来管理 KV Cache:
# 传统方式:为每个请求预分配最大长度的连续内存
# vLLM:按需分配固定大小的 block,允许非连续存储
#
# Block Table 示例:
# Request 1: [Block 7, Block 2, Block 15, ...]
# Request 2: [Block 3, Block 9, ...]
好处:
- 减少内存浪费:不再需要预留最大长度的连续空间
- 提高并发:同样的 GPU 内存可以服务更多请求
- 支持内存共享:相同 prefix 的请求可以共享 KV Cache
部署配置优化
基础配置
python -m vllm.entrypoints.openai.api_server \
--model /path/to/model \
--tensor-parallel-size 2 \
--max-model-len 4096 \
--gpu-memory-utilization 0.9 \
--max-num-batched-tokens 8192
关键参数调优
| 参数 | 说明 | 建议 |
|---|---|---|
gpu-memory-utilization |
GPU 显存利用率 | 0.85-0.95 |
max-num-batched-tokens |
最大批处理 token 数 | 根据显存调整 |
max-num-seqs |
最大并发序列数 | 与业务 QPS 匹配 |
量化部署
GPTQ 量化可以在精度损失可控的情况下显著降低显存占用:
# 使用 GPTQModel 进行量化
from gptqmodel import GPTQModel, QuantizeConfig
quantize_config = QuantizeConfig(
bits=4,
group_size=128,
desc_act=True,
)
model = GPTQModel.from_pretrained(
model_name,
quantize_config=quantize_config,
)
model.quantize(calibration_dataset)
model.save_quantized(output_dir)
监控指标
生产环境中需要关注的核心指标:
- TTFT (Time to First Token):首 token 延迟
- TPS (Tokens Per Second):吞吐量
- GPU 利用率:计算资源使用效率
- KV Cache 使用率:内存管理效率
使用 Prometheus + Grafana 搭建监控:
# prometheus.yml 配置
scrape_configs:
- job_name: 'vllm'
static_configs:
- targets: ['vllm-server:8000']
metrics_path: /metrics
总结
LLM 推理优化是一个系统工程,需要从模型量化、推理引擎配置到监控告警全链路考虑。vLLM 提供了优秀的开箱即用体验,但在生产环境中仍需要根据业务特点进行精细调优。