Continuous Batching
コンティニュアス・バッチングがどのようにGPUのスループットを最適化し、レイテンシを削減するかを学びましょう。Ultralytics YOLO26を使用して、本番環境のMLタスクにおける効率を最大化する方法をご覧ください。
コンティニュアス・バッチングは、ハードウェアの利用率とスループットを最大化するために機械学習 (ML)で使用される高度なスケジューリングおよび推論最適化手法です。従来の静的バッチングでは、推論エンジンは、あらかじめ決められた数のリクエストが蓄積されるまで待機してから同時に処理を行います。これは多くの場合、システムがバッチ内で最も実行時間の長いリクエストの終了を待ってからリソースを解放する必要があるため、非効率を生みます。コンティニュアス・バッチング(動的バッチングや反復レベル・バッチングとも呼ばれます)は、アクティブなリクエストが完了するとすぐに新しいリクエストを計算バッチに注入することでこれを解決し、GPUのアイドル時間を大幅に削減し、全体的な効率を向上させます。
Link to this section関連概念の区別#
モデルデプロイ中にデータがどのように処理されるかをより深く理解するために、用語集にある他の関連用語とコンティニュアス・バッチングを区別すると役立ちます。
- バッチサイズ: これは、トレーニングや推論中に同時に処理されるサンプルの固定数を指します。従来のバッチ処理ワークフローは静的なサイズに依存していますが、コンティニュアス・バッチングでは、流入するトラフィックに基づいて実効バッチサイズを動的に変動させることが可能です。
- リアルタイム推論: この概念は、単一の入力を到着次第処理することで、即時の予測に向けた推論レイテンシを最小限に抑えることに焦点を当てています。コンティニュアス・バッチングは、高速なリクエストが低速なリクエストを待機することを強制せずに高いスループットを維持することで、高スループットな静的バッチングと低レイテンシなリアルタイム推論の間のギャップを埋めます。
Link to this section実際の応用例#
コンティニュアス・バッチングは、予測不可能なリクエストが大量に発生する本番システムにおいて不可欠です。その適用の具体的な例を2つ挙げます。
-
高スループットなテキスト生成: 大規模言語モデル (LLMs)をサービングする場合、ユーザーごとに生成されるレスポンスの時間は出力長に応じて変動します。Ray Serve上のvLLMのようにコンティニュアス・バッチングを活用するフレームワークは、新しく生成されたトークンを継続的にストリーミングし、完了した会話を新しいプロンプトと即座に入れ替えることができます。もともと反復レベル・スケジューリングに関する研究によって普及したこの手法は、テキスト生成のスループットを劇的に向上させます。
-
非同期ビデオ解析: 都市の交通カメラネットワーク全体で車両を追跡するような動画解析タスクでは、フレームは異なる間隔で到着します。コンティニュアス・バッチングを使用することで、物体追跡モデルはリソースが解放された瞬間に流入する動画フレームを動的に処理でき、スマートシティのダッシュボード向けのハードウェアアクセラレーションパイプラインを最適化できます。
Link to this sectionビジョンタスクにおける継続的処理#
トラフィックの多いモデルデプロイ環境を管理する場合、推論を反復的にストリーミングすることで、メモリがブロックされずに段階的に解放されるようにし、動的バッチングの利点をシミュレートできます。以下のPythonの例は、ジェネレーターパターンを使用してモデル予測APIを使い、画像の連続ストリームを効率的に処理する方法を示しています。
from ultralytics import YOLO
# Load the latest Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Using stream=True acts as a generator, iteratively processing inputs
# to keep memory usage low and throughput high
results = model.predict(source=["img1.jpg", "img2.jpg", "img3.jpg"], stream=True)
# Process each result as soon as it completes
for result in results:
print(f"Detected {len(result.boxes)} objects in this frame.")システムレベルのリソーススケジューリングを管理するには、処理速度と運用コストのバランスが必要です。大規模なコンピュータビジョン (CV)モデルや言語モデルをデプロイするチームは、これらの動的バッチを管理するために、高度なサービングフレームワークに依存する傾向が高まっています。インフラストラクチャを効率化したい企業向けに、Ultralytics Platformは、モデルのトレーニング、監視、および高度に最適化された本番環境へのエクスポートを行うための堅牢なツールを提供しています。






