From c3e1e85c67ef6439e04fc79d4b9141720f658f81 Mon Sep 17 00:00:00 2001 From: wuyang <5700876+banisherwy@user.noreply.gitee.com> Date: Wed, 29 Jul 2026 01:03:15 +0800 Subject: [PATCH] research: map large-scale training systems --- PROGRESS.md | 12 +- research/TRAINING_SYSTEMS_GROK_LEADS.md | 567 +++++++++++ research/TRAINING_SYSTEMS_RESEARCH.md | 1148 +++++++++++++++++++++++ 3 files changed, 1725 insertions(+), 2 deletions(-) create mode 100644 research/TRAINING_SYSTEMS_GROK_LEADS.md create mode 100644 research/TRAINING_SYSTEMS_RESEARCH.md diff --git a/PROGRESS.md b/PROGRESS.md index e6d7ff8..1519cc0 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -14,6 +14,7 @@ | 推理与测试时扩展 | 完成首版 | 76% | 真实模型采样曲线、PRM 案例与逐篇图表精读 | | 稀疏计算与 MoE | 完成首版 | 74% | 真实负载 traces 与专家特化案例 | | 长上下文专题 | 完成首版 | 72% | 真实模型配置、内核细节与失败案例 | +| 大规模训练系统 | 研究完成首轮 | 38% | 实现内存—并行—流水线—通信四页签实验室 | | 引用与事实检查 | 进行中 | 54% | 自动化外链复查与来源等级扩展 | | 开源仓库 | 已完成首版 | 100% | 持续提交研究与网站迭代 | | k1412 部署 | 已完成首版 | 100% | 每轮发布保留不可变镜像与回滚点 | @@ -40,14 +41,17 @@ - [x] 分清 K3 partial rollout 的 off-policy 稳定化与 MOPD 的 student on-policy 逐 Token 蒸馏。 - [x] 完成推理首版:八张账、30 篇一手论文链、DeepSeek/Kimi 双主线与预算—GRPO—MOPD 三页签实验室。 - [x] 推理首版以提交 `dce94b2`、不可变镜像 `20260728T164043Z-dce94b2` 发布;NAS/VPS/HTTPS/生产 Chrome 全链路通过。 -- [x] Astro 类型检查、生产构建、9 个内部路由和桌面/移动端视觉检查通过。 +- [x] 训练系统专题完成首轮证据账本:九张资源账、37 个一手节点、DeepSeek-V2/V3/V4 与 Kimi K2/K2.5/K3 系统谱系。 +- [x] 缓存并核验 18 篇训练系统核心论文,逐项校正 ZeRO 字节账、pipeline bubble、collective 口径、context parallel 与 MoonEP 上界。 +- [x] 将 Grok 产物降级为明确标注的未核验 leads;正式账本只采用回查一手论文后的结论。 +- [x] Astro 类型检查、生产构建、10 个内部路由和桌面/移动端视觉检查通过。 - [x] 创建 `wuyang/llm-atlas` 公开仓库,匿名 API 确认 `private: false`。 - [x] 本地生产镜像通过健康检查与全部 9 个页面路由烟雾测试。 - [x] 通过 Unraid Compose Manager、Nginx Proxy Manager 与 HTTPS 发布首版。 ## 正在进行 -- [ ] 大规模训练系统:ZeRO / Megatron → Expert/Context Parallel → DualPipe / MoonEP。 +- [ ] 大规模训练系统:实现四页签实验室与 ZeRO / Megatron → Expert/Context Parallel → DualPipe / MoonEP 长文。 - [ ] 推理专题二轮:真实 pass@k 曲线、PRM 失败案例与逐篇图表精读。 - [ ] 长上下文专题的真实模型配置对比、内核细节与失败案例二轮深化。 - [ ] MoE 专题的真实集群 traces、专家特化案例与二轮外部证据。 @@ -71,6 +75,10 @@ | 2026-07-29 | K3 partial rollout RL 与 MOPD 在正文中强制并排 | 前者显式容忍跨迭代 stale trajectory,后者由当前 student 采样并接收稠密 teacher signal | | 2026-07-29 | 推理首版用 30 篇一手论文和三页签实验闭环 | 分开演示预算分配、GRPO 聚合偏置和 K3 九教师 MOPD,不合成伪“总分” | | 2026-07-29 | 推理首版发布到既有 `llm-atlas` 生产链路 | Compose Manager、NPM host 31 / cert 41、10 路由与公网交互均复核通过 | +| 2026-07-29 | 训练系统按模型状态、激活、计算划分、气泡、collective、EP、CP、数值、可靠性九张账组织 | 任何优化都必须说明节省哪种资源、把成本移到哪里 | +| 2026-07-29 | 并行度不再机械写成 `DP×TP×PP×EP×CP` | 先定义 device mesh、group overlap 与作用范围,再核算 world size | +| 2026-07-29 | DeepSeek “近零通信”统一解释为特定 overlap 下的 exposed critical-path time | 防止把隐藏通信误写成没有传输字节 | +| 2026-07-29 | Grok 训练系统包只保留为 `TRAINING_SYSTEMS_GROK_LEADS.md` | 候选论文、数字和公式不得越过一手证据账本直接进入站点 | ## 未决问题 diff --git a/research/TRAINING_SYSTEMS_GROK_LEADS.md b/research/TRAINING_SYSTEMS_GROK_LEADS.md new file mode 100644 index 0000000..1450322 --- /dev/null +++ b/research/TRAINING_SYSTEMS_GROK_LEADS.md @@ -0,0 +1,567 @@ +# 大规模 LLM 训练系统研究线索包(Grok Research Leads) + +> **证据等级:未核验候选线索。** 本文件由 Grok CLI 生成,只用于扩展检索面,不是正式研究账本,也不能直接作为课程事实来源。 +> **定位**:课程章节用 **research-leads packet**,非定稿讲义。所有数字与机制均须由主研究流程对照一手论文/官方报告核验后,才能写入正式账本与站点。 +> **锚点**:Kimi K3(arXiv:2607.24653)系统栈 · **高亮 DeepSeek 谱系**(V2→V3→V3.2→V4) +> **组织原则**:按 **因果账本(causal ledger)** 切分,而非按论文列表堆叠。每条账本回答:先前瓶颈 → 机制 → 可教公式 → 解决什么 → 遗留什么 → 一手 URL → 高风险声明。 +> **生成日期**:2026-07-29 · 本地一手文本:`research/sources/kimi-k3/`、`research/sources/moe/`、`research/sources/long-context/` + +--- + +## 0. 读包须知 + +### 0.1 五个必须分开的资源量纲 + +| 量纲 | 教学定义 | 典型单位 | 常见混淆 | +|---|---|---|---| +| **训练 FLOPs** | 前向+反向算术量(与实现无关的“理论算力需求”) | FLOP / token | 与 GPU 峰值 FLOP/s 混为一谈 | +| **内存容量** | 参数/梯度/优化器/激活/KV 能否放进 HBM | Byte / GPU | 与带宽瓶颈混淆 | +| **带宽** | HBM / NVLink / IB / PCIe 吞吐 | GB/s 或 Gbps | 与延迟混淆 | +| **延迟** | 小消息/同步/调度/气泡时间 | µs–ms | 大消息时仍可能被带宽主导 | +| **实现利用率** | MFU / HFU / 流水线利用率 / 通信隐藏率 | % | 用“理论 FLOPs 很高”代替实测 | + +### 0.2 并行度符号(全包统一) + +- \(N_{\text{gpu}}\):总 GPU 数 +- \(DP, TP, PP, EP, CP\)(或 SP):数据/张量/流水线/专家/上下文并行度 +- 通常 \(N_{\text{gpu}} = DP \times TP \times PP \times EP \times CP\)(若某维未启用则取 1;实现上可能有共享/正交约束) +- \(P\):总参数量;\(P_{\text{act}}\):MoE 每 token 激活参数量 +- \(B, S, H, L\):global micro-batch 相关 batch、序列长、hidden、层数 +- \(b\):bytes/element(BF16=2, FP8=1, FP32=4) +- \(K\):每 token 选中的专家数;\(E\):专家总数;\(R\):EP 规模 + +### 0.3 因果账本索引(九大账本) + +| ID | 账本 | 核心矛盾 | +|---|---|---| +| L1 | 模型状态内存 | 参数+梯度+优化器状态的冗余与分片 | +| L2 | 激活内存 | 反向依赖的中间张量 vs 重计算/卸载/并行切分 | +| L3 | 计算划分 | 层内/层间如何切矩阵与序列 | +| L4 | 流水线气泡 | PP 调度空闲 vs 微批与通信重叠 | +| L5 | 集合通信 | AllReduce/AllGather/ReduceScatter/All-to-All 体积与拓扑 | +| L6 | MoE/专家派发 | 负载不均、动态 shape、dispatch/combine | +| L7 | 长上下文状态 | 序列维并行、线性/混合注意力状态、KV 外置 | +| L8 | 数值与优化器状态 | 低精度、Muon/Adam 分片、主权重 | +| L9 | 可靠性/弹性 | 故障、弹性训练、agentic RL 沙箱与长轨迹状态 | + +--- + +## 1. 九大因果账本(主文) + +### L1 · 模型状态内存(Parameter / Gradient / Optimizer) + +| 字段 | 内容 | +|---|---| +| **先前瓶颈** | 朴素 DP:每卡完整 \(P\) 参数 + 梯度 + 优化器;Adam 常见 \(\approx 16P\) bytes(BF16 参数/梯度 + FP32 主权重 + 2×FP32 矩)。大模型先 OOM 在“状态”而非激活。 | +| **机制演进** | DDP/AllReduce → ZeRO-1/2/3 分片 → FSDP 单元化 → PP 下 Pipeline ZeRO-2 + CPU/NVMe offload(K3) | +| **可教方程** | 朴素 DP 每卡模型状态 \(\approx (2+2+K_{\text{opt}})\,P\,b_{\text{eff}}\);ZeRO-3:\(\approx (2+2+K_{\text{opt}})\,P\,b_{\text{eff}}/DP\)。Adam 常取 \(K_{\text{opt}}=12\)(两矩 FP32)+ 主权重 FP32 等,**具体字节必须按实现表核对**。 | +| **解决** | 模型规模可随设备数近似线性扩展;FSDP 与框架深度集成。 | +| **未解** | 分片引入 AllGather/ReduceScatter;与 TP/EP 正交时通信图复杂;offload 把瓶颈从容量推到 PCIe/NVMe 带宽。 | +| **一手 URL** | ZeRO https://arxiv.org/abs/1910.02054 · FSDP https://arxiv.org/abs/2304.11277 | +| **高风险声明** | “16P 公式”依赖精度与是否存主权重;K3 “Pipeline ZeRO-2 + CPU 梯度分片”细节以报告 §5.2.2 为准。 | + +### L2 · 激活内存(Activation / Checkpoint / Offload) + +| 字段 | 内容 | +|---|---| +| **先前瓶颈** | 反向需要前向激活;长序列下激活 \(\propto B\cdot S\cdot H\cdot L\) 超过参数状态。 | +| **机制演进** | Gradient checkpointing → Selective recompute(Megatron)→ Sequence/Context parallel 切激活 → 统一激活管理器(策略可插拔:recompute / quant / offload)→ 跨 PP 远程激活 offload(K3 Mooncake) | +| **可教方程** | 粗估激活(每层、无 checkpoint):\(\mathcal{O}(B S H)\) 量级;attention 另有 \(\mathcal{O}(B H S^2)\) 或 Flash 下 \(\mathcal{O}(B H S)\) 工作集。**课程应用“量级 + 重计算比例”而非单一闭式。** | +| **解决** | 用时间换空间;SP/CP 把序列维激活摊到多卡;FP8 激活缓存(V3)显著降存。 | +| **未解** | 重计算增加 FLOPs 与调度复杂度;远程 offload 引入跨卡带宽竞争;与 DualPipe 双向流水线的峰值激活耦合。 | +| **一手 URL** | Checkpointing 经典:https://arxiv.org/abs/1604.06174 · Selective recompute+SP:https://arxiv.org/abs/2205.05198 · V3 内存节:https://arxiv.org/abs/2412.19437 · K3 §5.2.2 | +| **高风险声明** | “FlashAttention 消除激活内存”是错误表述——它降低注意力中间写回 HBM 的峰值,不等于整网激活为零。 | + +### L3 · 计算划分(TP / 3D / 层内切分) + +| 字段 | 内容 | +|---|---| +| **先前瓶颈** | 单层权重无法装入单卡;纯 PP 气泡大;纯 DP 状态冗余。 | +| **机制演进** | Megatron 层内 TP(列/行并行)→ 与 PP+DP 组成 3D mesh → 与 SP 绑定 → MoE 时 TP 可被 EP+内存优化替代(V3 声称可无昂贵 TP) | +| **可教方程** | Linear 列并行:\(Y=XW\),\(W\) 按列切 \(TP\) 份,前向 AllReduce 或与后层 row-parallel 配对;通信体积 \(\propto B S H \cdot b\) 每层对。 | +| **解决** | 层内并行通信多为机内 NVLink 友好;与 PP 正交。 | +| **未解** | TP 度受节点内 GPU 数限制;过大 TP 通信/计算比变差;与 EP all-to-all 叠加时 SM 争用。 | +| **一手 URL** | Megatron-LM https://arxiv.org/abs/1909.08053 · 3D 规模训练 https://arxiv.org/abs/2104.04473 | +| **高风险声明** | V3 “without costly TP” 指其配置下可不依赖大 TP,**非**断言 TP 已过时。 | + +### L4 · 流水线气泡(PP Bubbles / Schedules) + +| 字段 | 内容 | +|---|---| +| **先前瓶颈** | GPipe 同步 F-then-B:气泡 \(\propto (PP-1)\);微批不足时利用率崩溃。 | +| **机制演进** | GPipe → PipeDream/1F1B → interleaved 1F1B → ZeroBubble(拆 W/B)→ Chimera 双向 → **DualPipe**(V3,双向 + 前反向与 all-to-all 重叠)→ K3 interleaved 1F1B + 激活跨 rank 均衡 | +| **可教方程(V3 Table 2 形式,须原表核对)** | 1F1B 气泡 \(\propto (PP-1)(F+B)\);ZB1P \(\propto (PP-1)(F+B-2W)\);DualPipe \(\propto (PP/2-1)(F\&B + B - 3W)\),参数副本 2×,激活 \(\sim PP+1\)。 | +| **解决** | 降低空闲;DualPipe 专门对 MoE all-to-all 做 chunk 级重叠。 | +| **未解** | DualPipe 参数双份;调度实现复杂;与 EP 负载不均交互;多模态 encoder 仍可能暴露在关键路径(K3 用 bubble 填充 ViT)。 | +| **一手 URL** | GPipe https://arxiv.org/abs/1811.06965 · PipeDream https://arxiv.org/abs/1806.03377 · ZeroBubble https://arxiv.org/abs/2401.10241 · DualPipe(V3 内)https://arxiv.org/abs/2412.19437 · 实现 https://github.com/deepseek-ai/DualPipe | +| **高风险声明** | DualPipe 气泡公式符号 \(F\&B\) 含义(重叠后的墙钟)易被误读为简单相加;必须对照 Figure 4–5。 | + +### L5 · 集合通信(Collectives) + +| 字段 | 内容 | +|---|---| +| **先前瓶颈** | 大规模 AllReduce 成为 DP 上限;MoE All-to-All 跨节点更糟。 | +| **机制演进** | Ring/Tree AllReduce → hierarchical → ReduceScatter+AllGather(ZeRO/FSDP)→ IB+NVLink 分层 all-to-all(DeepEP/V3)→ 通信-计算 overlap + 少 SM 通信核 → MoonEP 静态 shape + 固定缓冲 | +| **可教方程** | AllReduce 体积(ring)\(\approx 2\frac{N-1}{N}M\);ZeRO-3 参数 AllGather 体积与分片策略相关;MoE dispatch 粗估 \(\propto B S K \cdot d_{\text{expert}} \cdot b\) 跨 EP 组。 | +| **解决** | 分层拓扑利用 NVLink/IB 差;overlap 使“通信时间”从墙钟中消失(条件:算力足够)。 | +| **未解** | 小消息延迟主导;拓扑不匹配时 hybrid mesh 次优;overlap 依赖手写 schedule。 | +| **一手 URL** | Horovod/Baidu ring 背景可读 https://arxiv.org/abs/1802.05799 · DeepEP https://github.com/deepseek-ai/DeepEP · V3 §3.2.2 | +| **高风险声明** | V3 “near-zero all-to-all overhead” 是 **在 DualPipe 重叠 + 恒定 compute/comm 比** 条件下的工程主张,非通信体积为零。 | + +### L6 · MoE / 专家派发(Expert Parallelism) + +| 字段 | 内容 | +|---|---| +| **先前瓶颈** | 稠密扩展不经济;稀疏后出现路由不均、动态 shape、all-to-all、辅损干扰主损。 | +| **机制演进** | GShard/Switch → DeepSpeed-MoE / Tutel → MegaBlocks(块稀疏)→ DeepSeekMoE 细粒度 → aux-loss-free → DeepEP → **MoonEP 动态冗余专家 + 完美均衡** | +| **可教方程** | 每 token 激活参数 \(P_{\text{act}} \ll P\);理想每 rank token 数 \(S\times K\)(MoonEP 强制);冗余专家上界 \(E/R\) per rank(K3 证明,附录 E)。DeepEP 最坏缓冲 \(S\times K\times R\) vs MoonEP 固定 \(S\times K\)。 | +| **解决** | 容量扩展;MoonEP 消除负载不均与动态 shape 导致的 host sync;fused permute/unpermute 零拷贝。 | +| **未解** | 冗余专家迁移/预取开销;规划近优非精确最优;与多模态视觉负载叠加;路由质量 vs 系统均衡的张力。 | +| **一手 URL** | GShard https://arxiv.org/abs/2006.16668 · Switch https://arxiv.org/abs/2101.03961 · MegaBlocks https://arxiv.org/abs/2211.15841 · DeepSpeed-MoE https://arxiv.org/abs/2201.05596 · DeepSeekMoE https://arxiv.org/abs/2401.06066 · V2 https://arxiv.org/abs/2405.04434 · V3 https://arxiv.org/abs/2412.19437 · LatentMoE https://arxiv.org/abs/2601.18089 · K3 MoonEP https://arxiv.org/abs/2607.24653 · https://github.com/MoonshotAI/MoonEP | +| **高风险声明** | K3 “perfect balance” 指 **每 rank token 数相同**,不表示每 expert 内 token 均匀;rank 内仍需 workload-aware GEMM 调度。 | + +### L7 · 长上下文状态(Context / Sequence Parallel · Hybrid State) + +| 字段 | 内容 | +|---|---| +| **先前瓶颈** | Softmax 注意力算存 \(\propto S^2\);单卡序列装不下;线性注意力有固定状态但并行模式不同。 | +| **机制演进** | Megatron SP(与 TP 共)→ Ring Attention → DeepSpeed-Ulysses → USP 统一 → CP 成为独立轴 → MLA 压 KV → DSA 稀疏选 → KDA CP + hybrid KDA/MLA 双缓存管理 | +| **可教方程** | Ring:块在环上传递,通信 \(\propto\) 块数;Ulysses:序列切 + head 维 all-to-all,通信与 head 数相关。KDA:状态尺寸与 \(S\) 解耦(固定 recurrent state);MLA KV 仍 \(\propto S\)。 | +| **解决** | 百万级训练可行;混合架构下“全局层 + 高效层”协同。 | +| **未解** | Hybrid 前缀缓存一致性;CP 与 EP/PP 组合的 mesh 搜索;视觉长序列 encoder 不均衡(K3 dynamic CP)。 | +| **一手 URL** | Megatron SP https://arxiv.org/abs/2205.05198 · Ring https://arxiv.org/abs/2310.01889 · Ulysses https://arxiv.org/abs/2309.14509 · USP https://arxiv.org/abs/2405.07719 · MLA/V2 https://arxiv.org/abs/2405.04434 · KDA https://arxiv.org/abs/2510.26692 · V3.2 DSA https://arxiv.org/abs/2512.02556 · V4 https://arxiv.org/abs/2606.19348 · K3 §5.1 | +| **高风险声明** | “1M context” 训练/推理/RL 代价结构完全不同;不可用推理 demo 反推训练 MFU。 | + +### L8 · 数值与优化器状态(Precision / Optimizer) + +| 字段 | 内容 | +|---|---| +| **先前瓶颈** | BF16 仍吃带宽与存储;Adam 状态巨大;新优化器(Muon)需要整矩阵正交化通信。 | +| **机制演进** | Mixed precision → FP8 训练(V3 fine-grained)→ 优化器状态 BF16/分片 → Muon/MuonClip → **Per-head Muon** + P2P 正交化(K3)→ 部署侧 MXFP4 QAT | +| **可教方程** | 低精度收益:算力峰值↑、激活/权重存储↓;误差需用 scale/tile 策略控制。Muon 正交化:朴素 all-gather 全参 vs P2P 只取本地拥有分片。 | +| **解决** | V3 级 FP8 大规模验证;K3 降 Muon 通信与峰值内存。 | +| **未解** | FP8 对部分算子仍需高精度;QAT 与训练精度路径不同;Muon 与 Adam 的可复现对比依赖实现。 | +| **一手 URL** | FP8 formats https://arxiv.org/abs/2209.05433 · V3 FP8 §3.3 https://arxiv.org/abs/2412.19437 · Muon scalable https://arxiv.org/abs/2502.16982 · K2 https://arxiv.org/abs/2507.20534 · K3 §2.5/§5.2.2 · MX https://arxiv.org/abs/2310.10537 | +| **高风险声明** | “FP8 训练 = 无精度损失”不成立;V3 报告给的是相对 loss error 量级,需读附录 B。 | + +### L9 · 可靠性 / 弹性 / Agentic RL 状态 + +| 字段 | 内容 | +|---|---| +| **先前瓶颈** | 大规模训练故障率;长轨迹 RL 的 KV/环境状态比模型权重更“重”;容器隔离不足。 | +| **机制演进** | 检查点/弹性(经典)→ 分离式 vs **co-located RL** → partial rollout → external KV pool + NVMe 腾挪训练状态 → auto-throttling → AgentENV microVM(checkpoint/fork/pause) | +| **可教方程** | 不讲单一公式;强调 **状态对象**:policy 权重、优化器、KV/KDA state、sandbox 脏页、未完成 trajectory。墙钟 = max(训练步, rollout, 环境)。 | +| **解决** | 数百卡级 1M agentic RL 可行(K3 主张);沙箱高密度与可恢复。 | +| **未解** | 训练/rollout 资源争用;KV 写回策略权衡;安全与高保真探索的张力;数字(沙箱次数等)需原表核对。 | +| **一手 URL** | K3 §5.3 https://arxiv.org/abs/2607.24653 · AgentENV https://github.com/kvcache-ai/AgentENV · Firecracker 背景(报告引用) | +| **高风险声明** | “few hundred GPUs” 每实验、checkpoint 133ms/49ms、51M+ sandboxes 等均为 **作者报告数字**,课程必须标注来源章节。 | + +--- + +## 2. 必讲谱系(因果链,非编年堆叠) + +``` +数据并行 + AllReduce + │ + ▼ +Megatron 张量并行 (层内) + │ + ▼ +GPipe → PipeDream/1F1B → ZeroBubble / interleaved + │ + ▼ +ZeRO 分片阶段 → FSDP + │ + ▼ +Sequence Parallel (与 TP 协同降激活) + │ + ▼ +3D Parallel (DP×TP×PP mesh) + │ + ▼ +Expert Parallel + MegaBlocks + DeepSpeed-MoE + │ + ▼ +Context Parallel / Ring Attention / Ulysses (/USP) + │ + ▼ +Communication–Computation Overlap(通用工程) + │ + ▼ +DeepSeek-V3: DualPipe + DeepEP + FP8 + 细粒度 MoE + │ + ▼ +Kimi K2 / K2.5 RL 与 infra 积淀 + │ + ▼ +Kimi K3: MoonEP + 静态 shape + 冗余专家 + fused permute + + 1M co-located agentic RL + external KV + NVMe + + adaptive throttling + AgentENV +``` + +### 2.1 谱系节点卡片(精简) + +| 节点 | 先前瓶颈 | 机制一句话 | 一手 URL | +|---|---|---|---| +| DP/AllReduce | 单卡算力不够 | 复制模型,梯度同步 | 经典 DDP/Horovod 文献;PyTorch DDP 文档 | +| Megatron TP | 层太大 | 矩阵切分 + 成对通信 | https://arxiv.org/abs/1909.08053 | +| GPipe | 深度装不下 | 层切 + 微批流水 | https://arxiv.org/abs/1811.06965 | +| PipeDream/1F1B | GPipe 气泡 | 交错 F/B | https://arxiv.org/abs/1806.03377 | +| ZeRO | DP 状态冗余 | 分片 OS/G/P | https://arxiv.org/abs/1910.02054 | +| FSDP | ZeRO 工业化 | 单元化分片 + 框架集成 | https://arxiv.org/abs/2304.11277 | +| Sequence Parallel | TP 区外激活仍大 | 序列维切 Norm/Dropout 等 | https://arxiv.org/abs/2205.05198 | +| 3D Parallel | 单轴不够 | mesh 组合 | https://arxiv.org/abs/2104.04473 | +| EP / MegaBlocks / DS-MoE | 稠密不经济 | 专家分卡 + 块稀疏核 | MegaBlocks https://arxiv.org/abs/2211.15841 · DS-MoE https://arxiv.org/abs/2201.05596 | +| CP/Ring/Ulysses | 长序列 | 序列并行注意力 | Ring https://arxiv.org/abs/2310.01889 · Ulysses https://arxiv.org/abs/2309.14509 | +| Overlap | 通信墙钟暴露 | 双流/双流水/手写 schedule | 多源;V3 DualPipe 为高峰 | +| DualPipe/DeepEP | MoE+PP 通信比≈1 | 双向 PP + 定制 all-to-all | https://arxiv.org/abs/2412.19437 · https://github.com/deepseek-ai/DeepEP | +| MoonEP + 1M RL | EP 不均 + 长轨迹状态 | 冗余专家完美均衡 + 外置 KV/沙箱 | https://arxiv.org/abs/2607.24653 | + +--- + +## 3. 2017–2026 候选一手文献时间线(≥45) + +> 标注 **[TR]** 技术报告,**[SYS]** 系统论文,**[ARCH]** 架构/算法但系统相关,**[LIB]** 官方库/核。 +> 状态:`候选` = 章节可引用但须下载核对;`本地已有` = `research/sources/` 已有 PDF/TXT。 + +| # | 年 | 条目 | 类型 | URL | 账本 | +|---|---|---|---|---|---| +| 1 | 2017 | Attention Is All You Need | ARCH | https://arxiv.org/abs/1706.03762 | L3/L7 基线 | +| 2 | 2016/17 | Gradient Checkpointing (Training Deep Nets with Sublinear Memory) | SYS | https://arxiv.org/abs/1604.06174 | L2 | +| 3 | 2018 | GPipe | SYS | https://arxiv.org/abs/1811.06965 | L4 | +| 4 | 2018 | PipeDream | SYS | https://arxiv.org/abs/1806.03377 | L4 | +| 5 | 2018 | Megatron-LM (intra-layer MP) | SYS | https://arxiv.org/abs/1909.08053 | L3 | +| 6 | 2019 | ZeRO | SYS | https://arxiv.org/abs/1910.02054 | L1 | +| 7 | 2019 | Mesh-TensorFlow / 相关模型并行 | SYS | https://arxiv.org/abs/1811.02084 | L3 | +| 8 | 2019 | Mixed Precision Training | SYS | https://arxiv.org/abs/1710.03740 | L8 | +| 9 | 2020 | GShard | ARCH/SYS | https://arxiv.org/abs/2006.16668 | L6 · 本地 moe | +| 10 | 2020 | GPT-3(规模叙事) | TR | https://arxiv.org/abs/2005.14165 | 动机 | +| 11 | 2020 | ZeRO-Offload | SYS | https://arxiv.org/abs/2101.06840 | L1/L9 | +| 12 | 2021 | Switch Transformer | ARCH | https://arxiv.org/abs/2101.03961 | L6 · 本地 | +| 13 | 2021 | Efficient Large-Scale LM Training (Megatron 3D) | SYS | https://arxiv.org/abs/2104.04473 | L3/L4/L5 | +| 14 | 2021 | ZeRO-Infinity | SYS | https://arxiv.org/abs/2104.07857 | L1/L9 | +| 15 | 2021 | Chimera (bidirectional PP) | SYS | https://arxiv.org/abs/2107.06925 | L4 | +| 16 | 2021 | FairScale / FSDP 早期实践 | SYS | 文档+后继论文 | L1 | +| 17 | 2022 | DeepSpeed-MoE | SYS | https://arxiv.org/abs/2201.05596 | L6 | +| 18 | 2022 | Reducing Activation Recomputation (SP + selective) | SYS | https://arxiv.org/abs/2205.05198 | L2/L3 | +| 19 | 2022 | FlashAttention | SYS | https://arxiv.org/abs/2205.14135 | L2/L7 · 本地 | +| 20 | 2022 | Pathways / 相关大规模编排(可选) | SYS | https://arxiv.org/abs/2203.12533 | L9 | +| 21 | 2022 | Overlap 相关:Varuna / 等(可选对比) | SYS | https://arxiv.org/abs/2111.04007 | L4/L5 | +| 22 | 2022 | Tutel MoE system | SYS | https://arxiv.org/abs/2206.03382 | L6 | +| 23 | 2022/23 | MegaBlocks | SYS | https://arxiv.org/abs/2211.15841 | L6 | +| 24 | 2023 | PyTorch FSDP Experiences | SYS | https://arxiv.org/abs/2304.11277 | L1 | +| 25 | 2023 | FlashAttention-2 | SYS | https://arxiv.org/abs/2307.08691 | L2/L7 | +| 26 | 2023 | DeepSpeed-Ulysses | SYS | https://arxiv.org/abs/2309.14509 | L7 | +| 27 | 2023 | Ring Attention | SYS | https://arxiv.org/abs/2310.01889 | L7 | +| 28 | 2023 | Zero Bubble PP | SYS | https://arxiv.org/abs/2401.10241 | L4 | +| 29 | 2023 | FP8 Formats for Deep Learning | SYS | https://arxiv.org/abs/2209.05433 | L8 | +| 30 | 2024 | DeepSeekMoE | ARCH | https://arxiv.org/abs/2401.06066 | L6 · 本地 | +| 31 | 2024 | DeepSeek-V2(MLA + DeepSeekMoE) | TR | https://arxiv.org/abs/2405.04434 | L6/L7 · 本地 | +| 32 | 2024 | USP Unified Sequence Parallelism | SYS | https://arxiv.org/abs/2405.07719 | L7 | +| 33 | 2024 | DeepSeek-V3 | TR | https://arxiv.org/abs/2412.19437 | L4/L5/L6/L8 · 本地 | +| 34 | 2024 | Aux-loss-free balancing(V3 内 + 相关) | ARCH | V3 报告内 | L6 | +| 35 | 2024 | Llama 3 Herd(规模系统侧写) | TR | https://arxiv.org/abs/2407.21783 | 对比 | +| 36 | 2024 | OCP Microscaling (MX) | SYS | https://arxiv.org/abs/2310.10537 | L8 | +| 37 | 2025 | DeepEP library | LIB | https://github.com/deepseek-ai/DeepEP | L5/L6 | +| 38 | 2025 | DualPipe library | LIB | https://github.com/deepseek-ai/DualPipe | L4 | +| 39 | 2025 | DeepSeek-R1 | TR | https://arxiv.org/abs/2501.12948 | L9 RL 背景 · 本地 reasoning | +| 40 | 2025 | Kimi K2 | TR | https://arxiv.org/abs/2507.20534 | 前驱 · 本地 | +| 41 | 2025 | Muon is Scalable for LLM Training | ARCH | https://arxiv.org/abs/2502.16982 | L8 | +| 42 | 2025 | Kimi Linear / KDA | ARCH | https://arxiv.org/abs/2510.26692 | L7 · 本地 | +| 43 | 2025 | DeepSeek-V3.2(DSA 等) | TR | https://arxiv.org/abs/2512.02556 | L7 · 本地 | +| 44 | 2025/26 | LatentMoE | ARCH | https://arxiv.org/abs/2601.18089 | L6 · 本地 | +| 45 | 2026 | Kimi K2.5 | TR | https://arxiv.org/abs/2602.02276 | 多模态/RL infra · 本地 | +| 46 | 2026 | Attention Residuals | ARCH | https://arxiv.org/abs/2603.15031 | L2/L3(深度连接) | +| 47 | 2026 | DeepSeek-V4 | TR | https://arxiv.org/abs/2606.19348 | L7 · 本地 | +| 48 | 2026 | Kimi K3 | TR | https://arxiv.org/abs/2607.24653 | L1–L9 锚点 · 本地 | +| 49 | 2026 | MoonEP | LIB | https://github.com/MoonshotAI/MoonEP | L6 | +| 50 | 2026 | AgentENV | LIB | https://github.com/kvcache-ai/AgentENV | L9 | + +**补强候选(可选扩到 60+)**:ByteScheduler、TeraPipe、Alpa、Mobius、FlexFlow、MiCS、AMP、DistFlashAttn、LoongTrain、Echo/UltraEP(K3 对比引用)、Mooncake Transfer Engine、SonicMoE、Firecracker 论文、OSWorld/SWE-bench 环境论文(RL 环境侧)。 + +--- + +## 4. DeepSeek 谱系特写(V2 → V4) + +### 4.1 DeepSeek-V2 — 经济稀疏 + MLA + +| 项 | 线索 | +|---|---| +| **一手** | https://arxiv.org/abs/2405.04434 · 本地 `2405.04434` | +| **系统相关点** | MLA 降 KV;DeepSeekMoE 细粒度专家;训练/推理成本叙事 | +| **高风险数字** | 236B total / 21B act;128K context;训练成本对比须回表 | +| **未解决(留给 V3)** | 跨节点 EP 通信墙;更大规模 FP8;PP+MoE 重叠 | + +### 4.2 DeepSeek-V3 — DualPipe / DeepEP / FP8 峰值 + +| 项 | 线索 | +|---|---| +| **一手** | https://arxiv.org/abs/2412.19437 · 本地 `2412.19437` | +| **DualPipe** | 前/后向 chunk 拆为 attention · dispatch · MLP · combine;双向灌微批;与 ZeroBubble 的 W 分离结合;**通信隐藏是目标函数** | +| **DeepEP / 跨节点 A2A** | IB 跨节点 + NVLink 节点内转发;限制每 token 最多 4 nodes 等 **拓扑共设计**(数字须核原文) | +| **内存** | 无昂贵 TP 的可行性主张;EMA on CPU;MTP 共享 embed/head | +| **FP8** | fine-grained tile quant;激活 FP8 缓存;关键路径保持高精度 | +| **高风险** | 2.788M H800 GPU hours、相对 loss error、NVLink 160GB/s vs IB 50GB/s、comm:comp≈1:1 等 | +| **遗留** | EP 负载动态 shape;冗余专家/静态 shape 未做“完美均衡”;长上下文算法侧留给 V3.2/V4 | + +### 4.3 DeepSeek-V3.2 — 稀疏注意力与系统接口 + +| 项 | 线索 | +|---|---| +| **一手** | https://arxiv.org/abs/2512.02556 · 本地 `2512.02556` · HF PDF 镜像亦常见 | +| **系统含义** | DSA + indexer 改变 attention 算子形状与 KV 访问模式;训练/推理内核与 CP 策略需重估 | +| **高风险** | “frontier open” 基准数字;与 V3 训练栈差异是否充分披露 | + +### 4.4 DeepSeek-V4 — 百万上下文效率 + +| 项 | 线索 | +|---|---| +| **一手** | https://arxiv.org/abs/2606.19348 · 本地 `2606.19348` | +| **系统含义** | 1M 上下文下 KV/算力效率(CSA 等);MoE 规模再扩(Pro/Flash 参数量 **须核表**) | +| **与 K3 对照教学** | 两边都打 1M,但 **注意力混合策略、EP 库、RL infra** 路径不同——适合做“同目标异栈”对比课 | + +### 4.5 DeepSeek → Kimi 系统对照(备课用) + +| 维度 | DeepSeek-V3 栈 | Kimi K3 栈 | +|---|---|---| +| PP | DualPipe 双向 + 重叠 | interleaved 1F1B + 远程激活均衡 + bubble 填 ViT | +| EP 通信 | DeepEP 风格 all-to-all | MoonEP:冗余专家 + 完美 token 均衡 | +| Shape | 动态 expert token | **静态** \(S\times K\) | +| 缓冲 | 最坏 \(S\times K\times R\)(K3 对比叙述) | 固定 \(S\times K\) | +| 精度 | FP8 训练验证 | 训练 FP8 激活策略 + 部署 MXFP4 QAT | +| 长上下文 | MLA / 后继 DSA / V4 | KDA+Gated MLA hybrid + KCP | +| 后训练 | R1 等 | co-located 1M agentic RL + AgentENV | + +--- + +## 5. Kimi K3 系统特写(MoonEP 与 1M RL) + +**一手**:https://arxiv.org/abs/2607.24653 · 本地 `research/sources/kimi-k3/k3_tech_report.txt` §5 + +### 5.1 MoonEP(§5.2.1) + +| 子题 | 线索(待核) | +|---|---| +| **动机** | EP rank 间 token 不均 → 吞吐下降;动态 shape → 显存碎片 + **每层 host-device sync** | +| **机制** | 在线规划 **dynamic redundant experts**;前向预取;反向本地 reduce buffer 再归还 home rank | +| **理论** | 存在均衡方案且每 rank 冗余专家 \(\le E/R\);界近乎紧(附录 E) | +| **通信** | fused **permute/unpermute**;规划核预计算 destination;零拷贝 view | +| **静态 shape** | 每 rank 恰 \(S\times K\) tokens → 无需 per-layer 同步取 shape | +| **对比** | DeepEP 流程兼容但加规划/迁移;ECHO/UltraEP 固定 cap 可能规划失败 | +| **遗留** | rank 内 expert 倾斜仍需 GEMM scheduler;规划近似 | +| **开源** | https://github.com/MoonshotAI/MoonEP | + +### 5.2 内存高效训练(§5.2.2) + +- 统一激活管理器:recompute / quant / offload 可组合策略 +- MoE:改写 permuted probs 梯度依赖(SonicMoE 启发);dispatch 重计算重叠 +- Block AttnRes:checkpoint 包装使激活与标准 residual 同阶 +- 跨 PP 远程 offload(Mooncake)均衡 interleaved 1F1B 激活倾斜 +- Pipeline ZeRO-2 + CPU 梯度分片 +- Muon:P2P 取分片做正交化,避免全参 all-gather + +### 5.3 多模态 encoder(§5.2.3) + +- Dynamic CP:大图 patch 维切分 + gather-KV +- ViT 算力塞进 PP bubbles(继承/扩展 K2.5 DEP) + +### 5.4 1M Agentic RL(§5.3)— 专章必讲 + +| 机制 | 解决的瓶颈 | 高风险数字/表述 | +|---|---|---| +| **Co-located RL** | 分离式集群切换与冗余副本 | “few hundred GPUs”/实验 | +| **Partial rollouts** | 超长轨迹尾延迟 | 与前缀命中交互 | +| **External KV pool** | 1M 多步前缀未命中极贵 | 写回 vs write-through | +| **KDA+MLA 生命周期对齐** | 双缓存必须联合恢复 | 实现复杂度 | +| **NVMe offload 训练状态** | 给 CPU DRAM 腾 KV 池 | 与训练步交替 | +| **Adaptive throttling** | 固定并发早期浪费/后期抢占 | 信号:active/queued/KV util | +| **Gradient-buffer reuse** | 参考模型前向显存 | 与 ZeRO-2 双缓冲预取 | +| **AgentENV** | 容器隔离不够、长生命环境 | 133ms/49ms ckpt;6.5× overcommit;51,219,741 sandboxes / 1,505,678 images | +| **开源** | — | https://github.com/kvcache-ai/AgentENV | + +### 5.5 与 K2 / K2.5 的系统衔接 + +| 模型 | URL | 系统备课点 | +|---|---|---| +| Kimi K2 | https://arxiv.org/abs/2507.20534 | 1T MoE、agentic 基座、MuonClip、大规模 post-train | +| Kimi K2.5 | https://arxiv.org/abs/2602.02276 | 原生多模态、Agent Swarm、DEP 等 encoder 调度 | +| Kimi K3 | https://arxiv.org/abs/2607.24653 | 2.8T、MoonEP、1M RL 状态栈 | + +--- + +## 6. 建议原创图(8–10 张) + +| # | 图名 | 教学功能 | 关键元素 | +|---|---|---|---| +| D1 | **九账本因果地图** | 全章导航 | 账本节点 + 依赖箭头 + DeepSeek/K3 高亮 | +| D2 | **单卡内存栈爆炸图** | L1+L2 | 参数/梯度/优化器/激活/临时工作区;ZeRO 前后对比 | +| D3 | **3D mesh + EP/CP 扩展** | L3/L6/L7 | 五维并行立方体;合法组合约束脚注 | +| D4 | **PP 调度对比条带图** | L4 | GPipe / 1F1B / ZeroBubble / DualPipe 并排时间轴 | +| D5 | **通信体积 vs 拓扑** | L5 | AllReduce / AG+RS / All-to-All;NVLink vs IB 分层 | +| D6 | **MoE dispatch 数据路径** | L6 | token→router→dispatch→experts→combine;DeepEP vs MoonEP 缓冲尺寸标注 | +| D7 | **MoonEP 冗余专家规划示意** | L6 | 不均路由 → 冗余副本放置 → 每 rank \(S\times K\) | +| D8 | **DualPipe 四段重叠** | L4/L5 | Attention∥comm、dispatch、MLP、combine;双向微批 | +| D9 | **Hybrid KDA–MLA 双状态** | L7 | 固定 KDA state + 增长 MLA KV;CP 切分方式 | +| D10 | **1M Agentic RL 状态机** | L9 | GPU KV ↔ CPU external pool ↔ NVMe 训练状态;AgentENV pause/fork;throttling 反馈环 | + +--- + +## 7. 确定性交互实验(Training Systems Lab) + +### 7.1 目标 + +让读者 **选择配置 → 得到可复现的粗估**(非性能承诺)。强调:**理论 FLOPs ≠ 内存是否装下 ≠ 带宽是否够 ≠ 延迟是否隐藏 ≠ 实测 MFU**。 + +### 7.2 输入控件 + +| 输入 | 范围/选项(建议默认) | +|---|---| +| 模型规模 \(P\) | 7B / 70B / 405B / 671B(MoE) / 2.8T(MoE) 预设 + 自定义 | +| MoE | dense 或 \(E, K, P_{\text{act}}\) | +| GPU 数 \(N\) | 8–8192 | +| 并行度 | DP, TP, PP, EP, CP(自动检查乘积 = \(N\)) | +| 精度 | BF16 / FP8 激活 / FP8 权重训练(简化开关) | +| 序列长 \(S\) | 2K–1M(对数滑条) | +| micro-batch / global batch | 分离 | +| 优化器 | AdamW / Muon(状态字节系数不同) | +| Overlap | off / partial / aggressive(仅影响 **有效通信时间模型**) | +| Checkpoint | none / full / selective | +| Offload | none / CPU / NVMe(容量可行但带宽惩罚) | + +### 7.3 确定性估算输出(公式层,实现时固定版本号) + +**A. 每卡内存(容量)** + +\[ +M_{\text{param}} = \frac{P}{TP\cdot PP\cdot f_{\text{EP-shard}}}\, b_w,\quad +M_{\text{grad}} \sim M_{\text{param 等价分片}},\quad +M_{\text{opt}} = \frac{c_{\text{opt}} P}{DP\cdot \ldots}\, +\] + +\[ +M_{\text{act}} = g(B_{\text{local}}, S/CP, H, L, \text{ckpt}, b_{\text{act}}) +\] + +MoE 时 \(f_{\text{EP-shard}}\) 与专家放置有关;MoonEP 模式下额外显示 **冗余专家槽 \(\sim E/R\)** 的参数副本上界(教学提示)。 + +**B. 通信体积(每步,量级)** + +- DP:梯度 ReduceScatter/AllReduce \(\propto P/DP\) 量级 +- TP:每层 \(\propto B S H\) +- PP:激活/梯度 P2P \(\propto B S H \cdot\) 边界层 +- EP:all-to-all \(\propto B S K d\) +- CP:Ring/Ulysses 不同模型切换 + +**C. 流水线利用率(简化)** + +\[ +U_{\text{pipe}} = \frac{T_{\text{compute}}}{T_{\text{compute}}+T_{\text{bubble}}+T_{\text{exposed-comm}}} +\] + +DualPipe 模式切换气泡系数表(来自 V3 Table 2 的 **符号化** 实现,不写死 GPU 秒)。 + +**D. 瓶颈判定(规则引擎,可解释)** + +按以下优先级输出 **likely bottleneck**: + +1. \(M_{\text{total}} >\) HBM → **容量** +2. 否则若 \(T_{\text{comm,exposed}} > T_{\text{compute}}\) → **通信/延迟** +3. 否则若 offload 带宽项主导 → **PCIe/NVMe 带宽** +4. 否则若 \(U_{\text{pipe}} < 0.5\) → **流水线气泡** +5. 否则 → **算力(FLOPs)受限**(仍可低 MFU 若 kernel 差——标注“本 lab 不模拟 kernel 效率”) + +**E. 明确不承诺** + +- 不输出真实 tokens/s +- 不替代 NCCL 实测 +- 所有常数放入 `LAB_CONSTANTS_VERSION` JSON,便于勘误 + +### 7.4 UI 分栏 + +1. **FLOPs 面板**:理论训练 FLOPs/token、全局步 FLOPs +2. **Memory 面板**:四栈条形图(param/grad/opt/act) +3. **Comm 面板**:各集合通信体积与粗估时间(带宽假设可调) +4. **Utilization 面板**:气泡、暴露通信、overlap 后有效值 +5. **Verdict**:单一瓶颈标签 + 反事实(“若把 CP×2 …”) + +### 7.5 验收用例(确定性黄金集) + +| 场景 | 期望 verdict 类型 | +|---|---| +| 70B, 8 GPU, DP=8, S=2k, Adam | 可能装下,瓶颈算力/通信视 batch | +| 70B, 8 GPU, DP=8, S=128k, 无 CP | 激活容量或 OOM | +| 671B MoE, 无 EP, 试图单节点 | 参数容量失败 | +| V3-like:大 EP + DualPipe overlap on | 暴露通信 ↓,瓶颈可能转算力 | +| K3-like:2.8T + MoonEP 静态 shape | 显示冗余专家内存上界;EP 不均项关闭 | +| 1M + co-located RL 开关 | 额外 KV DRAM/NVMe 面板,不与纯预训练内存合并欺骗 | + +--- + +## 8. 三十项高风险声明检查清单 + +> 写进讲义前逐条对照一手来源,勾选。 + +1. [ ] K3:**2.8T total / 104B activated** +2. [ ] K3:1M context;训练延拓阶段(8K→…→1M)路径 +3. [ ] K3:16 of 896 routed experts;是否含 shared experts 计数 +4. [ ] K3:约 **2.5×** scaling efficiency vs K2 的定义(数据?损失?下游?) +5. [ ] K3:KDA:MLA = 3:1 及层数 69/24 +6. [ ] MoonEP:每 rank 恰 **\(S\times K\)** tokens +7. [ ] MoonEP:冗余专家上界 **\(E/R\)** 证明条件 +8. [ ] MoonEP vs DeepEP 缓冲 **\(S\times K\times R\) vs \(S\times K\)** +9. [ ] fused permute/unpermute “zero-copy” 的实现边界 +10. [ ] 静态 shape 消除 per-layer host sync 的表述是否绝对 +11. [ ] Pipeline ZeRO-2 + CPU 梯度分片细节 +12. [ ] P2P Muon 正交化通信量相对 all-gather 的定量 +13. [ ] 远程激活 offload(Mooncake)与 PP rank 均衡幅度 +14. [ ] Co-located 1M RL “few hundred GPUs” +15. [ ] External KV write-back 策略与 KDA 对齐 +16. [ ] NVMe offload 训练状态的时序(train↔rollout) +17. [ ] Auto-throttling 所用运行时信号列表 +18. [ ] AgentENV checkpoint **133 ms** / resume **49 ms** +19. [ ] 内存 overcommit **6.5×** +20. [ ] 沙箱总数 **51,219,741** / images **1,505,678** +21. [ ] V3:671B / 37B act +22. [ ] V3:DualPipe 气泡公式与 Table 2 全符号 +23. [ ] V3:参数 2× 副本的内存影响被 EP 稀释的论证 +24. [ ] V3:跨节点 all-to-all “near-zero overhead” 条件 +25. [ ] V3:NVLink **160 GB/s**、IB **50 GB/s**、每 token ≤4 nodes +26. [ ] V3:FP8 相对 BF16 loss error 数值 +27. [ ] V3:训练 GPU-hours(如 2.788M H800)口径 +28. [ ] V3:“无需 costly TP” 的配置前提 +29. [ ] V2:236B/21B、MLA 压缩率数字 +30. [ ] V3.2/V4:DSA/CSA 与 1M 效率数字;V4 Pro/Flash 参数量表 + +--- + +## 9. 章节叙事建议(仍非正文) + +1. **先讲资源五量纲**,再讲并行轴,避免一上来背 DP/TP/PP。 +2. 每个谱系节点用 **“瓶颈→机制→公式→未解”** 四格,对应账本 L1–L9。 +3. DeepSeek-V3 作为 **通信-计算重叠与 FP8 的高峰课**;K3 作为 **EP 完美均衡 + 长轨迹状态栈的高峰课**。 +4. Lab 放在 DualPipe/MoonEP 之后,用同一套符号回放。 +5. 所有营销式数字进 **检查清单**,默认脚注 “作者报告,待核”。 + +--- + +## 10. 本地源与下一步核验动作 + +| 源 | 路径 | +|---|---| +| K3 TR | `research/sources/kimi-k3/k3_tech_report.{pdf,txt}` | +| V3 | `research/sources/moe/2412.19437.*` | +| V2 | `research/sources/long-context/2405.04434.*` | +| V3.2 / V4 / KDA | `research/sources/long-context/` | +| 方法约束 | `research/METHODOLOGY.md` · `research/GROK_RESEARCH_ROADMAP.md` M15 | + +**建议下一步(写作前)**: + +1. 精读 K3 §5 与附录 E,抽出 MoonEP 伪代码级步骤。 +2. 精读 V3 §3.2–3.3,重绘 DualPipe 时间图与 Table 2。 +3. 补下缺失系统 PDF:ZeRO、Megatron 3D、GPipe、Ring、Ulysses、FSDP、MegaBlocks。 +4. 实现 Lab 常数表 v0,用黄金场景锁定确定性输出。 +5. 将本包中每条“高风险”映射到站点脚注 ID。 + +--- + +*本文件为 research leads only:不替代一手论文,不直接作为站点事实来源。* diff --git a/research/TRAINING_SYSTEMS_RESEARCH.md b/research/TRAINING_SYSTEMS_RESEARCH.md new file mode 100644 index 0000000..73bcf4e --- /dev/null +++ b/research/TRAINING_SYSTEMS_RESEARCH.md @@ -0,0 +1,1148 @@ +# 大规模 LLM 训练系统研究账本 + +最后核验:2026-07-29 +章节状态:一手证据账本 v1;页面与交互实验室待实现 + +## 研究问题 + +训练系统不是“把模型分到很多 GPU 上”这么简单。它要同时回答九个互相牵制的问题: + +1. 模型状态怎样放得下; +2. 激活怎样留到反向; +3. 一层矩阵怎样拆; +4. 多层流水线怎样少等; +5. 通信到底搬什么、搬多少、多久搬一次; +6. MoE 的 Token 怎样去往专家; +7. 长序列怎样跨设备; +8. 低精度与优化器状态怎样维持数值稳定; +9. 训练、rollout、环境和故障怎样组成可恢复的系统。 + +教学主线固定为: + +> 单卡训练先撞上容量墙 +> → 数据并行扩大吞吐,却复制所有模型状态 +> → Tensor / Pipeline Parallel 把单个模型切开 +> → ZeRO / FSDP 把数据并行中的冗余状态切开 +> → 3D 并行把不同通信频率映射到不同网络层级 +> → Sequence / Context Parallel 再切长序列 +> → MoE 用 Expert Parallel 扩容量,却把 All-to-All 和负载不均放上关键路径 +> → 调度、重计算、低精度、卸载与通信重叠成为一体化问题 +> → DeepSeek-V3 用 DualPipe、拓扑感知 All-to-All 和 FP8 协同 +> → Kimi K2 选择内存更稳的 interleaved 1F1B,K2.5 解耦视觉编码器 +> → K3 用 MoonEP、统一激活管理、Pipeline ZeRO-2、远端激活和 P2P Muon 支撑 2.8T 预训练 +> → 百万 Token Agentic RL 又把 KV、权重、梯度缓冲、沙箱与长尾轨迹放进同一张时间—内存账。 + +--- + +## 0. 先统一量纲 + +### 0.1 五种资源不能混写 + +| 量纲 | 问题 | 常用单位 | 不能推出什么 | +|---|---|---|---| +| 算术量 | 一步理论上做多少乘加 | FLOP / step、FLOP / token | 不能直接推出 wall time | +| 容量 | 某一时刻要驻留多少状态 | byte / GPU | 不能直接推出数据搬运速度 | +| 带宽 | 大消息每秒能搬多少 | GB/s、Gbps | 不能解释小消息启动延迟 | +| 延迟 | 一次同步、launch、P2P 等多久 | µs、ms、s | 不能替代大消息带宽模型 | +| 利用率 | 峰值硬件有多少变成有效训练 | MFU、HFU、pipeline utilization | 不同论文口径未必相同 | + +### 0.2 本章统一符号 + +| 符号 | 含义 | +|---|---| +| `P` | 模型参数个数;MoE 场景必须注明 total 还是 activated | +| `T` | 训练 Token 数 | +| `B` | batch 相关数量;出现时注明 global / micro | +| `S` | 序列长度,或在 MoonEP 原文语境中每 rank 的本地序列长度 | +| `H` | hidden dimension | +| `L` | Transformer 层数 | +| `M` | 一次 collective 的逻辑消息大小 | +| `n` | collective 参与 rank 数 | +| `m` | 一个 pipeline batch 的 micro-batch 数 | +| `p` | pipeline stage 数 | +| `v` | 每设备 virtual pipeline chunks 数 | +| `E` | routed expert 总数 | +| `K` | 每 Token 选择的 routed expert 数 | +| `R` | expert-parallel size | +| `b` | 每元素字节数 | + +### 0.3 “GPU 总数等于并行度连乘”只在特定 mesh 定义下成立 + +只有当多个并行轴被定义为**互相正交的设备网格维度**时,才可以写: + +```text +world_size = axis_1 × axis_2 × … × axis_k +``` + +不能不加说明地写成: + +```text +world_size = DP × TP × PP × EP × CP +``` + +原因: + +- EP 可能只作用于 MoE 层,dense attention 又使用另一套 group; +- expert data parallel 与普通 data parallel 的定义可能不同; +- Megatron sequence parallel 通常与 TP 共用 process group,不是新增独立乘数; +- context parallel 可以是独立轴,也可以与其他序列切分组合; +- 同一 rank 同时属于多个通信 group,group 数量不等于互相独立的 mesh 轴数量。 + +章节中的 topology lab 必须先定义设备坐标和 group membership,再计算 world size。 + +--- + +## 1. L1:模型状态内存账 + +### 1.1 为什么“参数 2 字节”不等于“训练每参数 2 字节” + +ZeRO 论文用 FP16/FP32 mixed-precision Adam 作具体例子。每个参数的持久模型状态为: + +| 状态 | 精度 | bytes / parameter | +|---|---:|---:| +| 前反向使用的参数 | FP16 | 2 | +| 梯度 | FP16 | 2 | +| optimizer master parameter | FP32 | 4 | +| Adam momentum | FP32 | 4 | +| Adam variance | FP32 | 4 | +| 合计 | — | **16** | + +因此原论文的基线是: + +```text +M_model-state = 16P bytes +``` + +这是一个**指定配方的字节账**,不是所有 Adam、BF16、FP8 或 fused optimizer 的宇宙常数。实际系统还可能有: + +- FP32 gradient accumulation buffer; +- EMA 参数; +- flat / fusion buffer; +- quantization scale; +- allocator fragmentation; +- 通信临时 buffer; +- Muon 等不同优化器的矩阵状态。 + +### 1.2 ZeRO 三阶段到底切什么 + +令数据并行度为 `N_d`,沿用 ZeRO 原论文的 mixed-precision Adam 口径: + +| 阶段 | 分片对象 | 每 rank 模型状态近似 | +|---|---|---:| +| 普通 DP | 无 | `16P` | +| ZeRO-1 | optimizer states | `4P + 12P/N_d` | +| ZeRO-2 | optimizer + gradients | `2P + 14P/N_d` | +| ZeRO-3 | optimizer + gradients + parameters | `16P/N_d` | + +这里的 “1/2/3” 不是性能等级,而是逐步增加分片对象。 + +### 1.3 ZeRO 没有凭空消灭状态 + +ZeRO 把“每张卡长期复制完整状态”改成: + +- 只保留本 rank 负责的 shard; +- 在某层真正需要参数时再 gather; +- 梯度产生后 reduce-scatter 到 owner; +- 用生命周期管理及时释放临时完整参数。 + +因此收益是容量,代价是更细粒度的通信、prefetch、buffer 与调度复杂度。 + +### 1.4 ZeRO 论文的通信口径 + +ZeRO 论文把一个 `P` 元素张量的 reduce-scatter 与 all-gather 各近似计为 `P` 的数据移动: + +- 普通 DP AllReduce:`2P`; +- ZeRO-2:gradient reduce-scatter `P` + updated parameter all-gather `P` = `2P`; +- ZeRO-3:forward 参数 all-gather `P` + backward 参数 all-gather `P` + gradient reduce-scatter `P` = `3P`。 + +所以 ZeRO-3 在这个口径下相对普通 DP 是最多 `1.5×` 通信量,而 ZeRO-1/2 不增加总量。 + +严格的 ring 算法每 rank 单向发送量应带 `(n-1)/n`: + +```text +ReduceScatter sent/rank = (n-1)/n × M +AllGather sent/rank = (n-1)/n × M +Ring AllReduce sent/rank = 2(n-1)/n × M +``` + +“论文近似体积”“每 rank 发送量”“发送+接收总字节”必须标出统计口径,不能直接横比。 + +### 1.5 FSDP 是实现语境,不是另一套物理定律 + +PyTorch FSDP 的 FULL_SHARD 与 ZeRO-3 在核心目标上相近:参数、梯度和 optimizer state 都按 data-parallel rank 分片,并按执行顺序 all-gather / reduce-scatter。工程差异集中在: + +- wrapping / flat parameter 边界; +- prefetch 时机; +- state-dict 与 checkpoint 语义; +- mixed precision 与 CPU offload; +- 与模型结构、编译器和其他并行方式的组合。 + +课程不把 “FSDP vs ZeRO” 教成简单优劣榜。 + +--- + +## 2. L2:激活内存账 + +### 2.1 激活为什么与模型状态不同 + +参数主要随 `P` 增长;训练激活主要随: + +```text +micro_batch × sequence × hidden × layers × saved_tensors +``` + +增长。标准注意力若保存完整 attention matrix,还会出现与 `S²` 相关的中间量。 + +这解释了两个常见现象: + +- 参数能放下,不代表长序列激活能放下; +- 增大 DP 不会自动切开同一样本的激活。 + +### 2.2 四种激活策略是一张“保留位置”账 + +| 策略 | forward 后把信息放哪里 | backward 前做什么 | 主要代价 | +|---|---|---|---| +| 保留 | GPU HBM | 直接读取 | 容量 | +| 重计算 | 不保留或只留 checkpoint | 重跑部分 forward | FLOPs / latency | +| 压缩 | GPU 或 CPU 的低精度表示 | 解压/转换 | 精度风险、cast | +| 卸载 | CPU / 远端 GPU / NVMe | prefetch / onload | PCIe / RDMA / 存储带宽 | + +这些策略可以按 tensor 粒度组合,不是互斥按钮。 + +### 2.3 Checkpointing 的历史节点 + +Chen 等人在 2016 年给出系统化计算—内存交换: + +- 对 `n` 层网络,用分段 checkpoint 可把 feature-map memory 从 `O(n)` 降到 `O(√n)`; +- 文中 practical algorithm 的计算开销约为一次额外 forward,即总 forward 计算约翻倍; +- 递归方案理论上可到 `O(log n)` 内存,但带来更多重计算。 + +这条结论是复杂度结果,不等于任意 Transformer 实现都获得同一比例。 + +### 2.4 选择性重计算:不要重跑昂贵的 GEMM + +2022 年 `Reducing Activation Recomputation` 把两个机制结合: + +1. **Megatron sequence parallel**:对 TP 区域中原先复制的 LayerNorm / Dropout 等激活沿 sequence 分片; +2. **selective recomputation**:优先重计算 memory-heavy、compute-light 的 attention 中间量,而不是整个 Transformer layer。 + +论文在其模型与硬件设置中报告: + +- activation memory 减少约 `5×`; +- 相比 full recomputation,执行时间 overhead 减少超过 `90%`; +- full activation recomputation 在其实测训练中有 `30–40%` execution-time overhead。 + +这些数字只用于说明该实验的量级,不能当作所有模型固定收益。 + +### 2.5 FlashAttention 解决的是 IO 与显式 `S²` 中间矩阵 + +FlashAttention 用 tiling 和在线 softmax 在 SRAM/HBM 层级重排计算: + +- 不把完整 `S×S` attention matrix 写回 HBM; +- attention 的结果仍是精确值,不是稀疏近似; +- 标准 dense attention 的算术复杂度仍含 `S²`; +- 它不消灭 LayerNorm、MLP、残差等其他训练激活。 + +所以“FlashAttention 把注意力变成线性复杂度”是错误说法。 + +--- + +## 3. L3:计算划分账 + +### 3.1 Data Parallel:切样本 + +每个 rank: + +- 持有一份模型; +- 处理不同 micro-batch; +- backward 后聚合梯度; +- 同步更新得到等价参数。 + +适合: + +- 单个模型副本放得下; +- global batch 允许扩大; +- 每步计算足以摊薄一次梯度 collective。 + +主要通信频率:每个 optimizer step。 + +### 3.2 Tensor Parallel:切一层矩阵 + +Megatron-LM 的核心做法是让一组 GPU 共同执行同一 Transformer 层: + +- MLP 第一矩阵按输出维切,GeLU 可在本地执行; +- 第二矩阵按输入维切,之后聚合; +- attention heads / projections 也按兼容方向切; +- 通过列并行与行并行组合,把同步点压到少数 collective。 + +优点: + +- 同一层参数、GEMM 与部分激活被切开; +- 单个 layer 太宽时仍可运行。 + +代价: + +- 每层、每个 micro-batch 都通信; +- 小 GEMM 会降低算术效率; +- 因频率高,TP 通常放在 NVLink / NVSwitch 域内。 + +### 3.3 Pipeline Parallel:切层 + +把连续 layer 段放到不同 stage,只在相邻 stage 间传 activation / activation gradient。 + +优点: + +- 跨 stage 通信是点到点; +- 单次传输相对 TP 可更粗粒度; +- 适合跨节点。 + +代价: + +- warmup / cooldown 气泡; +- stage 划分不均; +- 前部 stage 常驻留更多激活; +- micro-batch 太小会伤 GEMM,太大又减少 `m`、增大气泡。 + +### 3.4 3D Parallel 的核心不是“乘起来”,而是按频率放拓扑 + +Megatron 2021 的 PTD-P 组合: + +- TP:高频 layer 内 collective,优先节点内; +- PP:相邻 stage P2P,可跨节点; +- DP:每 batch 聚合梯度,可使用更大范围网络。 + +这是一条“通信频率—网络层级匹配”原则,不是固定唯一配置。 + +### 3.5 自动并行分支 + +Mesh TensorFlow、GSPMD、Alpa 等工作把人工选择的 sharding / resharding 表达为: + +- 逻辑 device mesh; +- tensor dimension 到 mesh axis 的映射; +- 跨 operator 的 sharding propagation; +- 代价模型与自动搜索。 + +它们没有消除通信,而是系统化寻找“在哪里切、何时重分片”。 + +--- + +## 4. L4:流水线气泡账 + +### 4.1 GPipe:先所有 forward,再所有 backward + +设: + +- `p` 个 pipeline stages; +- `m` 个 micro-batches; +- 一个 stage 处理一次 micro-batch 的 forward / backward 时间分别为 `F`、`B`; +- stages 理想平衡且忽略通信。 + +GPipe 的 flush bubble 时间为: + +```text +t_bubble = (p - 1)(F + B) +t_ideal = m(F + B) +bubble / ideal = (p - 1) / m +utilization = m / (m + p - 1) +``` + +所以 `m ≫ p` 才能摊薄气泡。GPipe 原论文经验上观察到 `M ≥ 4K` 时气泡在其设置中接近可忽略;它不是通用阈值。 + +### 4.2 1F1B:主要先省激活,不自动消除 flush + +PipeDream-Flush / non-interleaved 1F1B: + +1. warmup 注入若干 forward; +2. steady state 交替一个 forward、一个 backward; +3. cooldown 排空剩余 backward; +4. flush 边界后再做同步 optimizer update。 + +相较 GPipe: + +- flush bubble 的基本规模仍由 `p-1` 决定; +- outstanding backward 的 micro-batch 数受 `p` 限制,而不是必须保留全部 `m`; +- 因而 activation memory 显著降低。 + +原始 PipeDream 用异步流水与 weight stashing 处理权重版本;课程必须把它与保持严格同步语义的 PipeDream-Flush / 1F1B 区分。 + +### 4.3 Interleaved 1F1B:用 virtual chunks 缩短 bubble 单元 + +每设备持有 `v` 个非连续 model chunks: + +- 单个 chunk 的 `F/B` 时间约缩为原来的 `1/v`; +- 理想条件下 bubble 约缩小 `v` 倍; +- 但相邻 virtual chunks 增加 pipeline messages; +- `m` 还需满足相应 divisibility 约束。 + +### 4.4 Zero Bubble:先拆 backward + +Zero Bubble Pipeline Parallelism 把 backward 拆为: + +- `B` / input-gradient:前一 stage 继续反传所必需,处于关键依赖链; +- `W` / weight-gradient:只需在 optimizer step 前完成,可被延后填进空隙。 + +这让 scheduler 能用 `W` 填充原本的 bubble。论文同时: + +- 构造手工 schedule; +- 用给定模型配置与内存限制搜索 schedule; +- 处理 optimizer synchronization,保持同步训练语义。 + +论文报告在其设置下,相近内存时相对 1F1B 吞吐最高提升 23%,放宽内存时最高 31%;这不是任意 PP 配置的保证。 + +### 4.5 Bidirectional pipeline:Chimera 到 DualPipe + +Chimera 从 pipeline 两端同时注入相反方向的 micro-batches,利用双向 pipeline 减少 bubble。 + +DeepSeek-V3 的 DualPipe 进一步针对重 MoE 通信: + +- 把 chunk 拆成 attention、dispatch、MLP、combine; +- backward 再拆 input-gradient 与 weight-gradient; +- 把一对 forward / backward chunk 的计算与通信重排; +- 双向注入 micro-batches; +- 手工分配通信与计算使用的 SM。 + +V3 Table 2 的边界必须保留: + +- DualPipe 需要两份模型参数; +- peak activation memory 相对表中 1F1B 多一个 stage-normalized 单位; +- 只有在通信能被相邻计算覆盖时,通信才从关键路径上近似消失; +- “near-zero all-to-all overhead” 不表示传输字节为零。 + +--- + +## 5. L5:Collective 通信账 + +### 5.1 先问四个问题 + +任何“通信量”结论都要注明: + +1. 逻辑 tensor 多大; +2. 统计每 rank 发送、接收,还是全网 aggregate; +3. 使用什么 collective 算法与拓扑; +4. 每 layer / micro-batch / optimizer step 调用多少次。 + +### 5.2 α–β 教学模型 + +```text +time ≈ α × rounds + β × bytes_on_critical_path +``` + +- `α`:每轮启动、同步、协议延迟; +- `β`:每字节传输时间,即带宽倒数; +- 小消息更容易被 `α` 支配; +- 大消息更容易被 `βM` 支配; +- 拥塞、拓扑、kernel contention 与 overlap 会让真实时间偏离简单式。 + +### 5.3 四种 collective 的语义 + +| Collective | 每 rank 输入 | 每 rank 输出 | 训练常见位置 | +|---|---|---|---| +| AllReduce | 完整 tensor | 聚合后的完整 tensor | DP 梯度、TP 部分输出 | +| ReduceScatter | 完整 tensor | 聚合后的 `1/n` shard | ZeRO/FSDP 梯度 | +| AllGather | `1/n` shard | 完整 tensor | ZeRO/FSDP 参数、sequence/TP | +| All-to-All | 给每个 peer 的不同 shard | 来自各 peer 的 shard | MoE dispatch、Ulysses | + +P2P send/recv 则常用于 pipeline stage 邻接传输与 Ring Attention。 + +### 5.4 “总量相同”也可能快慢不同 + +同样约 `2M` 的数据: + +- 一个大 AllReduce; +- 多层小 AllReduce; +- 先 ReduceScatter 再延迟 AllGather; +- 与 GEMM 重叠的 All-to-All; + +会因调用次数、依赖位置、拓扑与 overlap 得到完全不同的 wall time。 + +--- + +## 6. L6:MoE / Expert Parallel 账 + +### 6.1 两次 All-to-All + +典型 MoE layer: + +```text +router +→ dispatch All-to-All +→ local expert GEMM +→ combine All-to-All +→ weighted sum +``` + +近似 payload 与下列量成正比: + +```text +tokens × top_k × routed_width × bytes +``` + +还要计入: + +- capacity / padding; +- expert metadata 与 routing indices; +- 负载不均导致的最大 rank makespan; +- 跨节点与节点内的不同带宽; +- redundant expert 的权重与梯度同步; +- dispatch / combine 是否 zero-copy。 + +### 6.2 从 GShard 到 DeepSpeed-MoE / Tutel / MegaBlocks + +- **GShard**:把 Transformer MoE 与大规模自动分片结合,建立 top-2 gating 与 expert parallel 的关键范式。 +- **DeepSpeed-MoE**:组合 data / expert / tensor parallel,并面向训练与推理优化 MoE 系统。 +- **Tutel**:让 parallelism 和 kernel 在运行时自适应不同 MoE 配置与硬件。 +- **MegaBlocks**:用 block-sparse kernel 处理动态 expert token 数,避免固定 capacity 导致的 padding 或 dropping;“dropless”仍需承受真实不均衡计算。 + +### 6.3 DeepEP 的位置 + +DeepEP 是 DeepSeek 开源的 expert-parallel 通信库,提供: + +- 高吞吐 dispatch / combine; +- 低延迟模式; +- 面向 NVLink 与 RDMA 的通信 kernel; +- 与计算重叠所需的 hook / buffer 设计。 + +它优化搬运路径,但不单独解决 router 造成的每 rank 总 Token 不均。 + +### 6.4 MoonEP:从“尽量均衡”变成“存在性保证” + +K3 §5.2.1 定义: + +- `E`:experts; +- `R`:EP ranks; +- 每个 rank 本地有 `S` 个 Token; +- 每 Token 选 `K` 个专家; +- 全部 expert assignments 为 `S×K×R`; +- 完美 rank balance 要求每 rank 最终恰好收到 `S×K` 个 assignments。 + +MoonEP 对当前 micro-batch、当前 layer 的 router output 在线规划 redundant experts: + +- forward 前 prefetch 远端冗余 expert; +- backward 后把冗余 expert gradient reduce 回 home rank; +- GPU heuristic planner 以离线 ILP 解作参考; +- 始终遵守每 rank `E/R` 个 redundant-expert slots 的上界。 + +K3 Appendix E 的证明结构: + +1. 反复选一个 underloaded rank 和一个 overloaded rank; +2. 从 overloaded rank 搬 Token,精确填满 underloaded rank; +3. 每个 rank 最多被填一次,因此其 remote tokens 最多来自一个 source rank; +4. source rank 本地最多有 `E/R` 个 experts; +5. 所以每 rank 冗余 experts 不超过 `E/R`; +6. 构造极端 routing 可达到 `ceil(E(R-1)/R²) ≈ E/R`,说明一般上界近似 tight。 + +### 6.5 完美 rank balance 仍不等于 kernel 完美 balance + +K3 明确保留第二层问题: + +- 每 rank 的 assignment 总数相同; +- 但 rank 内各 expert 的 Token 数仍可偏斜; +- 固定顺序 GEMM 会让 SM worker makespan 不同; +- MoonEP 另用 workload-aware expert-GEMM scheduler,并离线 autotune 代价模型系数。 + +### 6.6 MoonEP 的静态 shape 与 buffer 边界 + +K3 报告称: + +- 每 rank 固定接收 `S×K` assignments,因此 layer computation shape 可预知; +- 消除 conventional dynamic expert count 引起的逐层 host-device shape sync; +- fused permute/unpermute 直接把 Token 写到远端 expert-grouped position; +- 在报告定义的 worst-case imbalance 与 copy-free 路径下,DeepEP buffer 需 `S×K×R`,MoonEP 固定为 `S×K`。 + +这是 K3 指定比较条件下的 buffer 上界,不应外推为所有 DeepEP 配置的常态占用。 + +--- + +## 7. L7:长上下文状态与 Context Parallel + +### 7.1 “Sequence Parallel”有至少两种常见含义 + +1. **Megatron sequence parallel** + 与 TP 绑定,把 TP 区域间原本复制的 element-wise activation 沿 sequence 分片;用 AllGather / ReduceScatter 替代 AllReduce,通信量近似不变,主要省激活。 + +2. **长上下文 attention sequence/context parallel** + 把一个样本的 Q/K/V 序列切到多 rank,共同完成全局 attention;典型为 Ulysses、Ring Attention、USP。 + +正文首次出现 SP 时必须注明是哪一种。 + +### 7.2 Ulysses:sequence shard ↔ head shard + +每个 rank 初始持有长度 `S/n` 的 Q/K/V: + +1. attention 前 All-to-All; +2. 每 rank 改为持有完整 sequence、但只持有部分 heads; +3. 本地用标准 attention kernel 计算这些 heads; +4. 再一次 All-to-All,把输出转回 sequence shard。 + +论文给出的每 layer、每 link 教学通信量为: + +```text +QKV all-to-all: 3SH/n +output all-to-all: SH/n +total: 4SH/n +``` + +当 `S` 与 `n` 同比例增加时,该口径保持常量。 + +边界: + +- Ulysses degree 受 attention / KV head 数可切分性限制; +- GQA / MQA 的 KV heads 少时尤其明显; +- All-to-All 需要较强拓扑。 + +### 7.3 Ring Attention:固定 Q,轮转 KV + +每 rank: + +- 保留本地 Q block; +- 用本地或收到的 K/V block 更新在线 softmax; +- 同时把 K/V 发给下一 rank、从上一 rank 接收; +- 轮转完成后得到本地 Q 对全局 K/V 的精确 attention。 + +收益: + +- sequence、Q/K/V 与输出均分片; +- P2P 易映射到 ring / 跨节点链路; +- 通信可与 block attention 重叠。 + +边界: + +- block 变小会降低 GEMM / fused attention 效率; +- causal mask 下简单连续切分会产生计算不均; +- overlap 只有在 block compute 足以覆盖 P2P 时成立。 + +### 7.4 USP:用二维 mesh 组合 Ulysses 与 Ring + +USP 把一个 sequence-parallel group 看作二维网格: + +- 一轴执行 Ulysses All-to-All; +- 另一轴执行 Ring P2P; +- 两轴乘积等于总 sequence-parallel degree。 + +这样可以: + +- 把 Ulysses 轴限制在 head 数以内; +- 把高带宽域用于 All-to-All; +- 把较慢跨域链路用于可重叠的 P2P; +- 用首尾配对的 token reorder 平衡 causal triangular work。 + +### 7.5 K3 KDA Context Parallel + +K3 的 KDA 是 recurrent linear attention 分支,不能照搬 softmax attention CP: + +- 每 rank 先对本地 tokens 计算 fixed-size transition / state fragments; +- rank-level update 可结合; +- 用 prefix scan 恢复每 rank 的 incoming state; +- K3 实现用一次 all-gather 交换固定尺寸的 fragments; +- 通信对象不随完整历史 KV 线性增长; +- 本地 token compute 随 CP 近似线性切分。 + +K3 仍对 MLA / multimodal encoder 使用其他 CP 机制,不能把 KCP 当成全模型唯一 CP。 + +--- + +## 8. L8:数值、低精度与优化器系统账 + +### 8.1 Mixed Precision 的三个经典机制 + +2017 Mixed Precision Training 提出并验证: + +- FP32 master weights; +- loss scaling,减少小梯度在 FP16 下变成零; +- FP16 乘法、FP32 accumulation。 + +低精度不是简单把 dtype 改小,而是对 storage、GEMM input、accumulation、reduction 与 update 分别选精度。 + +### 8.2 DeepSeek-V3 FP8 是细粒度 mixed precision + +V3 报告中: + +- 主要 compute-intensive GEMM 使用 FP8; +- 某些敏感操作保留 BF16 / FP32; +- tile-wise / block-wise scaling 处理动态范围; +- Wgrad 使用 FP8,使部分 backward 所需 activation 可按 FP8 存; +- 对累加精度采取额外实现补偿; +- 通过与 BF16 baseline 的训练曲线比较验证稳定性。 + +因此不能简写成“整个模型状态与所有计算都是 FP8”。 + +### 8.3 K2:FP8 只存 activation,不做 FP8 compute + +Kimi K2 明确: + +- MoE up-projection 与 SwiGLU 的部分输入压到 FP8-E4M3; +- 使用 `1×128` tile 与 FP32 scale; +- 初步研究观察到计算精度风险,因此没有把 FP8 用于 compute; +- 剩余 activation 继续 CPU offload。 + +这与 DeepSeek-V3 的 FP8 training framework 是不同选择。 + +### 8.4 Muon 增加了新的完整矩阵需求 + +K3 使用 Per-Head Muon。分布式 optimizer 虽把参数按 DP rank 分片,Newton–Schulz orthogonalization 却需要完整矩阵。 + +K3 对 naive all-gather 的改造: + +- rank 只向 owner ranks P2P 获取自己负责更新的参数 shards; +- 不在每 rank 建立全参数 buffer; +- 减少内存和通信量; +- 以 model-chunk buffer 为粒度 pipeline 通信与 orthogonalization。 + +这说明优化器算法会反向改变通信图。 + +--- + +## 9. L9:可靠性、弹性与 Agentic RL 系统账 + +### 9.1 Checkpoint 不只是“多久保存一次” + +完整恢复链包括: + +- model / optimizer / scheduler; +- RNG states; +- data-loader cursor 与 shuffle; +- distributed sharding metadata; +- rollout / environment state; +- 是否能在不同 world size 下 reshard。 + +checkpoint 间隔是: + +```text +正常训练 I/O 开销 +vs +故障后重算损失 +``` + +的权衡。 + +### 9.2 K2:同机训练/推理与 checkpoint engine + +K2 的 RL 使用 co-located architecture: + +- training engine 与 inference engine 共用 workers; +- 一方运行时,另一方释放或 offload GPU state; +- 独立 checkpoint engine 处理不同 sharding 之间的参数转换; +- 每个 checkpoint worker 先拿到本地参数,再广播完整参数集; +- inference worker 只取需要的 shard; +- 按参数 pipeline,降低峰值内存; +- K2 报告其 1T 模型一次完整参数更新少于 30 秒。 + +报告也承认广播量高于理论最优,但用额外传输换取训练/推理引擎解耦与更简单的同步。 + +### 9.3 K2.5:多模态和 Agent rollout 都是系统问题 + +**Decoupled Encoder Process:** + +1. 全局 batch 的视觉 forward 先按 image / patch load 分到所有 GPU; +2. 丢弃中间视觉 activation,只保留最终输出并 gather 到 PP stage 0; +3. backbone 按成熟 text pipeline 完成 forward/backward; +4. 重新计算 vision forward,再做 vision backward。 + +K2.5 报告在其设置下达到 text-only training 约 90% 的多模态训练效率。 + +**Agentic RL:** + +- 每个 agent task 是独立异步 coroutine; +- Rollout Manager 支持最高 100,000 concurrent agent tasks; +- environment pool、LLM gateway、logprob 记录与监控共同参与。 + +### 9.4 K3 预训练:统一 activation manager + +每个为 backward 保存的 tensor 都绑定可插拔 storage backend: + +- recomputation; +- block-wise FP8 quantization; +- local offload; +- remote offload。 + +K3 的实现边界: + +- 策略在 tensor 粒度组合; +- function-granularity recomputation 支持跨层; +- GPU allocation 统一在主 compute stream 的单一 memory pool; +- layer-granularity prefetch 与计算重叠; +- element-wise operators 使用 recomputation; +- 大部分 activation 组合 block-wise FP8 与 offload / remote-offload。 + +### 9.5 K3:MoE、AttnRes、PP rank 内存与 gradients + +- **MoE**:改写 permuted probability gradient 的依赖,减少必须保存的 forward output;group GEMM input 在 backward 前通过重做 dispatch 恢复,并把通信与部分 GEMM backward 重叠。 +- **Block AttnRes**:block representation 在边界 layer 生成一次并共享;AttnRes 内部 checkpoint;跨 PP stage 只增量传新 blocks。 +- **remote activation**:interleaved 1F1B 的前部 PP ranks activation 更多,K3 用 Mooncake Transfer Engine 把 activation 远程放到其他 PP rank memory,平衡容量。 +- **Pipeline ZeRO-2**:gradients 在 DP ranks 分片后存 CPU;GPU 保留 double grad buffer,reduce 后累加进 CPU shards。 + +### 9.6 K3:把 ViT 放进 pipeline bubble + +K2.5 DEP 先把 vision encoder 与 text backbone 解耦;K3 再细分: + +- 最前若干 ViT forward 同步执行; +- 其余 forward 填入 text pipeline bubbles; +- backward 同理; +- dynamic CP 沿 patch 切大图,并用 sub-CP groups 平衡多个大图; +- K3 报告称大部分 ViT compute 因而被隐藏在 PP bubbles。 + +“隐藏”仍依赖 bubble 是否足够、视觉负载与 stage 调度,不等于视觉编码器零成本。 + +### 9.7 K3 百万 Token RL:外置 KV 与自动节流 + +K3 采用 co-located RL,把每个 1M-context experiment 控制在几百张 GPU 内,并用 partial rollout 缓解超长轨迹尾部。 + +**External KV pool 是 write-back,不是 write-through:** + +- active decode blocks 留在 GPU; +- reusable idle prefix 仅在 GPU eviction 时写入 CPU DRAM; +- 下次复用前 prefetch; +- KDA states 与 MLA KV blocks 绑定生命周期; +- rollout 阶段为外部 KV 腾 DRAM:training iteration 后把 model / optimizer states offload 到 NVMe; +- rollout 完成后释放 pool,避免与训练争资源。 + +**Auto-throttling:** + +- 读取 active requests; +- queued requests; +- KV utilization; +- 动态限制进入 inference engine 的请求数; +- 早期上下文短时提高并发,后期 KV 压力上升时降并发。 + +### 9.8 K3:gradient buffer 复用 + +reference 等 forward-only model: + +- 常驻 CPU; +- 需要时把权重 materialize 到 policy model 的 FP32 gradient-buffer storage; +- 真正 backward 前该 buffer 会被真实梯度覆盖,因此生命周期不冲突; +- Pipeline ZeRO-2 下每 GPU 只保留两个 VPP chunks 的 gradient buffers; +- 一个 slot 当前计算,另一个 slot prefetch 下一 chunk。 + +### 9.9 AgentENV:环境状态也是训练状态 + +K3 报告的 AgentENV: + +- 以 Firecracker microVM 提供比普通 container 更强的隔离和更接近真实系统的能力; +- incremental checkpoint / resume 最低报告 133 ms / 49 ms; +- paused sandbox 不消耗 memory / CPU; +- 推理等待在报告场景可占 sandbox lifetime 最高 98%; +- 支持 pause/resume、fork、snapshot; +- 使用 OverlayBD、custom ublk、storage sharing 与 P2P; +- real workloads 中 memory overcommit 最高 6.5×; +- K3 训练/评估累计创建 51,219,741 个 sandboxes,跨 1,505,678 images。 + +这些数值是 K3 团队报告的生产统计,不是通用 microVM benchmark。 + +--- + +## 10. DeepSeek 训练系统谱系 + +### DeepSeek-V2:少 activated parameters 改变并行选择 + +原报告配置: + +- 16-way zero-bubble PP; +- 8-way EP; +- ZeRO-1 DP; +- 不使用 TP; +- 共享专家 compute 与 EP All-to-All overlap; +- 自定义 communication、routing 与 fused kernels。 + +不使用 TP 的原因是该模型 activated parameters 较少,加上部分 operator recomputation 后 activation 可放下;这是特定架构与硬件配置的选择,不是“MoE 永远不需要 TP”。 + +### DeepSeek-V3:通信、调度、路由和 FP8 协同 + +原报告训练集群与并行: + +- 2048 NVIDIA H800; +- 节点内 8 GPU,经 NVLink / NVSwitch; +- 节点间 InfiniBand; +- 16-way PP; +- 64-way EP,跨 8 nodes; +- ZeRO-1 DP; +- 不使用 TP。 + +关键系统机制: + +1. DualPipe 双向调度; +2. forward/backward 内重排 attention / dispatch / MLP / combine; +3. backward 拆 input-gradient / weight-gradient; +4. communication kernels 使用专门 SM,并与 compute stream overlap; +5. node-limited routing:每 Token 最多去 4 个节点; +6. IB 先送到目标节点同 local-index GPU,再经 NVLink 转给 expert owner; +7. FP8 mixed-precision framework 降低 compute 与 activation storage 压力; +8. selective recomputation、CPU EMA、共享 embedding/head 继续省内存。 + +原报告称在其集群上只需 20 个 SM 即可充分利用 IB / NVLink 带宽;这是 V3 具体 kernel、拓扑与 workload 的测量,不是硬件常数。 + +### DeepSeek-V4:长上下文使系统账再改变 + +DeepSeek-V4 的百万 Token 架构把注意力进一步改为压缩/稀疏与 recurrent components。对训练系统的含义: + +- context parallel 传输对象不再只有 full K/V; +- recurrent state、稀疏 block 与 dense component 有不同生命周期; +- 不能拿标准 MHA 的 CP 通信式直接估计完整 V4; +- 页面只引用 V4 报告明确给出的机制与配置,不从架构图反推未披露集群数字。 + +--- + +## 11. Kimi K2 → K2.5 → K3 系统谱系 + +### K2:优先保持可复用配置 + +K2 原报告: + +- H800 cluster; +- 节点内 NVLink / NVSwitch; +- 节点间 `8×400 Gbps RoCE`; +- 16-way PP with virtual stages; +- 16-way EP; +- ZeRO-1 DP; +- 可运行在任意 32 的倍数个节点上; +- 1T 模型 BF16 parameters + FP32 gradient accumulation buffer 约 6 TB,跨 256 GPU; +- 各 GPU 约 30 GB 用于 states,剩余给 activations。 + +K2 明确没有沿用 DualPipe: + +- DualPipe 会让 parameters + gradients 的内存翻倍; +- 需要增加 PP 或 EP 补容量; +- 更大 PP 增加 bubble,更大 EP 增加通信/均衡成本; +- K2 改用多 warmup micro-batches 的 interleaved 1F1B 覆盖 EP communication; +- weight-gradient 与 PP communication 并行。 + +这是很重要的反例:更新的调度算法不一定适合更大 total-parameter MoE。 + +### K2 activation ladder + +按从便宜到昂贵的顺序: + +1. LayerNorm、SwiGLU、MLA up-projection selective recomputation; +2. MoE down-projection recomputation; +3. insensitive activations 压到 FP8-E4M3; +4. 其余 activations CPU offload; +5. offload previous forward micro-batch 与 prefetch next backward micro-batch 同时进行。 + +### K2.5:先解耦 ViT,再复用 K2 主干 + +- 主干继续 16 PP / virtual stages、16 EP、ZeRO-1; +- selective recompute + FP8 activation storage + CPU streaming; +- DEP 把可变视觉 workload 从 PP stage 0 的关键路径拆出; +- agentic RL 把 rollout 作为异步 task graph 管理。 + +### K3:为 2.8T 与 1M agentic RL 重构执行层 + +预训练并行: + +- PP with virtual stages; +- EP; +- ZeRO-1 DP; +- Pipeline ZeRO-2 gradient sharding; +- Context Parallel; +- MoonEP; +- dynamic multimodal CP。 + +相对 K2/K2.5 的系统增量: + +- MoonEP 对 EP rank load 给出可行性保证; +- unified activation manager 把重计算、量化与多级卸载统一; +- remote PP activation balancing; +- Pipeline ZeRO-2 CPU gradient shards; +- P2P Muon orthogonalization; +- ViT compute 填 pipeline bubbles; +- 1M RL external KV write-back pool; +- request auto-throttling; +- policy gradient buffer 复用; +- AgentENV microVM 生命周期。 + +--- + +## 12. 关键论文与一手实现阅读链 + +本专题首版目标为 30+ 个一手节点。PDF/text 只存本地忽略目录;公开仓库只提交账本和 canonical URL。 + +| 年份 | 来源 | 它改变了哪张账 | +|---:|---|---| +| 2012 | [Large Scale Distributed Deep Networks](https://arxiv.org/abs/1206.5533) | DistBelief、参数服务器与早期分布式训练 | +| 2014 | [One Weird Trick for Parallelizing CNNs](https://arxiv.org/abs/1404.5997) | 数据/模型并行的通信直觉 | +| 2016 | [Training Deep Nets with Sublinear Memory Cost](https://arxiv.org/abs/1604.06174) | activation checkpointing | +| 2017 | [Mixed Precision Training](https://arxiv.org/abs/1710.03740) | master weights、loss scaling、FP32 accumulation | +| 2018 | [PipeDream](https://arxiv.org/abs/1806.03377) | 1F1B、异步 pipeline、weight stashing | +| 2018 | [Mesh-TensorFlow](https://arxiv.org/abs/1811.02084) | tensor layout 到 device mesh | +| 2019 | [GPipe](https://arxiv.org/abs/1811.06965) | synchronous micro-batch pipeline | +| 2019 | [Megatron-LM](https://arxiv.org/abs/1909.08053) | Transformer tensor parallel | +| 2019 | [ZeRO](https://arxiv.org/abs/1910.02054) | optimizer / gradient / parameter sharding | +| 2020 | [GShard](https://arxiv.org/abs/2006.16668) | MoE expert parallel 与自动分片 | +| 2021 | [3D Megatron-LM](https://arxiv.org/abs/2104.04473) | TP + PP + DP 与 interleaved schedule | +| 2021 | [ZeRO-Infinity](https://arxiv.org/abs/2104.07857) | GPU / CPU / NVMe heterogeneous memory | +| 2021 | [GSPMD](https://arxiv.org/abs/2105.04663) | general sharding propagation | +| 2021 | [Chimera](https://arxiv.org/abs/2107.06925) | bidirectional pipeline | +| 2022 | [DeepSpeed-MoE](https://arxiv.org/abs/2201.05596) | 多轴 MoE 训练/推理系统 | +| 2022 | [Alpa](https://arxiv.org/abs/2201.12023) | 自动 inter/intra-operator parallelism | +| 2022 | [Reducing Activation Recomputation](https://arxiv.org/abs/2205.05198) | Megatron SP 与 selective recomputation | +| 2022 | [FlashAttention](https://arxiv.org/abs/2205.14135) | IO-aware exact attention | +| 2022 | [Tutel](https://arxiv.org/abs/2206.03382) | adaptive MoE system | +| 2022 | [MegaBlocks](https://arxiv.org/abs/2211.15841) | dropless block-sparse MoE | +| 2023 | [PyTorch FSDP](https://arxiv.org/abs/2304.11277) | fully sharded 实现经验 | +| 2023 | [FlashAttention-2](https://arxiv.org/abs/2307.08691) | attention work partition 与占用率 | +| 2023 | [DeepSpeed-Ulysses](https://arxiv.org/abs/2309.14509) | sequence ↔ head All-to-All | +| 2023 | [Ring Attention](https://arxiv.org/abs/2310.01889) | blockwise P2P context parallel | +| 2023 | [Zero Bubble Pipeline Parallelism](https://arxiv.org/abs/2401.10241) | B/W 拆分与 schedule search | +| 2024 | [MegaScale](https://arxiv.org/abs/2402.15627) | 10K+ GPU 训练与可靠性 | +| 2024 | [DeepSeek-V2](https://arxiv.org/abs/2405.04434) | zero-bubble PP + EP + ZeRO-1,无 TP | +| 2024 | [USP](https://arxiv.org/abs/2405.07719) | Ulysses × Ring 2D sequence parallel | +| 2024 | [DeepSeek-V3](https://arxiv.org/abs/2412.19437) | DualPipe、cross-node All-to-All、FP8 | +| 2025 | [DeepEP](https://github.com/deepseek-ai/DeepEP) | expert dispatch / combine kernels | +| 2025 | [Kimi K2](https://arxiv.org/abs/2507.20534) | 1T MoE 预训练与 co-located RL | +| 2026 | [Kimi K2.5](https://arxiv.org/abs/2602.02276) | DEP 与 100K concurrent agent tasks | +| 2026 | [DeepSeek-V4](https://arxiv.org/abs/2606.19348) | million-token hybrid attention system constraints | +| 2026 | [Kimi K3](https://arxiv.org/abs/2607.24653) | 2.8T pretraining + 1M agentic RL stack | +| 2026 | [MoonEP](https://github.com/MoonshotAI/MoonEP) | perfect rank balance 与 static shape | +| 2026 | [AgentENV](https://github.com/kvcache-ai/AgentENV) | resumable microVM agent environments | +| 2026 | [K2 checkpoint engine](https://github.com/MoonshotAI/checkpoint-engine) | train/inference resharding | + +--- + +## 13. 页面视觉与交互设计 + +### 13.1 必须重绘的架构图 + +1. **四层成本栈**:FLOPs / HBM / network / idle time。 +2. **每参数字节账**:从 2 bytes 误解展开到 16P example,再切 ZeRO-1/2/3。 +3. **3D parallel device mesh**:TP 节点内、PP 跨节点、DP 跨副本。 +4. **pipeline schedule 对照**:GPipe、1F1B、interleaved、ZeroBubble、DualPipe。 +5. **collective 动画**:AllReduce / ReduceScatter / AllGather / All-to-All。 +6. **MoE 两次 All-to-All**:再叠加 MoonEP redundant expert migration。 +7. **context parallel 对照**:Ulysses transpose、Ring KV rotation、USP 2D mesh。 +8. **activation lifecycle**:store / recompute / compress / CPU / remote GPU。 +9. **DeepSeek-V3 execution strip**:compute 与 communication overlap。 +10. **K2 → K2.5 → K3 系统谱系**。 +11. **K3 1M RL memory seesaw**:training states ↔ KV pool ↔ gradient buffer。 +12. **AgentENV lifecycle**:run → pause → snapshot / fork → resume。 + +### 13.2 Interactive Training Systems Lab + +四个 tab: + +#### A. Memory Ledger + +输入: + +- total parameters; +- parameter / gradient / master / optimizer precision; +- DP / ZeRO stage; +- activation base; +- checkpoint、FP8 storage、CPU/remote offload。 + +输出: + +- per-GPU persistent states; +- peak activation; +- communication buffer; +- CPU / remote tier; +- 哪一项首先 OOM。 + +#### B. Parallel Mesh + +输入: + +- GPU nodes 与每节点 GPU; +- TP / PP / DP; +- dense 或 MoE; +- EP / CP group definition; +- network topology。 + +输出: + +- 每 rank 坐标与 group membership; +- 高频 collective 落在节点内还是跨节点; +- invalid topology 原因; +- 每种通信的调用频率。 + +#### C. Pipeline Scheduler + +输入: + +- stages `p`; +- micro-batches `m`; +- virtual chunks `v`; +- F / input-grad / weight-grad 时间; +- schedule 选择。 + +输出: + +- 实际 timeline; +- bubble ratio; +- peak in-flight activations; +- communication slots; +- DeepSeek/Kimi 选择的对应关系。 + +#### D. Communication / MoE + +输入: + +- collective; +- ranks; +- tokens / hidden / bytes; +- expert top-k; +- imbalance; +- overlap ratio。 + +输出: + +- per-rank bytes; +- α / β time; +- exposed vs hidden communication; +- DeepEP-style dynamic buffer 与 MoonEP fixed buffer 对照; +- rank balance 与 intra-rank expert makespan 分开显示。 + +所有模拟必须标注为 deterministic teaching model,不冒充任何真实集群 benchmark。 + +--- + +## 14. 高风险事实检查清单 + +- [x] `16P` 明确限定为 ZeRO 论文的 FP16/FP32 Adam 配方。 +- [x] ZeRO-1/2/3 的分片对象与内存公式逐项核对原文。 +- [x] collective 体积注明论文近似口径与 ring 精确因子。 +- [x] GPipe / 1F1B 的 bubble 与 activation memory 区分。 +- [x] 原始 PipeDream 异步语义与同步 PipeDream-Flush 区分。 +- [x] interleaved schedule 的 `v` 收益与额外 PP communication 同时写。 +- [x] ZeroBubble 的 input-gradient / weight-gradient 拆分回查原文。 +- [x] DualPipe 的两份参数与特定 overlap 条件保留。 +- [x] “near-zero A2A overhead” 改写为 critical-path overhead。 +- [x] Megatron SP 与长上下文 SP 分开。 +- [x] Ulysses 的 head-count 限制保留。 +- [x] Ring causal load imbalance 与 block efficiency 边界保留。 +- [x] EP 与 DP/TP/CP 不机械全部连乘。 +- [x] DeepSeek-V2/V3 的“不使用 TP”限定在报告配置。 +- [x] MoonEP `S×K` 的 `S` 明确为每 rank 本地 Token 口径。 +- [x] MoonEP `E/R` 上界与 tight construction 回查 Appendix E。 +- [x] rank aggregate balance 与 rank 内 expert-GEMM balance 分开。 +- [x] MoonEP / DeepEP buffer 比较保留 worst-case copy-free 条件。 +- [x] K2 FP8 activation storage 与 V3 FP8 compute 分开。 +- [x] K2 不用 DualPipe 的原因回查 K2 §2.4.2。 +- [x] K2.5 DEP 三阶段和 90% 报告口径回查原文。 +- [x] K3 unified activation manager 的后端与粒度回查原文。 +- [x] K3 remote activation target 是其他 PP rank memory。 +- [x] K3 Pipeline ZeRO-2 的 CPU shard 与 GPU double buffer 区分。 +- [x] K3 Muon P2P 只取 locally owned parameter shards。 +- [x] K3 external KV 是 write-back,不是 write-through。 +- [x] K3 training states 在 rollout 前 offload 到 NVMe 的时序写清。 +- [x] gradient-buffer reuse 的生命周期安全条件写清。 +- [x] AgentENV 数字标为 K3 报告统计,不外推。 +- [ ] 所有 30+ 论文链接发布前做可达性检查。 +- [ ] 页面每个数字回链到邻近的一手来源。 +- [ ] 互动公式写单元测试与浏览器断言。 +- [ ] desktop / mobile / reduced-motion / keyboard 全部验证。 +- [ ] immutable image、NAS、VPS、NPM、HTTPS、公开 Forgejo 全链验证。 + +## 首版页面完成闸门 + +- [ ] 初学者能在不懂分布式系统的情况下读懂“为什么单卡放不下”。 +- [ ] 能用 byte ledger 解释参数、梯度、master weights 与 optimizer state。 +- [ ] 能区分 DP / TP / PP / EP / SP / CP 的切分对象。 +- [ ] 能解释为什么同样通信字节数仍可能有不同 wall time。 +- [ ] 能从时间轴上读出 GPipe、1F1B、ZeroBubble 与 DualPipe 差异。 +- [ ] 能解释 Ulysses、Ring 与 USP 的数据布局变化。 +- [ ] 能解释 DeepSeek-V3 的系统协同,而不是只背 DualPipe 名字。 +- [ ] 能解释为什么 K2 主动不采用 DualPipe。 +- [ ] 能沿 K2 → K2.5 → K3 读出内存与调度演进。 +- [ ] 能操作四个互动实验并触发至少一个 invalid / OOM / imbalance 情景。 +- [ ] 论文阅读链、类型检查、链接、浏览器与容器验证全部通过。 +