ovg-project/kvcached

Virtualized Elastic KV Cache for Dynamic GPU Sharing and Beyond

何を解決するか

LLMサービングエンジンは通常、起動時にKVキャッシュ用に固定された量のGPUメモリを確保するため、複数のモデルや動的ワークロードを実行する際、メモリのパーティショニングが硬直的になり、GPUの利用効率が低下する。kvcachedは、エラスティックで需要駆動型のKVキャッシュ割り当てを可能にすることで、複数のLLMがGPUメモリをより柔軟に共有できるようにする。

動作方法

LLMシステムにOS風の仮想メモリ抽象化を導入する。GPUの仮想アドレス空間と物理メモリの割り当てを分離することで、サーバーエンジンは初期に仮想メモリを確保し、キャッシュが実際に使用されるタイミングでのみ物理GPUメモリでバックアップすることができる。これにより、リアルタイムの負荷に応じてメモリをオンデマンドで割り当て・解放できる。

対象ユーザー

リソース制約のある環境でLLMをデプロイする開発者やオペレーター。複数のモデルを共有GPU上で実行したい、サーバーレスLLMデプロイを実装したい、またはLLM推論をトレーニングやファインチューニングなどの他のGPUワークロードと同時に実行したい場合に適している。

特徴

  • エラスティックKVキャッシュ: 実際の需要に基づいてメモリを動的に割り当て・解放。
  • GPU仮想メモリ: 実行時マッピングにより、論理的なKVキャッシュと物理メモリを分離。
  • エンジン統合: vLLMやSGLangなどの主流のサービングエンジン用のプラグインとして動作。
  • プレフィックスキャッシュ: 自動プレフィックスキャッシュ(APC)とRadixCacheをサポートし、リクエスト間での再利用を実現。
  • メモリ制御: メモリ制限を強制するためのCLIを提供。
  • マルチモデル対応: 硬直的なパーティショニングなしに、複数のLLMを同時にデプロイ可能。

関連

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