Ultralytics YOLO27:
YOLOのライセンス
Ultralytics用語集に戻る

Continuous Batching

連続バッチ処理では、LLMサーバーのバッチをデコードの各ステップで再構成します。完了したリクエストを除き、新しいリクエストを加えることでGPUを効率的に稼働させます。

Continuous batching(イテレーションレベルスケジューリングまたはインフライトバッチングとも呼ばれます)は、生成モデルのサービングに使われるスケジューリング手法です。サーバーはデコードの各ステップでバッチを再構成します。シーケンスが終了すると、すぐにバッチから抜けて結果を返し、待機中のリクエストが次のステップでその位置に入ります。ソウル大学校とFriendliAIのGyeong-In Yu氏らは、OSDI 2022で発表したOrcaでこの手法を導入し、同じレイテンシにおいてGPT-3 175BでNVIDIA FasterTransformerより36.9倍高いスループットを報告しました。2023年にvLLMとHugging Face Text Generation Inferenceが採用したことで、continuous batchingという名称が広まり、現在ではサービングエンジンで大規模言語モデル(LLMs)を扱う際のデフォルトのスケジューラーになっています。

リクエスト単位のバッチ処理がGPUを無駄にする理由#

テキスト生成では、フォワードパスごとに1つのtokenが生成されますが、リクエストごとに必要なパス数は大きく異なります。はい/いいえで答える質問は数トークンで終わりますが、コードファイルでは数千トークンに達することがあります。静的バッチ処理では、最も長いリクエストが完了するまでリクエストのグループが一緒に処理されます。早く終わったシーケンスのスロットはアイドル状態になり、新しいリクエストはグループ全体が空くまで待つため、長いリクエストの後ろに並んだ短いリクエストすべてに推論レイテンシが加わります。

NVIDIA Tritonなどのサーバーで使われるリクエスト単位の方式であるDynamic batchingでは、短い時間枠内に到着したリクエストを集め、1つのバッチとして完了まで実行します。これは、画像分類器や物体検出器のように、入力ごとの処理コストが一定のモデルに適しています。各入力が1回のフォワードパスで完了するためです。Ultralytics YOLOのpredictモードは、ソースからYOLO26の入力をリクエスト単位のバッチにまとめます。カメラURLを記載した.streamsファイルを使うと、各ストリームの最新フレームを保持する1つのバッチとして実行されるため、8つのストリームはバッチサイズ8で処理されます。また、batch引数は、動画、ディレクトリ、または.txt画像リストのフレームを1回のフォワードパスにまとめます。

イテレーション単位のスケジューリングの仕組み#

スケジューラーは、アクティブな各シーケンスに対してデコードを1ステップ実行し、終了トークンに達したか、長さ制限に達したかを確認します。完了したシーケンスは返されてメモリが解放され、KVキャッシュに空きがあれば、キュー内のリクエストが追加されます。Orcaは、ほかのシーケンスをデコードするのと同じステップで新しいリクエストのプロンプトを処理(プリフィル)します。現在のエンジンもチャンク化プリフィルで同じ処理を行います。

異なる長さのシーケンスを混在させるには、Orcaが「選択的バッチ処理」と呼ぶもう1つの工夫が必要でした。各トークンを個別に処理する演算(各トランスフォーマーレイヤーでの大規模な行列乗算など)は、すべてのシーケンスの全トークンをまとめて実行されます。各シーケンスにはそれぞれ固有のコンテキスト長があるため、アテンションはシーケンスごとに実行されます。

このシミュレーションでは、同時に4つのシーケンスをデコードするGPUで、同じ8つのリクエストをスケジューリングします。

import heapq

output_lengths = [5, 50, 8, 12, 40, 3, 30, 7]  # tokens each queued request will generate
slots = 4  # sequences the GPU decodes together at each step

# Static batching: each group of 4 runs until its longest request finishes
static_steps = sum(max(output_lengths[i : i + slots]) for i in range(0, len(output_lengths), slots))

# Continuous batching: the next request takes the first slot that frees up
slot_free_at = [0] * slots
for length in output_lengths:
    start = heapq.heappop(slot_free_at)
    heapq.heappush(slot_free_at, start + length)
continuous_steps = max(slot_free_at)

for name, steps in [("static", static_steps), ("continuous", continuous_steps)]:
    print(f"{name}: {steps} decode steps, slots busy {sum(output_lengths) / (steps * slots):.0%}")

静的バッチ処理ではデコードに90ステップ必要で、スロットの稼働率は43%です。Continuous batchingでは、最長のリクエストの長さにあたる50ステップで処理が完了し、スロットの稼働率は78%になります。

制限と併用する手法#

実行中のバッチを大きくすると総スループットは向上しますが、各ステップにかかる時間が延びるため、出力トークンあたりの時間も増加します。そのため、エンジンは同時実行するシーケンス数と、1ステップで処理するトークン数に上限を設けています。vLLMではそれぞれmax_num_seqsとmax_num_batched_tokensとして公開されています。また、continuous batchingは次の関連手法と組み合わせて使われます。

  • PagedAttention:KVキャッシュを小さなブロックに分けて割り当てるため、シーケンスが完了するとメモリがすぐに解放され、新しいシーケンスは使用する分だけを確保します。
  • チャンク化プリフィル:長いプロンプトを分割し、新しいリクエストのプリフィルによって、ほかのリクエストのデコードが停止しないようにします。
  • 投機的デコード:大規模なcontinuous batchではGPUの計算能力がすでにほぼ使い切られているため、バッチサイズが小さい場合に最も効果を発揮します。

Explore solutions

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを活用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、環境モニタリング、自然保護、地理空間分析に役立てましょう。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOモデルで航空モニタリングにビジョンAIを導入しましょう。コンピュータービジョンソリューションで、ドローン、航空宇宙のワークフロー、環境保全、地理空間業界を支援します。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る
スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを活用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、環境モニタリング、自然保護、地理空間分析に役立てましょう。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOモデルで航空モニタリングにビジョンAIを導入しましょう。コンピュータービジョンソリューションで、ドローン、航空宇宙のワークフロー、環境保全、地理空間業界を支援します。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る
スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを活用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、環境モニタリング、自然保護、地理空間分析に役立てましょう。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOモデルで航空モニタリングにビジョンAIを導入しましょう。コンピュータービジョンソリューションで、ドローン、航空宇宙のワークフロー、環境保全、地理空間業界を支援します。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう