模型層 開放閱讀

In-flight Batching

In-flight Batching

概念 ID
in-flight-batching
更新時間
2026-05-29
來源數量
待補

In-flight Batching

3 秒看懂

一句話: 不等一個批次全部生成完,誰先”飛完”就立刻讓新請求”插隊”上 GPU,讓算力永遠不閒著。

類比: 傳統批處理像一桌團餐——所有人吃完才能上下一桌;In-flight Batching 像旋轉壽司——空出一個盤子立刻補上一盤新的。

3 分鐘產業解釋

為什麼這項技術重要?

大語言模型(LLM)推論分為兩個階段:

階段特徵計算瓶頸
Prefill(預填充)一次性處理全部輸入 token計算密集(Compute-bound),算術強度高
Decode(自迴歸解碼)每步只生成 1 個 token頻寬密集(Memory-bound),算術強度極低

傳統靜態批處理(Static Batching)的做法:湊齊一批請求,全部跑完 decode 才能上下一批。問題在於——不同請求的生成長度差異極大。短請求早早結束,但 GPU 必須為它做無效的 padding 計算,等最長的那個跑完。GPU 利用率被最慢的請求拖死。

In-flight Batching 的核心創新:以每次 decode 迭代為排程粒度(而非以整個請求為粒度),一旦某個請求生成完畢、釋放了算力槽位,立刻從佇列中拉入新請求填補。這使得 GPU 上的”有效工作”幾乎恆定滿載。

產業影響概覽

  • 吞吐量提升:相同 GPU 叢集下,推論吞吐量可提升數倍(具體取決於工作負載長度方差,幅度一般在 2–8× 區間,[業界實測經驗值,未統一口徑])
  • 單位推論成本下降:每百萬 token 的 GPU 成本顯著降低
  • H100/H200 等高階卡的價值被放大:算力越強,靜態批處理的浪費越大,動態排程的收益也越大
  • 已成為行業標配:主流推論架構幾乎全部實現了這一機制或其變體

15 分鐘專家深入

核心機制詳解

In-flight Batching 的排程迴圈可以概括為一個 “檢查-驅逐-填充” 的迭代過程:

每一步 decode 迭代:
  1. [檢查] 所有正在 decode 的序列,是否有序列已生成 EOS / 達到最大長度?
  2. [驅逐] 將已完成的序列從 GPU 上移除,回收其 KV Cache 槽位
  3. [填充] 從等待佇列中選取新請求,執行 prefill(可分塊),
            將其 KV Cache 寫入回收的槽位,加入當前 decode 批次
  4. [執行] 對當前批次中所有活躍序列執行一次 decode 步

這個迴圈的關鍵在於:批次的大小和成員是動態變化的,但 GPU 看到的每一拍都是一個”儘量滿載”的計算任務。

與靜態批處理的精確對比

靜態批處理時間線(請求 A 短,B 中,C 長):

時間 ──────────────────────────────────────────►
A:  [prefill][decode][decode][PAD ][PAD ][PAD ]  ← 浪費
B:  [prefill][decode][decode][decode][PAD ][PAD ]  ← 浪費
C:  [prefill][decode][decode][decode][decode][decode]

In-flight Batching 時間線:

時間 ──────────────────────────────────────────►
A:  [prefill][decode][decode]→ 完成,釋放槽位
B:  [prefill][decode][decode][decode][decode]→ 完成
C:  [prefill][decode][decode][decode][decode][decode]
D:              ← A 的槽位釋放後立即插入
E:                          ← B 的槽位釋放後立即插入

靜態批處理中,A、B 結束後的 GPU 時間被 padding 佔據;動態批處理中,D、E 被立即拉入,GPU 上的有效 token 處理密度始終接近峰值。

Prefill 的”搶佔”問題與 Chunked Prefill

一個微妙的工程問題:當新請求的 prefill 階段很長(例如輸入 4096 token),它會”霸佔”整個迭代步,導致正在 decode 的請求被卡住,尾延遲(Tail Latency)飆升

解決方案是 Chunked Prefill(分塊預填充)

  • 將長 prefill 切分為固定大小的 chunk(如每塊 512 token)
  • 每個 chunk 與 decode 步交替執行
  • 確保 decode 請求的單步延遲不會因新請求插入而產生尖刺

