AI 推論系統
vToken、KVキャッシュをトークン単位で仮想化し、メモリ制約下の最大同時実行数を2倍に
vTokenは既存のPagedAttentionに論理トークンテーブルと非同期コンパクションを追加し、トークン単位の退避によって物理ブロックを実際に解放できるようにする。vLLMプロトタイプではSLA制約下のスループットが最大1.37倍に向上したが、コードはまだ公開されておらず、移動コストがあらゆるハードウェアとトラフィックに適することも実証されていない。

長いコンテキストの推論では、重要度の低いKVエントリをトークン単位の戦略で退避することが多い。しかし、vLLMのPagedAttentionは固定サイズのブロック単位でメモリを割り当てるため、ブロック内に有効なトークンが1つでも残っていれば、ブロック全体を回収できない。[vTokenの論文](https://arxiv.org/abs/2608.13263)によると、Llama 3.1 8Bを16K contextで測定した場合、H2Oなどの戦略ではブロック内部の無駄が40〜60%に達することがあり、「論理的な削除」がGPU容量の実際の再利用を意味しないことが示された。
vTokenは、退避戦略とブロックマネージャーの間にトークン単位の仮想化レイヤーを追加する。各リクエストはlogical token ID、物理block/offset、存続ビットを保持する。戦略側はトークンを無効とマークするだけで、回収側がフラグメンテーション量のしきい値超過後、存続しているKVをより高密度な移動先ブロックへ非同期で移す。移動はforwardの後に実行され、CUDA eventによって次回のattentionが新しい位置を読み取ることを保証する。このため、attention kernelを書き換える必要がなく、CUDA Graphも維持できる。
著者らはvLLM 0.18.0とPyTorch 2.10上で、H2O、Random、Scissorhandsをテストした。ブロック全体が空になるまで待つNaive-Evictと比較して、vTokenはリクエストごとに保持するKVブロック数を27.2〜72.3%削減し、SLA制約下のスループットを最大1.37倍に向上させた。active-KV予算を固定した場合、実現可能な最大同時実行数は最大2倍になった。新しい退避戦略を統合するための変更量も、500行超から50行未満に減少した。現在の[vLLMメインラインコード](https://github.com/vllm-project/vllm/blob/main/vllm/v1/worker/block_table.py)も、block tableとtoken-to-slot mappingを中核としている。これは、vTokenが実際のruntime境界を対象にしていることを示している。
エンジニアリング面では今後、コードが公開されるか、upstreamへマージできるか、さらにマルチテナント、prefix caching、異なるblock size、FP8 KV、prefill/decode分離構成でも正味の利点を維持できるかが焦点となる。論文の数値は著者らのプロトタイプに基づく。コンパクションには一時的な移動先ブロックが必要なため、メモリが完全に枯渇している場合は開始できない。また、トークンの退避自体がモデル品質を損なう可能性も残る。