連続バッチングとは

連続バッチングとは、複数の依頼をまとめてさばくAIの推論で、ある依頼が終わったら空いた席にすぐ次の依頼を入れ、GPUを遊ばせずに処理し続ける仕組みです。AIサービスでは多くの利用者の依頼を同時に処理しますが、その配り方を工夫するだけで、同じハードでもさばける量が大きく変わります。KVキャッシュと並んで、AIの応答を速く・安く届けるための代表的な工夫のひとつです。

連続バッチングの仕組み

従来のやり方(静的バッチング)では、いくつかの依頼をひと束にして処理し、束のなかの全部が終わるまで次の依頼を入れません。ところがAIの返答は、短く終わるものもあれば長く続くものもあります。すると、早く終わった依頼の席が空いたままになり、GPUがその間ずっと手待ちになって遊んでしまうのです。連続バッチングは、1語生成するたびに空いた席を見つけて新しい依頼を滑り込ませます。束の単位ではなく、1語ごとの細かい単位で席を埋め続けるため、GPUが休む時間をぐっと減らせるのです。

どれくらい効果があるのか

発想自体はシンプルですが、効果は大きいことが報告されています。その代表例が、推論ソフトのvLLMで報告された、静的バッチング比で最大約23倍という処理量です。ハードを増やさずソフトの捌き方を変えるだけで処理能力が跳ね上がるため、いまでは主要なAI推論システムの標準的な機能になっています。1リクエスト内の計算を使い回すKVキャッシュが「縦の効率化」だとすれば、連続バッチングは複数依頼をうまく束ねる「横の効率化」にあたり、両者は組み合わせて使われるのが一般的です。

経営から見た連続バッチングの意味

連続バッチングは、同じGPUでさばける同時依頼の数を増やし、AIサービスの単位コストを下げる技術です。2022年に発表されたOrcaという研究で提案され、vLLMやTensorRT-LLMなど多くの推論基盤に採り入れられました。AIの利用が広がるほど、1件あたりの処理コストをいかに下げるかが効いてきます。ハードへの追加投資なしに効率を底上げできる連続バッチングは、AI運用の経済性を支える地味な立役者です。

Topic「白い空白」を埋めたら、処理量が桁違いになった

静的バッチングの様子を図にすると、早く終わった依頼の席が空席のまま残り、GPUが手待ちする時間が「白い空白」として並びます。連続バッチングがやったのは、「束が全部終わるまで待つ」のをやめ、「1語生成するたびに空席へ次の客を通す」へと発想を変えただけ。相席のテーブルで、食べ終わった人の席にすぐ次の人を案内するようなものです。たったこれだけの工夫で、vLLMでは最大23倍もの処理量を引き出しました。視点を「束ごと」から「1語ごと」へ細かくするだけで、眠っていた性能が一気に目を覚ました好例です。

連続バッチングに関するよくある質問

連続バッチングと静的バッチングは何が違いますか?
静的バッチングは束ねた依頼が全部終わるまで構成を固定するため、早く終わった席が空いてGPUが手待ちになります。連続バッチングは1語生成するたびに空席へ次の依頼を入れるので、GPUの遊ぶ時間を減らせます。
連続バッチングでどれくらい速くなりますか?
報告では、推論ソフトのvLLMで素朴な静的バッチングと比べ最大約23倍の処理量とされています。ハードを増やさず捌き方を変えるだけで効果が出る点が特徴です。
連続バッチングとKVキャッシュはどう使い分けますか?
KVキャッシュは1つの依頼の中で計算を使い回す工夫、連続バッチングは複数の依頼をうまく束ねて捌く工夫です。役割が異なるため、実際の推論基盤では両方を組み合わせて使います。

あわせて読みたい記事