bytedance/InfiniStore
KV cache store for distributed LLM inference
InfiniStore – 大規模言語モデル推論用の高性能KVストア
何であるか
- 大規模言語モデル(LLM)推論クラスタの高速化を目的としたオープンソースのキー・バリュー(KV)ストア。
- 2つの一般的な展開パターンを想定して設計されている:
- プリフィル・デコード分離クラスタ – 重いプリフィル作業と高速なデコード作業を別々のノードで処理;InfiniStoreがプリフィルノードとデコードノードの間でKVキャッシュを移動・再利用する。
- 非分離クラスタ – 各ノードがプリフィルとデコードの両方を処理;InfiniStoreはGPUおよびCPUキャッシュと併用する共有で大容量のKVキャッシュプールとして機能する。
- 今日、vLLM推論エンジンとのLMCache統合により動作可能;SGLangおよび他のエンジンへの対応は進行中。
なぜ重要か
- LLM推論は中間のアテンションキー/バリューを格納するKVキャッシュに依存している。このキャッシュをデバイス上に保持するのは高速だが、GPUメモリの制限がある。InfiniStoreにより、キャッシュをノード間でスプール・転送・再利用でき、多数のリクエストにスケーリングする際のGPUメモリ圧力とレイテンシを低減できる。
- 低レイテンシのネットワーク経路(TCP、RoCE、InfiniBand)を提供し、GPU搭載機またはCPU専用マシンの両方で実行可能。
主な機能
| 機能 | 機能の内容 |
|---|---|
| KVキャッシュ転送 | プリフィルノードからデコードノードへキャッシュされたアテンションデータを移動し、デコードステップを即座に開始可能にする。 |
| KVキャッシュ再利用 | 後続のリクエストが以前に保存されたキャッシュを再利用(例:繰り返しのプロンプト)することで、計算時間を削減する。 |
| ノード間キャッシュプール | すべてのノードが読み書き可能な中央集権的な大容量キャッシュとして機能し、単一GPUのメモリを超えた有効キャッシュ容量を拡張する。 |
| ネットワークの柔軟性 | 通常のTCP/IPに加え、高性能RDMA(RoCEまたはInfiniBand)をサポートし、1マイクロ秒未満のレイテンシを実現。 |
| スタンドアロンモード | vLLM以外のLLMトレーニングや推論サービスにも使える汎用KVストアとして動作可能。 |
一般的なワークフロー
- サーバーの起動:適切なネットワークフラグを指定してマシン(GPUまたはCPU)上で実行。例:
infinistore --service-port 12345 # TCP infinistore --service-port 12345 --dev-name mlx5_0 --link-type Ethernet # RoCE infinistore --service-port 12345 --dev-name mlx5_0 --link-type IB # InfiniBand - クライアントの実行:
infinistore/example/に同期・非同期の例が提供されている。 - vLLMクラスタでは、各ノードにvLLM、LMCache、InfiniStoreをインストール;推論エンジンは自動的にInfiniStoreを呼び出してKVキャッシュを取得または保存する。
インストール
- クイックインストール(大多数のユーザー向け):
pip install infinistore - ソースからのインストール(貢献者またはカスタムビルド向け):
apt install libuv1-dev libflatbuffers-dev libspdlog-dev libfmt-dev \ ibverbs-utils libibverbs-dev libboost-dev libboost-stacktrace-dev pip install --no-build-isolation -e . pip install pre-commit && pre-commit install - 検証用:
infinistore --manage-port 8088 curl http://127.0.0.1:8088/selftest
参加方法
- テストスイートを実行:
pytest infinistore/test_infinistore.py。 - PRを提出する前にpre-commitスタイルチェックを実行。
- コード、ドキュメント、その他の改善への貢献を歓迎。
さらに学ぶには
- ドキュメントサイト: https://bytedance.github.io/InfiniStore/
- Slackコミュニティ(READMEに招待リンクあり)。
- GitHub上のソースコードとイシュー追跡。
InfiniStoreはLLM推論スタックにおけるニッチだが極めて重要な要素であり、大規模モデルが多数のリクエストを効率的に処理できる高スループット・低レイテンシのキャッシュ共有を処理している。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト