AI・機械学習
上級

Continuous Batching(連続バッチング)(コンティニュアスバッチング)

LLM推論のスループットを大幅向上させるバッチ処理最適化手法。従来の静的バッチと異なり、生成完了したシーケンスを待たずに新しいリクエストを動的に挿入することでGPU利用率を最大化する。

0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
Continuous Batching
LLM推論最適化
スループット向上
vLLM
GPU利用率

Continuous Batching(連続バッチング)とは

Continuous Batching(連続バッチング、またはIteration-level Scheduling)は、LLMの自己回帰的なトークン生成において、GPUの利用率を最大化するバッチ処理最適化手法です。2022年のOrcaシステム論文(Yu et al., OSDI 2022)によって提案され、現在では主要な推論エンジンに標準実装されています。

従来の静的バッチングの問題

静的バッチング(従来)の問題:

バッチ: [リクエストA(20トークン生成), リクエストB(100トークン生成)]

イテレーション 1-20: A・B 両方処理(GPU 100%利用)
イテレーション 21-100: Aは完了しているがBが終わるまでスロットが空き
  → GPU利用率: 50%(Aのスロットが無駄)

Bが完了するまで新しいリクエストCは待機

Continuous Batchingの仕組み

Continuous Batching(反復レベルスケジューリング):

イテレーション 1-20: バッチ = [A, B]
イテレーション 21(Aが完了): バッチ = [C(新規挿入), B]
イテレーション 22: バッチ = [C, B, D(新規追加)]

各イテレーション(1トークン生成ごと)にスケジューラーが実行され、完了したシーケンスを待つことなく新しいリクエストをバッチに挿入します。

Prefill と Decode の分離(2024年進化)

2024年にはPrefill・Decodeを別クラスターで処理する「Disaggregated Prefill」が登場:

Prefill Cluster: 新着リクエストのプロンプト処理(計算バウンド)
  → 完了したらKVキャッシュをDecode Clusterへ転送

Decode Cluster: トークン生成(メモリバウンド)
  → Continuous Batchingで並列デコード

効果: Prefill待ちによるDecodeスループット低下を解消

vLLMでの実装

from vllm import AsyncLLMEngine, AsyncEngineArgs, SamplingParams
import asyncio

# Continuous Batchingはvllmのデフォルト動作
engine_args = AsyncEngineArgs(
    model="meta-llama/Meta-Llama-3-8B-Instruct",
    tensor_parallel_size=1,
    max_num_seqs=256,           # 同時処理最大シーケンス数
    max_num_batched_tokens=8192,# バッチあたり最大トークン数
    gpu_memory_utilization=0.9
)

engine = AsyncLLMEngine.from_engine_args(engine_args)

async def generate(prompt: str, request_id: str):
    sampling_params = SamplingParams(temperature=0.8, max_tokens=512)
    results = engine.generate(prompt, sampling_params, request_id)
    async for output in results:
        yield output

スループット改善効果

静的バッチ(batch=1)はGPU利用率10-20%でスループット50-100 tokens/s(レイテンシ最小)、静的バッチ(batch=32)は50-70%で500-800 tokens/s(バッファ遅延あり)、Continuous Batchingは85-95%で2000-5000 tokens/s(vLLM標準)という改善が得られます。

OpenAI互換サーバーでの確認

# vLLMをサーバーとして起動
python -m vllm.entrypoints.openai.api_server \
  --model meta-llama/Meta-Llama-3-8B-Instruct \
  --max-num-seqs 256 \
  --port 8000

# 複数リクエストを同時送信でContinuous Batchingの効果を確認
for i in {1..10}; do
  curl -s http://localhost:8000/v1/completions \
    -H "Content-Type: application/json" \
    -d '{"model":"meta-llama/Meta-Llama-3-8B-Instruct","prompt":"Tell me about GPU","max_tokens":200}' &
done
wait

Continuous Batchingは2023-2026年のLLMサービング革命の核心技術の一つです。vLLM・TGI・TensorRT-LLM・SGLangなど全ての主要推論エンジンに実装され、LLMのAPI提供コストを大幅に削減しています。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/7