返回博客列表

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 提供了优秀的开箱即用体验,但在生产环境中仍需要根据业务特点进行精细调优。