這一思想在 [Sarathi / Sarathi-Serve, Microsoft, 已正式發表於 OSDI 2024] 和 DeepSpeed-FastGen 中被系統化。NVIDIA TensorRT-LLM 的 in-flight batching 實現也支援類似的 chunked prefill 機制。

KV Cache 管理的協同最佳化

動態批排程使 KV Cache 的生命週期變得不可預測——請求隨時插入和退出,傳統的預分配連續記憶體方式會導致嚴重的內部碎片和外部碎片

這催生了 PagedAttention([vLLM, Kwon et al., SOSP 2023]):

  • KV Cache 被組織為固定大小的”頁”(如每頁 16 token 的 KV 向量)
  • 通過頁表(Block Table)對映到物理記憶體,不要求物理連續
  • 請求完成時釋放其頁,立即可被新請求複用
  • 記憶體浪費率從傳統方案的 60–80% 降至接近 0([vLLM 論文資料])

技術原理

LLM 推論的兩階段計算特徵

┌─────────────────────────────────────────────────────┐
│               Prefill(預填充階段)                    │
│                                                       │
│  輸入: [t₁, t₂, ..., tₙ] (N 個 token)               │
│  計算: 所有 token 並行處理,生成完整的 KV Cache         │
│  特徵: Compute-bound, 算術強度 O(N)                   │
│  GPU 利用: SM 佔用高, Tensor Core 滿載                 │
│                                                       │
│  FLOPs ≈ 2 × N × L × d² (簡化, L=層數, d=隱藏維度)    │
│  HBM 讀取 ≈ L × (12d²) × W_byte (讀模型引數,∼L·d²)   │
│  算術強度 ∝ N (隨輸入長度線性增長)                      │
└─────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────┐
│               Decode(解碼階段,每步)                  │
│                                                       │
│  輸入: 1 個新 token + 已有 KV Cache                    │
│  計算: 計算 Attention + FFN, 生成 1 個輸出 token        │
│  特徵: Memory-bound, 算術強度 O(1)                     │
│  GPU 利用: SM 大量閒置, 頻寬是瓶頸                      │
│                                                       │
│  HBM 讀取 ≈ L × (12d²) × W_byte + KV_cache_大小       │
│  (每步都要讀取全部模型引數 + 完整 KV Cache)             │
│  FLOPs 僅與單個 token 對應, 算術強度極低               │
└─────────────────────────────────────────────────────┘

排程狀態機

                    ┌──────────────┐
                    │   等待佇列     │
                    │  (Waiting)    │
                    └──────┬───────┘
                           │ 有空餘槽位 且 可排程

                    ┌──────────────┐
            ┌──────│   Prefill     │
            │      │ (可分塊執行)   │
            │      └──────┬───────┘
            │             │ prefill 完成
            │             ▼
            │      ┌──────────────┐◄────────────┐
            │      │   Decode      │             │
            │      │  (逐 token)   │── 繼續生成 ──┘
            │      └──────┬───────┘
            │             │ 生成 EOS 或達 max_length
            │             ▼
            │      ┌──────────────┐
            │      │   Completed   │ → 返回結果給使用者
            │      └──────────────┘

            │  chunk 未完成 → 回到 Prefill
            └──────────────────────────┘

Batch 內的異構執行

一個迭代步中可能同時包含:

  1. Decode 請求:正在逐 token 生成的序列
  2. Prefill chunk 請求:新進入的序列在做 prefill 分塊

排程器需要將這兩類請求合理編排到同一個 GPU kernel launch 中。TensorRT-LLM 的做法是通過 padding 和 mask 將異構請求對齊到統一的 tensor shape 上執行;vLLM/SGLang 則通過 PagedAttention kernel 在 kernel 層面直接處理不同長度的序列。

關鍵公式:批次吞吐量

吞吐量 (tokens/sec) ≈ (B_eff × SPS) 

其中:
  B_eff = 有效批次大小(動態批處理下接近 GPU 最大承載能力)
  SPS   = 單步解碼速度 (steps/sec)

靜態批處理中:
  B_eff = min(B_max, 可用請求數)  但隨請求完成而衰減
  有效 GPU 利用率隨時間遞減

In-flight Batching 中:
  B_eff ≈ B_max(持續, 只要佇列非空)
  有效 GPU 利用率近乎恆定

技術演進史

