免費全文 部署與推理優化 進階

連續批次處理:吞吐量提升最大的一個開關

同樣的硬體,開啟連續批次後吞吐量常常翻好幾倍。理解它為什麼有效。

部署與推理優化教程封面

傳統靜態批次要等一批請求都到齊才開始,而且要等最慢的那個生成完才能收工。連續批次(continuous batching)改成以 token 為單位排程:誰生成完就離開,空出的位置立刻讓新請求補進來。

為什麼提升這麼大

  • GPU 在逐 token 生成階段其實很閒——瓶頸是記憶體頻寬而非算力,多幾個序列一起算幾乎不增加時間。
  • 請求的輸出長度差異很大,靜態批次會被最長的那個綁住。
  • 不必等湊滿一批,排隊時間大幅下降。

實務上怎麼開

# vLLM 範例:連續批次是預設行為,主要調這幾個
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen3-8B-Instruct \
  --max-num-seqs 128 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.90

三個關鍵參數

  • max-num-seqs:同時處理的序列數上限。太大時單一請求的生成速度會下降。
  • max-model-len:影響 KV 快取的預留量,設得比實際需求大會浪費記憶體。
  • gpu-memory-utilization:留給 KV 快取的比例,太高容易在尖峰時出錯。

吞吐與延遲的取捨

批次越大,總吞吐越高,但單一請求的生成速度會變慢。互動式服務應該設較小的並行上限;離線批次任務則可以拉滿。兩種流量最好分開部署,不要混在同一個服務裡互相干擾。

壓測時要模擬真實的輸出長度分布。全部固定 100 token 的壓測結果,跟真實流量的表現可能差好幾倍。
下一步

這個主題還有更深入的實戰教程

VIP 專區收錄 50 篇進階內容:架構設計、生產環境取捨、成本與合規。 每週五新增 3 篇。

看訂閱方案 → 先逛逛 VIP 專區