bytedance/InfiniStore

KV cache store for distributed LLM inference

InfiniStore – 大規模言語モデル推論用の高性能KVストア

何であるか

  • 大規模言語モデル(LLM)推論クラスタの高速化を目的としたオープンソースのキー・バリュー(KV)ストア。
  • 2つの一般的な展開パターンを想定して設計されている:
    1. プリフィル・デコード分離クラスタ – 重いプリフィル作業と高速なデコード作業を別々のノードで処理;InfiniStoreがプリフィルノードとデコードノードの間でKVキャッシュを移動・再利用する。
    2. 非分離クラスタ – 各ノードがプリフィルとデコードの両方を処理;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ストアとして動作可能。

一般的なワークフロー

  1. サーバーの起動:適切なネットワークフラグを指定してマシン(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
    
  2. クライアントの実行infinistore/example/に同期・非同期の例が提供されている。
  3. 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スタイルチェックを実行。
  • コード、ドキュメント、その他の改善への貢献を歓迎。

さらに学ぶには


InfiniStoreはLLM推論スタックにおけるニッチだが極めて重要な要素であり、大規模モデルが多数のリクエストを効率的に処理できる高スループット・低レイテンシのキャッシュ共有を処理している。

関連

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