時間里程碑關鍵貢獻
2022Orca 論文 [OSDI 2022, Yu et al., Seoul National University & Microsoft Research]提出”iteration-level scheduling”概念,區分請求級與迭代級排程;引入 selective batching 通過分塊預填充實現 prefill 與 decode 交替執行
2023 Q1vLLM [Kwon et al., UC Berkeley, SOSP 2023]PagedAttention + 連續批處理;KV Cache 按頁管理,記憶體利用率接近理論極限
2023TensorRT-LLM [NVIDIA]將該技術命名為 “In-flight Batching”,整合到 NVIDIA 官方推論引擎;支援 FP8/INT4 量化下的連續批處理
2023DeepSpeed-FastGen [Microsoft]系統化提出 SplitFuse(chunked prefill + decode 的統一排程)
2023Sarathi-Serve [Microsoft]專門最佳化 chunked prefill 的排程策略,減少 prefill 對 decode 延遲的干擾
2024SGLang [UC Berkeley]RadixAttention + 連續批處理;通過 radix tree 複用字首 KV Cache,進一步提升多輪對話效率
2024行業收斂主流推論架構(vLLM, TRT-LLM, TGI, SGLang, DeepSpeed-FastGen)全部支援某種形式的連續批處理,成為預設排程策略

技術脈絡總結: Orca 定義了問題 → vLLM 證明了 KV Cache 管理的關鍵性 → TensorRT-LLM 將其產品化 → Sarathi/SGLang 解決了 chunked prefill 的細節工程問題 → 2024 年成為行業共識。


技術路線對比

維度靜態批處理 (Static Batching)連續批處理 (In-flight / Continuous)連續批處理 + PagedAttention連續批處理 + Chunked Prefill
排程粒度請求級迭代級迭代級迭代級 + 分塊
GPU 利用率隨請求完成遞減,長尾浪費嚴重接近恆定滿載接近恆定滿載 + 記憶體碎片極小最優:decode 不被長 prefill 打斷
吞吐量(相對)1×(基準)2–5×([業界經驗估算,取決於負載方差])3–6×3–8×
P99 ITL高(長尾嚴重)較低較低最低
實現複雜度極低中等高(需自定義 Attention kernel)最高(需分塊排程器 + 負載均衡)
KV Cache 記憶體浪費60–80%([vLLM 論文資料])與靜態類似(取決於實現)接近 0%接近 0%
代表實現早期 HF generate()早期 TGIvLLM, TensorRT-LLMSarathi-Serve, DeepSpeed-FastGen, SGLang

注: 吞吐量倍數為不同工作負載下的經驗區間,非單一標準測試結果。


上下游

上游:In-flight Batching 依賴什麼?

環節依賴內容
GPU 硬體高 HBM 頻寬(Decode 階段為 memory-bound,頻寬直接決定單步延遲);大 HBM 容量(更多併發序列 = 更大 KV Cache)
Attention Kernel高效的 FlashAttention / PagedAttention kernel,支援變長序列
模型格式量化模型(FP8/INT4/INT8)降低引數讀取頻寬需求,放大動態排程的收益
網路通訊多卡張量並行(TP)時,AllReduce/ReduceScatter 通訊不能成為瓶頸

下游:In-flight Batching 改變了什麼?

下游環節影響
API 服務商單卡可服務更多併發使用者,降低 token 定價下限
應用層使即時對話、Agent 等高併發場景的經濟可行性提升
GPU 採購策略相同吞吐量目標下,所需 GPU 數量減少;或相同 GPU 下吞吐量倍增
SLA 保障可預測的延遲尾部更穩定,更容易承諾 P99 SLA

關鍵指標

指標定義In-flight Batching 的影響
Throughput(吞吐量)每秒處理的 output token 數(tok/s)核心提升目標,通常 2–8×
Time-to-First-Token (TTFT)從請求到達到第一個輸出 token 的延遲取決於排程策略:激進插入可降低 TTFT,但 chunked prefill 可能略增
Inter-Token Latency (ITL)相鄰兩個輸出 token 之間的延遲通常維持或改善;不當的 prefill 排程可能造成 ITL 尖刺
GPU SM UtilizationGPU 流處理器的實際佔用率從靜態批處理的 30–70% 提升至 70–95%([經驗估算區間])
HBM Bandwidth UtilizationHBM 頻寬的實際使用率Decode 階段 memory-bound,動態批處理使頻寬利用率更接近峰值
KV Cache Memory UtilizationKV Cache 記憶體中有效資料佔比配合 PagedAttention 可接近 100%;無 PagedAttention 則仍存在碎片

