bytedance/InfiniStore
KV cache store for distributed LLM inference
InfiniStore – 大型語言模型推論用的高性能KV儲存
是什麼
- 為加速大型語言模型(LLM)推論叢集而設計的開源鍵值(KV)儲存。
- 設計針對兩種常見的部署模式:
- 預填入-解碼分離叢集 – 分離節點分別處理繁重的預填入工作與快速的解碼工作;InfiniStore 在它們之間移動並重用KV快取。
- 非分離叢集 – 每個節點同時執行預填入與解碼;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。 |
典型工作流程
- 啟動伺服器 在機器(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 推論堆疊中的一個細分但至關重要的元件,負責高吞吐、低延遲的快取共享,使大型模型能高效服務大量請求。
相關
- 專案
- 專案
- 專案
- 專案