microsoft/vattention
Dynamic Memory Management for Serving LLMs without PagedAttention
何を解決するか
vAttentionは、LLMサービングシステムにおけるKVキャッシュのメモリ管理の課題に対処します。具体的には、動的メモリ割り当てをサポートするためにカスタムアテンションカーネルを再実装する必要がある問題(PagedAttentionが要求するもの)を解決し、プリフィル中心のワークロードにおけるパフォーマンスを向上させます。
動作方法
vAttentionはCUDA仮想メモリAPIを用いて、仮想メモリの割り当てと物理メモリの割り当てを分離します。これにより、物理メモリは必要に応じてオンデマンドで割り当てられつつ、KVキャッシュは仮想メモリ上で連続した状態を維持できます。メモリが連続的に見えるため、他のシステムで実装された複雑なユーザースペースのオンデマンドページングを必要とせずに、変更のないアテンションカーネルで使用できます。
対象ユーザー
NVIDIA GPU上の推論最適化およびメモリ管理に注力するLLMサービングシステムの開発者および研究者向けに設計されています。
主な特徴
- カーネル互換性: 変更のないアテンションカーネルに対して動的メモリ割り当てをサポート。
- 仮想メモリの分離: CUDA仮想メモリAPIを用いて仮想メモリと物理メモリの割り当てを分離。
- パフォーマンス: 特にプリフィル中心のワークロードにおいて、PagedAttentionよりもパフォーマンスが向上。
- 統合性: Sarathi-Serveと統合されており、FlashAttentionやFlashInferなどのバックエンドをサポート。
- カスタムドライバー対応: デフォルトの2MBを超えて64KB~256KBの小さなページサイズを可能にする、修正済みNVIDIA UVMドライバーを含む。
関連
- プロジェクト
ovg-project/kvcachedkvcached は、LLMサービングエンジン(vLLM、SGLang)に仮想メモリスタイルのエラスティックKVキャッシュ管理を追加するオープンソースのPythonライブラリです。複数のモデルがGPUを共有し、リクエストが必要なときにのみキャッシュメモリを割り当てることで、利用効率の向上、最初のトークンまでの遅延の低減、およびサービングコストの削減を実現します。主な機能には動的割り当て、メモリ制限用CLI、プレフィックスキャッシュ、ルーター/スリープモード、パイプライン並列モデル対応が含まれます。pipまたはDocker経由でインストールでき、環境変数で有効化し、既存のSGLang/vLLM環境に統合可能です。Apache 2.0ライセンスで、主要テック企業によって採用されています。
- プロジェクト
ModelEngine-Group/unified-cache-managementUCM (Unified Cache Manager) は、LLM 推論エンジンに共有 KV-cache 層を提供するオープンソースライブラリです。複数のリクエスト間でアテンションキャッシュを再利用し、キャッシュを外部ストレージに退避させてアクセラレータメモリを拡張できるほか、プラグイン可能なエンジンアダプターとストレージバックエンドを提供します。チャットボットサーバー、マルチモーダルパイプライン、および同じコンテキストに繰り返しアクセスするワークロードに最適です。
- プロジェクト
vllm-project/vllmvLLM は、大規模言語モデルの高スループット・低レイテンシーなサービングのためのオープンソースライブラリです。効率的な KV キャッシュ処理のための PagedAttention を導入し、多くの量子化形式をサポートし、高速アテンションカーネルを統合し、GPU、CPU、その他のアクセラレータで動作する OpenAI 互換 API を提供します。
- プロジェクト
flagos-ai/FlagAttentionFlagAttentionは、Tritonベースのライブラリで、高速かつメモリ効率の高いAttentionカーネル(FlashAttention、区分的、ページング、スパース、量子化、再帰的など)を提供し、多くのアクセラレータでの大規模モデルの学習と推論をサポートします。安定した密行列演算子は本番環境で使用可能で、Alpha版ではKVキャッシュのページング、ブロック・スパース・デコーディング、INT8量子化などの実験的機能を提供します。
- Dispatch