Continuous Batching (Iteration-level Scheduling)
連続バッチングは、Transformerベースの生成モデルを多数の同時リクエストに対して提供する際のスケジューリング手法である。従来のバッチ処理では、バッチに含まれるリクエストのうち先に生成を終えたものが、他のリクエストの完了を待たなければ返せないという非効率が生じる。この問題に対して、OSDI '22で発表されたOrcaが反復単位スケジューリング(iteration-level scheduling)を導入し、実装上は連続バッチングと呼ばれている。
中核は、スケジューリングの単位をリクエスト全体ではなく、モデル実行の1反復(1トークン生成ステップ)に細分化する点である。各反復の終了時に、生成を終えたリクエストをバッチから外して即座に応答を返し、待機列にある新しいリクエストを空いた枠に投入する。これにより、生成長がばらつく状況でも計算資源の遊びが減る。Orcaはあわせて選択的バッチング(selective batching)を提案し、Transformer内の演算のうちバッチ化が有効な部分にのみバッチ処理を適用することで、柔軟性と効率を両立させている。同論文はGPT-3 175Bを用いた評価で、同等のレイテンシ水準においてNVIDIA FasterTransformerに対し36.9倍のスループット改善を報告している。KVキャッシュの断片化を抑えるメモリ管理手法と組み合わせて用いられることが多い。
推論サービスの単位計算あたり処理量を決める基盤技術であり、GPU利用率とトークン単価に直結するため、推論基盤事業者の競争領域となっている。