LMCache
LMCache: とは何なのか、どのような問題を解決し、なぜ注目を集めているのか
解決する問題
LMCacheは、LLM推論におけるKV (Key-Value) キャッシュの非効率性を解決します。通常、キャッシュは一時的な状態として扱われます。これにより、RAG、マルチターン会話、エージェントタスクなどの長文コンテキストのワークロードにおいて、繰り返しのprefill計算、高いTTFT (Time-to-First-Token)、および限定的なスループットが発生します。
仕組み
LMCacheは、ベンダーに依存しない管理レイヤーとして機能し、KVキャッシュを再利用可能な永続的な知識へと変換します。KVキャッシュをGPUメモリから階層化ストレージ(CPU RAM、ローカルSSD、またはRedisやS3のようなリモートバックエンド)へとオフロードします。スタンドアロンのデーモンプロセスとして動作するため、推論エンジンがクラッシュしてもアクティブなままです。また、CacheBlendを介した非プレフィックスKV再利用や、PD (Prefill-Decode) 分離(disaggregation)をサポートしており、NVLinkやRDMAのような高速トランスポートを介してprefillワーカーとdecodeワーカー間でキャッシュを転送します。
対象ユーザー
長文コンテキストのアプリケーションのレイテンシとコストを削減する必要がある、スケーラブルなLLM推論システムを構築する開発者や研究者、および様々なオープンソースのサービングエンジンやハードウェアベンダーを使用しているユーザーを対象としています。
ハイライト
- Engine-Independent: 推論エンジンとの運命共同体(fate-sharing)を避けるため、個別のプロセスとして動作します。
- Tiered Storage: CPUメモリ、ローカルディスク、およびリモートストレージ(Redis, S3など)へのオフロードをサポートします。
- Observability: キャッシュヒット、ライフサイクル、およびパフォーマンス診断のためのプロダクションレベルのメトリクスを提供します。
- Flexible Reuse: 単純なプレフィックスキャッシュを超えたKV再利用を可能にし、キャッシュされたブロックをプロンプト内の任意のポジションで使用できるようにします。
- Hardware Agnostic: 様々なハードウェア(AMD, Arm, Ascend, NVIDIA)およびトランスポートレイヤーと互換性があります。
Sources
- undefinedLMCache/LMCache