供需與市場資料

需求端:為什麼現在最關鍵?

  • LLM 推論成本已超過訓練成本:據公開分析,頭部 AI 公司推論計算量佔比已達 60–80%([行業共識估算]),推論最佳化的經濟槓桿巨大
  • Token 經濟興起:API 按 token 計費,每 token 成本的降低直接轉化為獲利空間或價格競爭力
  • 長上下文趨勢:128K–1M token 上下文視窗普及,靜態批處理在長上下文下幾乎不可用,動態排程成為必需

供給端:誰在提供?

型別代表定位
NVIDIA 官方引擎TensorRT-LLM命名 “In-flight Batching”,與 NVIDIA 硬體深度繫結
開源架構vLLM (UC Berkeley)連續批處理 + PagedAttention,社群最活躍
開源架構SGLang (UC Berkeley)RadixAttention + 連續批處理,多輪對話最佳化
開源架構HuggingFace TGI生產級推論服務,支援連續批處理
微軟DeepSpeed-FastGenSplitFuse 排程,與 DeepSpeed 訓練棧互補
雲端服務商AWS SageMaker, GCP Vertex AI, Azure ML在託管推論服務中內建動態批排程

市場規模關聯

  • 全球 LLM 推論市場(含自建和 API 服務)2024 年估計在 數百億美元 量級([多份行業報告交叉估算,口徑不一])
  • 推論最佳化技術(含動態批排程、量化、Speculative Decoding 等)是該市場的效率乘數——不直接產生營收,但決定獲利率

代表公司與資本對映

公司/專案關聯方式上市/融資狀態
NVIDIA (NVDA)TensorRT-LLM 是 in-flight batching 的主要商業實現;該技術提升每塊 GPU 的推論吞吐量,理論上”少賣卡”——但實際上因為需求彈性,反而加速了 GPU 採購NASDAQ 上市
vLLM → AnyscalevLLM 最初由 UC Berkeley 開發,Anyscale(Ray 的公司)是主要推動者之一私有,累計融資超 $2.6 億
Hugging FaceTGI 推論伺服器整合連續批處理私有,估值約 $45 億
CoreWeave大規模 GPU 雲端基礎設施,推論最佳化棧直接影響其算力出租效率私有,2024 估值約 $190 億
Together AI推論 API 服務,深度最佳化連續批處理 + 量化組合私有,融資超 $3 億

投資邏輯提醒: In-flight Batching 是通用的軟體排程技術,不構成某一家公司的獨佔護城河。其資本對映更多體現在降低推論成本 → 擴大 AI 推論市場總量這一間接邏輯上。


投資邏輯

利好邏輯

  1. 推論成本下行 → 需求彈性釋放:動態批排程是推論成本下降的關鍵技術因素之一,低成本使更多應用在經濟上可行(Agent、即時翻譯、程式碼補全等),擴大總可服務市場(TAM)
  2. GPU 價值最大化:同一塊 H100,靜態批處理 vs 動態批處理的吞吐量差距可達數倍。對於 GPU 雲端服務商,這意味著更高的每卡營收
  3. 與量化/Speculative Decoding 協同:動態批排程 + FP8 量化 + Speculative Decoding 三者疊加,推論效率可提升一個數量級,使端側/邊緣推論也成為可能

風險與侷限

  1. 技術擴散快,非護城河:該技術已被所有主流架構開源實現,不存在排他性競爭優勢
  2. 邊際收益遞減:從靜態到動態的提升是”從 0 到 1”,但進一步最佳化(chunked prefill、更激進的排程)的增量收益在遞減
  3. 硬體迭代可能顛覆:如果未來硬體的 prefill 和 decode 速度差異被消除(如通過專用硬體),排程最佳化的必要性可能降低

常見誤讀糾偏

❌ 誤讀 1:“In-flight Batching 就是傳統的 micro-batching”

糾偏: 傳統 micro-batching(如 PipeDream 中的流水線 micro-batch)是為了掩蓋通訊延遲,批的大小在編譯時確定,執行時不變。In-flight Batching 的核心是執行時動態插入和驅逐請求,批次成員在每一步迭代都可能變化。兩者解決的問題域完全不同。

❌ 誤讀 2:“連續批處理能降低單個請求的延遲”

