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ドライバーを含む。

関連

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