BlendServe: Optimizing Offline Inference for Auto-regressive Large Models with Resource-aware Batching
BlendServeは、リソースのオーバーラップとプレフィックス共有を効果的に組み合わせるためにリソース認識型のプレフィックスツリーを導入することで、オフラインの自己回帰型大規模モデル推論を最適化し、vLLMやSGLangといった業界標準に対して最大1.44倍のスループット向上を実現するシステムです。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
あなたは、カスタムロボット(これらはAIモデルです)を製造する、大規模で高速な工場を運営していると想像してください。あなたの仕事は、数千件の注文(リクエスト)を処理してロボットを組み立てることです。
以前は、ロボットを素早く作りたい場合、2種類の注文のどちらかを選択しなければなりませんでした。
- 「重量級の力仕事」注文: 多くの筋肉(計算資源/Compute)を必要としますが、ストレージ容量(メモリ)はほとんど必要としません。例えば、「強力な腕を持つが、収納スペースを持たないロボット」を作る注文のようなものです。
- 「重量級のストレージ」注文: 筋肉はほとんど必要としませんが、膨大な量のストレージスペースを必要とします。例えば、「小さな腕しか持たないが、巨大な倉庫を内蔵したロボット」を作る注文のようなものです。
問題点:工場のフロアにおけるボトルネック
あなたの工場には、主に2つのリソースがあります。
- 筋肉マシン(計算資源/Compute): 高速ですが、待ち時間が発生すると疲れてしまいます。
- ストレージ棚(メモリ/Memory): 容量は大きいですが、効率的に使われないと詰まってしまいます。
旧来の方法(ナイーブなバッチ処理):
以前の工場では、単に注文が届いた順に処理していました。もし「重量級の力仕事」の注文が10件並んでいれば、筋肉マシンはフル稼働しますが、ストレージ棚は空のまま無駄になります。次に「重量級のストレージ」の注文が10件続けば、ストレージ棚は満杯になりますが、筋肉マシンは手持ち無沙汰に、ただ手をこまねいて待つことになります。
これは、トラックにレンガだけを詰め込んだり、次に羽毛だけを詰め込んだりするようなものです。これらを混ぜ合わせることができれば、もっと多く積み込めるはずなのに、トラック(コンピュータチップ)は時間の半分、空の状態になってしまいます。
新しい問題:
また、多くの注文が全く同じ最初のステップ(例:「ロボットを青く塗る」)を共有している場合を利用する「プレフィックス共有(Prefix Sharing)」というテクニックも使われていました。これらの注文を連続して行えば、青く塗る作業を一度だけで済ませ、その結果を再利用できます。
しかし、「共有(『青く塗る』の注文をまとめて行うこと)」のために最適な順番(=同じ工程をまとめること)を選ぶと、どうしても「重量級の力仕事」の注文をまとめ、「重量級のストレージ」の注文をまとめることになってしまいます。これは「混ぜる」戦略を台無しにし、再びマシンを半分空の状態にしてしまうのです。
解決策:BlendServe
この論文の著者たちは、BlendServeと呼ばれるシステムを作り出しました。これは、仕事の順番を並べ替えて、両方の良いとこ取りができる超スマートな工場マネージャーのようなものです。
1. 「リソース認識型」ツリー:
BlendServeは、単純な一本の列ではなく、すべての注文を巨大な「家系図(ファミリーツリー)」として整理します。
- 枝(Branches): 同じ開始ステップを共有する注文のグループ(プレフィックス共有)。
- ラベル(Labels): すべての枝には、どれだけの「筋肉」と「ストレージ」が必要かを示すラベルが付いています。
2. 「デュアルスキャナー」アルゴリズム:
これが魔法のトリックです。マネージャーは単に列を歩き回るのではなく、ツリーの両端から同時に作業を行います。
- 左側から「重量級の力仕事」の注文を掴みます。
- 右側から「重量級のストレージ」の注文を掴みます。
- そして、それらを同じバッチの中に一緒に入れます。
結果:
これにより、工場が稼働するとき、筋肉マシンが懸命に働く一方で、ストレージ棚も同時に満たされていきます。両者が互いに助け合っているのです。トラックには、レンガと羽毛が完璧に混ざり合い、隙間なく積み込まれます。
なぜこれが重要なのか
この論文は、BlendServeが「共有ステップ」を維持しながらも、この巧妙な混合を行うことで、以下のことが実現できると主張しています。
- 現在のトップシステム(vLLMやSGLangなど)と比較して、工場を最大44%高速化できる。
- **理論上の「完璧な」速度の90%**に到達できる。完璧な速度を時速100マイルだとすると、BlendServeは時速90マイルに到達できるのに対し、他のシステムは時速60〜70マイル程度にとどまるイメージです。
課題(そして、どのように解決したか)
論文では、AIがテキストを一単語ずつ生成していくため、「重量級のストレージ」注文が正確にどれくらい時間がかかるかを予測するのは難しいことを認めています。これを解決するために、BlendServeは注文の小さなサンプルに対して簡単な「テスト走行」を行い、それらがどれくらいの時間を要するかを推測し、その推測に基づいて完璧なミックスを構築します。たとえ推測が多少外れたとしても、システムはオンザフライ(即座に)で調整できるほど堅牢です。
要約すると、 BlendServeはコンピュータをアイドル状態にさせないためのスマートなスケジューラーです。異なるタイプのAIタスクを混ぜ合わせることで、コンピュータの「脳(計算資源)」と「メモリ(記憶)」を完璧に調和させ、オフラインのAI処理をより高速に、より安価に実現します。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。