第1章:什么是分离式内存 —— AI Infra 视角下的硬件演化与系统范式
从 GPU 显存爆炸、推理 KV-cache 池化、训练 checkpoint 远端写三个 AI infra 痛点出发,梳理分离式内存的硬件路径(RDMA/CXL)与系统范式(DM 事务、KV-cache pool),建立『为什么 AI infra 需要远端内存』的直觉
千亿大模型一张 H100 装不下,推理一秒生几十 GB KV-cache,训练 checkpoint 几十 TB 反复写盘——AI infra 在算力维度狂飙的同时,内存维度正在以同样速度撕裂。本章把 “Disaggregated Memory(分离式内存)” 这个看似来自数据库领域的概念拆开:它的硬件根源是什么、它和 RDMA / CXL 是什么关系、它怎么进入 AI infra 的核心数据通路、它的设计有哪些不可能三角。读完这章,你会知道为什么 Mooncake、FORD、Pond 这些看似不同领域的系统,本质都在解一个共同问题——算力和内存的物理位置已经分开,但软件还没适应。
📑 目录
- 1. 一个具体场景:KV-Cache 怎么把内存撑爆的
- 2. 三种”内存不够”的形态:训练 / 推理 / 数据系统
- 3. Disaggregation 的硬件路径:从 NUMA 到 RDMA 到 CXL
- 4. 把”远端内存”当本地用 vs 当事务系统用
- 5. AI Infra 的三种典型用法
- 6. 分离式内存的不可能三角
- 7. 本模块章节地图
- 自我检验清单
- 参考资料
1. 一个具体场景:KV-Cache 怎么把内存撑爆的
来算一笔账。Llama 3-70B 在 FP16 下,每个 token 的 KV-cache 约:
2 (K + V) × 80 (layers) × 8192 (hidden) × 2 (FP16) ≈ 2.5 MB / token
一个 32K context 的对话占 ~80 GB KV-cache——已经超过 H100 的 80GB HBM 上限。商用 LLM API 通常并发跑数百个会话,单实例总 KV-cache 需求轻松到 TB 级。
直觉反应:把每个会话的 KV-cache 单独算单独存,不行就拒绝长 context。 问题:用户体验崩,且大量重复 prefix(系统 prompt、few-shot 示例)被反复重算,GPU 算力浪费。
Mooncake / DistServe 的做法:把 KV-cache 从 GPU HBM 倒腾到 跨节点的 KV-cache 池,用 RDMA 拉取。冷数据放 CPU DDR、温数据放邻居 GPU HBM、热数据放本地——这就是一个典型的 分离式内存系统。
🌟 结论:KV-cache 池本质上不是”推理优化”,而是 AI infra 借用了数据库领域的 disaggregated memory 范式——只是数据从交易记录换成了张量。
🍎 直觉比喻:本地 HBM 像 CPU 寄存器,本节点 DDR 像 L1 cache,远端节点的 HBM/DDR 像 L2/L3 cache,持久化 NVMe 像主存——AI infra 正在重建一套 跨机柜的 cache hierarchy。
2. 三种”内存不够”的形态:训练 / 推理 / 数据系统
“内存不够”在 AI 系统里有三副面孔,根因不同,解药也不同:
2.1 训练侧:模型状态超过单机总内存
| 模型 | 参数量 | FP16 参数大小 | 加 optimizer state(Adam,FP32) | 单机能装吗 |
|---|---|---|---|---|
| GPT-3 | 175B | 350 GB | ~2.1 TB | 8 卡 H100 = 640GB,装不下 |
| Llama 3-405B | 405B | 810 GB | ~4.9 TB | 单机 8 卡装不下 |
| 万亿稀疏 MoE | 1T+ | 2 TB+ | 12 TB+ | 集群级问题 |
解药:ZeRO / FSDP 把参数切片到多卡,ZeRO-Infinity 进一步把 optimizer state offload 到 CPU DDR 甚至 NVMe——本质上是在用”远端内存”换显存。当 offload 跨机时,RDMA 是必备通路。
2.2 推理侧:KV-cache 与 prefix 共享
KV-cache 撑爆的本质是 多会话内存隔离没必要:同一系统 prompt 被 100 个会话各算一遍,99% 算力浪费。
解药:跨实例的 KV-cache 池 + prefix 共享 + Prefill/Decode 分离。Mooncake 报告 Kimi 商用部署 prefix 命中率 50%+——直接省掉一半算力。
2.3 数据系统:事务 / 推荐特征 / 模型 metadata
LLM 系统的”周边数据”——用户偏好、推荐特征表、模型版本 metadata、训练样本索引——量级常常超过单机内存,且要求 事务一致性(改了用户偏好得马上生效)。
解药:分离式内存数据库——FORD / Motor / LOTUS 这一系。CN(compute node)做事务逻辑,MN(memory node)是被动 RDMA 内存池,数据通过一致性协议跨多 MN 复制。
🧠 关键洞察:这三个看似无关的场景共享同一个底层范式——把”装不下的状态”放到远端,通过低延迟互联(RDMA / CXL)按需访问,在软件层面隐藏物理位置。Disaggregated Memory 是一种横跨训练、推理、数据系统的设计哲学,不是某个具体系统。
3. Disaggregation 的硬件路径:从 NUMA 到 RDMA 到 CXL
按 延迟 / 距离 / 一致性强度 三个轴,分离式内存有三条硬件路径:
延迟 一致性 距离
──────────────────────────────────────────────────
~ns hardware coherent same socket ← NUMA / UPI
~100 ns hardware coherent 1m (same rack)← CXL 1.1/2.0
~µs-10µs software (no HW) 10m (cross-rack)← RDMA (RoCE/IB)
~ms software far / NVMe pool← NVMe-oF / GDS
3.1 NUMA(局部分离)
CPU 多 socket 的 DDR 跨 socket 访问,延迟从 80ns(local)涨到 130ns(remote)——这是分离式内存最早的雏形。优势:硬件缓存一致(MESI 协议)。劣势:跨 socket 带宽是瓶颈,且不能跨机。
3.2 RDMA(跨节点分离)
Mellanox ConnectX 系列网卡支持 bypass 内核 + bypass 远端 CPU 的内存访问。one-sided READ/WRITE/CAS 是核心:发起方直接读写远端内存,远端 CPU 不感知。
- 延迟:5-10µs(RoCE),1-3µs(InfiniBand)
- 带宽:100-400 Gbps
- 一致性:软件层负责——硬件不保证读到最新写,要软件用 fence、CAS 自己同步
- 适合:跨节点 / 跨机柜、容量优先于延迟
🍎 直觉比喻:RDMA 像 快递员有钥匙——他能进你家拿东西不打扰你,但你得自己保证家里东西是最新版的。
3.3 CXL(机柜内分离,正在崛起)
Compute Express Link 是 PCIe 物理层 + 缓存一致协议,Intel SPR(2023)开始量产。Type 3 设备(memory expander)就是远端 DDR——把它挂上 CXL 总线,OS 看到的是一段额外的 NUMA-like 内存。
- 延迟:本地 DDR ~80ns,CXL Type 3 ~150-300ns
- 一致性:硬件保证(类似 NUMA)
- 缺点:目前只能机柜内,2.0 才支持 pooling,3.0 才支持 sharing
- 适合:延迟敏感 + 机柜内距离
| 维度 | RDMA | CXL |
|---|---|---|
| 延迟 | µs 级 | 百 ns 级 |
| 一致性 | 软件 | 硬件 |
| 距离 | 跨机柜(数十 m) | 机柜内(数 m) |
| 标准化 | 成熟(2010s) | 2.0/3.0 仍演进 |
| 编程模型 | verbs / 异步 | load/store 直接访问 |
| 当前生态 | 数据库、HPC、AI 训练通信 | 云端 DDR pool 起步 |
⭕ 不互斥:RDMA 解决跨机柜远距离,CXL 解决机柜内低延迟,两者长期共存而非替代。研究 frontier 是 “CXL pool 内跑 RDMA 协议”——既要 CXL 的延迟又要 RDMA 的距离。
4. 把”远端内存”当本地用 vs 当事务系统用
拿到 RDMA / CXL 这套硬件后,软件有两条路线分歧:
4.1 透明路线:把远端内存伪装成本地 RAM
代表:InfiniSwap(NSDI’17)、LegoOS(OSDI’18)、Pond / TPP(ASPLOS’23)。
OS 把远端内存当 swap 或额外 NUMA node,应用 不改一行代码——你 malloc 一段大内存,OS 自己决定放本地 DDR 还是 CXL 池或 RDMA 远端。
- 优点:零应用改动
- 缺点:OS 对应用语义无感,发生 page fault 时会卡几十 µs;不适合事务一致性场景
4.2 显式路线:暴露给应用,做事务系统
代表:FaRM(NSDI’14)、FORD(FAST’22)、Motor(OSDI’24)、LOTUS(2025)、Mooncake(FAST’25)。
应用直接用 RDMA verbs 编程,自己管理一致性、复制、锁。每个事务读到的是远端内存上的一段确定 offset,提交时用 OCC(乐观并发控制)校验版本。
- 优点:语义可控,延迟稳定
- 缺点:应用得重写,且 OCC validation 在高冲突下会 collapse(我们后面 AdaptX 就在解这个)
🌟 结论:透明路线适合”内存不够”的容量问题(CXL pool / 训练 offload),显式路线适合”语义敏感”的数据系统(事务、KV-cache 池、模型 metadata)。AI infra 两条路都在用——选错路径,设计就一定崩。
5. AI Infra 的三种典型用法
把前面的硬件路径和软件路线交叉,落到 AI 系统里有三种典型用法:
5.1 KV-Cache 池化(Mooncake 模式)
问题:LLM 推理多会话 prefix 重复计算严重,单 GPU HBM 装不下足够会话。
架构:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Decode 实例 │ │ Decode 实例 │ │ Prefill 实例 │
│ GPU + HBM │ │ GPU + HBM │ │ GPU + HBM │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└────────────RDMA fabric ───────────┘
│
┌─────────▼──────────┐
│ KV-Cache Pool │
│ CPU DDR / NVMe │ ← 跨节点共享
└────────────────────┘
关键数据:Mooncake 报告生产环境 prefix cache 命中率 50%+,推理吞吐提升 3-5×。
软件路线:显式路线——应用层(推理引擎)直接用 RDMA 或 NCCL 拉取 KV-cache 块,自己管 LRU 和一致性。
5.2 训练 Offload + 远程 Checkpoint
问题:大模型 optimizer state + checkpoint 超过单机内存。
架构:ZeRO-Infinity 三层:HBM → DDR → NVMe。跨节点的 NVMe / DDR 通过 RDMA 拉取。
软件路线:透明路线(对应用透明)+ 显式路线(对训练框架显式调度)。PyTorch 的 offload_to_cpu 是透明,DeepSpeed 的 NVMe offload 是显式。
5.3 分离式数据库(FORD / Motor / LOTUS / AdaptX)
问题:模型周边数据(用户偏好、推荐特征、模型 metadata)需要事务一致 + 跨节点扩容。
架构:CN-MN 分离。CN 跑事务逻辑,MN 是被动 RDMA 内存池。
软件路线:纯 显式路线——CN 用 one-sided RDMA 直接 CAS / READ / WRITE 到 MN,自己管 OCC 验证、写复制、锁。
🍎 三种用法的共通点:算力和数据物理位置分开,通过低延迟互联连接,软件层面对应用隐藏(部分)细节。这就是 disaggregation 的实质。
6. 分离式内存的不可能三角
设计一个分离式内存系统时,这三组矛盾必须取舍:
6.1 延迟 vs 容量 vs 一致性
延迟低
▲
│
│
│
└──────────► 容量大
/
/
一致性强
- 延迟低 + 一致性强 → 容量受限(本地 HBM / NUMA)
- 容量大 + 一致性强 → 延迟高(CXL 跨机柜)
- 容量大 + 延迟低 → 一致性弱(RDMA + 软件协议)
6.2 透明性 vs 语义可控
- 完全透明(InfiniSwap / Pond):应用零改动,但 page fault 卡顿、不能优化数据局部性
- 完全显式(FORD / Mooncake):性能可调到极致,但应用重写
- 部分透明(ZeRO-Infinity / TPP):靠 hint 和 policy 做 trade-off
6.3 一致性强度 vs 复制开销
- 强一致(线性一致 + 同步复制):任意读看到最新写,但每次写要等所有副本 ack,延迟高
- 弱一致(最终一致 / 读自己的写):写快,但读可能拿到陈旧值
- OCC + 版本校验(FORD/Motor):读快,冲突在 commit 时检测——但高冲突下 abort 率会爆炸
🍎 这三个不可能三角贯穿后面所有章节。理解每个系统站在哪个角,你就理解了它的设计哲学。FORD 是”延迟优先 + 弱一致 + 显式”;CXL Type 3 是”延迟优先 + 强一致 + 透明,但容量受限”;Mooncake 在 prefix 共享上选弱一致(KV-cache 重新算可以),在 metadata 上选强一致。
7. 本模块章节地图
后续 7 章按”硬件 → 系统 → 应用 → 实战”四段展开:
| 章 | 主题 | 你会得到什么 |
|---|---|---|
| 2 | RDMA 通信原理与 verbs | 看懂 FaRM / FORD / Mooncake 的底层调用 |
| 3 | CXL 与硬件互联演进 | 判断 CXL 在你场景能/不能用 |
| 4 | 分离式内存事务系统精读 | FORD/Motor/LOTUS/AdaptX 横向对比 + 设计权衡 |
| 5 | 分离式 KV-Cache 与 PD 分离 | Mooncake/DistServe/SplitWise 三家路线对比 |
| 6 | 训练侧远程内存与参数池化 | ZeRO-Infinity / HugeCTR / RDMA ckpt 工程实务 |
| 7 | 主流系统对比与选型 | 给一个具体需求,3 分钟选出该用哪个系统 |
| 8 | 端到端实战 | 在 RDMA 集群上跑 CREST + AdaptX 或 Mooncake demo |
⭐ 学习线路推荐:
- 数据库背景的工程师:1 → 2 → 4 → 7 → 8(主线 DM 事务)
- AI 推理工程师:1 → 2 → 5 → 7 → 8(主线 KV-cache)
- 训练系统工程师:1 → 2 → 6 → 3 → 8(主线 offload)
- 研究方向选题:1 → 4 → 5 → 看 frontier(per-key admission、CXL 跑 RDMA、cache-coherent disaggregation)
✅ 自我检验清单
- KV-cache 内存账:能徒手算出 Llama 3-70B 在 32K context 下单会话的 KV-cache 大小
- 三种”不够”形态:能区分训练侧 / 推理侧 / 数据系统侧”内存不够”的根因和典型解药
- 三条硬件路径:能在白板画出 NUMA / RDMA / CXL 的延迟-距离-一致性坐标
- RDMA 一边读的本质:解释为什么 one-sided READ 是 disaggregation 的”使能技术”——而不是”快网卡”
- CXL vs RDMA:不互斥关系,各自适合什么距离和延迟需求
- 透明 vs 显式两条路:能给一个新场景判断该选哪条,且说出代价
- 三种典型用法:能讲清 KV-cache 池 / 训练 offload / DM 事务三种用法的相同底层范式
- 不可能三角:延迟 / 容量 / 一致性、透明 / 显式、一致性 / 复制开销三组矛盾
- 反直觉:解释为什么”CXL 不会取代 RDMA”——长期共存而非替代
📚 参考资料
概念入门
- The Datacenter as a Computer (Barroso et al., 3rd ed.) —— Synthesis Lectures:Morgan & Claypool —— 理解 disaggregation 必读的底子
- A Resource-Disaggregated System Architecture (Han et al., 2020) —— 综述早期路线
- CXL Consortium 官方白皮书:computeexpresslink.org —— 三代演化权威说明
关键论文
- LegoOS: A Disseminated, Distributed OS for Hardware Resource Disaggregation (Shan et al., OSDI’18):arXiv 1810.01632 —— Disaggregated OS 概念奠基
- InfiniSwap (Gu et al., NSDI’17):USENIX 链接 —— 远端内存 swap 的代表
- FaRM: Fast Remote Memory (Dragojević et al., NSDI’14):USENIX 链接 —— RDMA OCC 鼻祖
- Pond: CXL-Based Memory Pooling Systems for Cloud Platforms (Li et al., ASPLOS’23):ACM DL —— 云端 CXL 1.1 实证
- Mooncake: A KVCache-centric Disaggregated Architecture for LLM Serving (Qin et al., FAST’25):arXiv 2407.00079 —— Kimi 商用 PD 分离架构
行业讨论
- Memory Disaggregation: Why and How —— ACM Queue / Communications:工业视角的概念整合
- Why CXL is Not a Silver Bullet —— SemiAnalysis 等媒体的 CXL 现状分析
- NVIDIA Mooncake Compatibility / DeepSeek 3FS —— LLM 推理领域 KV-cache 系统的工业讨论
框架文档
- NCCL 官方文档:docs.nvidia.com/deeplearning/nccl —— 训练侧 RDMA collective 标准
- libibverbs / RDMA Core:github.com/linux-rdma/rdma-core
- Mooncake transfer engine:github.com/kvcache-ai/Mooncake
下一章我们打开 RDMA 的盒子,看 verbs / one-sided / doorbell batch 这些底层原语怎么让本章描述的”远端内存”真正可用。