RUSTFS GPUCACHE · G3.5 开发中

G3.5 层的共享 KV 缓存。

GPUCache 是 G3.5 共享 KV 热层。当前实现使用主机内存和 TCP;RustFS 是更冷的 G4 对象层,不位于热请求路径中。

Rust · Apache 2.0 · CPU/TCP 源码已可运行

问题

上下文被逐出,GPU 就得重算。

长上下文、多轮对话和 Agent 让 KV Cache 越来越大,GPU 显存很快就装不下。被逐出的 KV 再被用到时,只能重新做一遍预填充:GPU 算的是已经算过的东西,首 token 也要多等一会儿。

现有的几层各有局限。主机内存容量有限;节点本地 SSD 只服务一台机器,难以在节点之间共享;共享存储是为持久性和容量设计的,不在推理热路径上。

方案

复用兼容块,未命中时重新计算。

BlueField-3、GDS 和真实 RDMA 仍在开发中,状态为 NOT_RUN_HARDWARE。当前路径包含主机拷贝,不宣称零拷贝或绕过 CPU。

  1. 01

    当前可运行的路径

    源码包含 CPU/TCP、内存和普通文件后端,无需 GPU 或 DPU。

  2. 02

    单节点与多分片

    有界路由、连接和 epoch fencing 支持由运维方管理的分片。

  3. 03

    故障意味着重新计算

    G3.5 不增加纠删码或持久性副本。传输完成状态未知时保持隔离,只有显式排空或更新的 fence 才能允许复用。冷数据持久性归 RustFS;这是缓存契约,不是灾备,也不是集群规模验证。

不适合的场景

  • 需要持久保存的数据。G3.5 是缓存,持久数据放 G4 RustFS。
  • 训练场景的 checkpoint 存储。那是 G4 的工作。
  • 尚未完成生产部署验证。

架构

当前运行 CPU/TCP,硬件目标独立验证。

GPUCache 是 G3.5 共享 KV 热层。当前实现使用主机内存和 TCP;RustFS 是更冷的 G4 对象层,不位于热请求路径中。

  1. 主机客户端
  2. TCP
  3. G3.5 分片Rust
  4. CPU
  5. 主机内存/文件

CPU 契约已可运行

  1. 01

    当前可运行的路径

    源码包含 CPU/TCP、内存和普通文件后端,无需 GPU 或 DPU。

  2. 02

    先验证身份,再复用

    只有已提交且完整身份符合预期的块才能命中;未命中时重新计算。

  3. 03

    单节点与多分片

    有界路由、连接和 epoch fencing 支持由运维方管理的分片。

  4. 04

    冷层独立运行

    RustFS 是 G4,不进入热路径。冷层 mock 契约已有测试;真实 RustFS 为 NOT_RUN_HARDWARE。

  5. 05

    DPU 目标

    DPU/GDS/RDMA 仍为 NOT_RUN_HARDWARE。engine-spike 使用伪造块,aarch64 仅提供 CPU 证据。

BlueField-3、GDS 和真实 RDMA 仍在开发中,状态为 NOT_RUN_HARDWARE。当前路径包含主机拷贝,不宣称零拷贝或绕过 CPU。 当前可运行的路径

路线图

现在做到哪一步。

路线图区分可获取的源码、可复现的 CPU 契约与硬件验证,不承诺发布日期或实测集群容量。

状态能力边界
CPU/TCP 已可运行身份、生命周期、MemoryStore/FileStore、TCP ACL 与读取准入使用合成数据测试;依赖可信网络边界,未实现 mTLS。
CPU/TCP 已可运行有界分片客户端、成员更新与 epoch fencing路由由运维方管理;没有分布式共识或集群规模认证。
mock 契约已可运行G4 v3 清单、有界写入队列、回填与保留策略真实 RustFS:NOT_RUN_HARDWARE;孤儿对象不自动回收。
CPU 模拟已可运行DPU 消息、故障注入与 TCP 功能对照没有设备卸载、零拷贝、吞吐或 TCO 实证。
伪造块实验已可运行EngineBlockContract 与 engine-spike真实 vLLM 导出/导入:NOT_RUN_HARDWARE;GPU/模型运行:NOT_RUN_BUDGET。
开发中真实 RDMA、GDS、BlueField-3 / DOCA 与 SPDKNOT_RUN_HARDWARE;可选特性不链接设备,并保持拒绝打开。

怎样读这张路线图

与 RUSTFS

G3.5 放热的,G4 存久的。

GPUCache 由 RustFS 团队打造。两者在存储分层里分工明确:GPUCache 是 G3.5 热层,追求离 GPU 近、可以复用;RustFS 是 G4 容量层,是用 Rust 编写的 S3 兼容分布式对象存储,负责模型、数据集、会话历史和推理产物的持久保存。

热层丢了可以重算,容量层的数据不能丢。两件事分开做,各自都更简单。

快速开始 开发中

构建、测试并检查 CPU 契约。

主分支已包含可运行的 Rust 代码,实现基于 CPU/TCP 的 G3.5 共享 KV 缓存。先运行软件契约测试,无需 GPU 或 DPU。

源码已可获取。目前没有可安装的发布版本,也未完成生产部署验证。

  1. 安装稳定版 Rust 与 Cargo、Git 和 Python 3。
  2. 克隆源码并运行工作区测试。
  3. 按完整快速开始运行演示与 CPU 回归。
git clone https://github.com/rustfs/GPUCache.git
cd GPUCache
cargo test --workspace --all-targets
cargo run -p gpucache-transport --bin share-demo

完整快速开始包含 CPU 回归命令和明确的硬件限制。 从源码构建和测试

参与

一起把 G3.5 层做出来。

GPUCache 欢迎熟悉 Rust 系统编程、RDMA/RoCEv2、NVIDIA DOCA 与 BlueField、ARM64 交叉编译,以及 vLLM、TensorRT-LLM KV Cache 机制的开发者参与。