首页/AI/大模型部署与运维速查/延迟与吞吐:方向先定再调参

延迟与吞吐:方向先定再调参

两个目标此消彼长:批越大吞吐越高、单请求延迟越差;先定服务定位——交互产品守 P95 延迟,离线任务压单 token 成本,调参才有方向。

先定方向再调参

延迟与吞吐此消彼长:批越大吞吐越高、单请求延迟越差。所以调参之前先定服务定位——交互产品守 P95/P99 延迟,离线任务压单 token 成本。方向没定就调参,通常两边都不达标,还很难判断哪个参数的调整起了作用。

基本信息

交互型目标守 P95/P99 延迟
离线型目标压单 token 成本
小批策略延迟好、吞吐低
大批策略吞吐高、尾延迟差
常见解法按目标分池部署

典型使用场景

  • 给新服务定基线参数前先明确目标
  • 排查「加了并发但用户说变慢」
  • 给容量规划确定验收指标
  • 向业务解释为什么不能同时优化两者
  • 给交互池与离线池分别写验收口径并纳入发布检查

方向对照

目标主要手段代价
低延迟小批、限制并发、优先调度吞吐下降
高吞吐大批、拉高并发尾延迟上升

两种池的起步参数

两种池的起步参数
# 交互池:限制并发与批次,验收看 P95/P99
vllm serve <模型路径> --max-num-seqs 32 --max-num-batched-tokens 2048
# 离线池:拉高并发与批次,验收看单 token 成本
vllm serve <模型路径> --max-num-seqs 256 --max-num-batched-tokens 8192
常见解法是分池:交互池守延迟,离线池吃吞吐,互不干扰,比在一个实例上做折中更有效。
验收口径分开写:交互池写 P95/P99 与并发档位,离线池写单 token 成本与日吞吐量,两边分开立项才不会互相打架。
同一份压测数据可以算出两种口径的结论:先把指标定义与采样点固定下来,再去比较不同配置,否则对比没有意义。
拆池之后要给两条链路各自的告警阈值与容量基线:沿用同一套阈值,等于把两个相反的目标又混在一起。
两类池的容量与告警要分开配置:共用一套阈值,等于把方向相反的目标重新绑回一起。

易错点

  • 一个实例扛两类目标:两边都不达标,先拆池再谈调参
  • 只看平均延迟:用户感知的是尾部,必须看 P95/P99
  • 拿吞吐数字当体验:高吞吐不等于单请求快,口径要与业务目标对应
  • 不同实例的延迟数据直接横向比较:窗口与批大小不同,需连同配置一起解读
  • 在交互池上跑离线批处理:批任务把池子占满,交互请求的尾延迟会直接崩掉
  • 用同一套监控看两类流量:指标混在一起,方向选择失去依据

数据来源与参考

  • vLLM 官方文档:性能与调优(docs.vllm.ai)
  • NVIDIA 开发者博客:LLM 推理优化(developer.nvidia.com/blog)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