技術指南

連續配料

連續批次處理是一種服務技術,可以從正在運行的批次中逐個令牌新增和刪除請求,而不是等待整個固定批次完成。

閱讀時間約2分鐘最後更新

概述

It keeps the GPU constantly busy and sharply increases how many users an AI model can serve at once.

深入探討

當 GPU 批次處理多個請求時,速度最快。最簡單的方法是靜態批次處理,將一組固定的請求分組,將它們全部運行完成,然後開始下一個批次。問題是:語言模型輸出的長度差異很大,因此較短的請求會提前完成,並且在批次等待最長的請求時,它們的插槽會閒置,從而浪費 GPU 週期並延遲新到達。連續批次(也稱為運行中或迭代級批次處理,由 Orca 論文推廣並用於 vLLM、TensorRT-LLM 和 TGI)以單一解碼步驟的粒度進行操作。產生每個令牌後,完成的序列退出批次,新到達的請求立即插入。這可以保持批次滿和 GPU 飽和,通常可以將吞吐量提高數倍,同時降低等待用戶的延遲。

技術洞察

關鍵的轉變是從批次整個請求到批次單一迭代。在每個解碼步驟中,調度程序都會建立活動集:它對所有正在進行的序列運行一次前向傳遞,每個發出一個令牌,逐出任何達到序列結束令牌或長度限制的令牌,並允許排隊的請求來填充已釋放的插槽。將此與 PagedAttention 靈活的 KV 記憶體配合使用,可以在飛行中插入和刪除序列,成本低廉,因為每個序列的快取都位於獨立的區塊中。

戰略影響

成本與預算

多年來,架構決策決定著效能和營運成本。

更明確的決策

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

品質管控

更好的工程選擇可以減少生產中的可靠性事故。

連續配料的未來

連續配料現在是生產法學碩士服務的標準。未來的工作將改進調度程序:將計算量大的預填充階段與較輕的解碼階段(分解)分開,分塊預填充以避免解碼停滯,混合工作負載的優先級和公平策略,以及與推測性解碼的更緊密耦合,以便每個步驟驗證多個草稿令牌。目標是壓縮每個 GPU 每秒的最大令牌數,同時保持個體反應延遲較低且可預測。

現實世界的實施

聊天 API 立即將新到達的用戶訊息接納到正在運行的批次中,而不是將它們排隊等待下一個批次

在批次中驅逐較短的已完成答案並回填其插槽,以便 GPU 永遠不會閒置等待較長的一代

將連續批次與 vLLM 的 PagedAttention 結合,在每個解碼步驟中以低成本插入和刪除序列

程式碼完成服務透過保持批次完整,在突發、可變長度流量下維持每秒高令牌數

風險與防護欄

優化一項基準測試可以隱藏更廣泛的系統弱點。

基礎設施和維護成本常常被低估。

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

2

在實際負載和資料條件下進行基準測試。

3

儀器監控錯誤、漂移和使用者影響。

4

在擴展之前準備回滾和事件回應路徑。

不斷探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Continuous Batching quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

開始測驗

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一步指南

用於 ML 工作負載的 Kubernetes

常見問題

What is Continuous Batching?

連續批次處理是一種服務技術,可以從正在運行的批次中逐個令牌新增和刪除請求,而不是等待整個固定批次完成。它使 GPU 持續忙碌,並急劇增加 AI 模型可以同時服務的用戶數量。

LLM 服務的靜態(固定)批次的主要弱點是什麼?

由於輸出長度各不相同,因此完成的序列會處於空閒狀態,直到最慢的序列完成為止,從而浪費 GPU 週期並延遲新請求。

連續批次以什麼粒度新增和刪除請求?

連續(迭代等級)批次會在每個解碼步驟後更新活動集,因此它會逐一令牌而不是每個整個請求進行操作。

當序列在連續批次處理下完成中批時,其插槽會發生什麼情況?

已完成的序列將被逐出,等待的請求將立即插入,從而保持批次已滿且 GPU 繁忙。

哪種技術與連續批次自然地結合在一起,可以使插入/刪除序列變得便宜?

PagedAttention 將每個序列的 KV 快取儲存在獨立的區塊中,因此在運行中新增或刪除序列不會幹擾其他序列的記憶體。

哪些研究論文普遍認為推廣了迭代級(連續)批次?

Orca 論文引入了迭代級調度,該想法被 vLLM、TGI 和 TensorRT-LLM 等服務系統採用。