Repolode
microsoft

microsoft/vattention

PagedAttentionを使わず、CUDA仮想メモリAPIでGPUメモリをオンデマンドに割り当てる、LLM serving向けKV-cacheメモリマネージャー。

スター
527
フォーク
46
未解決の Issue
13
最終コミット
3 か月前

これは何?

vAttentionは、LLM servingシステム向けのKV-cacheメモリマネージャーです。CUDA仮想メモリAPIを使って仮想メモリと物理メモリの割り当てを分離し、KV-cacheを仮想アドレス空間上で連続した状態に保ちながら、物理GPUメモリをオンデマンドでマッピングします。

KV-cacheが連続しているため、vAttentionでは変更していないattentionカーネルを使って動的にメモリを割り当てられます。これは、ユーザー空間でページングを実装し、カスタムカーネルを必要とするPagedAttentionとは異なります。このプロジェクトには、vAttention allocator、PagedAttentionとvAttentionの両方に対応したSarathi-Serveの改変版、ベンチマーク用スクリプト、ベンチマーク用のOpenAI互換APIサーバーが含まれます。

このリポジトリの対象環境は、NVIDIA GPU(A100でテスト済み)を搭載したLinux、PyTorch 2.3.0、CUDA 12.1以降、Python 3.10です。FlashAttentionとFlashInferのバックエンド、および64KB〜2MBのページサイズに対応しています。より小さいページサイズには、カスタムUVMドライバーが必要です。

主な機能

  • 01KV-cacheを仮想メモリ上で連続させたまま、物理GPUメモリをオンデマンドで割り当てます。
  • 02PagedAttentionとは異なり、変更していないattentionカーネルで動作します。
  • 03FlashAttentionとFlashInferのattentionバックエンドに対応しています。
  • 0464KB〜2MBのページサイズに対応し、非同期のメモリ割り当てを計算とオーバーラップできます。
  • 05ベンチマーク用ランナーとOpenAI互換APIサーバーが含まれます。

ユースケース

  • LLM推論におけるKV-cacheのメモリ管理を研究・試作する。
  • prefill負荷の高いワークロードや長いコンテキストを使うワークロードで、servingのスループットとレイテンシをベンチマークする。
  • attentionカーネルを書き換えずに、動的なKV-cache割り当てをservingシステムに組み込む。

クイックスタート

  1. 1

    Python 3.10 を使用する conda 環境を作成して有効化する

    conda create -n vattn python=3.10
  2. 2

    PyTorch 2.3.0 に対応する libtorch をダウンロードして展開する

    wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip
  3. 3

    sarathi-lean ディレクトリから Sarathi-Serve をインストールする

    pip install -e . --extra-index-url https://flashinfer.ai/whl/cu121/torch2.3/
  4. 4

    LIBTORCH_PATH に libtorch ディレクトリを設定して、vAttention allocator をビルドする

    LIBTORCH_PATH=<path to libtorch dir> python setup.py install

使う前に知っておきたいこと

  • 主に Linux、A100 GPU、CUDA 12.1 以降でテストされているため、ほかのハードウェアでは動作しない場合があります。
  • 特定の PyTorch 2.3.0 と、それに対応する libtorch のバージョンが必要です。
  • オープンソースの vLLM と完全な機能同等性はない研究用プロトタイプです。

トピック

よくある質問

vattention とは?
PagedAttentionを使わず、CUDA仮想メモリAPIでGPUメモリをオンデマンドに割り当てる、LLM serving向けKV-cacheメモリマネージャー。 vAttentionは、LLM servingシステム向けのKV-cacheメモリマネージャーです。CUDA仮想メモリAPIを使って仮想メモリと物理メモリの割り当てを分離し、KV-cacheを仮想アドレス空間上で連続した状態に保ちながら、物理GPUメモリをオンデマンドでマッピングします。
vattention は無料で使えますか?ライセンスは?
vattention は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
vattention は今もメンテナンスされていますか?
半年以内に更新あり。vattention の最終コミットは 2026年8月24日 です。
vattention は何に使えますか?
LLM推論におけるKV-cacheのメモリ管理を研究・試作する。 prefill負荷の高いワークロードや長いコンテキストを使うワークロードで、servingのスループットとレイテンシをベンチマークする。 attentionカーネルを書き換えずに、動的なKV-cache割り当てをservingシステムに組み込む。
vattention のインストール方法は?
Python 3.10 を使用する conda 環境を作成して有効化する: conda create -n vattn python=3.10 PyTorch 2.3.0 に対応する libtorch をダウンロードして展開する: wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip sarathi-lean ディレクトリから Sarathi-Serve をインストールする: pip install -e . --extra-index-url https://flashinfer.ai/whl/cu121/torch2.3/ LIBTORCH_PATH に libtorch ディレクトリを設定して、vAttention allocator をビルドする: LIBTORCH_PATH=<path to libtorch dir> python setup.py install
vattention はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/microsoft/vattention

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト