九章智算云

在 H100 上把 vLLM 推理跑到 4500 tokens/s

一台单机 8 卡 H100,跑 Qwen3-72B-Instruct 量化版。一路从 paged-attention 调到 continuous batching,再到 KV-cache 命中率优化——记一次完整的吞吐压测过程。

背景

最近一个金融客户希望把 Qwen3-72B-Instruct 部署到自己的 H100 节点上做内部问答系统,首屏延迟要求 P95 ≤ 800ms,并发要求 200 RPS 起步。我们在九章智算云的标准 8 卡 H100 节点(NVLink 全互联,本地 NVMe 缓存模型权重)上做了一次完整的调优。

初始基线

默认 vLLM 0.6.3 + 4-bit AWQ 权重,单卡显存占用 ~38GB,剩余约 40GB 留给 KV cache。启动参数仅设 --tensor-parallel-size 8,跑 ShareGPT-4k 的离线压测:

  • 吞吐:1820 tokens/s
  • P95 首 token 延迟:1.4s
  • GPU 利用率:~62%

第一刀:continuous batching

默认 vLLM 已经走 PagedAttention,但 batch 维度还是按请求边界对齐。开启 --scheduler-policy continuous 后,调度粒度细化到每一个 forward 步:

  • 吞吐:1820 → 3120 tokens/s
  • P95 首 token 延迟:1.4s → 0.9s

第二刀:KV cache 命中率

问答系统的特点是 system prompt 高度重复(~800 tokens)。我们打开 prefix caching:

--enable-prefix-caching --max-num-batched-tokens 16384

缓存命中率从默认的 12% 提到 71%,首 token 延迟掉到 380ms。

第三刀:模型权重换 FP8

AWQ 4-bit 在 H100 上其实没吃满 Tensor Core——切到 FP8(per-token + per-channel 缩放)并跑 vLLM 0.7 的 FP8 KV cache 后:

  • 吞吐:3120 → 4520 tokens/s
  • 显存占用从 38GB 降到 31GB(剩余 KV 空间更大)
  • BLEU / Rouge 评测对比 4-bit AWQ 退化 < 0.3%

结论

8×H100 单机 4500 tokens/s 对应每天可以服务 ~3.9 亿 tokens,一台机器顶 6 台 A100 节点。关键是:先看调度(continuous batching)和缓存(prefix caching),再调权重精度(FP8)。这套调参在我们 ALab 工作台和 CCI 容器实例上都开箱可复现,OpenAPI 调用方式见"AI 模型推理 → 推理"页。

最后更新于

这篇文档对你有帮助吗?

目录