KV Cache
KV キャッシュは、Transformer が 1 トークンずつ生成する際に、すでに処理した位置のキー(Key)と値(Value)を保持しておき、次のトークンの注意計算で再利用する仕組みである。これがなければ、生成のたびに系列全体を計算し直すことになる。
PagedAttention の論文は、高いスループットを得るには十分な数のリクエストをまとめて処理する必要があるが、リクエストごとの KV キャッシュが巨大で、しかも生成の進行に伴って動的に伸縮するため、既存のシステムでは扱いにくいと指摘する。管理が非効率だと、断片化と重複によってメモリが大きく浪費され、まとめられるリクエスト数が制限される。同論文はオペレーティングシステムの仮想記憶とページングを参考にした PagedAttention を提案し、その上に構築した vLLM で KV キャッシュの無駄をほぼ無くすことと、リクエスト内およびリクエスト間での柔軟なキャッシュ共有を実現したと述べている。
推論サービスの単価は、加速器 1 台あたりで同時に何本のリクエストを処理できるかでほぼ決まる。KV キャッシュはその上限を規定するため、メモリ管理の巧拙が直接コストに響く。長い文脈の扱いを売りにする製品ほど、この部分の設計が事業性を左右する。