bytedance/InfiniStore

KV cache store for distributed LLM inference

InfiniStore – 大型語言模型推論用的高性能KV儲存

是什麼

  • 為加速大型語言模型(LLM)推論叢集而設計的開源鍵值(KV)儲存。
  • 設計針對兩種常見的部署模式:
    1. 預填入-解碼分離叢集 – 分離節點分別處理繁重的預填入工作與快速的解碼工作;InfiniStore 在它們之間移動並重用KV快取。
    2. 非分離叢集 – 每個節點同時執行預填入與解碼;InfiniStore 作為共享的、超大容量的KV快取池,與GPU和CPU快取並行使用。
  • 目前可透過 vLLM 推論引擎的 LMCache 集成使用;對 SGLang 及其他引擎的支援正在開發中。

為何重要

  • LLM 推論依賴於儲存中間注意力鍵/值的 KV 快取。將此快取保留在裝置上速度快,但受限於GPU記憶體。InfiniStore 允許您在節點間溢出、傳輸和重用該快取,從而在擴展至大量請求時降低GPU記憶體壓力與延遲。
  • 提供低延遲網路路徑(TCP、RoCE、InfiniBand),可在配備GPU或僅CPU的機器上執行。

核心功能

功能 作用
KV快取傳輸 將預填入節點的快取注意力資料傳輸到解碼節點,使解碼步驟可立即啟動。
KV快取重用 允許後續請求重用先前儲存的快取(例如重複的提示),從而減少計算時間。
跨節點快取池 作為中心化、大容量快取,所有節點均可讀寫,將有效快取擴展至單一GPU記憶體之外。
網路彈性 支援一般TCP/IP,也支援高階性能RDMA(RoCE或InfiniBand),實現亞微秒級延遲。
獨立運行模式 可作為通用KV儲存用於任何LLM訓練或推論服務,不僅限於vLLM。

典型工作流程

  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 推論堆疊中的一個細分但至關重要的元件,負責高吞吐、低延遲的快取共享,使大型模型能高效服務大量請求。

相關

  • 專案
  • 專案
  • 專案
  • 專案