糾偏: 連續批處理的核心收益是系統吞吐量(tokens/sec),而非單個請求延遲。事實上,如果為了吞吐量而將批次填得很滿,單個請求的 ITL(inter-token latency)反而可能上升——因為每個 decode 步需要等待更多序列一起完成計算。正確的理解是:在給定延遲 SLA 約束下,連續批處理能最大化吞吐量;或在給定吞吐量目標下,最小化所需 GPU 數量

❌ 誤讀 3:“動態批處理對 prefill 和 decode 效果相同”

糾偏: 動態批處理的收益主要體現在 decode 階段——因為 decode 是逐 token 的、持續時間長的階段,不同請求的長度差異主要在 decode 階段體現。Prefill 階段是一次性計算,本身不太需要”動態排程”。真正的挑戰在於:如何在不停止 decode 的前提下,將新請求的 prefill 插入——這才是 chunked prefill 要解決的問題。

❌ 誤讀 4:“有了 PagedAttention 就不需要 In-flight Batching”

糾偏: PagedAttention 解決的是 KV Cache 記憶體管理問題(減少碎片、提高記憶體利用率),In-flight Batching 解決的是 GPU 計算排程問題(減少空閒時間、提高算力利用率)。兩者互補而非替代。實際部署中,最優方案是兩者結合。


學習路徑

入門(1–2 小時)

  1. 閱讀 vLLM 部落格文章中的連續批處理圖解(vllm.ai 部落格)
  2. 理解 LLM 推論的 prefill / decode 兩階段特徵

進階(4–8 小時)

  1. 精讀 Orca 論文:“Orca: A Distributed Serving System for Transformer-Based Generative Models” [OSDI 2022]
  2. 精讀 vLLM 論文:“Efficient Memory Management for Large Language Model Serving with PagedAttention” [SOSP 2023]
  3. 對比閱讀 TensorRT-LLM 文件中 In-flight Batching 章節

深度(1–2 周)

  1. 研讀 Sarathi / Sarathi-Serve 論文(OSDI 2024,關於 chunked prefill 的排程最佳化)
  2. 閱讀 SGLang 論文(RadixAttention 與 prefix caching 的協同)
  3. 動手實踐:用 vLLM 部署一個模型,對比開啟/關閉 continuous batching 的吞吐量差異(--disable-continuous-batching 引數)
  4. 閱讀 DeepSpeed-FastGen 的 SplitFuse 白皮書

推薦論文清單

論文會議核心貢獻
Orca (Yu et al.)OSDI 2022Iteration-level scheduling 奠基
vLLM (Kwon et al.)SOSP 2023PagedAttention + 連續批處理
FlashAttention (Dao et al.)NeurIPS 2022IO-aware Attention kernel(底層基礎)
SGLang (Zheng et al.)arXiv 2024RadixAttention + 系統級推論最佳化

一句話總結

In-flight Batching 是 LLM 推論排程的”旋轉壽司”模式——以迭代為粒度動態插拔請求,使 GPU 算力從”等人齊開飯”變成”即來即服務”,已成為所有主流推論引擎的預設排程策略,是推論成本下行的核心技術因素之一。


延伸閱讀與來源

  • Orca 論文:Gyeong-In Yu et al., “Orca: A Distributed Serving System for Transformer-Based Generative Models,” OSDI 2022
  • vLLM 論文:Woosuk Kwon et al., “Efficient Memory Management for Large Language Model Serving with PagedAttention,” SOSP 2023
  • TensorRT-LLM 官方文件:NVIDIA GitHub (github.com/NVIDIA/TensorRT-LLM) — In-flight Batching 章節
  • DeepSpeed-FastGen:Microsoft DeepSpeed 部落格, “DeepSpeed-FastGen: High-throughput Text Generation for LLMs via MII and DeepSpeed-Inference”
  • Sarathi-Serve:Amey Agrawal et al., “Taming Throughput-Latency Tradeoff in LLM Inference with Sarathi-Serve,” OSDI 2024
  • SGLang:Lianmin Zheng et al., “SGLang: Efficient Execution of Structured Language Model Programs,” 2024
  • FlashAttention:Tri Dao et al., “FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness,” NeurIPS 2022

來源標註說明: 本文中具體的效能倍數(2–8×)為業界廣泛引用的經驗區間,非單一標準化基準測試結果。各架構的實際效能取決於模型架構、序列長度分佈、GPU 型號、量化精度等多重因素,建議以自行實測為準。

source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型