ai-infra-interview-305

第 102 题:vLLM的continuous batching如何实现?和static batching的吞吐对比?

题目

vLLM的continuous batching如何实现?和static batching的吞吐对比?


完整讲解

一、Static Batching 的问题

Static batching:凑满一个 batch(或超时)后一起跑一次 decode,本 batch 全部完成再接下一批。问题:序列长短不一,短序列先结束却要等长序列,GPU 空转;batch 内 padding 多则算力浪费,吞吐与延迟都不理想。

二、Continuous Batching 的做法

Continuous batching(vLLM 等):不固定 batch 边界,每轮 decode 时只对「当前步仍需生成」的请求做一次前向;某请求生成完 EOS 就立即移出,新请求可立即加入。即 batch 在时间维上「流动」:每轮参与的是「in-flight」的请求子集,完成即退出、新请求即进入。这样 GPU 始终有活干,短序列不拖长序列,吞吐高、尾延迟低。

三、实现要点与吞吐对比


面试要点


记忆要点

  1. Static = 整批进整批出;continuous = 每步只算 in-flight,出即入。
  2. Continuous 避免「短等长」,GPU 利用率高。
  3. vLLM 用 continuous + PagedAttention,吞吐显著优于 static。
返回模块 返回总览