ovg-project/kvcached

Virtualized Elastic KV Cache for Dynamic GPU Sharing and Beyond

kvcached – 共有GPU上でのLLM向けElastic KV-Cache

機能 – kvcachedは、LLMサービスエンジン(例:SGLangやvLLM)とGPUの間に位置するライブラリ(およびデーモン)です。エンジンにKVキャッシュの仮想メモリ風ビューを提供し、キャッシュを遅延予約し、リクエストが実際に必要とする場合にのみ実際のGPUメモリでバックアップします。これによりGPUメモリ使用量が弾力的になり、複数のモデルが同じGPUを共有でき、アイドル状態のモデルは「スリープ」でき、同じGPUでトレーニングやビジョンモデルなどの他のワークロードも実行できます。

重要性 – 現在のサービングスタックは、起動時に各モデルのKVキャッシュ用に固定量のGPUメモリを割り当てます。トラフィックが急増するとGPUを過剰にプロビジョニングする必要があり、トラフィックが少ないとそのメモリのほとんどがアイドル状態になります。kvcachedのオンデマンド割り当てにより、複数モデルシナリオでのファーストトークンまでの時間(TTFT)が2〜28倍短縮され、必要なGPU数を削減でき、直接コスト削減につながります。

主な機能

  • Elastic KVキャッシュ – 負荷の変化に応じてキャッシュブロックを割り当ておよび再利用。
  • GPU仮想メモリ抽象化 – 論理KVアドレスが実行時に物理GPUページにマッピングされます。
  • メモリ制限と制御 – CLIと改訂されたAPIでモデルごとの上限を強制できます。
  • フロントエンドルーターとスリープモード – リクエストを自動的にルーティングし、アイドルモデルをスリープ状態にします。
  • プレフィックスキャッシュ(APC / RadixCache) – 弾力性を保ちながら、リクエスト間で共通のプロンプトプレフィックスを再利用します。
  • 主要エンジンのサポート – SGLang(≥ v0.5.11)およびvLLM(≥ v0.17)と、幅広いアテンションタイプ(MHA、GQA、MLA、スライディングウィンドウ、ハイブリッド)で動作します。
  • AMD / ROCm対応 – ROCm上では自動的に非連続レイアウトに切り替わります。

典型的なユースケース

シナリオ 利点
マルチLLMサービス 複数のモデルが1つのGPUを共有し、静的パーティショニングを排除。
サーバーレスLLM リクエストが到着したときのみモデルが起動し、キャッシュはオンデマンドで割り当てられます。
複合AIパイプライン 検索→推論→要約の各段階がメモリを共有でき、単一GPUで複雑なパイプラインを実現。
GPUコロケーション LLM推論は、同じハードウェア上でトレーニング、ファインチューニング、ビジョンジョブと共存できます。

始め方

  1. パッケージ(またはDockerイメージ)をインストール – pip install kvcached --no-build-isolation または適切な ghcr.io/ovg-project/kvcached‑sglang / …‑vllm イメージをプル。
  2. 環境変数で有効化:
    export ENABLE_KVCACHED=true
    export KVCACHED_AUTOPATCH=1
    
  3. 通常のSGLangまたはvLLMサーバーを起動すると、kvcachedがエンジンをパッチし、KVキャッシュを自動的に管理します。
  4. kvctl を使用して制御ファイルを一覧表示、監視、削除し、提供されたCLIで制限を調整します。

パフォーマンススナップショット – A100-80GB上で3つの Llama-3.1-8B モデルを使用したベンチマークで、kvcachedはベースラインの静的割り当てエンジンと比較してTTFTを最大28倍削減しました。

ドキュメントとコミュニティ – 完全なアーキテクチャ、APIリファレンス、デプロイガイドはプロジェクトのDeepWikiページと公式ホームページ kvcached.org にあります。Slackチャンネル、GitHub issues、および成長中の採用者リスト(Google、Red Hat、AMDなど)がサポートを提供します。

ライセンス – Apache 2.0。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch