- vLLMは、回答生成中に増えるKVキャッシュを固定長のブロックで管理する「PagedAttention」を使い、GPUメモリの無駄を減らす。
- 論文は、比較対象と同程度の遅延を保った条件で、評価した大規模言語モデルの処理量が2〜4倍になったと報告する。
- この倍率は論文のモデル、GPU、要求の長さ、比較実装で得られた値であり、すべてのサービスの改善率ではない。
何を確かめた研究か
大規模言語モデルは文章を一度に完成させるわけではない。次のトークンを一つずつ生成するとき、過去のトークンに関するキーと値を「KVキャッシュ」としてGPUに残す。要求ごとに必要な長さは変わり、生成が続く間にキャッシュは増える。メモリを大きな連続領域として確保すると、使わない予約領域や断片化が生じ、同時に処理できる要求が減る。
PagedAttentionとvLLMの論文は、このメモリ管理を主題にした。PagedAttentionは、OSのページ管理を参考にKVキャッシュを小さなブロックへ分ける。論理的に連続するトークンの情報を、物理的には連続しない場所へ置ける。vLLMはこの仕組みの上に、要求をまとめて実行するモデル提供システムを構築した。
どう検証したか
研究チームはOPTの13B、66B、175BとLLaMAの13Bを対象に、Google CloudのNVIDIA A100 GPUを使った。ShareGPTとAlpacaのテキストから入力・出力の長さを取り、到着時刻を生成して負荷を作った。ShareGPT由来の要求はAlpaca由来より平均入力が長く、出力も長い。これにより、要求の長さが異なる場合を比較できる。
比較対象はFasterTransformerとOrca系の方式である。論文は、要求の到着率を上げたとき、生成トークン当たりの平均遅延をどの程度に保てるかを測る。Orcaの公開実装はないため、研究チームが複数の予約方法を仮定して再実装した。未来の出力長をあらかじめ知っている「Oracle」設定も比較に含めるが、実運用では使えない上限の参考値だ。
何が分かったか
論文の評価では、同程度の遅延を保ちながら、vLLMは比較システムより2〜4倍の処理量を示した。差は長い系列、大きなモデル、複数の出力を作る復号方法で目立つという。生成の途中でキャッシュを必要な分だけ割り当て、共通部分を共有できることが、多くの要求を一度に載せる助けになる。
ここで改善したのは、モデルの回答の正確さではない。処理量とメモリ使用の関係である。また「2〜4倍」は同じ条件で比較した測定の範囲であり、単発の応答が常に4倍速いことを意味しない。サービスの費用削減率にも直接換算できない。
限界は何か
負荷に使った要求の長さは実データから取っているが、到着時刻は合成した。実際の利用者の時間帯による集中、異なるGPU、ネットワークやアプリ全体の遅延まで、この実験が測ったわけではない。Orcaとの比較にも、研究チームが実装した方式という条件がある。
論文は、ページ管理の考え方がどのGPU処理にも効くとは主張していない。学習のようにテンソルの形が事前に決まる仕事では、別のメモリ計画が適する場合がある。vLLMの測定結果は、応答を継続的に生成するモデル提供という問題に結び付けて読む必要がある。
仕事との接点
モデルを提供する基盤を選ぶなら、自社の要求で入力長と生成長の分布を調べ、到着率を変えながら処理量、遅延、GPU使用量を同時に測る。長い会話と短い要約では、KVキャッシュにかかる圧力が違う。比較対象にも同じモデルと要求を与える。これは論文の評価設計を利用したTRAIL編集部の提案であり、個別企業の費用対効果を論文が示したものではない。