Continuous Batching
連続バッチ処理 (continuous batching) がGPUスループットを最適化し、レイテンシを削減する仕組みを学びましょう。本番環境のMLタスクでUltralytics YOLO26を使用して効率を最大化する方法を解説します。
Continuous batchingは、ハードウェアの利用率とスループットを最大化するためにmachine learning (ML)で使用される高度なスケジューリングおよび推論最適化手法です。従来の静的バッチ処理では、inference engineは同時に処理する前に、あらかじめ決められた数のリクエストが蓄積されるのを待ちます。これは、システムがリソースを解放する前にバッチ内で最も処理時間が長いリクエストの完了を待つ必要があるため、非効率につながることがよくあります。動的バッチ処理や反復レベルバッチ処理とも呼ばれるContinuous batchingは、アクティブなリクエストが完了するとすぐに新しいリクエストを計算バッチに挿入することでこれを解決し、GPUsのアイドル時間を大幅に削減して全体的な効率を向上させます。
関連概念の区別#
モデルのデプロイ時にデータがどのように処理されるかを理解するために、用語集にある他の関連用語とContinuous batchingの違いを明確にすることが役立ちます。
- Batch Size:これは、トレーニングまたは推論中に同時に処理されるサンプルの固定数を指します。従来のbatch processing workflowsは静的なサイズに依存しますが、Continuous batchingでは、着信トラフィックに基づいて有効なバッチサイズを動的に変動させることができます。
- Real-Time Inference:この概念は、即座の予測のためにinference latencyを最小限に抑え、入力が到着したときに単一の入力を処理することに焦点を当てています。Continuous batchingは、高速なリクエストが低速なリクエストを待たされることなく高いスループットを維持することにより、高スループットの静的バッチ処理と低レイテンシのリアルタイム推論のギャップを埋めます。
実社会での応用#
Continuous batchingは、予測不可能な大量のリクエストを処理する本番環境のシステムにおいて不可欠です。以下に、その適用例を2つ挙げます。
-
高スループットテキスト生成:Large Language Models (LLMs)を提供する際、異なるユーザーに対する応答の生成には、出力長に応じてさまざまな時間がかかります。Ray Serve上のvLLMなどのContinuous batchingを活用するフレームワークは、新しく生成されたトークンを継続的にストリーミングし、完了した会話を新しいプロンプトに即座に入れ替えることができます。research on iteration-level schedulingによって元々普及したこの手法は、テキスト生成のスループットを大幅に向上させます。
-
非同期型動画分析:都市の交通カメラネットワーク全体での車両の追跡などのvideo understandingタスクでは、フレームが異なる間隔で到着します。Continuous batchingにより、object trackingモデルは、リソースが空いたミリ秒単位で着信動画フレームを動的に処理でき、スマートシティダッシュボード向けのhardware accelerationパイプラインを最適化します。
ビジョンタスクにおける継続的処理#
トラフィックの多いmodel deployment practicesを管理する場合、推論を反復的にストリーミングすることで、メモリがブロックされるのではなく段階的に解放されるようにし、動的バッチ処理の利点をシミュレートできます。次のPythonの例は、ジェネレーターパターンとmodel prediction 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.")システムレベルのresource schedulingの管理には、生速度と運用コストのバランスが必要です。大規模なcomputer vision (CV)および言語モデルをデプロイするチームは、これらの動的バッチを管理するために高度なサービングフレームワークにますます依存するようになっています。インフラストラクチャの合理化を目指すエンタープライズチーム向けに、Ultralytics Platformは、モデルのトレーニング、モニタリング、および高度に最適化された本番環境へのエクスポートのための堅牢なツールを提供します。






