在生产环境中部署大语言模型时,单纯依靠硬件算力往往无法满足高并发、低延迟的实时交互需求。推理框架的参数配置直接影响吞吐量与响应时延,而参数的选取需要在模型精度、硬件利用率和业务 SLA 之间取得平衡。本文从批处理策略、量化精度配置、内存与缓存管理三个工程维度,梳理 2025 年主流推理框架(vLLM、TensorRT-LLM)中可落地的关键参数,并给出具体数值建议与监控要点,帮助运维团队快速建立可复用的调优基线。
动态批处理:从固定批次到自适应调度
传统的静态批处理在请求量波动剧烈时会面临两难选择:批过小导致 GPU 利用率不足,批过大则造成长尾请求堆积。动态批处理(Dynamic Batching)通过运行时聚合请求,允许不同长度的序列在同一批次中并行推理,显著提升吞吐的同时保持可接受的尾延迟。vLLM 默认为连续批处理(Continuous Batching),其核心参数包括最大批大小(max_num_seqs,通常设为 32 至 128,视 GPU 显存而定)和批处理超时(batch scheduling策略),当新请求等待时间超过设定阈值(推荐 10ms 至 50ms)时即触发调度。对于延迟敏感型业务(如对话补全),可进一步启用分页注意力(PagedAttention)并调低 gpu_memory_utilization 至 0.85,为 KV 缓存预留足够空间以避免换入换出导致的抖动。
连续批处理相比静态批处理在真实流量下可实现 2 至 3 倍的吞吐量提升,原因在于它避免了固定批次窗口的空闲等待,使 GPU 在请求到达后立即投入计算而非等待填充完整批次。在多轮对话场景中,由于上下文长度随对话轮次增长,建议开启 KV 缓存复用(通过 enable_chunked_prefill 参数控制),这能有效降低首轮预填充(Prefill)的计算开销,从而缩短首个 Token 的生成时间(Time-To-First-Token,TTFT)。
量化精度:精度与延迟的折中艺术
量化是降低推理延迟最直接的手段之一,其核心原理是通过降低权重和激活的数值精度来减少显存占用与计算量。当前主流的量化策略包括 FP16/BF16、FP8 和 INT8 三档。FP16(半精度浮点)在绝大多数现代 GPU(A100、H100、MI300X)上由 Tensor Core 原生支持,无需额外校准即可获得约 2 倍于 FP32 的加速比,是最安全的基线选择。若业务对模型精度要求宽松,可进一步切换至 FP8(仅在 H100 及更新架构支持),其吞吐量提升可达 1.5 倍至 2 倍,但需通过校准数据集验证输出质量不出现明显退化。
INT8 量化则更为激进,通常通过动态量化(Weight-Only Quantization)或混合精度方式实现,可在部分消费级 GPU 上运行。TensorRT-LLM 提供开箱即用的 INT8 支持,关键参数包括 kv_cache_quant_type(推荐 fp8 或 int8_sq)和 weight_only_quant_mode。需要注意的是,INT8 量化在复杂推理任务(如数学推导、多步规划)可能导致输出质量下降,建议在投产前使用代表性 prompt 集进行自动化评估,设定 perplexity 或人工抽检的通过阈值作为回滚触发条件。
内存与 KV 缓存:精细化配置避免 OOM
显存是推理吞吐的硬性瓶颈,KV 缓存占据显存的主要部分。gpu_memory_utilization 参数控制用于 KV 缓存的显存比例,vLLM 默认为 0.9,但在运行大模型(70B 以上)或长序列推理时,建议降至 0.8 以预留足够空间给模型权重和中间计算结果,避免因显存不足导致请求失败或频繁换页。
max_num_batched_tokens 限制单批次处理的最大 token 数,推荐设为 4096 至 8192,具体取决于 GPU 显存大小和模型的隐藏层维度。对于长上下文场景(如文档摘要、知识库问答),需同时调高 max_model_len 参数,并确保 enable_chunked_prefill 处于开启状态,以将长序列的预填充阶段分块处理,防止单次计算占用过多显存。vLLM 官方文档建议将分块大小(prefill_chunk_size)设为 512 或 1024,可在延迟与显存占用之间取得较好平衡。
在多 GPU 分布式推理场景下,TensorRT-LLM 的张量并行(Tensor Parallelism,tp_size)和流水线并行(Pipeline Parallelism,pp_size)参数需要与硬件拓扑对齐。推荐将 tp_size 设为单节点内的 GPU 数量(如 4 卡 H100 设为 4),pp_size 则根据跨节点延迟特性调整,通常不超过 2。启用 CUDA Graphs 可进一步降低内核启动开销,实测在 Transformer 层数较多的模型上可获得 5% 至 10% 的延迟改善。
实用参数清单与监控阈值
以下参数配置可作为生产部署的起点,实际值需根据硬件规格和流量特征进行微调:
| 维度 | 参数名 | 推荐取值范围 | 调整依据 |
|---|---|---|---|
| 批处理 | max_num_seqs |
32–128 | GPU 显存与请求并发量 |
| 批处理 | gpu_memory_utilization |
0.80–0.90 | 模型规模与序列长度 |
| 量化 | dtype |
fp16 / bf16 / fp8 | GPU 架构与精度容忍度 |
| 缓存 | max_num_batched_tokens |
4096–8192 | 显存容量与时延要求 |
| 缓存 | prefill_chunk_size |
512–1024 | 长序列占比 |
| 并行 | tp_size / pp_size |
硬件拓扑匹配 | 节点内 GPU 数量 |
监控层面应重点关注三个指标:GPU 利用率(目标 > 85%)、首 Token 延迟 P99(根据业务 SLA 设定,通常 < 500ms)以及推理请求的排队时延(超过 100ms 时需检查批处理配置是否过于保守)。当发现 GPU 利用率持续低于 70% 且排队时延上升时,可尝试逐步增大 max_num_seqs;若尾延迟持续恶化且显存接近上限,则应降低 gpu_memory_utilization 或启用量化。
小结
LLM 推理性能优化是一项系统化工程,参数配置需要在吞吐量、延迟和模型精度之间反复权衡。批处理策略决定并发的颗粒度,量化精度决定计算密度,内存管理决定可承载的请求规模。建议从上述基线参数出发,结合实际流量特征进行 A/B 测试,逐步迭代至最优配置。监控与回滚机制同样不可或缺 —— 当新参数导致质量指标下降或异常请求激增时,应具备快速切回稳定版本的能力。
参考资料
- vLLM 官方性能调优文档(https://docs.vllm.ai/en/v0.8.2/performance/optimization.html)
- TensorRT-LLM 量化与并行配置最佳实践(https://www.nexastack.ai/blog/optimizing-tensorrt-llm)