From b669615225569952b154c896e2792ffbe896d054 Mon Sep 17 00:00:00 2001 From: wuyang <5700876+banisherwy@user.noreply.gitee.com> Date: Wed, 29 Jul 2026 12:02:04 +0800 Subject: [PATCH] feat: deepen Kimi K3 report guide --- PROGRESS.md | 15 +- README.md | 4 +- ROADMAP.md | 3 +- package.json | 3 +- research/K3_GROK_LEADS.md | 137 ++ research/K3_RESEARCH.md | 324 ++++ scripts/check-agents-browser.mjs | 2 +- scripts/check-alignment-browser.mjs | 2 +- scripts/check-data-browser.mjs | 2 +- scripts/check-deepseek-browser.mjs | 2 +- scripts/check-evaluation-browser.mjs | 2 +- scripts/check-inference-serving-browser.mjs | 2 +- scripts/check-k3-browser.mjs | 241 +++ scripts/check-moe-browser.mjs | 2 +- scripts/check-multimodal-browser.mjs | 2 +- scripts/check-numerics-browser.mjs | 2 +- scripts/check-reasoning-browser.mjs | 2 +- scripts/check-representation-browser.mjs | 2 +- scripts/check-scaling-browser.mjs | 2 +- scripts/check-training-systems-browser.mjs | 2 +- scripts/check-transformer-browser.mjs | 2 +- src/components/K3ReportLab.astro | 725 +++++++++ src/data/k3.ts | 173 ++ src/pages/index.astro | 30 +- src/pages/k3/index.astro | 1590 ++++++++++++------- src/pages/progress/index.astro | 11 +- src/pages/roadmap/index.astro | 12 +- 27 files changed, 2730 insertions(+), 566 deletions(-) create mode 100644 research/K3_GROK_LEADS.md create mode 100644 research/K3_RESEARCH.md create mode 100644 scripts/check-k3-browser.mjs create mode 100644 src/components/K3ReportLab.astro create mode 100644 src/data/k3.ts diff --git a/PROGRESS.md b/PROGRESS.md index 6c204fc..d47c8dd 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -8,7 +8,7 @@ |---|---:|---:|---| | 研究框架与规范 | 进行中 | 83% | Scaling Laws 二轮拟合复现与逐图精读 | | 网站设计系统 | 进行中 | 89% | 打印样式与更多通用可视化组件 | -| Kimi K3 深读 | 进行中 | 66% | 扩写 pre-training / infra 逐图笔记 | +| Kimi K3 深读 | 完成二轮 | 88% | 第三轮加入官方权重 traces、独立复现与逐图数值重绘 | | 语言模型前史 | 完成首版 | 78% | Kneser–Ney、LSTM、Bahdanau 逐图精读与真实小语料复现 | | Transformer 基础 | 完成首版 | 79% | 多头电路、归一化 traces 与真实 kernel / KV 配置 | | 表示、位置与残差高速公路 | 完成首版 | 81% | 真实 hidden-state / norm traces、长上下文位置外推与深层稳定性消融 | @@ -41,7 +41,7 @@ - [x] 完成 486 篇关键论文索引,覆盖 16 个标签专题与 Kimi/DeepSeek 聚光主线。 - [x] 完成可检索、可按专题筛选的论文库页面。 - [x] 完成 K3、语言模型前史、Transformer 基础、表示/位置/残差、DeepSeek 谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、Agent、原生多模态、训练系统、推理服务、数值优化与评测安全十七篇首版长文。 -- [x] 完成 K3 三轴架构、语言模型前史四联实验、Transformer 四联实验、表示深度四联实验、DeepSeek 四联实验、长上下文、MoE 路由、推理三页签,以及训练系统、推理服务、Scaling、数据工程、数值、Alignment、Agent、原生多模态与评测安全专题各四页签等五十九个原创交互视图。 +- [x] 完成 K3 三轴架构与八联报告实验、语言模型前史四联实验、Transformer 四联实验、表示深度四联实验、DeepSeek 四联实验、长上下文、MoE 路由、推理三页签,以及训练系统、推理服务、Scaling、数据工程、数值、Alignment、Agent、原生多模态与评测安全专题各四页签等六十七个原创交互视图。 - [x] 完成长上下文首版:五张成本账、26 篇一手论文、10+ 机制图与 8 策略交互实验室。 - [x] 核验 FlashAttention、DeepSeek-V2/V3.2/V4、Kimi Linear/K3 等六份论文原文,并建立长上下文研究账本。 - [x] 核验 Switch、ST-MoE、DeepSeekMoE、Loss-Free、V3、LatentMoE 与 K3 原文,并建立 MoE 研究账本。 @@ -149,9 +149,16 @@ - [x] DeepSeek 专属 Chrome 断言通过:24 张账、10 次转向、60 节点、MLA 576 元素、FP8 角色、DualPipe、MTP、GRPO/DAPO/Dr.GRPO、R1 身份、键盘 tabs 与 390px 移动端均正确响应。 - [x] Astro 类型检查、生产构建、21 个页面、1145 个站内引用和 14 个跨页锚点通过;DeepSeek 与既有十四专题共十五套本地真实 Chrome 回归全部通过。 - [x] DeepSeek 二轮以源提交 `cd96dab`、不可变镜像 `20260729T031901Z-cd96dab` 发布;NAS、VPS/Tailscale、NPM、DNS、HTTPS、证书、门户、公开 Forgejo 与十五套生产 Chrome 回归全链路通过。 +- [x] 启动 K3 二轮深读:Grok Headless 只负责逐节查漏,候选问题、实验和红线保存在 `K3_GROK_LEADS.md`,正式结论逐项回到 47 页官方报告。 +- [x] 建立 K3 正式研究账本:32 张问题账、Figure 1–16 / Table 1–5 视觉契约、8 个实验合同、完整数值红线与 100 节点阅读链。 +- [x] 纠正 K3 原生多模态训练的旧表述:MoonViT-V2 从头训练,视觉与文本从训练开始在同一个 NTP objective 中联合优化,不采用“冻结语言模型再解冻”的 post-hoc 路线。 +- [x] 完成 K3 二轮正文:30 个编号章节逐节覆盖架构、预训练、后训练、环境、系统、评测、案例与 XTML 附录,并与 DeepSeek / 17 个课程专题交叉链接。 +- [x] 完成 K3 八联交互实验:Delta Rule、bounded decay、Block AttnRes、LatentMoE payload、SiTU-GLU、Quantile Balancing、MOPD/partial rollout、hybrid prefix cache。 +- [x] K3 专属 Chrome 断言通过:32/21/100 内容计数、八个实验计算、键盘 tabs、事实纠错、桌面与 390px 移动端均无异常。 ## 正在进行 +- [ ] K3 三轮:使用开放权重与官方实现加入 KDA/AttnRes/MoE 真实 traces、FlashKDA kernel 对照、逐图数值重绘与独立复现。 - [ ] DeepSeek 三轮:真实专家负载、MLA kernel、FP8 / pipeline 与 R1-like RL traces,外加独立小模型复现。 - [ ] 表示、位置与残差二轮:真实 hidden-state / norm traces、长上下文位置外推复现与 mHC / AttnRes 深层稳定性消融。 - [ ] 评测安全二轮:真实 cross-harness / pass@k 复跑、Judge 元评测、动态污染与过拒案例。 @@ -265,6 +272,10 @@ | 2026-07-29 | 论文库扩充到 486 篇 | 新增 DeepSeek-Coder/Coder-V2、ESFT、Prover-V1.5/V2 与 Engram 6 个旁支节点 | | 2026-07-29 | DeepSeek 二轮用四个独立实验闭环 | 稀疏容量、MLA 缓存、V3 协同与 RL 偏差分别操作;精确公式、作者报告和 teaching model 永久分级 | | 2026-07-29 | DeepSeek 二轮用不可变镜像 `20260729T031901Z-cd96dab` 发布 | OCI digest `sha256:4bfb3faf…fa3968`;复用 `12010→8080`、NPM host 31 / cert 41、门户 order 180 与公开 Forgejo;保留 `20260729T023329Z-a2c9298` 回滚 | +| 2026-07-29 | K3 二轮按 32 张对象账与完整报告顺序重建 | total/active、2.5×、KDA state、深度来源、专家路由、视觉目标、轨迹、缓存与评测协议不再压成一页组件摘要 | +| 2026-07-29 | K3 原生视觉事实回到 §2.4 / §3.3 核验 | 删除“先冻结语言模型再解冻”旧表述;明确 MoonViT-V2 从头训练,视觉/文本从开始共同 NTP | +| 2026-07-29 | K3 Figure 1–16 / Table 1–5 全部建立课程视觉契约 | 每张图同时写支持范围与不可外推项;作者报告、论文、推导与 toy model 使用 R/P/D/T 标签 | +| 2026-07-29 | K3 二轮用八个独立实验闭环 | Delta memory、BF16 decay、AttnRes、LatentMoE、SiTU、QB、MOPD/RL 与 prefix cache 分开操作,不合成伪“架构总分” | ## 未决问题 diff --git a/README.md b/README.md index 9c0f69e..00c159e 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,9 @@ 当前里程碑包含 17 专题学习地图、486 篇关键论文索引、Kimi K3 完整导读, 语言模型前史、Transformer 基础、表示/位置/残差、DeepSeek 技术谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、工具使用与长程 Agent、原生多模态、训练系统、推理服务、数值优化,以及评测与安全深度专题, -以及 59 个覆盖核心机制的原创交互视图。DeepSeek 二轮专题以 24 张问题账、10 次技术转向、 +以及 67 个覆盖核心机制的原创交互视图。K3 二轮导读以 32 张问题账、16 图 / 5 表审计、 +8 个交互实验和 100 个一手/官方节点,完整覆盖架构、预训练、后训练、系统、评测、案例与附录。 +DeepSeek 二轮专题以 24 张问题账、10 次技术转向、 4 个交互实验和 60 个一手/官方节点,串起 Dense、MoE、MLA、V3 协同、R1 与 V4。 其余专题按进度账本持续扩建。 diff --git a/ROADMAP.md b/ROADMAP.md index efaefb8..c6b9e23 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -153,7 +153,8 @@ pass^k、校准、动态基准、代码 Verifier、LLM Judge、Arena、Agent 最 ## 三条贯穿式案例 -1. **Kimi K3 解剖**:把上述全部专题重新汇总到一张架构与训练系统图。 +1. **Kimi K3 解剖**:二轮已完成 32 张问题账、Figure 1–16 / Table 1–5 审计、 + 8 个交互实验与 100 节点阅读链,把全部专题重新汇入架构—预训练—后训练—系统—评测因果链。 2. **DeepSeek 技术谱系**:DeepSeek LLM → DeepSeekMoE → V2/MLA → V3/FP8/MTP/DualPipe → Math/GRPO → R1 → V3.2/DSA → V4 长上下文。 3. **“一个 Token 的旅行”**:从文本分词,经注意力、MoE、GPU 集群、后训练,再到线上推理与工具调用。 diff --git a/package.json b/package.json index 53efbf9..3e93595 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "check:inference-serving-browser": "node scripts/check-inference-serving-browser.mjs", "check:evaluation-browser": "node scripts/check-evaluation-browser.mjs", "check:representation-browser": "node scripts/check-representation-browser.mjs", - "check:deepseek-browser": "node scripts/check-deepseek-browser.mjs" + "check:deepseek-browser": "node scripts/check-deepseek-browser.mjs", + "check:k3-browser": "node scripts/check-k3-browser.mjs" }, "dependencies": { "@astrojs/sitemap": "3.7.3", diff --git a/research/K3_GROK_LEADS.md b/research/K3_GROK_LEADS.md new file mode 100644 index 0000000..092ad8f --- /dev/null +++ b/research/K3_GROK_LEADS.md @@ -0,0 +1,137 @@ +# Kimi K3 Grok 候选线索台账 + +> 状态:**UNVERIFIED / 仅用于发现问题,不可作为课程证据引用。** +> +> 生成方式:2026-07-29 使用本机 Grok CLI Headless,限定只读取 +> `research/sources/kimi-k3/k3_tech_report.txt` 与当时的 +> `src/pages/k3/index.astro`,要求逐节对照并提出遗漏、疑点、实验和阅读节点。 +> 所有候选结论必须回到 K3 官方报告、论文原文或官方代码核验后,才能进入 +> `K3_RESEARCH.md` 与正式页面。 + +## 1. 候选审计结论 + +现有 K3 页面有一条可用的“序列—深度—宽度—系统”骨架,但把 47 页报告压缩得过度: + +- 只覆盖 13 个正文入口、9 个一手来源和一个通用架构浏览器; +- Figure 1–16、Table 1–5 大多没有逐图解释; +- §3 预训练、§4 后训练、§5 系统、§6 评测、§7 案例与附录只保留了摘要; +- 关键数字、机制的适用边界、报告未披露事项尚未形成统一红线; +- 视觉训练段落疑似沿用了“后接视觉塔”的常见范式,需优先核验。 + +## 2. 候选问题清单 + +以下 32 个问题是第二轮深读的索引,不代表其答案已经核验: + +1. 2.78T total 与 104.2B active 分别在计算和容量上意味着什么? +2. 报告所说约 2.5× scaling efficiency 的对照对象和口径是什么? +3. 3 KDA + 1 MLA 的比例在 93 层里怎样落地? +4. KDA 的状态更新与普通线性注意力有何不同? +5. delta rule 为什么是“纠错写入”,而不是简单累加? +6. `g_min=-5` 解决的数值与内核问题是什么? +7. chunkwise KDA 怎样同时实现训练并行与解码递归? +8. KDA/MLA 的全秩输入相关输出门做什么? +9. MLA 为什么采用 NoPE;位置从哪里来? +10. attention output 保持 FP32 在修复什么舍入问题? +11. Full AttnRes 与 Block AttnRes 的准确关系是什么? +12. LatentMoE 的 3584 维路由空间为何能降低通信? +13. shared experts 与 routed experts 怎样分工? +14. SiTU-GLU 的有界激活和具体参数是什么? +15. Quantile Balancing 如何由 Top-(k+1) cutoff 更新 bias? +16. 直方图近似如何让近千专家的分位统计可通信? +17. MoonViT-V2 是否从头训练;与 SigLIP 初始化对照是什么? +18. “原生多模态”在数据目标和共享主干上准确指什么? +19. Per-Head Muon 为什么按 attention head 分组? +20. 8K→64K→256K→1M 的 context curriculum 如何安排? +21. 九个专家如何由三领域 × 三 effort 形成? +22. MOPD 的 on-policy 稠密 token reward 如何定义? +23. reasoning effort 的 per-problem budget 怎样退火? +24. partial rollout 怎样处理 straggler 与 stale trajectory? +25. Agentic GRM 如何控制冗长 reward hacking? +26. KDA Context Parallelism 如何划分 1M 序列? +27. MoonEP 如何把路由不均转成静态执行形状? +28. prefix cache 为什么必须联合保存 KDA state 与 MLA KV? +29. 512-token hash boundary 与 6144-token physical block 为什么解耦? +30. 评测中的 effort、工具、harness、fallback 如何影响可比性? +31. 报告自己承认的 research reasoning / cyber 等弱项是什么? +32. 第三方评测分数、推理成本和公开权重应怎样并排展示? + +## 3. 候选逐图任务 + +| 报告对象 | 候选解释任务 | +|---|---| +| Figure 1 | 把总体结果与“仍落后最强闭源模型”放在同一视图 | +| Figure 2 | 标出 3:1 KDA–MLA、Block AttnRes、Stable LatentMoE、MoonViT | +| Figure 3 | 交互展示无界与有界 log-decay 在 BF16 中的差异 | +| Figure 4 | 并排比较 GLU、SwiGLU、SiTU-GLU 的大输入行为 | +| Figure 5 | 动画解释 Top-(k+1) cutoff 与 Quantile Balancing | +| Figure 6 | 只在报告消融范围内解释 from-scratch ViT 稳定性 | +| Figure 7 | 区分训练 loss scaling、吞吐与下游能力 | +| Figure 8 | 并排画 RL FLOPs、平均 steps 与分数 | +| Figure 9 | 展示 knowledge graph→材料→任务→验证的合成链 | +| Figure 10 | 解释 AET curriculum 与独立 verifier | +| Figure 11 | 解释 pipeline / offload 中状态的移动 | +| Figure 12 | 动画解释物理块、hash block、KDA checkpoint | +| Figure 13 | 将第三方总分与 token/cost 放在同一坐标系 | +| Figure 14 | 明确 kernel agent 的 24h 个案边界 | +| Figure 15 | 明确 MiniTriton 的 L20 roofline 和个案边界 | +| Figure 16 | 可视化 XTML 选项、channel 与 message boundary | +| Table 1 | 做 K2→K3 的逐字段差异表 | +| Tables 2–5 | 按能力轴重排,并给每个数字附评测协议脚注 | + +## 4. 候选交互实验 + +1. **Delta Rule 工作记忆**:反复写入相同 key,对比累加与纠错写入。 +2. **有界 log-decay / BF16**:拖动下界、chunk 长度,观察累计倒数与溢出风险。 +3. **Block AttnRes**:调层数和 block size,比较深度来源、缓存与通信。 +4. **LatentMoE 通信账本**:调 full width、latent width、激活专家数,比较 token payload。 +5. **SiTU-GLU 曲线**:调参数并对比 SwiGLU 的大正输入。 +6. **Quantile Balancing**:模拟长尾 router score 和 bias 更新。 +7. **MOPD / effort**:调 domain、budget multiplier、partial rollout threshold。 +8. **BrowseComp 上下文管理**:比较大窗口直塞、压缩、prefix reuse 的代价。 + +## 5. 候选阅读节点 + +Grok 建议把报告参考文献扩成约 100 个可导航节点,按以下簇核验: + +- Kimi 谱系:MoonViT、Kimi Linear、Kimi k1.5、K2、K2.5、K3; +- 注意力与状态:Transformer、FlashAttention、linear attention、DeltaNet、 + Gated DeltaNet、Mamba、RWKV、RetNet、NoPE、长上下文扩展; +- 深度与宽度:residual、Highway/DenseNet、AttnRes、MoE、Switch、 + DeepSeekMoE、MLA、LatentMoE; +- 优化与数值:Muon、Muon scaling、weight clipping、BF16、MXFP4/8、QAT; +- 后训练:SFT、RLHF、PPO/GRPO 类方法、partial rollout、OPD、MOPD、 + speculative decoding、EAGLE-3、LK loss; +- 系统:FlashKDA、KCP、MoonEP、expert parallelism、KV/prefix cache、 + Firecracker、AgentENV、WarpDecode; +- Agent 与评测:white-box harness、AET、Agentic GRM、BrowseComp、 + SWE、TerminalBench、OSWorld、HLE、视觉基准; +- 开放实现:Kimi-K3、AgentENV、MiniTriton、nano-kpu 及报告明确列出的代码仓库。 + +这些节点只能在逐项核对标题、年份、主张与 URL 后进入正式论文链。 + +## 6. 候选红线 + +- 不把 2.78T total 写成每 token 计算量; +- 不把约 2.5× 写成推理加速或 KDA 单项收益; +- 不把 KDA 写成能够无损精确回忆全部历史; +- 不把 NoPE 写成“没有任何位置信息”; +- 不忽略 `g_min`、SiTU 参数、QB inference bias 冻结等实现条件; +- 不把路由负载平衡与系统执行平衡混成一个机制; +- 不把 MoonViT-V2 写成先接到已经训练好的语言模型; +- 不把 1M window 写成 1M 内容都能可靠利用; +- 不把 MOPD 写成九个模型在推理时投票; +- 不把 effort 写成一个固定全局 token 上限; +- 不把模型分数和 harness / tool 的系统分数混为一谈; +- 不省略评测日期、effort、工具、fallback、guard; +- 不把 kernel、MiniTriton、芯片案例推广为普遍外部结论; +- 不补写报告没有披露的总训练 token、精确数据比例、集群和成本。 + +## 7. 处置状态 + +- [x] Grok 候选审计已保存,与正式证据隔离。 +- [x] “冻结语言模型再解冻”疑点已回到 K3 §2.4 / §3.3 核验,确认现页错误。 +- [ ] 32 个问题逐项建立正式证据台账。 +- [ ] 16 图、5 表逐项建立视觉契约。 +- [ ] 100 个候选阅读节点逐项核验。 +- [ ] 8 个实验建立交互、公式与边界测试。 + diff --git a/research/K3_RESEARCH.md b/research/K3_RESEARCH.md new file mode 100644 index 0000000..fe0495f --- /dev/null +++ b/research/K3_RESEARCH.md @@ -0,0 +1,324 @@ +# Kimi K3 第二轮深读:正式研究与实现台账 + +> 锚点:Kimi Team, **Kimi K3: Open Frontier Intelligence**, Technical Report, +> 2026-07,47 页。正式引用以仓库保存的官方 PDF +> `research/sources/kimi-k3/k3_tech_report.pdf` 为准;文本抽取文件只用于检索。 +> +> 证据等级:`R` = K3 官方报告直接陈述;`P` = 被报告引用的论文/官方实现; +> `D` = 由公开公式作出的确定性推导;`T` = 本站教学模型,不是实测。 + +## 0. 阅读目标 + +K3 页面第二轮不再做“组件摘要”,而要回答四层问题: + +1. **对象是什么**:参数、状态、激活、通信、轨迹、环境或评测协议; +2. **为什么需要它**:先说明失败模式,再引入机制; +3. **怎样工作的**:公式、数据流、训练流、系统状态流; +4. **证据能走多远**:作者报告、独立论文、确定性计算与 toy model 分标签。 + +验收目标: + +- 32 张问题账全部有答案与边界; +- Figure 1–16、Table 1–5 全部有课程对应物; +- 至少 8 个可操作实验,不将 toy output 冒充 checkpoint / 集群实测; +- 100 个经过标题、年份、URL 和作用核对的阅读节点; +- 明确纠正原生多模态、2.5×、1M、MoE、MOPD、评测等常见误读; +- K3、DeepSeek 与全站专题互相链接,而不是形成孤岛。 + +## 1. 32 张问题账 + +| ID | 对象 | 正式答案 | 证据 | 页面验收 | +|---|---|---|---|---| +| Q01 | total / active | Table 1 给出 2.78T total、104.2B active。total 是总容量;active 是一条 Token 路径经过的参数规模,仍不等于端到端 FLOPs。 | R §2.6 Table 1 | 精确规格表;hero 可四舍五入 | +| Q02 | 2.5× | 这是团队在调 batch、LR、TPP、shape、架构和 recipe 后,相对 K2 得到的**整体 scaling efficiency**,不是推理速度,也不是 KDA 单项收益。 | R Abstract, §3.2, Fig. 7 | 三种错误解释并排 | +| Q03 | 3:1 hybrid | 93 层中 69 KDA + 24 Gated MLA,模式为 3 KDA 后 1 MLA,最后一层为 MLA;另有 1 dense layer。 | R §2.1, §2.6 Table 1 | 可展开 93 层条带 | +| Q04 | KDA state | KDA 维护固定形状 recurrent state,用 channel-wise decay 与 delta-rule 写入;不保存所有 token pair。 | R §2.1 Eq. 1 | 状态读写动画 | +| Q05 | delta rule | 新 value 写入前减掉 state 对当前 key 的已有预测,减少相同 key 的重复累加;不等于无损键值数据库。 | R §2.1; P Kimi Linear / Gated DeltaNet | 累加 vs 纠错实验 | +| Q06 | bounded decay | K3 将 log-decay 下界设为 `g_min=-5`,限制 chunk 内累计衰减倒数,令对角 tile 也可用 BF16 Tensor Core 稠密矩阵乘。 | R §2.1.1, Fig. 3 | BF16 风险实验 | +| Q07 | chunkwise KDA | chunk 之间递归传状态,chunk 内转换成并行矩阵计算;训练与 prefill 并行、decode 保持 O(1) state update。 | R §2.1.1; P FlashKDA | chunk 数据流图 | +| Q08 | output gates | KDA 和 MLA 都使用输入相关、全秩输出门;其作用是动态控制读出通道,不是 router。 | R §2.1–2.1.2 | 与 MoE gate 对照 | +| Q09 | NoPE | MLA 无显式位置编码;KDA 的递归门控/衰减隐式携带顺序信息。NoPE 不等于没有位置或顺序信号。 | R §2.1.2, §3.4 | 位置来源图 | +| Q10 | FP32 attention output | 报告称 attention output 保持 FP32 以纠正 FlashAttention 有偏舍入误差,并重新安排 kernel tile buffer。 | R §2.1.2; P ref. 99 | 数值合同卡 | +| Q11 | AttnRes | Full AttnRes 让每层以可学习 pseudo-query 聚合 embedding 与所有早层输出;Block 版先在块内累加、跨块注意,以降低保存和跨 stage 通信。 | R §2.2 Eq. 8–9 | 深度路由实验 | +| Q12 | block size | 报告经验称约 8 个 block 保留大部分收益;K3 每 12 层一 block,加 embedding 共 9 个来源组。芯片 nano case 的 block size=2 不是主模型。 | R §2.2, §7.3 | 主模型/个案红线 | +| Q13 | LatentMoE | shared experts 走 full width,routed experts 在 3584 latent width 中执行,之后上投影回 7168;降低多专家激活的 token payload 与权重读取。 | R §2.3, Table 1 | 通信账实验 | +| Q14 | experts | K3 每层 896 routed、激活 16,另有 2 shared;“稀疏”不表示消费级硬件轻松运行。 | R Table 1 | 896→16→2 规格图 | +| Q15 | SiTU-GLU | 为 routed path 的连续矩阵乘限制大正输入,使用有界 tanh 分支近似 SwiGLU 原点附近行为。页面必须展示报告参数而非随意拟合。 | R §2.3.2, Fig. 4 | 函数曲线实验 | +| Q16 | QB | 以每个 expert 的 Top-(k+1) score cutoff 分位量更新 bias;bias 影响选择,训练结束后冻结用于 inference。 | R §2.3.3, Fig. 5 | router 分位实验 | +| Q17 | QB 通信 | 用 score histogram 的 all-reduce 近似全局 quantile,精度受 bin width 限制;这与 MoonEP 的执行平衡是两个层级。 | R §2.3.3 | 模型侧/系统侧分层 | +| Q18 | native vision | MoonViT-V2 从头训练,语言和视觉从训练开始就在同一 NTP objective 联合优化;不是把视觉塔后接到预训练 LLM。 | R §2.4, §3.3 | 删除冻结/解冻错误;双路线图 | +| Q19 | vision encoder | 约 401M、27 层、patch 14、12 heads;图像/视频共享参数,空间/时间 factorized attention、temporal pooling、2×2 pixel shuffle,最高 3584² 输入。 | R §2.4, Table 1 | 视觉 token 流 | +| Q20 | Per-Head Muon | Q/K/V 等多头投影按 head 分组应用 Muon;训练同时用 K2 weight clipping、QB、cosine、1% warmup、WD=0.1。 | R §2.5, §3.3 | 优化器角色卡 | +| Q21 | data | 四类文本为 Web Text、Code、Mathematics、Knowledge,加视觉语料;规则、质量分类与去重后,借小模型消融调 domain sampling。未公开完整配比。 | R §3.1 | 数据管线与“不披露” | +| Q22 | context curriculum | pretrain 8K→64K,cooldown 256K→1M;长数据清洗、上采样,并合成需要跨全局证据的多模态任务。 | R §3.3–3.4 | 四阶段长度图 | +| Q23 | SFT | 前代 Kimi 专家合成长 agent trajectory,经多阶段验证与 HITL 标注,以 XTML 序列化;SFT 起即进入 QAT。 | R §4.1.1 | 轨迹来源与协议 | +| Q24 | nine experts | general tasks、general agents、coding agents × low/high/max effort = 9 个专家策略;不是 inference ensemble。 | R §4.1.2 | 3×3 矩阵 | +| Q25 | effort budget | 每题由 cold-start 估计 `b0(x)`,超过 `τ·b0(x)` 的轨迹 reward 改为 −1;agent task 统计思考与 tool-call argument 等累计输出,τ 按 domain 由人工指导退火。 | R §4.1.2 | budget 实验 | +| Q26 | partial rollout | N×K 轨迹中 λ 比例完成即暂停生成并更新;未完轨迹下一轮优先恢复,per-token regularization 处理极端 stale/off-policy。 | R §4.1.2 | λ/straggler 实验 | +| Q27 | MOPD | 学生 on-policy 生成前缀;相应 domain/effort teacher 给下一 token 的 clipped log-ratio dense reward。九个老师只用于训练指导。 | R §4.1.3 Eq. 15 | reward 公式与流程 | +| Q28 | deployment-aware PT | experts 权重 MXFP4、激活 MXFP8;非 expert 高精度。SFT 与 RL 都 QAT,rollout/training 同配方。MTP 层再调为 EAGLE-3 draft,优化 LK acceptance loss。 | R §4.1.4 Eq. 16 | 精度角色和 draft 生命周期 | +| Q29 | agent environment | harness 被拆成 tool、prompt、context、skills、memory、subagent 等模块,训练时动态组合;AET 由目标状态和 verifier 给奖励。 | R §4.2 | harness 组合器图 | +| Q30 | system state | pretrain 管参数/optimizer/KDA state;RL 还管 KV 与 sandbox;serving 联合管 KDA state、MLA KV 与 fleet budget。 | R §5 | 三类状态寿命图 | +| Q31 | hybrid prefix cache | MLA KV 随 token 增长,KDA state 固定但 checkpoint 大;统一页池,512-token hash boundary 可落在 6144-token physical block 内,命中必须两类 state 同时存在。 | R §5.4.1 Fig. 12 | 可交互命中边界 | +| Q32 | evaluation | 分数必须带 effort、tool、harness、fallback/guard、date;报告结论是总体领先其比较的开放/部分闭源模型,但仍落后 Claude Fable 5 与 GPT-5.6 Sol。 | R Abstract, §6, Tables 2–5 | 协议审计器 | + +## 2. 关键规格台账 + +K2 → K3(Table 1;小数与单位保持报告口径): + +| 项 | Kimi K2 | Kimi K3 | +|---|---:|---:| +| Transformer layers | 61 | 93 | +| Total parameters | 1.04T | 2.78T | +| Activated parameters | 32.6B | 104.2B | +| Hidden dimension | 7168 | 7168 | +| Routed latent dimension | – | 3584 | +| MoE expert hidden | 2048 | 3072 | +| Routed experts | 384 | 896 | +| Activated routed experts | 8 | 16 | +| Shared experts | 1 | 2 | +| Attention heads | 64 | 96 | +| Dense layers | 1 | 1 | +| Vocabulary | 160K | 160K | +| Context | 128K | 1M | +| Attention | MLA | Hybrid KDA–MLA | +| Activation | SwiGLU | SiTU-GLU | +| Attention composition | 61 MLA | 69 KDA + 24 MLA | +| MTP layers | 1 | 1 | +| Vision encoder | – | 401M / 27 layers / patch 14 / 12 heads | + +## 3. Figure 1–16 视觉契约 + +| 图 | 报告主张 | 课程视觉 | 不允许的扩张 | +|---|---|---|---| +| 1 | 主评测总体位置 | 四能力轴 + 协议脚注 | 不以单榜替代总体结论 | +| 2 | K3 architecture overview | 视觉 token→hybrid stack→LatentMoE→head;深度路由单画 | 不把 93 层画成一层 | +| 3 | bounded decay 的稳定/内核动机 | log-decay、累计倒数、BF16 风险三联图 | 不写成精度绝对保证 | +| 4 | GLU/SwiGLU/SiTU 形状 | 同坐标曲线 + 大输入放大镜 | 不凭曲线声称所有模型更好 | +| 5 | Quantile Balancing | score cutoff→quantile→bias→下一 step | 不与 auxiliary loss-free 等同 | +| 6 | from-scratch MoonViT-V2 消融 | gradient norm/spike + baseline eval 边界 | 只限作者配置,不普遍否定初始化 | +| 7 | K3 相对 K2 的 scaling | loss/compute 概念曲线 + 2.5× 口径 | 不画成 inference 2.5× | +| 8 | RL FLOPs、steps、能力同升 | 三轴小 multiples | 相关性不自动证明通用因果 | +| 9 | KG-guided synthesis | concept→material→task type→verification | 不假装公开完整图谱 | +| 10 | AET curriculum | initial state→actions→verifier→harder task | reward 来自结果,不是模型自评 | +| 11 | pretraining pipeline/offload | 参数/activation/encoder 在设备间的时间线 | 不补写未公开集群规模 | +| 12 | hybrid prefix cache | 6144 physical / 512 hash / sparse checkpoint | 数字是报告示例,不是唯一配置 | +| 13 | score vs output token/cost | 二维/三维比较并列 protocol | 不把价格点当架构结论 | +| 14 | kernel agent case | 283.6→114.4ms 等逐项轨迹 | 24h/task 个案,不推广 | +| 15 | MiniTriton L20 roofline | 实测点相对 roofline | 只限报告硬件与任务 | +| 16 | XTML | global / one-shot / input options + channels | 不把 template 等同能力 | + +## 4. Table 2–5 协议台账 + +页面不追求把 PDF 表格逐格搬运,而采用“结果 + 协议 + 风险”三层: + +- Table 2:Reasoning & Knowledge / Coding; +- Table 3:Agentic; +- Table 4:Vision; +- Table 5:第三方评测与 cost / output token 关系; +- 所有分数要说明日期、reasoning effort、工具、harness、fallback 与 guard; +- 对 BrowseComp 同时保留 300K context management 的 91.2 与完整 1M 无管理的 90.4, + 用于说明“窗口容量 ≠ 上下文策略”; +- 报告对 research reasoning、cyber 等弱项的陈述必须与强项同页。 + +## 5. 八个实验合同 + +### Lab A — Delta Rule 工作记忆 + +- 输入:key 重复率、写入强度 β、旧状态预测、目标 value; +- 输出:additive update 与 delta update 的 state/value; +- 精确部分:给定 toy 向量后的矩阵运算; +- 边界:不代表真实 head 维度或模型回忆率。 + +### Lab B — Bounded decay / BF16 + +- 输入:log-decay 下界、chunk length、累计 decay; +- 输出:倒数幅度与风险等级; +- 精确部分:数学值; +- 边界:风险标签不替代 FlashKDA kernel 实测。 + +### Lab C — Block AttnRes + +- 输入:层数、block size; +- 输出:来源组数、Full/Block 缓存单位、深度路径; +- 精确部分:计数; +- 边界:吞吐仅方向展示。 + +### Lab D — LatentMoE 通信 + +- 输入:full width、latent width、top-k、token 数、dtype; +- 输出:routed payload 的确定性元素/字节比例; +- 边界:不包含 all-to-all 拓扑、权重流与 kernel utilization。 + +### Lab E — SiTU-GLU + +- 输入:x 与报告参数; +- 输出:GLU/SwiGLU/SiTU 曲线; +- 精确部分:函数值; +- 边界:不从曲线推导训练 loss。 + +### Lab F — Quantile Balancing + +- 输入:expert score samples、top-k、quantile target、bias step; +- 输出:Top-(k+1) cutoff、近似 quantile、下一 step bias; +- 边界:toy histogram,不代表 K3 router trace。 + +### Lab G — MOPD / partial rollout + +- 输入:domain、effort、τ、λ、teacher/student token probability; +- 输出:budget pass/fail、暂停轨迹数、clipped dense reward; +- 精确部分:报告公式的标量例子; +- 边界:不模拟完整 policy optimization。 + +### Lab H — Prefix cache / context management + +- 输入:matched prefix、physical block、hash block、checkpoint boundary; +- 输出:可命中最长边界、需重算 token; +- 精确部分:边界算术; +- 边界:不代表线上 cache hit rate。 + +## 6. §3 数据、Scaling 与训练配方 + +### 6.1 数据 + +- 文本四域:Web Text、Code、Mathematics、Knowledge; +- 视觉包含 captions、interleaved documents、OCR、perception、video、visual coding; +- 坐标同时使用绝对坐标与 `[0,1]` 归一坐标; +- programmatic visual data 包括 SVG、3D、Webpage、Game、CAD; +- K2 参与知识与数学 rephrasing:多样风格/视角、chunk-wise AR generation、fidelity verification; +- 不能披露/推断:完整来源清单、精确配比、总 token、版权构成。 + +### 6.2 Scaling + +- 小模型实验重调 batch size、learning rate、tokens per parameter、model shape; +- 使用 held-out OOD data; +- cosine 与 WSD 各自搜索最优超参,作者设置中 cosine 最终 loss 更低; +- 约 2.5× 是架构、recipe 与数据共同结果。 + +### 6.3 长上下文 + +- NoPE 省去 RoPE rescale / interpolation,但不解决全部训练与利用问题; +- long document/video 用 exact+fuzzy dedup、frame perceptual hash、heuristic/classifier filter、 + structural validation; +- 稀缺长数据被上采样; +- synthetic concatenation/permutation 要求答案依赖跨整段分散证据; +- curriculum:8K→64K(pretrain),256K→1M(cooldown)。 + +## 7. §4 后训练链 + +```text +verified/HITL trajectory synthesis + ↓ +SFT cold start + XTML + MXFP4/8 QAT + ↓ +3 domains × 3 effort = 9 RL experts + ↓ ↘ +partial rollout + stale tolerance agentic GRM / verifier + ↓ +MOPD: student on-policy prefix + matched teacher dense reward + ↓ +one unified model with selectable effort + ↓ +MTP → EAGLE-3 draft + LK acceptance loss +``` + +关键边界: + +- “九专家”是训练中的策略老师,不是服务时并发 9 模型; +- effort budget 每题、每域变化,不是固定全局长度; +- agentic task 的 token 账包含 tool-call arguments 等输出; +- partial rollout 缓解长尾,但引入 stale/off-policy; +- on-policy distillation 用学生访问的 prefix,仍依赖教师质量与领域映射; +- non-verifiable reward 的 rubric/judge 仍可能有偏,报告用强制协议和 verbosity budget 缓解。 + +## 8. §5 系统状态图 + +| 层 | 主要状态 | 生命周期 | 主要机制 | +|---|---|---|---| +| pretraining | weights、optimizer、activation、KDA state、vision tokens | step / run | FlashKDA、KCP、MoonEP、pipeline/offload | +| agentic RL | policy/ref、KV、trajectory、sandbox、files/apps | 多 iteration | partial rollout、adaptive throttle、AgentENV pause/resume/fork/snapshot | +| serving engine | KDA recurrent state、MLA KV、prefix hash | request/session | unified page pool、sparse checkpoints、COW | +| device | KDA replay input、AttnRes blocks、latent/routed weights | token / batch | fused decode、SP、side stream、WarpDecode-like token-centric kernel | +| fleet | prefix affinity、request class budget | session / traffic | primary+secondary consistent hash、budget admission | + +正式数字: + +- AgentENV:报告称训练/评测期间创建 51,219,741 sandboxes,涉及 1,505,678 images; +- pause 时 sandbox 不消耗 CPU/内存;报告称等待 inference 可达其生命周期 98%; +- incremental checkpoint/resume 最低延迟分别 133 ms / 49 ms; +- real workload memory overcommit 最高 6.5×; +- serving 示例:typical coding input 400K prefix、4K increment;请求成本跨约三数量级; +- 这些均是作者系统报告数字,尚非本站复跑。 + +## 9. §7 案例与附录 + +### 9.1 Kernel optimization + +- AttnRes 个案 283.6 ms → 114.4 ms; +- DSA / KDA reductions 为 55.1% / 73.6%; +- MLA 达到报告所称超过一半 peak; +- budget 为 24h / task; +- 只能表述为作者案例,不能推广为平均收益。 + +### 9.2 MiniTriton + +- 模型构建 compiler、tensor library、autograd、distributed stack; +- 报告结果基于 L20 与其任务/roofline; +- 展示“Agent 可改整个栈”,不证明自动编译普遍优于人工系统。 + +### 9.3 Chip + +- nano model 与主架构同型,但 Block AttnRes block size=2; +- 48h agent run;nano-kpu;4mm²、100MHz、RTL simulation >8700 tok/s 等均为报告个案; +- 不得把 nano 参数写回 K3 主模型规格。 + +### 9.4 XTML + +- message markers:`[open]`、`[sep]`、`[close]`、`[end_of_msg]`; +- global options 在 history 前;one-shot options 在 history 后以保留 KV cache; +- input options 可在会话中动态追加工具; +- channels:think / response / tools; +- thinking / instruct 由 prefix 选择。 + +## 10. 100 节点阅读链的选择规则 + +正式页面的 100 个节点按 `src/data/k3.ts` 维护,遵守: + +1. 优先 K3 报告的 151 条参考文献与作者官方仓库; +2. 论文链接到 arXiv、PMLR、OpenReview、NeurIPS/USENIX 等原始页面; +3. 软件链接到作者/组织官方仓库; +4. benchmark 链接到论文或官方站; +5. 2026 年厂商比较只作为评测上下文,不进入基础技术因果链; +6. 每个节点只写一个“为什么此处要读它”,不伪造继承关系; +7. DeepSeekMoE、V2/MLA、V3、V4 与 R1 单列交叉入口,满足重点讲解偏好; +8. K3 报告未引用但为历史必需的节点,必须标成课程补充,不伪装成报告引用。 + +## 11. 不可越过的红线 + +- `2.8T` 是四舍五入 hero 数;精确表用 `2.78T / 104.2B`; +- `2.5×` 不写成推理加速、吞吐或 KDA 单项收益; +- KDA 是压缩状态,不承诺逐 token 无损 recall; +- NoPE 没有**显式** positional embedding,不是无顺序; +- QB、MoonEP、fleet scheduling 分属模型、执行、服务三个层次; +- MoonViT-V2 从头训练,视觉/文本从开始联合 NTP; +- 1M 是窗口与训练 curriculum,不保证所有任务能有效利用完整窗口; +- MOPD 是训练整合,不是 inference ensemble; +- benchmark 是 model × effort × tool × harness × protocol; +- case study 数字始终带硬件、时间、任务或仿真边界; +- 不补写总训练 token、完整数据配比、总 GPU 数、训练成本; +- 2026 新组件必须明确第三方复现仍有限。 + +## 12. 实现检查表 + +- [x] 保存本地官方 PDF 与可检索文本; +- [x] Grok 候选线索与正式证据隔离; +- [x] 32 张问题账完成正式核验; +- [x] Figure 1–16、Table 1–5 建立视觉契约; +- [x] 八个实验建立输入/输出/边界合同; +- [x] 实现 `src/data/k3.ts` 的 100 节点、问题账与图表数据; +- [x] 实现 `K3ReportLab.astro`; +- [x] 重写 K3 页面并修正原生多模态错误; +- [x] 同步 papers、roadmap、progress、首页发布记录; +- [x] 添加 K3 专属 browser regression; +- [x] 本地 K3 browser regression、Astro check 与 build 通过; +- [ ] 生产全量验收与不可变发布记录。 diff --git a/scripts/check-agents-browser.mjs b/scripts/check-agents-browser.mjs index 38f4b5f..e650528 100644 --- a/scripts/check-agents-browser.mjs +++ b/scripts/check-agents-browser.mjs @@ -228,7 +228,7 @@ if (numeric(reliability.initial.passAt) <= numeric(reliability.k2.passAt) || num if (reliability.nonIdempotent.sideRisk === "LOW") failures.push("非幂等写操作风险没有提升"); if (numeric(rl.wait.utilization) >= numeric(rl.full.utilization) || numeric(rl.wait.lostWork) <= numeric(rl.full.lostWork)) failures.push("wait-all 长尾/重算方向异常"); if (!rl.wait.takeaway.includes("wait-all") || rl.keyboardSelected !== "rl" || rl.keyboardVisible !== "rl") failures.push("长程 RL 解释或键盘导航异常"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/") failures.push("首页评测首发入口异常"); +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/") failures.push("首页评测首发入口异常"); if (home.paperCount !== "486" || papers.total !== 486 || !papers.hasAgentFilter || papers.agentVisible < 52) failures.push("论文库 Agent 标签或论文总数异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); diff --git a/scripts/check-alignment-browser.mjs b/scripts/check-alignment-browser.mjs index 3b5d32f..b533846 100644 --- a/scripts/check-alignment-browser.mjs +++ b/scripts/check-alignment-browser.mjs @@ -226,7 +226,7 @@ if (!update.steps[0].includes("Fixed preference")) failures.push("DPO 更新流 if (!recipe.family.includes("Multi-effort") || !recipe.regime.includes("9 RL experts") || !recipe.constraints.includes("verbosity")) failures.push("K3 配方合同异常"); if (!recipe.path.some((step) => step.includes("3 domains × 3 efforts")) || !recipe.path.some((step) => step.includes("MOPD"))) failures.push("K3 配方路径异常"); if (recipe.keyboardSelected !== "recipe" || recipe.keyboardVisible !== "recipe") failures.push("实验 tab 键盘导航异常"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/") failures.push("首页评测首发入口异常"); +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/") failures.push("首页评测首发入口异常"); if (home.paperCount !== "486" || papers.total !== 486 || !papers.hasAlignmentFilter || papers.alignmentVisible < 35) failures.push("论文库后训练标签或论文总数异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); diff --git a/scripts/check-data-browser.mjs b/scripts/check-data-browser.mjs index 6399475..2396fdf 100644 --- a/scripts/check-data-browser.mjs +++ b/scripts/check-data-browser.mjs @@ -234,7 +234,7 @@ if (layout.navLinks !== 20 || mobile.mobileLinks !== 20 || home.navLinks !== 20) if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentOverflow > 0) failures.push("页面存在横向溢出"); if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible || mobile.menuOpen !== "true") failures.push("移动端菜单不可用"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/") { +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/") { failures.push("首页 Transformer 新章入口异常"); } if (home.paperCount !== "486") failures.push(`首页论文总数异常:${home.paperCount}`); diff --git a/scripts/check-deepseek-browser.mjs b/scripts/check-deepseek-browser.mjs index 8b0c7cc..e80b70b 100644 --- a/scripts/check-deepseek-browser.mjs +++ b/scripts/check-deepseek-browser.mjs @@ -287,7 +287,7 @@ if (rl.initial.signal !== "GROUP-RELATIVE SIGNAL" || rl.same.signal !== "ZERO GR if (!rl.dapo.provenance.includes("2503.14476") || !rl.dapo.algorithm.includes("FOLLOW-UP") || !rl.dr.provenance.includes("2503.20783")) failures.push("DAPO / Dr.GRPO 来源边界异常"); if (!rl.r1.includes("cold start") || !rl.distill.includes("没有重演")) failures.push("R1 / distill 身份切换异常"); if (rl.keyboardSelected !== "cache" || rl.keyboardVisible !== "cache") failures.push("实验键盘 tab 导航异常"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/" || home.paperCount !== "486") failures.push("首页 DeepSeek 首发入口或论文数异常"); +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/" || home.paperCount !== "486") failures.push("首页 DeepSeek 首发入口或论文数异常"); if (papers.total !== 486 || !papers.hasFilter || papers.visible < 20 || !papers.hasCoder || !papers.hasEngram) failures.push("论文库 DeepSeek 聚光异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (mobile.offenders.length) failures.push(`移动端越界元素:${JSON.stringify(mobile.offenders)}`); diff --git a/scripts/check-evaluation-browser.mjs b/scripts/check-evaluation-browser.mjs index 307bb5d..5ec00bc 100644 --- a/scripts/check-evaluation-browser.mjs +++ b/scripts/check-evaluation-browser.mjs @@ -277,7 +277,7 @@ if (numeric(system.initial.success) <= numeric(system.initial.model) || numeric( if (numeric(system.cheap.success) >= numeric(system.initial.success) || numeric(system.cheap.cost) !== 4) failures.push("低预算没有降低成功率 / 成本"); if (numeric(system.locked.unsafe) !== 0 || numeric(system.locked.overrefusal) <= numeric(system.initial.overrefusal)) failures.push("安全壳没有展现危险服从 / 过拒权衡"); if (system.keyboardSelected !== "judge" || system.keyboardVisible !== "judge") failures.push("实验键盘 tab 导航异常"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/") failures.push("首页评测首发入口异常"); +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/") failures.push("首页评测首发入口异常"); if (home.paperCount !== "486" || home.topicCount !== "17" || papers.total !== 486 || !papers.hasFilter || papers.visible < 80) failures.push("首页 / 论文库评测索引异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (mobile.offenders.length) failures.push(`移动端越界元素:${JSON.stringify(mobile.offenders)}`); diff --git a/scripts/check-inference-serving-browser.mjs b/scripts/check-inference-serving-browser.mjs index 9af065e..55b1398 100644 --- a/scripts/check-inference-serving-browser.mjs +++ b/scripts/check-inference-serving-browser.mjs @@ -264,7 +264,7 @@ if (!fleet.k3.avoided.includes("320K") || fleet.k3.shortSlo !== "PROTECTED") fai if (!fleet.failed.state.includes("SECONDARY RE-PREFILL") || !fleet.failed.recompute.includes("FAILED PRIMARY")) failures.push("缓存故障没有触发原子失效后的重算"); if (fleet.bursty.shortSlo !== "VIOLATED") failures.push("平均并发阈值没有暴露长请求突发"); if (fleet.keyboardSelected !== "phase" || fleet.keyboardVisible !== "phase") failures.push("实验键盘 tab 导航异常"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/") failures.push("首页评测首发入口异常"); +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/") failures.push("首页评测首发入口异常"); if (home.paperCount !== "486" || papers.total !== 486 || !papers.hasFilter || papers.visible !== 46) failures.push("论文库推理服务标签或总数异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (mobile.offenders.length) failures.push(`移动端越界元素:${JSON.stringify(mobile.offenders)}`); diff --git a/scripts/check-k3-browser.mjs b/scripts/check-k3-browser.mjs new file mode 100644 index 0000000..0a2c90d --- /dev/null +++ b/scripts/check-k3-browser.mjs @@ -0,0 +1,241 @@ +import { writeFileSync } from "node:fs"; + +const cdpPort = process.env.CDP_PORT ?? "9227"; +const baseUrl = process.env.SITE_URL ?? "http://127.0.0.1:4327"; +const pages = await fetch(`http://127.0.0.1:${cdpPort}/json/list`).then((response) => response.json()); +const page = pages.find((entry) => entry.type === "page"); +if (!page) throw new Error(`CDP ${cdpPort} 没有可用页面`); + +const socket = new WebSocket(page.webSocketDebuggerUrl); +await new Promise((resolve, reject) => { + socket.addEventListener("open", resolve, { once: true }); + socket.addEventListener("error", reject, { once: true }); +}); + +let nextId = 0; +const pending = new Map(); +const exceptions = []; +socket.addEventListener("message", (event) => { + const message = JSON.parse(event.data); + if (message.id && pending.has(message.id)) { + const { resolve, reject } = pending.get(message.id); + pending.delete(message.id); + if (message.error) reject(new Error(message.error.message)); + else resolve(message.result); + } + if (message.method === "Runtime.exceptionThrown") { + exceptions.push(message.params.exceptionDetails.exception?.description ?? message.params.exceptionDetails.text); + } +}); + +const command = (method, params = {}) => new Promise((resolve, reject) => { + const id = ++nextId; + pending.set(id, { resolve, reject }); + socket.send(JSON.stringify({ id, method, params })); +}); +const pause = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)); +const evaluate = async (expression) => { + const result = await command("Runtime.evaluate", { expression, returnByValue: true, awaitPromise: true }); + if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description ?? result.exceptionDetails.text); + return result.result.value; +}; +const navigate = async (path) => { + await command("Page.navigate", { url: `${baseUrl}${path}` }); + for (let attempt = 0; attempt < 80; attempt += 1) { + await pause(100); + if (await evaluate("document.readyState === 'complete'")) return; + } + throw new Error(`${path} 加载超时`); +}; +const screenshot = async (path, beyond = false) => { + const result = await command("Page.captureScreenshot", { format: "png", captureBeyondViewport: beyond }); + writeFileSync(path, Buffer.from(result.data, "base64")); +}; + +await command("Page.enable"); +await command("Runtime.enable"); +await command("Emulation.setDeviceMetricsOverride", { + width: 1440, + height: 1100, + deviceScaleFactor: 1, + mobile: false, +}); + +await navigate("/k3/"); +await screenshot("/tmp/llm-atlas-k3-desktop.png"); + +const overview = await evaluate(`(() => ({ + title: document.querySelector("h1")?.textContent.trim(), + sections: document.querySelectorAll(".article-section").length, + tocLinks: document.querySelectorAll(".side-rail a").length, + ledgers: document.querySelectorAll(".ledger-card").length, + reportMap: document.querySelectorAll(".report-map > article").length, + figureAtlas: document.querySelectorAll(".figure-atlas > article").length, + paperLinks: document.querySelectorAll("#papers .paper-row").length, + paperGroups: document.querySelectorAll("#papers .paper-group").length, + labTabs: document.querySelectorAll("[data-k3-tab]").length, + labPanels: document.querySelectorAll("[data-k3-panel]").length, + nativeVisionCorrected: document.body.textContent.includes("MoonViT‑V2 从头训练") && + document.body.textContent.includes("同一个 next-token prediction objective"), + staleVisionClaim: document.body.textContent.includes("先固定语言模型训练视觉组件"), + documentOverflow: document.documentElement.scrollWidth - document.documentElement.clientWidth, +}))()`); + +const labs = await evaluate(`(() => { + const root = document.querySelector("[data-k3-lab]"); + const panel = () => root.querySelector("[data-k3-panel]:not([hidden])").dataset.k3Panel; + const text = (selector) => root.querySelector(selector).textContent.trim(); + const input = (selector, value) => { + const node = root.querySelector(selector); + node.value = value; + node.dispatchEvent(new Event("input", { bubbles: true })); + }; + + const memoryInitial = { + panel: panel(), + additive: text("[data-additive-result]"), + delta: text("[data-delta-result]"), + additiveError: text("[data-additive-error]"), + deltaError: text("[data-delta-error]"), + }; + input("[data-memory-writes]", "12"); + const memoryChanged = { additive: text("[data-additive-result]"), delta: text("[data-delta-result]") }; + + root.querySelector('[data-k3-tab="decay"]').click(); + const decayInitial = { panel: panel(), verdict: text("[data-decay-verdict] b"), log: text("[data-decay-log]"), recip: text("[data-decay-recip]") }; + input("[data-decay-g]", "-120"); + input("[data-decay-tile]", "32"); + const decayRisk = { verdict: text("[data-decay-verdict] b"), log: text("[data-decay-log]") }; + + root.querySelector('[data-k3-tab="depth"]').click(); + const depthInitial = { sources: text("[data-block-sources]"), contract: text("[data-depth-reduction]") }; + input("[data-depth-block]", "6"); + const depthChanged = { sources: text("[data-block-sources]"), contract: text("[data-depth-reduction]") }; + + root.querySelector('[data-k3-tab="width"]').click(); + const widthInitial = { conventional: text("[data-width-conventional]"), latent: text("[data-width-latent]"), reduction: text("[data-width-reduction]") }; + input("[data-width-latent]", "7168"); + const widthFull = { reduction: text("[data-width-reduction]") }; + + root.querySelector('[data-k3-tab="situ"]').click(); + const situInitial = { bound: text("[data-situ-bound]"), value: text("[data-situ-value]"), swiglu: text("[data-situ-swiglu]") }; + input("[data-situ-x]", "1000"); + const situLarge = { bound: text("[data-situ-bound]"), value: text("[data-situ-value]"), swiglu: text("[data-situ-swiglu]") }; + + root.querySelector('[data-k3-tab="qb"]').click(); + const qbInitial = { before: text("[data-qb-before-copy]"), after: text("[data-qb-after-copy]"), bias: text("[data-qb-bias]"), gap: text("[data-qb-gap]") }; + input("[data-qb-strength]", "0"); + const qbOff = { after: text("[data-qb-after-copy]"), gap: text("[data-qb-gap]") }; + + root.querySelector('[data-k3-tab="rl"]').click(); + const rlInitial = { + complete: text("[data-rl-complete]"), + paused: text("[data-rl-paused]"), + budget: text("[data-rl-budget-copy]"), + reward: text("[data-rl-reward]"), + }; + input("[data-rl-tokens]", "40"); + const rlOver = { budget: text("[data-rl-budget-copy]") }; + + root.querySelector('[data-k3-tab="cache"]').click(); + const cacheInitial = { + mla: text("[data-cache-mla]"), + kda: text("[data-cache-kda]"), + hit: text("[data-cache-hit]"), + recompute: text("[data-cache-recompute]"), + }; + input("[data-cache-checkpoint]", "3"); + const cacheSparse = { kda: text("[data-cache-kda]"), hit: text("[data-cache-hit]"), recompute: text("[data-cache-recompute]") }; + + const first = root.querySelector('[data-k3-tab="memory"]'); + first.focus(); + first.dispatchEvent(new KeyboardEvent("keydown", { key: "ArrowRight", bubbles: true })); + return { + memoryInitial, memoryChanged, decayInitial, decayRisk, depthInitial, depthChanged, + widthInitial, widthFull, situInitial, situLarge, qbInitial, qbOff, rlInitial, rlOver, + cacheInitial, cacheSparse, + keyboardSelected: root.querySelector('[data-k3-tab][aria-selected="true"]').dataset.k3Tab, + keyboardVisible: panel(), + }; +})()`); + +await evaluate(`(() => { + document.querySelector("[data-k3-lab]").scrollIntoView({ block: "start", behavior: "instant" }); + window.scrollBy(0, -82); +})()`); +await pause(180); +await screenshot("/tmp/llm-atlas-k3-lab-desktop.png"); + +await command("Emulation.setDeviceMetricsOverride", { + width: 390, + height: 844, + deviceScaleFactor: 1, + mobile: true, +}); +await navigate("/k3/"); +const mobile = await evaluate(`(() => { + const root = document.querySelector("[data-k3-lab]"); + root.scrollIntoView({ block: "start", behavior: "instant" }); + const toggle = document.querySelector("#menu-toggle"); + toggle?.click(); + return { + documentOverflow: document.documentElement.scrollWidth - document.documentElement.clientWidth, + menuVisible: getComputedStyle(toggle).display !== "none", + menuOpen: toggle.getAttribute("aria-expanded"), + tabs: root.querySelectorAll("[data-k3-tab]").length, + offenders: [...document.querySelectorAll("body *")] + .filter((node) => !node.closest(".paper-chain, .spec-table-wrap, .cache-strip, .architecture-explorer, [data-k3-lab]")) + .filter((node) => node.getBoundingClientRect().right > document.documentElement.clientWidth + 1) + .slice(0, 15) + .map((node) => ({ + tag: node.tagName, + className: typeof node.className === "string" ? node.className : "", + right: Math.round(node.getBoundingClientRect().right), + width: Math.round(node.getBoundingClientRect().width), + })), + }; +})()`); +await evaluate(`(() => { + document.querySelector("#menu-toggle")?.click(); + window.scrollBy(0, -82); +})()`); +await pause(180); +await screenshot("/tmp/llm-atlas-k3-mobile.png"); + +const report = { overview, labs, mobile, exceptions }; +console.log(JSON.stringify(report, null, 2)); + +const numeric = (text) => Number.parseFloat(text.replaceAll(",", "").replace("−", "-")); +const failures = []; +if (!overview.title.includes("因果环节")) failures.push("K3 二轮标题异常"); +if (overview.sections !== 31 || overview.tocLinks !== 31) failures.push("30 个编号专题加阅读链的目录结构异常"); +if (overview.ledgers !== 32 || overview.reportMap !== 9) failures.push("32 张问题账或报告地图异常"); +if (overview.figureAtlas !== 21 || overview.paperLinks !== 100 || overview.paperGroups < 12) failures.push("图表审计或 100 节点阅读链异常"); +if (overview.labTabs !== 8 || overview.labPanels !== 8) failures.push("八联实验结构异常"); +if (!overview.nativeVisionCorrected || overview.staleVisionClaim) failures.push("原生多模态纠错未生效或旧错误残留"); +if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在文档级横向溢出"); +if (labs.memoryInitial.panel !== "memory" || numeric(labs.memoryInitial.additiveError) <= numeric(labs.memoryInitial.deltaError)) failures.push("Delta memory 初始递推异常"); +if (numeric(labs.memoryChanged.additive) <= numeric(labs.memoryInitial.additive) || numeric(labs.memoryChanged.delta) <= numeric(labs.memoryInitial.delta)) failures.push("Delta memory 控件未更新"); +if (labs.decayInitial.panel !== "decay" || labs.decayInitial.verdict !== "WITHIN RANGE" || numeric(labs.decayInitial.log) !== -80) failures.push("K3 默认 bounded decay 范围异常"); +if (labs.decayRisk.verdict !== "OVERFLOW RISK" || numeric(labs.decayRisk.log) !== -384) failures.push("bounded decay 风险探针异常"); +if (numeric(labs.depthInitial.sources) !== 9 || numeric(labs.depthChanged.sources) !== 17) failures.push("Block AttnRes 来源计数异常"); +if (numeric(labs.widthInitial.reduction) !== 50 || numeric(labs.widthFull.reduction) !== 0) failures.push("LatentMoE payload 账异常"); +if (numeric(labs.situInitial.bound) !== 100 || numeric(labs.situLarge.value) > 100.01 || numeric(labs.situLarge.swiglu) <= 1000) failures.push("SiTU formal bound 异常"); +if (!labs.qbInitial.before.includes("4, 3, 1, 0") || numeric(labs.qbInitial.gap) > 1 || numeric(labs.qbOff.gap) < 3) failures.push("Quantile Balancing toy route 异常"); +if (!labs.rlInitial.complete.includes("192") || !labs.rlInitial.paused.includes("64") || numeric(labs.rlInitial.reward) !== 0.693) failures.push("MOPD / partial rollout 初始账异常"); +if (!labs.rlOver.budget.includes("reward 改为 −1")) failures.push("Reasoning effort 超预算未触发"); +if (numeric(labs.cacheInitial.hit) !== 2560 || !labs.cacheInitial.recompute.includes("256")) failures.push("Hybrid prefix cache 默认命中异常"); +if (numeric(labs.cacheSparse.hit) >= numeric(labs.cacheInitial.hit) || numeric(labs.cacheSparse.recompute) <= numeric(labs.cacheInitial.recompute)) failures.push("稀疏 KDA checkpoint 未降低 joint hit"); +if (labs.keyboardSelected !== "decay" || labs.keyboardVisible !== "decay") failures.push("实验键盘 tab 导航异常"); +if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 8) failures.push("移动端导航或实验异常"); +if (mobile.offenders.length) failures.push(`移动端越界元素:${JSON.stringify(mobile.offenders)}`); +if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); + +if (failures.length) { + console.error(`\nFAIL\n- ${failures.join("\n- ")}`); + process.exitCode = 1; +} else { + console.log("\nPASS K3 browser regression"); +} + +socket.close(); diff --git a/scripts/check-moe-browser.mjs b/scripts/check-moe-browser.mjs index 7a4070f..8f5d94c 100644 --- a/scripts/check-moe-browser.mjs +++ b/scripts/check-moe-browser.mjs @@ -177,7 +177,7 @@ if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentO } if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible) failures.push("移动端菜单按钮未显示"); -if (home.releaseCards !== 16) failures.push(`首页新章卡数量异常:${home.releaseCards}`); +if (home.releaseCards !== 17) failures.push(`首页新章卡数量异常:${home.releaseCards}`); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-multimodal-browser.mjs b/scripts/check-multimodal-browser.mjs index c584144..38a3bd0 100644 --- a/scripts/check-multimodal-browser.mjs +++ b/scripts/check-multimodal-browser.mjs @@ -246,7 +246,7 @@ if (ocr.unreported.status !== "OUT OF EVIDENCE" || ocr.unreported.accuracy !== " if (loop.toolsStart.state !== "OPEN" || loop.toolsEnd.state !== "VERIFIED" || loop.toolsEnd.evidence !== "97%" || loop.toolsEnd.tools !== "3") failures.push("vision-in-the-loop 终局异常"); if (loop.cotEnd.state !== "FAILED" || !loop.cotEnd.takeaway.includes("不能凭空增加")) failures.push("文字 CoT 与新观察没有分开"); if (loop.keyboardSelected !== "connector" || loop.keyboardVisible !== "connector") failures.push("实验键盘 tab 导航异常"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/") failures.push("首页评测首发入口异常"); +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/") failures.push("首页评测首发入口异常"); if (home.paperCount !== "486" || papers.total !== 486 || !papers.hasFilter || papers.multimodalVisible < 59) failures.push("论文库多模态标签或总数异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (mobile.offenders.length) failures.push(`移动端越界元素:${JSON.stringify(mobile.offenders)}`); diff --git a/scripts/check-numerics-browser.mjs b/scripts/check-numerics-browser.mjs index b69910e..7c61ab0 100644 --- a/scripts/check-numerics-browser.mjs +++ b/scripts/check-numerics-browser.mjs @@ -277,7 +277,7 @@ if (layout.navLinks !== 20 || mobile.mobileLinks !== 20 || home.navLinks !== 20) if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentOverflow > 0) failures.push("页面存在横向溢出"); if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible || mobile.menuOpen !== "true") failures.push("移动端菜单不可用"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/") { +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/") { failures.push("首页 Transformer 新章入口异常"); } if (home.paperCount !== "486") failures.push(`首页论文总数异常:${home.paperCount}`); diff --git a/scripts/check-reasoning-browser.mjs b/scripts/check-reasoning-browser.mjs index 6444bb6..ef8beff 100644 --- a/scripts/check-reasoning-browser.mjs +++ b/scripts/check-reasoning-browser.mjs @@ -289,7 +289,7 @@ if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentO } if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible || mobile.menuOpen !== "true") failures.push("移动端菜单不可用"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文")) failures.push("首页评测新章入口异常"); +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要")) failures.push("首页评测新章入口异常"); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-representation-browser.mjs b/scripts/check-representation-browser.mjs index f1e451b..57db74c 100644 --- a/scripts/check-representation-browser.mjs +++ b/scripts/check-representation-browser.mjs @@ -288,7 +288,7 @@ if (numeric(residual.attnres.states) !== 9 || !residual.attnres.routeExplain.inc if (!residual.clamp.activation.includes("V4") || !residual.clamp.bound.includes("100")) failures.push("DeepSeek-V4 clamp 展示异常"); if (!residual.situ.activation.includes("KIMI") || !residual.situ.bound.includes("100")) failures.push("K3 SiTU 上界展示异常"); if (residual.keyboardSelected !== "position" || residual.keyboardVisible !== "position") failures.push("实验键盘 tab 导航异常"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/") failures.push("首页表示新章入口异常"); +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/") failures.push("首页表示新章入口异常"); if (home.paperCount !== "486" || home.topicCount !== "17" || papers.total !== 486 || !papers.hasFilter || papers.visible < 30) failures.push("首页 / 论文库表示索引异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (mobile.offenders.length) failures.push(`移动端越界元素:${JSON.stringify(mobile.offenders)}`); diff --git a/scripts/check-scaling-browser.mjs b/scripts/check-scaling-browser.mjs index ec543a8..9541ebe 100644 --- a/scripts/check-scaling-browser.mjs +++ b/scripts/check-scaling-browser.mjs @@ -273,7 +273,7 @@ if (layout.navLinks !== 20 || mobile.mobileLinks !== 20 || home.navLinks !== 20) if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentOverflow > 0) failures.push("页面存在横向溢出"); if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible || mobile.menuOpen !== "true") failures.push("移动端菜单不可用"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/") { +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/") { failures.push("首页 Transformer 新章入口异常"); } if (home.paperCount !== "486") failures.push(`首页论文总数异常:${home.paperCount}`); diff --git a/scripts/check-training-systems-browser.mjs b/scripts/check-training-systems-browser.mjs index de5b0ac..002fe69 100644 --- a/scripts/check-training-systems-browser.mjs +++ b/scripts/check-training-systems-browser.mjs @@ -233,7 +233,7 @@ if (layout.articleSections !== 16 || layout.paperLinks !== 37 || layout.labTabs if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentOverflow > 0) failures.push("页面存在横向溢出"); if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible || mobile.menuOpen !== "true") failures.push("移动端菜单不可用"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文")) failures.push("首页评测新章入口异常"); +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要")) failures.push("首页评测新章入口异常"); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-transformer-browser.mjs b/scripts/check-transformer-browser.mjs index f922d66..799fc7f 100644 --- a/scripts/check-transformer-browser.mjs +++ b/scripts/check-transformer-browser.mjs @@ -236,7 +236,7 @@ if (block.family.trim() !== "Hybrid MoE" || !block.kv.includes("3 KDA : 1 Gated if (!block.path.some((step) => step.includes("KDA × 3")) || !block.note.includes("AttnRes")) failures.push("K3 Block 路径异常"); if (block.context.trim() !== "128K" || numeric(block.mha) !== 400 || numeric(block.kda) !== 1) failures.push("KV 成本缩放异常"); if (block.keyboardSelected !== "block" || block.keyboardVisible !== "block") failures.push("实验 tab 键盘导航异常"); -if (home.releaseCards !== 16 || !home.firstRelease.includes("从 Dense 到百万上下文") || home.firstHref !== "/deepseek/") failures.push("首页评测首发入口异常"); +if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/") failures.push("首页评测首发入口异常"); if (home.paperCount !== "486" || papers.total !== 486 || papers.transformerVisible < 30) failures.push("论文库或首页论文数量异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); diff --git a/src/components/K3ReportLab.astro b/src/components/K3ReportLab.astro new file mode 100644 index 0000000..59fce9f --- /dev/null +++ b/src/components/K3ReportLab.astro @@ -0,0 +1,725 @@ +
+
+
+

INTERACTIVE / EIGHT REPORT WORKBENCHES

+

把八个容易误读的机制,拆成可以动手验算的对象

+
+

+ 数学输出按页面公式实时计算;风险、通信与吞吐标签只是显式 toy model。 + 本实验没有复跑 K3 checkpoint、FlashKDA kernel、MoonEP 集群或线上 cache。 +

+
+ +
+ {[ + ["memory", "01", "DELTA MEMORY", "纠错写入"], + ["decay", "02", "BOUNDED DECAY", "BF16 范围"], + ["depth", "03", "ATTNRES", "深度来源"], + ["width", "04", "LATENTMOE", "通信 payload"], + ["situ", "05", "SITU-GLU", "有界激活"], + ["qb", "06", "QB ROUTER", "分位均衡"], + ["rl", "07", "MOPD / RL", "预算与长尾"], + ["cache", "08", "PREFIX CACHE", "混合状态命中"], + ].map(([id, number, title, subtitle], index) => ( + + ))} +
+ +
+
+
WORKBENCH 01 / DELTA RULE

同一个 key 反复出现时,累加和纠错写入会走向完全不同的 state

+

为便于看懂,这里把矩阵 state 压成“当前 key 对应的标量预测”。真实 KDA 是每个 head 的矩阵状态。

+
+
+ + + + +
+
+
+ NAIVE ADDITIVE + s ← s + βv +
+ 3.00 +

每次都继续追加;重复 key 会把同一 value 越写越大。

+
+
+ DELTA UPDATE + s ← s + β(v − s) +
+ 0.98 +

只写“目标与旧预测的差”;在这个 toy key 上逐步逼近目标。

+
+
+
+
ADDITIVE ERROR2.00

|state − target|

+
DELTA ERROR0.02

|state − target|

+
REAL KDAmatrix state

S ∈ Rdₖ×dᵥ,另有 α 与 key geometry

+
+
精确标量递推 / 教学降维

这个实验只解释“纠错写入”直觉,不证明固定状态能无损回忆任意历史。

+
+ + + + + + + + + + + + + + +
+ + + + diff --git a/src/data/k3.ts b/src/data/k3.ts new file mode 100644 index 0000000..7f64885 --- /dev/null +++ b/src/data/k3.ts @@ -0,0 +1,173 @@ +export const k3Ledgers = [ + ["Q01", "参数角色", "2.78T / 104.2B 各表示什么?", "total 是总容量,active 是一条 Token 路径经过的参数规模;二者都不等于端到端 FLOPs。"], + ["Q02", "效率口径", "约 2.5× 究竟是什么?", "它是架构、数据与 recipe 共同形成的相对 K2 scaling efficiency,不是推理速度或 KDA 单项收益。"], + ["Q03", "混合节奏", "3 KDA + 1 MLA 如何落到 93 层?", "Table 1 给出 69 KDA + 24 MLA,最后一层也是 MLA;另有一层 dense。"], + ["Q04", "序列状态", "KDA 保存了什么?", "它维护固定形状 recurrent state,而不是所有历史 Token 的两两配对。"], + ["Q05", "纠错写入", "Delta Rule 为什么不是简单累加?", "先减掉 state 对当前 key 的已有预测,再写真实 value 与预测的差。"], + ["Q06", "数值下界", "gmin = −5 在解决什么?", "它限制 chunk 内累计衰减倒数,令关键 tile 可落在 BF16 Tensor Core 范围。"], + ["Q07", "并行算法", "递归状态如何训练并行?", "chunk 间传状态,chunk 内改写成并行矩阵乘;decode 仍逐步更新固定状态。"], + ["Q08", "读出门", "KDA / MLA 的 output gate 是 router 吗?", "不是;它按输入控制 attention 读出通道,MoE router 则选择专家。"], + ["Q09", "位置来源", "NoPE 是否意味着没有顺序?", "没有显式位置 embedding;KDA 的门控与衰减隐式传递顺序,MLA 负责全局内容匹配。"], + ["Q10", "舍入合同", "为什么 attention output 保留 FP32?", "报告用它修正 FlashAttention 有偏舍入,并为片上 tile buffer 重新排布。"], + ["Q11", "深度路由", "AttnRes 怎样改变 residual?", "每层用 pseudo-query 选择早层来源;Block 版用块内累加换取更低内存与跨 stage 通信。"], + ["Q12", "主模型边界", "12 层一块还是 2 层一块?", "K3 主模型为 12;§7 芯片 nano case 的 2 不能写回主规格。"], + ["Q13", "路由宽度", "LatentMoE 为什么先压到 3584?", "shared path 保留 7168,routed path 在较窄空间执行,以降低多专家激活的 payload 与权重流。"], + ["Q14", "专家角色", "896、16、2 怎样读?", "896 routed 中每 Token 选 16,另有 2 shared;稀疏不等于消费级硬件轻松运行。"], + ["Q15", "有界激活", "SiTU-GLU 在稳定什么?", "它限制 routed path 大正输入的幅值,同时近似 SwiGLU 在原点附近的形状。"], + ["Q16", "路由分位", "Quantile Balancing 怎样更新 bias?", "用 Top-(k+1) score cutoff 的全局分位量做下一步更新;最终 bias 冻结用于推理。"], + ["Q17", "平衡层次", "QB 与 MoonEP 是同一件事吗?", "QB 调模型路由偏置;MoonEP 调系统执行与通信形状;二者互补但不能合并。"], + ["Q18", "原生视觉", "视觉塔是否后接到预训练 LLM?", "不是。MoonViT-V2 从头训练,视觉与文本从训练开始就在同一 NTP objective 联合优化。"], + ["Q19", "视觉流", "图像和视频怎样进入主干?", "401M / 27 层编码器共享图像视频参数,经时空分解、pooling、pixel shuffle 与 projector 进入主干。"], + ["Q20", "优化器", "Per-Head Muon 为什么按 head 分组?", "多头投影按相对独立的 head 组织矩阵更新;它只是完整训练 recipe 的一部分。"], + ["Q21", "数据披露", "我们知道和不知道哪些语料事实?", "知道四类文本、视觉种类与清洗/重写流程;不知道完整来源、精确配比和总训练 Token。"], + ["Q22", "长度课程", "1M 是怎样训练出来的?", "pretrain 8K→64K,cooldown 256K→1M,并配长数据清洗、上采样和跨全局证据的合成任务。"], + ["Q23", "SFT 冷启动", "Agent 轨迹从哪里来?", "前代 Kimi 专家合成,经多阶段验证与 HITL 标注,再用 XTML 序列化;SFT 起即做 QAT。"], + ["Q24", "九位老师", "3 × 3 专家是否在线投票?", "不是。它们是三领域 × 三 effort 的训练策略,最终经 MOPD 整合进一个学生。"], + ["Q25", "思考预算", "low / high / max 如何定义?", "每题从 cold-start 估计 b₀(x),按 domain 退火 τ;超过 τb₀ 的轨迹 reward 改为 −1。"], + ["Q26", "长尾轨迹", "Partial rollout 暂停了什么?", "N×K 轨迹中 λ 比例完成就更新,未完轨迹下轮优先恢复;代价是 stale/off-policy。"], + ["Q27", "蒸馏信号", "MOPD 为什么是 on-policy?", "学生生成自己会访问的 prefix,匹配的 teacher 在该 prefix 上给 clipped token log-ratio reward。"], + ["Q28", "部署约束", "量化与 speculative draft 何时进入?", "SFT/RL 全程 experts MXFP4/activations MXFP8 QAT;MTP 后调为 EAGLE-3 draft 并优化 LK loss。"], + ["Q29", "Harness", "Agent 能力属于模型还是脚手架?", "系统结果来自模型与 tool、prompt、context、skills、memory、subagent、verifier 的组合。"], + ["Q30", "状态寿命", "训练、RL、服务分别搬运什么?", "参数/优化器、KDA/MLA 序列状态、KV/轨迹、sandbox 与 prefix 的寿命完全不同。"], + ["Q31", "混合缓存", "KDA state 与 MLA KV 怎样共同命中?", "统一页池;细 hash boundary 与粗 physical block 解耦,命中点必须两类 cache 同时有效。"], + ["Q32", "评测协议", "一个分数至少需要哪些脚注?", "effort、tool、harness、fallback/guard、日期;报告也明确总体仍落后最强闭源模型。"], +] as const; + +export const k3ReportMap = [ + ["§1", "Introduction", "四条扩展轴与总体结论", "Figure 1"], + ["§2", "Architecture", "KDA、AttnRes、Stable LatentMoE、MoonViT、Muon", "Figures 2–6 · Table 1"], + ["§3", "Pre-Training", "数据、scaling law、联合训练、1M curriculum", "Figure 7"], + ["§4", "Post-Training", "SFT、9 experts、partial rollout、MOPD、QAT、环境", "Figures 8–10"], + ["§5", "Infrastructure", "FlashKDA/KCP、MoonEP、RL 系统、AgentENV、serving", "Figures 11–12"], + ["§6", "Evaluations", "四能力轴、第三方结果、成本与协议", "Figure 13 · Tables 2–5"], + ["§7", "Case Studies", "kernel、MiniTriton、chip、research、knowledge、video", "Figures 14–15"], + ["§8", "Conclusion", "开放权重与剩余差距", "—"], + ["App.", "A–F", "KDA/AttnRes 细节、评测补充、XTML", "Figure 16"], +] as const; + +export const k3FigureAtlas = [ + ["F01", "Figure 1", "主结果", "四能力轴必须与总体仍落后 Claude Fable 5 / GPT-5.6 Sol 的结论同屏。"], + ["F02", "Figure 2", "完整架构", "把视觉入口、3:1 hybrid stack、Block AttnRes 与 Stable LatentMoE 分成不同信息流。"], + ["F03", "Figure 3", "Bounded decay", "展示下界、累计倒数与 BF16 风险,不承诺任意配置绝对稳定。"], + ["F04", "Figure 4", "SiTU-GLU", "对比 GLU / SwiGLU / SiTU 的函数形状,不从曲线直接推训练 loss。"], + ["F05", "Figure 5", "Quantile Balancing", "Top-(k+1) cutoff → global quantile → expert bias → next step。"], + ["F06", "Figure 6", "原生视觉", "只在作者消融配置内说明 from-scratch MoonViT-V2 梯度更平稳。"], + ["F07", "Figure 7", "Scaling law", "约 2.5× 是相对 K2 的整体 scaling efficiency,不是 inference speedup。"], + ["F08", "Figure 8", "RL scaling", "RL FLOPs、平均 steps 与能力共同增长;相关性不自动成为跨域因果律。"], + ["F09", "Figure 9", "任务合成", "知识图谱 → 材料检索 → knowledge/coding/vision task → verification。"], + ["F10", "Figure 10", "AET", "初始状态、动作、独立 verifier 与 curriculum,奖励落在环境结果。"], + ["F11", "Figure 11", "训练系统", "画状态的放置与移动,不补写报告未公开的总集群规模。"], + ["F12", "Figure 12", "Prefix cache", "6144 physical / 512 hash / sparse KDA checkpoint 是报告示例。"], + ["F13", "Figure 13", "分数与成本", "score 与 output token / cost 同图,并保留比较协议。"], + ["F14", "Figure 14", "Kernel agent", "283.6→114.4 ms 等数字限定在作者 24h/task 个案。"], + ["F15", "Figure 15", "MiniTriton", "L20 实测点对 roofline;不推广到其他硬件和工作负载。"], + ["F16", "Figure 16", "XTML", "global / one-shot / input options、channel 和 message boundary 分层。"], + ["T01", "Table 1", "K2 → K3", "精确逐字段规格,hero 的 2.8T / 104B 只作易读四舍五入。"], + ["T02", "Table 2", "Reasoning / Coding", "把 effort、harness、tool 与 fallback 变成表头的一部分。"], + ["T03", "Table 3", "Agentic", "分数是 model × harness × environment × verifier 的系统结果。"], + ["T04", "Table 4", "Vision", "有/无 Python tool 必须分列。"], + ["T05", "Table 5", "第三方 / 成本", "价格点只描述当时服务条件,不作为架构因果证据。"], +] as const; + +export const k3PaperChain = [ + ["001", "2014", "Neural Machine Translation by Jointly Learning to Align and Translate", "https://arxiv.org/abs/1409.0473", "内容寻址注意力前史", "FOUNDATION"], + ["002", "2015", "Deep Residual Learning for Image Recognition", "https://arxiv.org/abs/1512.03385", "标准 residual 起点", "DEPTH"], + ["003", "2017", "Attention Is All You Need", "https://arxiv.org/abs/1706.03762", "全局 self-attention 坐标", "FOUNDATION"], + ["004", "2017", "Language Modeling with Gated Convolutional Networks", "https://proceedings.mlr.press/v70/dauphin17a.html", "GLU 前史", "NUMERICS"], + ["005", "2018", "Parallelizing Linear Recurrent Neural Nets Over Sequence Length", "https://openreview.net/forum?id=HyUNwulC-", "递归的并行扫描", "STATE"], + ["006", "2018", "Quantization and Training of Neural Networks", "https://arxiv.org/abs/1712.05877", "QAT 前史", "DEPLOY"], + ["007", "2018", "Online normalizer calculation for softmax", "https://arxiv.org/abs/1805.02867", "online-softmax merge", "SYSTEM"], + ["008", "2019", "RMSNorm", "https://arxiv.org/abs/1910.07467", "尺度控制", "NUMERICS"], + ["009", "2019", "GPipe", "https://arxiv.org/abs/1811.06965", "pipeline schedule 前史", "SYSTEM"], + ["010", "2019", "Triton", "https://dl.acm.org/doi/10.1145/3315508.3329973", "tile compiler 前史", "SYSTEM"], + ["011", "2020", "Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention", "https://proceedings.mlr.press/v119/katharopoulos20a.html", "线性状态视角", "STATE"], + ["012", "2020", "Scaling Laws for Neural Language Models", "https://arxiv.org/abs/2001.08361", "经验缩放坐标", "SCALING"], + ["013", "2020", "GLU Variants Improve Transformer", "https://arxiv.org/abs/2002.05202", "SwiGLU 坐标", "NUMERICS"], + ["014", "2020", "GShard", "https://arxiv.org/abs/2006.16668", "大规模 expert parallel", "MOE"], + ["015", "2020", "ZeRO", "https://arxiv.org/abs/1910.02054", "训练状态分片", "SYSTEM"], + ["016", "2020", "Firecracker", "https://www.usenix.org/conference/nsdi20/presentation/agache", "AgentENV 隔离前史", "AGENT"], + ["017", "2021", "Linear Transformers Are Secretly Fast Weight Programmers", "https://proceedings.mlr.press/v139/schlag21a.html", "Delta memory 直觉", "STATE"], + ["018", "2021", "Switch Transformers", "https://arxiv.org/abs/2101.03961", "稀疏容量坐标", "MOE"], + ["019", "2021", "BASE Layers", "https://proceedings.mlr.press/v139/lewis21a.html", "专家负载分配", "MOE"], + ["020", "2021", "MLIR", "https://ieeexplore.ieee.org/document/9370308", "MiniTriton 编译基础", "SYSTEM"], + ["021", "2022", "Training Compute-Optimal Large Language Models", "https://arxiv.org/abs/2203.15556", "参数/数据预算", "SCALING"], + ["022", "2022", "FlashAttention", "https://arxiv.org/abs/2205.14135", "IO-aware exact attention", "SYSTEM"], + ["023", "2023", "Ring Attention", "https://arxiv.org/abs/2310.01889", "长序列块式并行", "CONTEXT"], + ["024", "2023", "DeepSpeed Ulysses", "https://arxiv.org/abs/2309.14509", "sequence parallel 对照", "CONTEXT"], + ["025", "2023", "YaRN", "https://arxiv.org/abs/2309.00071", "RoPE 外推对照", "CONTEXT"], + ["026", "2023", "Microscaling Data Formats for Deep Learning", "https://arxiv.org/abs/2310.10537", "MX formats", "DEPLOY"], + ["027", "2024", "DeepSeekMoE", "https://arxiv.org/abs/2401.06066", "shared + fine-grained experts", "DEEPSEEK"], + ["028", "2024", "DeepSeek-V2", "https://arxiv.org/abs/2405.04434", "MLA 与 MoE 直接祖先", "DEEPSEEK"], + ["029", "2024", "DeepSeek-V3", "https://arxiv.org/abs/2412.19437", "aux-loss-free、FP8、MTP 对照", "DEEPSEEK"], + ["030", "2024", "Griffin", "https://arxiv.org/abs/2402.19427", "recurrent + attention hybrid", "STATE"], + ["031", "2024", "Mamba-2 / Transformers are SSMs", "https://arxiv.org/abs/2405.21060", "状态空间二元性", "STATE"], + ["032", "2024", "HGRN2", "https://arxiv.org/abs/2404.07904", "gated recurrence 与 state expansion", "STATE"], + ["033", "2024", "Linear Attention Sequence Parallelism", "https://arxiv.org/abs/2404.02882", "linear attention CP", "CONTEXT"], + ["034", "2024", "Gated Linear Attention Transformers", "https://proceedings.mlr.press/v235/yang24ab.html", "硬件友好 GLA", "STATE"], + ["035", "2024", "Parallelizing Linear Transformers with the Delta Rule", "https://arxiv.org/abs/2406.06484", "chunkwise delta rule", "STATE"], + ["036", "2024", "Mooncake", "https://arxiv.org/abs/2407.00079", "KV-centric serving", "SYSTEM"], + ["037", "2025", "Kimi k1.5", "https://arxiv.org/abs/2501.12599", "长 CoT 与 RL 前代", "KIMI"], + ["038", "2025", "Gated Delta Networks", "https://openreview.net/forum?id=r8H7xhYPwz", "KDA 机制近邻", "STATE"], + ["039", "2025", "Kimi-VL", "https://arxiv.org/abs/2504.07491", "Kimi 视觉前代", "KIMI"], + ["040", "2025", "Kimi K2", "https://arxiv.org/abs/2507.20534", "主干、Muon、Agent 前代", "KIMI"], + ["041", "2025", "Kimi Linear", "https://arxiv.org/abs/2510.26692", "KDA 与 hybrid 直接前身", "KIMI"], + ["042", "2025", "Muon", "https://kellerjordan.github.io/posts/muon/", "矩阵正交化更新", "NUMERICS"], + ["043", "2025", "Muon is Scalable for LLM Training", "https://arxiv.org/abs/2502.16982", "Muon 扩展证据", "NUMERICS"], + ["044", "2025", "LASP-2", "https://arxiv.org/abs/2502.07563", "hybrid linear attention SP", "CONTEXT"], + ["045", "2025", "EAGLE-3", "https://arxiv.org/abs/2503.01840", "draft model 直接来源", "DEPLOY"], + ["046", "2025", "Gated Attention for Large Language Models", "https://arxiv.org/abs/2505.06708", "attention output gating", "STATE"], + ["047", "2025", "Optimus", "https://www.usenix.org/conference/atc25/presentation/feng", "多模态训练 bubble", "SYSTEM"], + ["048", "2025", "On-policy distillation", "https://thinkingmachines.ai/blog/on-policy-distillation/", "学生分布上的蒸馏", "RL"], + ["049", "2025", "DeepEP", "https://github.com/deepseek-ai/DeepEP", "专家并行对照实现", "DEEPSEEK"], + ["050", "2025", "Flash Linear Attention", "https://github.com/fla-org/flash-linear-attention", "线性注意力实现生态", "SYSTEM"], + ["051", "2025", "Video-MME", "https://arxiv.org/abs/2405.21075", "视频评测", "EVAL"], + ["052", "2025", "MMMU-Pro", "https://arxiv.org/abs/2409.02813", "稳健多学科视觉评测", "EVAL"], + ["053", "2025", "CharXiv", "https://arxiv.org/abs/2406.18521", "图表理解评测", "EVAL"], + ["054", "2025", "Math-Vision", "https://arxiv.org/abs/2402.14804", "视觉数学评测", "EVAL"], + ["055", "2025", "OmniDocBench", "https://arxiv.org/abs/2412.07626", "文档解析评测", "EVAL"], + ["056", "2025", "Humanity's Last Exam", "https://arxiv.org/abs/2501.14249", "高难知识推理评测", "EVAL"], + ["057", "2025", "BrowseComp", "https://arxiv.org/abs/2504.12516", "浏览与 context management", "EVAL"], + ["058", "2025", "SciCode", "https://arxiv.org/abs/2407.13168", "科研编码评测", "EVAL"], + ["059", "2025", "Tool Decathlon", "https://arxiv.org/abs/2510.25726", "长程工具使用评测", "EVAL"], + ["060", "2025", "DeepSearchQA", "https://storage.googleapis.com/deepmind-media/DeepSearchQA/DeepSearchQA_benchmark_paper.pdf", "深度研究覆盖度", "EVAL"], + ["061", "2025", "OSWorld-Verified", "https://xlang.ai/blog/osworld-verified", "电脑使用验证", "EVAL"], + ["062", "2025", "Terminal-Bench", "https://arxiv.org/abs/2601.11868", "终端 Agent 评测", "EVAL"], + ["063", "2025", "GDPval", "https://arxiv.org/abs/2510.04374", "经济价值任务", "EVAL"], + ["064", "2025", "ZeroBench", "https://arxiv.org/abs/2502.09696", "高难视觉基准", "EVAL"], + ["065", "2025", "SonicMoE", "https://arxiv.org/abs/2512.14080", "IO / tile-aware MoE", "SYSTEM"], + ["066", "2025", "TileLang", "https://arxiv.org/abs/2504.17577", "tile programming 对照", "SYSTEM"], + ["067", "2025", "ThunderKittens", "https://openreview.net/forum?id=0fJfVOSUra", "GPU kernel DSL 对照", "SYSTEM"], + ["068", "2026", "Kimi K2.5", "https://arxiv.org/abs/2602.02276", "视觉 Agent 与 RL 直接前代", "KIMI"], + ["069", "2026", "LatentMoE", "https://arxiv.org/abs/2601.18089", "routed latent width", "MOE"], + ["070", "2026", "Attention Residuals", "https://arxiv.org/abs/2603.15031", "跨深度选择", "DEPTH"], + ["071", "2026", "Kimi K3", "https://arxiv.org/abs/2607.24653", "本课程锚点报告", "KIMI"], + ["072", "2026", "Kimi K3 official repository", "https://github.com/MoonshotAI/Kimi-K3", "权重、报告与开放边界", "KIMI"], + ["073", "2026", "FlashKDA", "https://github.com/MoonshotAI/FlashKDA", "KDA 官方 kernel", "SYSTEM"], + ["074", "2026", "AgentENV", "https://github.com/kvcache-ai/AgentENV", "可恢复 microVM 环境", "AGENT"], + ["075", "2026", "ReplaySSM", "https://tridao.me/blog/2026/replayssm/", "缓存输入而非每步 state", "DEPLOY"], + ["076", "2026", "LK Losses", "https://arxiv.org/abs/2602.23881", "直接优化 speculative acceptance", "DEPLOY"], + ["077", "2026", "PowLU", "https://arxiv.org/abs/2605.25704", "有界/稳定激活对照", "NUMERICS"], + ["078", "2026", "Why Low-Precision Transformer Training Fails", "https://arxiv.org/abs/2510.04212", "FlashAttention 舍入风险", "NUMERICS"], + ["079", "2026", "Expert Threshold Routing", "https://arxiv.org/abs/2603.11535", "动态专家与均衡对照", "MOE"], + ["080", "2026", "BIP Expert Load Balancing", "https://arxiv.org/abs/2502.15451", "专家分配对照", "MOE"], + ["081", "2026", "UltraEP", "https://arxiv.org/abs/2606.04101", "rack-scale expert parallel", "SYSTEM"], + ["082", "2026", "Megatron Core MoE", "https://arxiv.org/abs/2603.07685", "MoE 系统复现坐标", "SYSTEM"], + ["083", "2026", "Warp Decode", "https://cursor.com/blog/warp-decode", "token-centric MoE decode", "SYSTEM"], + ["084", "2026", "DeepSeek-V4", "https://arxiv.org/abs/2606.19348", "百万上下文同期对照", "DEEPSEEK"], + ["085", "2025", "DeepSeek-R1", "https://arxiv.org/abs/2501.12948", "reasoning RL 重点对照", "DEEPSEEK"], + ["086", "2026", "MCP-Atlas", "https://arxiv.org/abs/2602.00933", "MCP 工具能力评测", "EVAL"], + ["087", "2026", "MCPMark", "https://arxiv.org/abs/2509.24002", "真实 MCP 压力测试", "EVAL"], + ["088", "2026", "ResearchRubrics", "https://openreview.net/forum?id=ErnvfmSX0P", "深度研究 rubric", "EVAL"], + ["089", "2026", "AutomationBench", "https://arxiv.org/abs/2604.18934", "自动化 Agent 评测", "EVAL"], + ["090", "2026", "SaaS-Bench", "https://arxiv.org/abs/2605.15777", "专业 SaaS workflow", "EVAL"], + ["091", "2026", "Agents' Last Exam", "https://arxiv.org/abs/2606.05405", "通用 Agent 压力测试", "EVAL"], + ["092", "2026", "APEX-Agents", "https://arxiv.org/abs/2601.14242", "跨域 Agent 评测", "EVAL"], + ["093", "2026", "OSWorld 2.0", "https://arxiv.org/abs/2606.29537", "长程电脑使用", "EVAL"], + ["094", "2026", "OfficeQA Pro", "https://arxiv.org/abs/2603.08655", "企业知识工作", "EVAL"], + ["095", "2026", "SpreadsheetBench 2", "https://arxiv.org/abs/2606.29955", "端到端表格工作", "EVAL"], + ["096", "2026", "BabyVision", "https://arxiv.org/abs/2601.06521", "超越语言先验的视觉推理", "EVAL"], + ["097", "2026", "MMVU", "https://openaccess.thecvf.com/content/CVPR2025/html/Zhao_MMVU_Measuring_Expert-Level_Multi-Discipline_Video_Understanding_CVPR_2025_paper.html", "专家级视频理解", "EVAL"], + ["098", "2026", "WorldVQA", "https://arxiv.org/abs/2602.02537", "原子视觉世界知识", "EVAL"], + ["099", "2026", "PerceptionBench", "https://www.kimi.com/blog/perception-bench", "Kimi 原子视觉感知", "KIMI"], + ["100", "2026", "Preliminary Assessment of Kimi K3's Cyber Capabilities", "https://www.aisi.gov.uk/blog/preliminary-assessment-of-kimi-k3s-cyber-capabilities", "独立安全评估边界", "EVAL"], +] as const; diff --git a/src/pages/index.astro b/src/pages/index.astro index 62c1e4c..2440bd6 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -40,8 +40,8 @@ const paths = [ label: "K3 反向拆解", title: "先看全貌,再沿组件回到每条技术祖先", text: "适合已经用过大模型、想迅速读懂 K3 报告的人。每个组件都能跳回其历史专题。", - steps: ["K3 三维信息流", "KDA 与 MLA", "Stable LatentMoE", "1M Agentic RL 与系统"], - time: "6–10 小时", + steps: ["32 张问题账", "KDA / MLA / AttnRes / LatentMoE", "预训练与 MOPD", "1M RL / 服务 / 评测"], + time: "10–16 小时", target: "能逐节解释 K3 技术报告", }, { @@ -126,6 +126,22 @@ const paths = [
+ +
+

NEW / K3 ROUND 02 REPORT · FORMULA · SYSTEM · EVIDENCE

+

47 页不再压成摘要:把 K3 的每个因果环节重新展开

+

+ 用三十二张问题账逐节读完 KDA、Gated MLA、AttnRes、Stable LatentMoE、原生视觉、 + 预训练、九专家 MOPD、Agent 环境、FlashKDA / MoonEP、混合 prefix cache、评测与案例边界。 +

+
+
+
REPORT
16 Figures · 5 Tables
+
NODES
100 个一手 / 官方节点
+
LAB
Delta · Decay · AttnRes · MoE · QB · RL · Cache
+
+ +

NEW / DEEPSEEK ROUND 02 CAPACITY · STATE · SYSTEM · REASONING

@@ -615,6 +631,7 @@ const paths = [ transition: transform 180ms ease, border-color 180ms ease; } + .k3-release, .deepseek-release, .representation-release, .inference-release, @@ -639,6 +656,14 @@ const paths = [ var(--paper-raised); } + .k3-release { + background: + radial-gradient(circle at 82% 16%, rgba(159, 91, 52, .28), transparent 31%), + radial-gradient(circle at 58% 74%, rgba(76, 118, 112, .22), transparent 30%), + repeating-linear-gradient(135deg, transparent 0 62px, rgba(159, 91, 52, .045) 62px 63px), + var(--paper-raised); + } + .representation-release { background: radial-gradient(circle at 82% 18%, rgba(159, 91, 52, 0.22), transparent 31%), @@ -785,6 +810,7 @@ const paths = [ padding-bottom: 76px; } + .k3-release, .deepseek-release, .representation-release, .inference-release, diff --git a/src/pages/k3/index.astro b/src/pages/k3/index.astro index 6949f00..1b64c6b 100644 --- a/src/pages/k3/index.astro +++ b/src/pages/k3/index.astro @@ -1,45 +1,128 @@ --- import BaseLayout from "@/layouts/BaseLayout.astro"; import ArchitectureExplorer from "@/components/ArchitectureExplorer.astro"; +import K3ReportLab from "@/components/K3ReportLab.astro"; +import { k3FigureAtlas, k3Ledgers, k3PaperChain, k3ReportMap } from "@/data/k3"; const toc = [ - ["00", "orientation", "先建立阅读坐标"], - ["01", "architecture", "一张图看完整架构"], - ["02", "kda", "KDA:线性工作记忆"], - ["03", "mla", "Gated MLA:全局回看"], - ["04", "attnres", "Attention Residuals"], - ["05", "moe", "Stable LatentMoE"], - ["06", "vision", "原生视觉与优化器"], - ["07", "pretrain", "预训练与长上下文"], - ["08", "posttrain", "后训练与推理强度"], - ["09", "agents", "Agentic RL 环境"], - ["10", "infra", "2.8T / 1M 基础设施"], - ["11", "evaluation", "评测与局限"], - ["↳", "sources", "论文链与一手来源"], + ["00", "compass", "三十二张问题账"], + ["01", "report-map", "47 页报告地图"], + ["02", "architecture", "三维信息流"], + ["03", "specs", "K2 → K3 规格"], + ["04", "kda", "KDA 状态与 Delta Rule"], + ["05", "bounded-decay", "Bounded decay"], + ["06", "mla", "Gated MLA 与 NoPE"], + ["07", "attnres", "跨深度 Attention"], + ["08", "latentmoe", "Stable LatentMoE"], + ["09", "stability", "SiTU 与 QB"], + ["10", "vision", "原生视觉"], + ["11", "data", "数据工程"], + ["12", "scaling", "Scaling 与训练配方"], + ["13", "context", "8K → 1M"], + ["14", "sft", "SFT 与 XTML 冷启动"], + ["15", "rl", "九专家与 effort"], + ["16", "mopd", "MOPD 与 partial rollout"], + ["17", "deployment", "QAT 与 draft model"], + ["18", "harness", "White-box harness"], + ["19", "environments", "环境与任务合成"], + ["20", "pretrain-systems", "预训练系统"], + ["21", "moonep", "MoonEP"], + ["22", "rl-systems", "RL 状态与 AgentENV"], + ["23", "cache", "混合 prefix cache"], + ["24", "serving", "Kernel 与 fleet"], + ["25", "evaluation", "评测协议"], + ["26", "cases", "案例边界"], + ["27", "xtml", "XTML 协议"], + ["28", "lab", "八联交互实验"], + ["29", "audit", "21 张图表审计"], + ["↳", "papers", "100 节点阅读链"], ]; + +const specs = [ + ["Transformer layers", "61", "93", "+32"], + ["Total parameters", "1.04T", "2.78T", "容量约 2.67×"], + ["Activated parameters", "32.6B", "104.2B", "路径约 3.20×"], + ["Hidden dimension", "7168", "7168", "主干不变"], + ["Routed latent dimension", "—", "3584", "主干的 0.5×"], + ["MoE expert hidden", "2048", "3072", "专家内部更宽"], + ["Routed experts", "384", "896", "池更大"], + ["Activated routed", "8", "16", "每 Token 多选"], + ["Shared experts", "1", "2", "完整宽度公共路径"], + ["Attention heads", "64", "96", "+32"], + ["Dense layers", "1", "1", "不变"], + ["Vocabulary", "160K", "160K", "不变"], + ["Context", "128K", "1M", "四阶段扩展"], + ["Attention", "61 MLA", "69 KDA + 24 MLA", "3:1 hybrid"], + ["Activation", "SwiGLU", "SiTU-GLU", "有界乘积分支"], + ["MTP layers", "1", "1", "后调为 draft"], + ["Vision encoder", "—", "401M / 27L / p14 / 12H", "从头联合训练"], +]; + +const dataDomains = [ + ["WEB TEXT", "网页正文与长文档", "规则、质量分类、exact/fuzzy dedup;长文档单独清洗与上采样。"], + ["CODE", "代码、仓库与可执行材料", "不仅生成文本,还支撑 kernel、web、软件工程和 programmatic vision。"], + ["MATHEMATICS", "数学推理与重写材料", "K2 参与多风格、多视角 rephrasing,并做 fidelity verification。"], + ["KNOWLEDGE", "知识密集语料", "chunk-wise 自回归改写,尽量在扩展表达的同时保留事实。"], + ["VISION", "caption / OCR / video / visual coding", "图文交错、绝对与归一坐标、SVG/3D/Web/Game/CAD 等程序化视觉。"], +]; + +const environments = [ + ["01", "Verifiable search & professional work", "多步搜索、投行、法律、数据分析与办公交付物;证据和最终产物都能检查。"], + ["02", "Vision reasoning", "在隔离 Python 环境裁剪、放大、计算,再把新图像作为 observation 回到同一轨迹。"], + ["03", "GPU kernel", "先过数值正确性,再比较专家实现和硬件 roofline,同时检测缓存/降精度作弊。"], + ["04", "Long-term assistant", "Gmail、Notion、Slack 等 mock app 跨多日演进,单任务可含数千次工具调用。"], + ["05", "Autonomous Execution", "只给初始状态、目标、约束、工具和 verifier,不给参考轨迹;奖励最终环境状态。"], + ["06", "Web development", "容器内构建网页、游戏、3D 与可视化,由功能、结构/像素和模型检查共同评分。"], +]; + +const stateStack = [ + ["PRETRAIN", "参数 / optimizer / activation / KDA state / vision tokens", "FlashKDA · KCP · MoonEP · pipeline/offload"], + ["AGENTIC RL", "policy / reference / KV / trajectory / sandbox / files", "partial rollout · throttling · AgentENV"], + ["SERVING ENGINE", "KDA recurrent state / MLA KV / prefix hash", "unified page pool · sparse checkpoints · COW"], + ["DEVICE", "projected replay input / AttnRes block / expert weights", "fused KDA · SP · WarpDecode-like kernel"], + ["FLEET", "session affinity / request-class budget", "primary+secondary hash · budget admission"], +]; + +const paperGroups = [ + ["FOUNDATION", "基础"], + ["STATE", "序列状态"], + ["DEPTH", "深度"], + ["MOE", "稀疏宽度"], + ["NUMERICS", "数值"], + ["SCALING", "Scaling"], + ["CONTEXT", "长上下文"], + ["KIMI", "Kimi 谱系"], + ["DEEPSEEK", "DeepSeek 交叉线"], + ["RL", "后训练"], + ["AGENT", "Agent 环境"], + ["DEPLOY", "部署"], + ["SYSTEM", "系统"], + ["EVAL", "评测"], +] as const; --- -
+
-

ANCHOR REPORT / 01 KIMI K3

-

把 47 页 K3 报告
读成一条因果链

+

ANCHOR REPORT / ROUND 02 KIMI K3 · 47 PAGES

+

不把报告压成摘要
把每个因果环节
重新展开

- 不从 2.8 万亿这个最大数字开始,而从模型同时面对的四个瓶颈开始: - 序列太长、网络太深、容量太大、Agent 轨迹太久。K3 的每个新组件都可以放回这四个问题。 + K3 同时扩展序列、深度、宽度、视觉与 Agent 轨迹。真正值得读的不是 2.8T 这个最大数字, + 而是每种状态为什么出现、放在哪里、怎样被训练,以及作者证据究竟支持到哪一步。

-
REPORT
47 页 · 151 条参考来源
-
MODEL
2.8T total / 104B active
-
CONTEXT
1,048,576 tokens
-
ARCH
69 KDA + 24 Gated MLA
-
STATUS
首版导读 · 持续扩写
+
QUESTIONS
32 张问题账
+
REPORT
16 Figures · 5 Tables
+
LABS
8 个可操作实验
+
READING
100 个一手 / 官方节点
+
MODEL
2.78T total / 104.2B active
+
STATUS
K3 二轮深读
@@ -53,665 +136,1100 @@ const toc = [ ))}
- 证据状态 - 本页架构和训练事实来自 K3 官方技术报告;直觉类比与简图为本站原创解释。 + 证据约定 + R = K3 报告;P = 原论文 / 官方实现;D = 确定性推导;T = 教学模型。四者不互相冒充。
-
-

00 READING ORIENTATION

-

先别急着记缩写:K3 在扩展三种信息流

+
+

00 THIRTY-TWO QUESTION LEDGERS

+

先把三十二个对象拆开,才不会把“规模、效率、能力”揉成一句话

- K3 报告自己的组织方式非常漂亮:沿序列长度、网络深度和模型宽度扩展信息流。 - 这比“又加了哪些模块”更接近真正的设计逻辑。 + 技术报告最容易制造一种错觉:看完所有术语,却没有建立可追问的对象。 + 下面每张账只回答一个问题,同时写出答案不能被扩张到哪里。

-
-
- SEQUENCE / TOKEN -

一句话内部怎样交流

-

KDA 负责低成本持续记忆,周期性的 Gated MLA 负责完整全局交互。

-
-
- DEPTH / LAYER -

信息怎样穿过 93 层

-

Attention Residuals 让当前层有选择地读取早期层,而不只是接收统一累加结果。

-
-
- WIDTH / EXPERT -

容量怎样远大于计算量

-

Stable LatentMoE 建立 896 个路由专家,每个 Token 只激活 16 个。

-
+
+ {k3Ledgers.map(([id, object, question, answer]) => ( +
+
{id}{object}
+

{question}

+

{answer}

+
+ ))}
-

- 第四个问题藏在模型外部:这些结构要在真实硬件上完成预训练、百万 Token 强化学习和线上服务。 - 所以报告第 5 章不是附录,而是 K3 设计的一半。没有 FlashKDA、专家并行、外置 KV Cache、 - 可恢复沙箱和集群调度,前面的架构只是一张昂贵的蓝图。 -

-
- 一句话版本 +
+ 贯穿全页的读法 +

先认状态→找到瓶颈→看机制怎样改写状态→核对系统代价→最后读评测

+
+
+ +
+

01 REPORT MAP

+

47 页不是一条直线:先知道每章在回答哪一层问题

+
+ {k3ReportMap.map(([section, title, question, evidence]) => ( +
+ {section} +
{title}

{question}

+ {evidence} +
+ ))} +
+
+ 报告结构里的隐藏主线

- K3 想让信息在“很长的时间、很深的网络、很宽的专家库”里都能流动,同时让整个系统仍然能被训练和部署。 + §2 并不独立于 §5:KDA 的 recurrent state 决定 context parallelism 与 prefix cache; + 极稀疏 LatentMoE 决定 expert communication;长 Agent 轨迹又决定 partial rollout 与可恢复 sandbox。 + 架构、训练、系统是同一条状态链的不同截面。

-

01 ARCHITECTURE OVERVIEW

-

一张图看完 K3:先看流向,再看数字

+

02 THREE-DIMENSIONAL INFORMATION FLOW

+

K3 的统一设计语言:Token、Layer、Channel 三个方向的信息流

- -

关键规格应该怎样读

-
-
总参数2.8T

表示模型装下的总容量,不等于每个 Token 都计算全部参数。

-
激活参数104B

单个 Token 前向时实际经过的参数规模,仍然非常大。

-
层数93

其中 1 层 dense;注意力由 69 KDA 与 24 Gated MLA 组成。

-
隐藏维度7168

主干表示宽度;LatentMoE 内部路由空间压到 3584。

-
专家896 → 16

另有 2 个 shared experts,给通用变换保留稳定路径。

-
上下文1,048,576

约一百万 Token;能放下不等于不需要上下文管理。

-
视觉编码器401M

MoonViT-V2 把图像和视频编码到共享表示空间。

-
部署精度MXFP4 / 8

专家权重 MXFP4、专家激活 MXFP8,非专家模块保留更高精度。

+
+
SEQUENCE / TOKEN

KDA + Gated MLA

低成本持续状态与周期性全局回看分工,不要求单一 attention 同时擅长所有时间尺度。

+
DEPTH / LAYER

Block AttnRes

当前层不只接收统一 residual sum,而能选择早期 block 的表示。

+
WIDTH / CHANNEL

Stable LatentMoE

shared path 保留完整宽度,routed path 压到 latent space 后从 896 个专家选 16 个。

+
MODALITY / OBSERVATION

MoonViT-V2

视觉与文本从训练开始共享 backbone 与 NTP objective,使 screenshot 能成为 Agent 轨迹里的连续 observation。

+
+
+ {Array.from({ length: 6 }, (_, block) => ( +
+ KDAKDAKDAMLAB{block + 1} +
+ ))} + … 69 KDA + 24 MLA · 最后一层全局 attention
- 常见误解:2.8T 不是“每次都算 2.8T” + 不要把 2.5× 贴到其中一个方块上

- MoE 的核心正是把参数容量和每 Token 计算拆开。2.8T 描述可用参数总量;104B 才更接近一次前向的激活规模。 - 但 104B 依然远高于许多 dense 模型,所以“稀疏”不等于“能在普通显卡轻松运行”。 + 报告把约 2.5× overall scaling efficiency 归因于 KDA、AttnRes、Stable LatentMoE、 + 训练 recipe 和数据的组合。它不是 KDA 单项消融,也不是线上推理 2.5×。

+
+

03 TABLE 1 / EXACT SPECIFICATION

+

从 K2 到 K3:每个数字改变的是哪一本账

+
+ + + + {specs.map(([field, k2, k3, note]) => ( + + ))} + +
FIELDKIMI K2KIMI K3HOW TO READ
{field}{k2}{k3}{note}
+
+

+ 2.78T 是总容量,104.2B 是激活路径规模;部署仍需放置大量 expert weights, + 推理仍需 attention、router、shared experts、dispatch/combine 与 kernel。把 active parameters + 直接当成 dense 等价成本,会漏掉系统账。 +

+
+
-

02 KIMI DELTA ATTENTION

-

KDA:不保存所有配对,而是维护一份会更新的工作记忆

+

04 KIMI DELTA ATTENTION

+

KDA 不保存每个历史配对,而是维护一份会遗忘、会纠错的工作记忆

- 标准注意力会让每个新 Token 和许多旧 Token 直接比较。KDA 改成维护一个固定形状的状态: - 新信息到来时,先有选择地遗忘,再用“纠错式写入”更新这份状态。 + 标准 attention 让新 Query 直接查看许多历史 Key/Value;KDA 将历史压入固定形状矩阵状态 + St∈Rdₖ×dᵥ。状态更便宜,但压缩也意味着它不是无损数据库。

- -

从标准注意力的账单说起

-

- 长度为 n 的序列,如果做完整 self-attention,需要形成近似 n × n 的交互。 - 在一百万 Token 处,哪怕使用 FlashAttention 避免把整张矩阵写回显存,计算量仍按平方增长。 - 线性注意力的基本想法是先把历史压进状态 S,读取时只让 Query 查询状态。 -

- -
- Sₜ = (I − βₜkₜkₜᵀ) · Diag(αₜ) · Sₜ₋₁ + βₜkₜvₜᵀ
- õₜ = Sₜᵀqₜ - - 教学化书写,符号对应 K3 Report Eq. 1。α 控制各通道保留多少旧状态;β 控制本次写入强度; - delta rule 先擦除当前 key 已有的预测,再写入新的 value。 - +
+ REPORT EQ. 1 / SINGLE HEAD + Sₜ = (I − βₜkₜkₜᵀ) Diag(αₜ) Sₜ₋₁ + βₜkₜvₜᵀ + õₜ = Sₜᵀqₜ +

α∈(0,1)dₖ 逐 key channel 保留旧状态;β∈(0,1) 控制写入;Query 从更新后的 state 读取。

- -

为什么叫 Delta Rule

-

- 如果直接做 S ← S + kvᵀ,同一个 key 反复出现会不断累加,状态容易被重复信息污染。 - Delta Rule 先问“现有状态对这个 key 已经会输出什么”,只写入真实 value 与旧预测之间的差值。 - 它像修改文档:不是每次把整篇内容追加到末尾,而是找到对应位置做差量更新。 -

- -

K3 相比 Kimi Linear 改了什么

-
    -
  1. - 逐通道遗忘门。α 不是一个标量,而是 key channel 级别的保留率;不同维度可以拥有不同记忆时长。 -
  2. -
  3. - 把 log-decay 下界固定为 −5。Kimi Linear 的衰减映射下界无穷,会让 chunk 内累计衰减的倒数爆大; - K3 将其限制在可由 BF16 表示的范围,从而让对角 tile 也能直接使用 Tensor Core 的稠密矩阵乘。 -
  4. -
  5. - 全秩、输入相关的输出门。读取状态后,模型可以对每个输入动态决定哪些输出通道放行。 -
  6. -
  7. - 块内并行、块间递归。序列分成 chunk:chunk 之间传状态,chunk 内改写成并行矩阵计算,兼顾训练吞吐与线性推理。 -
  8. -
- -
+ +
+

05 FIGURE 3 / LOWER-BOUNDED DECAY

+

一个看似细小的函数改动,为什么会改变 diagonal tile 能否上 Tensor Core

+

+ chunkwise 公式需要用累计 retention Γ 缩放 Key;因为 Γ 是许多 (0,1) 数的乘积,1/Γ 可能爆大。 + Kimi Linear 用负 Softplus,log-decay 下界为 −∞;K3 改成 scaled sigmoid: +

+
+
KIMI LINEARg = −exp(A) Softplus(z) ∈ (−∞, 0)
+
KIMI K3 / EQ. 5g = gmin Sigmoid(exp(A)z) ∈ (−5, 0)α = exp(g) ∈ (e⁻⁵, 1)
+
+
+
ONE STEPα > e⁻⁵ ≈ 6.7×10⁻³
+ × 16-token tile +
CUMULATIVE LOGΣg > −80
+ take reciprocal +
RESCALE1/Γ < e⁸⁰ ≈ 5.54×10³⁴
+
+

+ BF16 最大有限量级约 3.39×10³⁸,因此报告默认最坏 rescale 仍在动态范围内。 + 这让 diagonal 和 off-diagonal causal tiles 都可使用稠密 Tensor Core 矩阵乘, + 消除显式 position-pair diagonal path。动态范围内不等于无舍入误差,二者要分开。 +

-

03 GATED MLA

-

周期性 MLA:工作记忆之外,仍要把全局摊开来看

+

06 GATED MLA / GLOBAL LOOKBACK

+

工作记忆之外,K3 仍然周期性把全局历史摊开来看

- 纯递归状态的优势是成本低,弱点是历史被压进固定大小状态后,精确回看某个遥远 Token 会更难。 - K3 没有把完整注意力全部删除,而是采用 3 层 KDA + 1 层 Gated MLA 的混合模式, - 并保证主干最后一层也是 Gated MLA。 + 固定状态擅长持续压缩,弱点是精确回看遥远 Token。K3 因而保留周期性 MLA: + 每个历史 Token 的多头 K/V 先压成 latent ct,服务时缓存 latent,再恢复 attention 所需内容。 + 这条机制来自 DeepSeek‑V2,是 K3 与 DeepSeek 最明确的继承边。

- -

MLA 在压缩什么

-

- Multi-head Latent Attention 由 DeepSeek-V2 引入。 - 标准多头注意力会为每个历史 Token 缓存多头的 K 和 V;MLA 先把它们压到低维 latent cₜ, - 服务时缓存 cₜ,计算注意力时再通过投影恢复各头所需内容。它保留全局 token-to-token 交互, - 同时显著缩小 KV Cache。 -

- -
- cₜ = Wᶜxₜ → 缓存 cₜ → 按需上投影为各头的 K / V - - 这是结构直觉,不是 MLA 完整公式。旋转位置编码的解耦与吸收技巧已在 - “长上下文”专题单独推导。 - +
+
KDA / RECURRENT

固定状态

成本随 decode step 近似固定;历史被压缩,位置与近因通过递归门控保留。

+
MLA / GLOBAL

随 Token 增长的 latent cache

仍做全局 token-to-token 内容交互;缓存比 MHA 小,但不固定。

+
HYBRID

3:1 分工

KDA 负责低成本连续混合,MLA 定期校正和全局检索,最后一层保证全局 attention。

- -

为什么 K3 的 MLA 不再使用位置编码

+

NoPE 不是“没有位置”

- K3 在全部 MLA 层采用 NoPE:Query 和 Key 不显式加入位置编码。位置与近因信息主要由穿插的 KDA 提供, - MLA 专注于全局内容匹配。这样扩展上下文时,也不必重新调 RoPE base 或应用 YaRN。 - 这是混合架构的一个重要分工:KDA 提供位置敏感的持续混合,MLA 提供不受限的全局内容交互。 + K3 的 MLA Query/Key 不加显式位置编码;穿插的 KDA 提供位置敏感、近因敏感的序列混合。 + MLA 因此专注全局内容匹配,也避免扩展到 1M 时调整 RoPE base 或 YaRN。 + 这是一种跨模块分工,不是证明纯 MLA 可以忽略顺序。

+

FP32 attention output 是独立的数值合同

- K3 还给 MLA 加入与 KDA 对齐的输入相关全秩输出门,并在训练时将 attention output 保持为 FP32, - 以纠正 FlashAttention 中有偏的舍入误差;代价是更大的片上存储,报告为此重新安排了 kernel 中的 tile 缓冲重叠。 + 报告为纠正 FlashAttention 中有偏舍入误差,在训练中保留 FP32 attention output。 + 它会把输出 tile 的片上 footprint 加倍,所以 kernel 改为与 KV staging buffers 重叠, + 腾出更深 KV pipeline 的共享内存。算法精度和 tile 排布在这里直接耦合。

-

04 ATTENTION RESIDUALS

-

把注意力从“时间方向”旋转到“深度方向”

+

07 ATTENTION RESIDUALS

+

把 attention 从时间轴旋转到深度轴:当前层选择自己要读的早层

- Transformer 用注意力解决了 RNN 必须把全部历史压进一个时间状态的问题。 - K3 提问:普通 residual 是否又把所有早期层压进了一个深度状态? + 普通 residual 把所有历史层持续压进一个 hl;这很利于梯度传播,却也让早期表示统一累加。 + AttnRes 把 embedding 与早层输出当成一组 depth sources。

-

- 标准残差不断做 hₗ₊₁ = hₗ + Fₗ(hₗ)。它很利于梯度传播,但越早的特征会在统一累加中混在一起。 - Full AttnRes 为每一层设置可学习 pseudo-query,对 embedding 和所有先前层输出计算权重,再按权重组合。 - 这里的“Query”不是当前 Token 内容,而是“第 l 层通常希望从哪些深度取信息”的可学习参数。 -

- -
- αᵢ→ₗ = exp(qₗᵀ · RMSNorm(kᵢ)) / Σⱼ exp(qₗᵀ · RMSNorm(kⱼ))
- hₗ = Σᵢ αᵢ→ₗ · vᵢ - - 对应 K3 Report Eq. 8–9 的简化展示。RMSNorm 防止幅值大的层仅凭数值尺度垄断权重。 - +
+ REPORT EQ. 8–9 / FULL ATTNRES + αᵢ→ₗ = exp(qₗᵀ RMSNorm(kᵢ)) / Σⱼ exp(qₗᵀ RMSNorm(kⱼ)) + hₗ = Σᵢ αᵢ→ₗvᵢ +

qₗ 是 layer-specific learnable pseudo-query,不随当前 Token 内容改变;RMSNorm 防止大幅值来源垄断权重。

+
+
+
EMBEDb₀
+ {Array.from({ length: 8 }, (_, index) =>
12 LAYERSb{index + 1}
)} + → final layer attends over 9 block-level sources
- -

为什么又要做 Block AttnRes

- Full AttnRes 的层数平方计算在不足 100 层时并不离谱,真正麻烦是保留所有层输出带来的内存与流水线跨 stage 通信。 - K3 把层分成 block:block 内先求和,跨 block 才做完整深度注意力。报告称经验上约 8 个 block 可保留大部分收益; - K3 使用 12 层一个 block,加上 embedding 来源,总计形成 9 个深度来源组。 + Full 版的 O(L²d) 算术在 L<100 时尚可,实际压力是所有层输出必须存活,以及 pipeline 跨 stage 通信。 + Block 版在 12 层内部求 partial sum,跨 block 才做完整深度 attention: + K3 有 8 个 layer blocks,加 embedding 共 9 个来源。报告 §7 芯片 nano 模型的 block size=2 + 只是案例配置,不能写回 2.78T 主模型。

-
- 当前证据边界 +
+ 证据边界

- Kimi Team 已公开 Attention Residuals 独立预印本, - 在 48B-total / 3B-active 模型上用 1.4T Token 做了 scaling 与消融;K3 则证明它能进入 2.8T 系统。 - 但它仍是 2026 年的新方法,第三方复现和跨架构外部有效性需要持续积累。 + Attention Residuals 独立预印本在 + 48B-total / 3B-active、1.4T Token 等设置上做 scaling 与消融;K3 报告证明它进入了更大系统。 + 作为 2026 新方法,跨团队复现仍有限。

-
-

05 STABLE LATENTMOE

-

896 选 16:极稀疏带来容量,也放大不稳定

+
+ +

08 STABLE LATENTMOE

+

896 选 16 的真正难点,不只在稀疏 FLOPs,而在 payload、权重流和激活稳定

- 传统 MoE 让被选中的每个专家都处理完整 d 维 Token。选更多专家时,不只计算变多, - Token 跨设备发送的数据和专家权重读取也随 routing multiplicity 增长。 - LatentMoE 把通用的 full-width 路径留给 shared experts,把 routed experts 放进较窄 latent space: - K3 主干宽度 7168,路由 latent 维度 3584。 + conventional MoE 把完整 d 维 Token 发给每个选中专家;激活专家数变多时, + dispatch payload 与 expert-weight traffic 一起增长。LatentMoE 把公共与专业路径拆开:

- -
+ +
+

09 FIGURE 4–5 / ACTIVATION × ROUTING

+

SiTU 管数值幅值,QB 管专家负载;两者不能互相替代

+
+
+ SITU-GLU / EQ. 12 +

给两个乘积分支分别加 smooth cap

+ [β₁ tanh(Wg x/β₁) ⊙ Sigmoid(Wg x)] ⊙ [β₂ tanh(Wu x/β₂)] +

报告用 β₁=4、β₂=25,标量切片满足 |f(x)|≤100;近原点保持近似线性与 SwiGLU 局部形状。

+
+
+ QUANTILE BALANCING / EQ. 14 +

一次 forward 估计每个 expert 的进入门槛

+ b̃ⱼ(t+1) ← −quantile₁₋ₖ/ₙ(s:,j − α(t)) +

Top-(k+1) 的最后一项给 token cutoff α;新 bias 下一 step 生效,最终 bias 冻结用于 inference。

+
+
+

+ QB 的 bias 进入 Top-k 选择,但从最终 mixture weight p 中移除,因此调 dispatch 而不直接改 mixture 权重。 + 全局 batch 的数百万 margin 不宜 gather,实际用每 expert histogram:各 rank 只 all-reduce bin counts, + quantile 误差受 bin width 限制。 +

+
+
MODEL / QB谁被选中

router score、cutoff、quantile、bias。

+
RUNTIME / MOONEP怎样平衡执行

static shape、expert execution、zero-copy communication。

+
FLEET / ADMISSION谁先进入系统

按 request class 给资源预算,避免 1M burst 饿死短请求。

+
-

06 NATIVE VISION & MUON

-

视觉是第一类输入;优化器也按注意力头重新分组

-

MoonViT-V2 的角色

+

10 NATIVE VISION / FIGURE 6

+

关键纠正:K3 不是“冻结语言模型、接上视觉塔、再逐步解冻”

+
+
错误心智模型pretrained LLM + attached vision encoder

先做 post-hoc modality alignment,再逐步解冻。

+ ≠ +
K3 REPORT §2.4 / §3.3vision + language jointly optimized from start

MoonViT‑V2 从头训练;视觉/文本 Token 交错在同一个 next-token prediction objective。

+

- 401M 参数 MoonViT-V2 将图片与视频编码成视觉特征,轻量 projector 把它们映射到语言主干的 embedding space。 - “原生”最重要的含义不是“能看图”,而是视觉数据在预训练阶段就进入统一模型;后训练中的 Agent 还能把截图、 - 图表、裁剪/缩放后的新图片当作连续 observation,形成看—行动—再看的闭环。 -

-

- 报告描述了渐进式多模态训练:先固定语言模型训练视觉组件,再逐步解冻主干;多模态编码器优化则涉及动态分辨率、 - packing 与避免视觉计算造成流水线 bubble。完整视觉谱系会从 ViT、CLIP、Flamingo、BLIP-2、LLaVA 讲到 Kimi-VL。 + MoonViT‑V2 约 401M、27 层、patch 14、12 heads;使用 RMSNorm,linear/attention projections 无 bias。 + 图像和视频共享参数,以 spatial/temporal factorized attention 处理时空关系, + temporal pooling 压视频长度,2×2 pixel shuffle 减少送入主干的视觉 Token,输入最高 3584×3584。

+
+
IMAGE / VIDEOdynamic resolution
→ +
MOONVIT-V2space × time factorized
→ +
POOL / SHUFFLEtemporal + 2×2 pixels
→ +
PROJECTORshared embedding
→ +
K3 BACKBONEone NTP stream
+
+
+ Figure 6 能支持到哪里 +

+ 作者消融中,从头训练的 MoonViT‑V2 比 SigLIP 初始化的 MoonViT‑3D 有更低 gradient norm 与更少 spike, + 并在其视觉评测中匹配 baseline。这是特定大规模联合训练配置的结果,不是“视觉预训练普遍无用”。 +

+
+
-

Per-Head Muon 为什么出现

+
+

11 PRE-TRAINING DATA

+

数据不是一个总 Token 数,而是五个域、清洗、重写与采样实验共同组成的配方

+
+ {dataDomains.map(([name, title, detail]) => ( +
{name}

{title}

{detail}

+ ))} +

- Muon 在矩阵更新上做正交化,目标是比逐元素 Adam 更好地控制隐藏层更新。K3 采用 per-head 分组: - 对 Q/K/V 等多头投影,按 head 分开应用 Muon,而不是把整块矩阵当作一个整体。 - 直觉上,每个 head 是相对独立的子空间,按 head 归一更新可减少大矩阵不同部分相互干扰。 + 团队先用规则、质量分类器和去重筛数据,再用小模型 ablation 调不同 domain sampling。 + Knowledge / Mathematics 使用 K2 生成多风格、多视角改写:长材料采用 chunk-wise 自回归生成, + 最后做 fidelity verification。视觉坐标同时提供绝对值与 [0,1] 归一值, + programmatic data 覆盖 SVG、3D、Webpage、Game、CAD。

- 不要把优化器效果和架构效果混为一谈 -

- 报告把 Per-Head Muon 放进统一训练配方,但整体 2.5× scaling efficiency 并不是单项优化器消融结论。 - Muon 的通用可扩展性应另外阅读 Muon is Scalable for LLM Training。 -

+ 报告没有公开的,网站不会补写 +

完整语料来源、精确域配比、总训练 Token、版权构成与完整过滤阈值均不足以独立复现;参数量不能填补这些空白。

+ 进入数据专题:从去重、质量过滤到合成数据与污染审计 →
-
-

07 PRE-TRAINING

-

预训练:扩展的不只是参数,还有数据、长度和数值配方

+
+

12 FIGURE 7 / SCALING & RECIPE

+

Scaling law 在 K3 中是实验导航器,不是“参数越大越好”的口号

- K3 报告将模型能力的提升明确归因于架构、数据和训练 recipe 的共同作用,但没有公开足以复现的完整语料配比。 - 这需要区分两件事:我们可以准确解释训练阶段和公开机制,却不能根据少量描述虚构完整数据集。 + 团队在小规模模型上共同重调 batch size、learning rate、tokens per parameter 与 model shape, + 并在 held-out OOD data 上比较候选。cosine 与 WSD 各自独立搜索最优超参, + 作者设置中 cosine 最终 loss 更低。约 2.5× 的含义是:相对 K2, + K3 的架构、数据与 recipe 组合在 compute–loss scaling 上更有效。

- -

Scaling Law 在这里怎样用

+
+
可以说同等 compute 下经验 loss 更低,或同等 loss 所需 compute 更少
+
不可以说推理快 2.5×
+
不可以说KDA 单独贡献 2.5×
+
不可以说所有下游分数提升 2.5×
+
+

完整训练 recipe 还有哪些角色

- 团队先在较小规模训练一系列模型,拟合 loss 与参数、数据和计算之间的关系,再用它比较架构候选与估计 2.8T 模型的预算。 - K3 所称约 2.5× overall scaling efficiency,是相对 K2 的经验缩放效率:在相同计算下取得更低 loss,或达到同等 loss 所需计算更少。 - 它不是“推理速度提高 2.5×”,也不是所有下游任务统一提升 2.5×。 + Per-Head Muon + K2 weight clipping;QB 负责 MoE load balance;cosine schedule、1% linear warmup、 + weight decay=0.1。Per-Head 表示 Q/K/V 等多头矩阵按 head 分组应用 Muon, + 不能把整体 scaling 收益单独归到 optimizer。

+ 进入 Scaling 专题:读懂 loss、compute、数据与外推误差 → +
-

长上下文不是把配置里的 32K 改成 1M

+
+

13 FOUR-STAGE CONTEXT CURRICULUM

+

1M 不是配置文件里的一行数字,而是数据、算法和系统共同完成的四阶段课程

+
+
PRETRAIN / 018K

低成本建立基础能力。

→ +
PRETRAIN / 0264K

在预训练后段延长。

→ +
COOLDOWN / 03256K

集中投入昂贵长序列。

→ +
COOLDOWN / 041M

适应目标窗口。

+

- 上下文扩展需要长度 curriculum、长文档数据、并行策略和稳定训练。K3 的 NoPE MLA 避免 RoPE 外推参数; - KDA 的递归/块并行结构降低长序列成本;系统侧再用 KDA Context Parallelism 分摊状态与 chunk。 - 最后还要在 post-training 里真正让模型经历长轨迹,否则“窗口能装下”不等于“模型会有效使用”。 + 自然长文档/视频要做 exact/fuzzy dedup、frame perceptual hashing、heuristic/classifier filtering + 与 structural validation,并因稀缺而上采样。长度本身不训练跨远距离依赖,所以又把多模态文档/子任务 + 置换、拼接,要求答案依赖散落在整段 1M 中的证据。

- 窗口容量 vs. 使用能力 + 窗口容量 ≠ 使用能力

- 能把一百万 Token 放进输入,像图书馆允许你搬进一百万字;能否跨文档找到证据、维持任务状态并避免遗忘, - 才是在考你是否真的读懂。K3 同时用架构、长程 RL 和上下文管理训练这件事。 + 一百万 Token 像允许把整间资料室搬进考场;能否跨文档找到证据、维持任务状态、在恰当时机压缩, + 才是模型和 harness 是否真正会用它。

+ 进入长上下文专题:比较 KDA、MLA、CSA/HCA 与 context management →
-
-

08 POST-TRAINING

-

九位“专家老师”,最后蒸馏成一个可调思考强度的模型

+
+ +

14 SFT COLD START

+

SFT 的任务不是教完所有能力,而是给长程 RL 一个可读、可调用工具的起点

- K3 的 post-training 覆盖 SFT 与 RL,RL 按三类 domain 与三种 reasoning effort 组织: - general reasoning/knowledge、agentic、coding × low/high/max,形成九个专业策略。 - 然后用 Multi-Teacher On-Policy Distillation(MOPD)把它们整合进统一学生模型。 + K3 扩展前代 Kimi SFT pipeline,由 domain-specialized models 合成长 agent trajectory, + 经多阶段验证与 human-in-the-loop annotation。所有复杂轨迹用 XTML 统一序列化, + 使 reasoning、response、tool call 与动态工具边界保持一致。

+
+
PRIOR KIMI EXPERTStrajectory synthesis
→ +
VERIFYmulti-stage checks
→ +
HITLannotation
→ +
XTMLserialize channels
→ +
SFTcold-start policy + QAT
+
+

MXFP4 expert weights / MXFP8 expert activations 的 QAT 从 SFT 开始,而不是在全部 RL 完成后临时量化。

+
+
+

15 FIGURE 8 / NINE RL EXPERTS

+

三类领域 × 三种思考强度:九位老师,最后进入一个学生

-
DOMAIN × EFFORT
- LOWHIGHMAX - REASONINGRₗRₕRₘ - AGENTICAₗAₕAₘ - CODINGCₗCₕCₘ +
DOMAIN × EFFORT
LOWHIGHMAX + GENERAL TASKSreasoning · vision · searchknowledge · faithfulnessmax-budget general + GENERAL AGENTSassistantdeep researchlong-horizon agent + CODING AGENTScoding experienceSWE · webkernel · hardest coding
- -

为什么要训练不同 reasoning effort

- “更久思考”会提高部分难题表现,也会增加延迟、成本和过度思考。K3 通过预算控制参数训练 max/high/low 专家: - 先在较大预算下追求能力,再逐步退火得到更短策略。不同 domain 的预算调整由人工参与配置, - 因为一道数学题、一次网页研究和一个代码仓库任务的合理轨迹长度并不相同。 + Figure 8 中,随着 RL FLOPs 增长,多个公开/内部评测分数与平均 assistant steps 同时上升。 + 这支持作者在其训练过程里的 scaling 观察,但不能直接推出“任何任务多走几步都会更好”。

- -

On-policy distillation 为什么比离线模仿更适合长轨迹

-

- 普通蒸馏常让学生模仿教师已经生成的固定答案;学生一旦在真实生成中走到不同前缀,教师数据就失去覆盖。 - On-policy distillation 让学生自己生成当前前缀,再在这个前缀上比较教师和学生对下一个 Token 的概率, - 形成稠密 reward。这样训练分布更贴近学生真正会访问的状态,也能自然结合 partial rollout。 -

- 进入推理专题:并排理解 partial rollout、reasoning effort 与 MOPD → - -

部署约束直接进入后训练

-

- K3 从 SFT 开始对 MoE expert weights 使用 MXFP4 QAT,expert activations 使用 MXFP8; - RL rollout 和训练采用相同量化方案,减少训练—推理失配。预训练中的 MTP 层随后被微调为 EAGLE-3 风格 draft model, - 用低/中/高层 AttnRes 特征预测候选 Token,并直接优化与无损推测采样接受率相关的 LK loss。 -

-
- -
-

09 AGENTIC RL

-

Agent 能力不是只靠“更聪明”,而是靠环境提供可学习的反馈

-

- K3 报告最值得细读的部分之一,是它把 Agent 后训练写成环境工程:工具、system prompt、context management、 - skills、memory、subagents 和 harness 都成为可组合变量。训练时动态实例化 Kimi Code、Claude Code、Codex、 - OpenClaw、Hermes 等风格,避免模型过拟合一套固定工具 schema。 -

- -

六类环境回答六种失败模式

-
-
01

可验证搜索与专业工作

多步检索、投行、数据分析、法律交付物;奖励落在证据和最终成果。

-
02

视觉推理

模型在隔离 Python 环境里裁剪、放大、计算并把新图片作为 observation。

-
03

GPU Kernel 优化

先过数值正确性,再比较专家实现与硬件 roofline,并检测缓存/降精度等作弊。

-
04

长期个人助理

用 Gmail、Notion、Slack 等 mock app 构造跨多日事件;单次可达数千工具调用。

-
05

Autonomous Execution

只给初始状态、目标、约束、工具和 verifier,不提供参考轨迹;奖励最终环境状态。

-
06

Web 开发

容器内构建网页、游戏、3D、可视化;功能测试、结构/像素相似与模型检查共同评分。

-
- -

为什么 verifier 比“模型说完成了”更重要

-

- 长任务最常见的失败之一,是 Agent 输出一段令人信服的总结,却没有真正改变目标状态。 - K3 的 AET 把 reward 绑定到独立 verifier 读取的环境结果;public verifier 提供诊断, - hidden verifier 检查保留场景,并限制提交预算以减少 reward hacking。 -

-
- 这条主线会贯穿 Agent 专题 +

Reasoning effort 是每题预算,不是三个固定长度

+
+ PER-PROBLEM BUDGET + if T(y) > τ · b₀(x), override task reward with −1

- 可靠 Agent 的学习单位不是“一条漂亮回答”,而是状态明确、动作可执行、反馈可验证的一整段轨迹。 - Harness 多样化、持久环境和独立 verifier,分别处理接口过拟合、短视行为和自我宣告成功。 - 进入 Agent 专题,完整拆解 white-box harness、AET 与 AgentENV → + b₀(x) 由 cold-start model 估计;general task 主要计 thinking tokens, + agentic task 计 reasoning trace、tool-call arguments 等累计输出。τ 按 domain 由人工指导退火。

-
-

10 INFRASTRUCTURE

-

2.8T 参数与 1M 轨迹,迫使系统重新设计状态放在哪里

+
+

16 PARTIAL ROLLOUT × MOPD

+

一个机制解决长尾等待,另一个解决九位老师怎样教同一个学生

+

Partial rollout:不等最慢轨迹

- K3 基础设施可以按三类状态理解:模型状态(参数、优化器)、序列状态(KDA state、KV Cache)、 - 环境状态(代码仓库、应用、microVM)。三类状态的寿命和移动成本完全不同。 + 每轮 N 个 prompts、每题 K 条 completion,保持 N×K 条 active trajectories。 + 当 λN K 条完成就暂停 generation,先进行 policy optimization;未完成轨迹进队列, + 下一轮优先恢复。好处是减少 straggler,代价是同一长轨迹跨多个 iteration, + 数据变 stale/off-policy;报告用 per-token regularization 把更新限制在局部邻域。

- -
-
ONLINE SERVING

请求级状态

KDA-aware prefix cache、专用 kernel、cache/budget-aware fleet scheduling,把共享前缀和不同思考预算纳入调度。

-
1M AGENTIC RL

轨迹级状态

partial rollout、外置 KV retention、adaptive throttling 与可恢复 microVM,避免每次更新都丢掉漫长轨迹。

-
3T PRE-TRAIN

训练级状态

MoonEP 用静态计算形状、平衡专家执行与 zero-copy communication,配合内存优化和多模态 encoder 调度。

-
KDA CO-DESIGN

算子级状态

针对不同序列 regime 的 fused kernel、KDA Context Parallelism 与状态感知前缀缓存。

+

MOPD:学生走自己的 prefix,老师在那个位置给 dense reward

+
+ REPORT EQ. 15 / TOKEN REWARD + rᵈₒₚd(yₜ|e,x,y<t) = clip(sg log[πteacherᵈ,ᵉ(yₜ|x,y<t) / πθ(yₜ|e,x,y<t)], −Rmax, Rmax) +

domain d 与 effort e 选择对应 teacher;stop-gradient 防 teacher ratio 被学生优化反向改变。

+
+
+
STUDENTgenerate current prefix
→ +
SELECTdomain d × effort e
→ +
TEACHERscore next-token distribution
→ +
DENSE REWARDclipped log-ratio
→ +
ONE MODELconsolidated policy
- -

MoonEP 在解决什么

- MoE 的理论 FLOPs 很漂亮,真实系统却可能被“这个专家突然收到太多 Token”拖垮。 - 跨卡 all-to-all 通信、专家权重读取和不规则 shape 都会制造等待。K3 报告称 MoonEP 追求 perfectly balanced expert execution, - 使用静态计算形状和零拷贝通信把路由后的 Token 送到对应专家。这里的“平衡”是系统执行层结果,不等于路由概率天然均匀; - 它和模型侧 Quantile Balancing 是互补层次。 + 九个 expert models 是训练老师,不是推理时投票。on-policy 的意义是教师覆盖学生真正访问的 prefix, + 避免只模仿固定离线答案;它仍受 teacher 质量、domain mapping 与 compute 约束。

+ 进入推理专题:比较 GRPO、R1、effort control 与蒸馏 → +
-

为什么长程 RL 需要保留外部状态

+
+

17 DEPLOYMENT-AWARE POST-TRAINING

+

部署精度和 speculative acceptance 在训练中就成为目标

+
+
ROUTED EXPERT WEIGHTSMXFP4

占大多数参数内存。

+
EXPERT ACTIVATIONSMXFP8

rollout 与 training 同方案。

+
NON-EXPERThigher precision

attention、latent projections、shared experts、router。

+
LIFECYCLESFT + RL

全 post-training QAT,减少 train–inference mismatch。

+

- 传统 RL rollout 常在模型更新后重新生成。若一条轨迹已经调用工具几百次、积累几十万 Token, - 重新生成会浪费巨大。K3 将 KV Cache 放到外部、允许 partial rollout 暂停并续接; - 同时把工具环境放进可恢复 microVM,使代码、文件和应用状态与语言上下文一起跨训练 step 存续。 + 预训练 MTP 层结构与 EAGLE‑3 的单 decoder draft 相近,因此冻结 target model, + 只调 draft layer 和 feature-fusion projection。输入融合第 1、第 4、最后 AttnRes blocks 的低/中/高层特征, + 训练展开 7 steps,逼近真实 recurrent drafting。

+
+ REPORT EQ. 16 / LK LOSS + Lᴸᴷ = −log Σₓ∈V min(p(x), q(x)) +

p/q 是 target/draft next-token distribution;直接优化无损 speculative sampling 的接受率,而不是只用 KL surrogate。

+
+
+ +
+

18 UNIFIED WHITE-BOX RL ENVIRONMENT

+

Agent harness 被拆成可组合模块,避免模型只会一种工具口音

+

+ 固定 harness 会让模型过拟合 tool schema、system prompt、context management 与 interaction protocol。 + K3 把 harness 表示为配置化模块集合,训练时按 task group 动态组合, + 可实例化 Kimi Code、Claude Code、Codex、OpenClaw、Hermes 等风格或全新组合。 +

+
+ {["TOOLS", "SYSTEM PROMPT", "CONTEXT", "SKILLS", "MEMORY", "SUBAGENTS", "PROTOCOL", "VERIFIER"].map((item, index) => ( +
{String(index + 1).padStart(2, "0")}{item}
+ ))} +
+
+ 评测时也要记住这件事 +

代码/Agent 分数是 model × harness × environment × verifier 的系统结果。模型名不是完整实验条件。

+
+
+ +
+

19 FIGURE 9–10 / TASKS & ENVIRONMENTS

+

可靠 Agent 的学习单位,是状态、动作与独立验证组成的一整段轨迹

+
+ {environments.map(([number, title, detail]) => ( +
{number}

{title}

{detail}

+ ))} +
+

Knowledge-graph-guided task synthesis

+
+
CONCEPT GRAPH细粒度关键词与层级
→ +
MATERIAL论文 · 博客 · 代码仓库
→ +
TASK TYPEknowledge · coding · vision
→ +
VERIFY规则 / 测试 / 独立 judge
+
+

Autonomous Execution Tasks

+

+ AET 只给初始环境、目标、约束、工具和 verifier,不提供 reference trajectory。 + public verifier 给诊断,hidden verifier 检查保留场景,并限制提交预算降低 reward hacking。 + 奖励落在独立读取的环境结果,而不是 Agent 自己说“完成了”。 +

+ 进入 Agent 专题:完整拆解 white-box harness、AET 与 verifier → +
+ +
+

20 PRE-TRAINING INFRASTRUCTURE

+

从算子到 pipeline:先问每种 state 放在哪里、什么时候移动

+
+ {stateStack.map(([layer, state, mechanism]) => ( +
{layer}

{state}

{mechanism}

+ ))} +
+

FlashKDA 与 KDA Context Parallelism

+

+ bounded decay 让全部 causal tiles 使用 dense Tensor Core path; + KCP 则沿 sequence dimension 分片 1M Token。不同 sequence regime 需要不同 fused kernel, + 算法公式、secondary tile 与设备内存共同决定实现。 +

+

多模态 pipeline 不是均匀 decoder stack

+

+ vision encoder 的计算形状和 decoder 不同,会制造 pipeline bubble。 + §5.2 / Figure 11 的重点是重新安排 encoder、pipeline 与 offload,让参数/activation 的放置不把 3T 训练拖成等待链。 + 报告没有公开完整 GPU 数和总训练成本,页面不从示意图反推。 +

+
+ +
+

21 MOONEP / EXPERT PARALLEL

+

模型路由“尽量均衡”以后,系统还要把不规则 Token 变成可执行的静态形状

+

+ MoE 的理论 FLOPs 不包含 all-to-all、专家权重读取、padding 与慢 expert 长尾。 + MoonEP 追求 balanced expert execution,以 static computation shape 与 zero-copy communication + 处理 dispatch/combine,并让通信与 shared-expert 等计算重叠。 +

+
+
ROUTERtoken → expert IDs
→ +
DISPATCHzero-copy communication
→ +
STATIC SHAPEbalanced execution
→ +
COMBINEoverlap communication
+
+
+ 三种“平衡”必须分开 +

QB 让 router 负载接近目标;MoonEP 让设备执行可预测;fleet admission 让不同请求类不互相饿死。

+
+
+ +
+

22 LONG-HORIZON RL STATE

+

一条轨迹跨多个训练 step 时,语言上下文和外部世界都必须能够暂停与恢复

+

+ 重新生成已经调用数百次工具、积累几十万 Token 的轨迹极其浪费。K3 将 KV retention 外置, + partial rollout 可暂停/续接;AgentENV 用 Firecracker microVM 保存代码、文件、应用与系统状态。 +

+
+
PAUSE / RESUME等待 inference 时释放 CPU / memory

报告称等待可占 sandbox 生命周期 98%。

+
FORK从完全相同状态分叉

可让 reward judge 检查而不污染原环境。

+
SNAPSHOT定期恢复点

错误后不必从任务最初重来。

+
INCREMENTAL只保存 dirty pages

报告最低 checkpoint / resume 133ms / 49ms。

+
+
+
SANDBOXES51,219,741
+
IMAGES1,505,678
+
MEMORY OVERCOMMITup to 6.5×
+

均为 K3 报告的训练/评测基础设施数字,本站未独立复跑。

+
+
+ +
+

23 FIGURE 12 / KDA-AWARE PREFIX CACHE

+

MLA KV 随 Token 增长,KDA state 固定却很大;一个 prefix 只有两者同时恢复才可复用

+

+ 分开 manager 会重复 allocation、eviction、transfer。K3 把 KDA states 与 MLA KV 放进同字节大小的统一 page pool, + 共享 allocation、reference counting、eviction;KDA 各 head byte stream 连续,跨 prefill/decode 不同 TP + 时在 transfer path re-layout。 +

+
+
PHYSICAL BLOCK / 6144 TOKENS12 × 512-token hash blocks
+
+ {Array.from({ length: 12 }, (_, index) => ( +
{index + 1}{(index + 1) * 512}{index === 4 ? ● KDA : ○}
+ ))} +
+

Figure 12 示例:请求匹配到 2800,最长 joint hit 在 B=2560;复用五个 MLA hash blocks 与该处 KDA checkpoint。

+
+

为什么 hash granularity 与 physical allocation 要解耦

+

+ KDA checkpoint 大,只能稀疏保存;若把 hash 也绑到 1024–6144 的物理块,短请求几乎无法命中, + chunked prefill 也要等完整块。K3 允许 512-token hash endpoint 落在粗 physical block 内, + KDA checkpoint 只存可查询 endpoint 的稀疏子集。 +

+

并发一致性还需要三条约束

+
    +
  1. 所有 cache group 分配前先 pin 全部 hit blocks,避免一个 group 的 COW 驱逐另一个刚命中的块;
  2. +
  3. 当前 scheduling step 新分配/注册的块在 GPU copy 落地前不可匹配;
  4. +
  5. 一个 KDA group checkpoint 被驱逐时,siblings 原子失效:要么每组都有,要么全部不可命中。
  6. +
+
+ +
+

24 DEVICE KERNELS × FLEET SCHEDULING

+

服务端的目标从“平均快”变成:状态正确、单 Token 低延迟、长短请求互不拖垮

+
+
+ KDA DECODE

缓存 projected inputs,不缓存每个 draft state

+

speculative rejection 后 state 难回滚;重新在片上 replay accepted prefix,再写 verified/bonus states。

+
+
+ BLOCK ATTNRES

prefill 用 SP,decode 用 side stream + fusion

+

避免每个 TP rank 复制 block representations;inter-block overlap,intra-block merge/RMSNorm fusion。

+
+
+ LATENTMOE

融合 down-projection/router 与通信

+

latent weight 分片,output all-gather 进 GEMM epilogue;小 batch routed experts 用 token-centric kernel。

+
+
+ FLEET

cache affinity + budget admission

+

session 绑定 primary/secondary clusters;长请求只消耗自己的 class budget,不饿死短请求。

+
+
+
+ 为什么 prefix affinity 如此重要 +

+ 报告给出 typical coding input:400K prefix、只增加 4K。cache hit 可避免重做整个 prefill; + 而生产请求从 <2K 到 1M,单请求成本跨约三个数量级,按“平均请求”规划会失效。 +

+
+ 进入推理系统专题:KV、prefix cache、speculative 与调度 →
-

11 EVALUATION & LIMITS

-

K3 很强,但报告也明确说它总体仍落后最强闭源模型

-

- 官方报告的总体表述很克制:K3 在其评测套件中领先被比较的其他开放与部分闭源模型, - 但整体仍落后 Claude Fable 5 与 GPT-5.6 Sol。理解这句话,比挑一个 K3 第一名的榜单更重要。 +

25 FIGURE 1 & 13 / TABLE 2–5

+

先读协议,再读分数:K3 报告自己的总体结论比单榜截图更克制

+

+ 报告结论是:K3 在其套件中领先被比较的其他开放与部分闭源模型, + 但整体仍落后 Claude Fable 5 与 GPT‑5.6 Sol。任何单项第一都不能覆盖这句总体判断。

- -

评测数字至少要带四个脚注

-
    -
  1. 思考预算:K3 主结果使用 reasoning effort=max,其他模型也尽量用 max/xhigh;成本和延迟不是相同维度。
  2. -
  3. Harness:代码与 Agent 分数是“模型 + Codex/Kimi Code/Claude Code 等脚手架”的系统结果。
  4. -
  5. 工具增强:HLE、视觉数学等同时报告不用工具/用工具,不能把两列混为纯模型能力。
  6. -
  7. Fallback / Guard:某些闭源模型出现 fallback、拒答或 cyber guard,可能显著影响特定任务分数。
  8. -
- -

- 例如 BrowseComp 使用 300K Token 触发上下文压缩时 K3 报告 91.2;完整 1M 窗口、不做上下文管理时是 90.4。 - 这反而给出重要工程信号:更大的窗口不自动消灭 context management,适时压缩可能更有效。 -

- +
+
REASONING & KNOWLEDGEGPQA · HLE · AA-LCR · CritPt
+
CODINGDeepSWE · Terminal-Bench · SciCode · FrontierSWE
+
AGENTICBrowseComp · DeepSearchQA · OSWorld · Office · SaaS
+
VISIONWorldVQA · OmniDoc · Video-MME · MMMU-Pro · Math-Vision
+
+
+
01

Reasoning effort

K3 主结果多用 max;比较模型尽量用 max/xhigh。成本与延迟不相等。

+
02

Harness

代码/Agent 结果携带 Codex、Kimi Code、Claude Code 等脚手架。

+
03

Tool augmentation

HLE、视觉数学等有/无工具必须分列,不可把工具增强写成纯模型能力。

+
04

Fallback / guard

闭源 fallback、拒答或 cyber guard 会改变特定任务结果。

+
05

Date / service

模型、价格和服务行为会变,第三方比较必须附评测日期。

+
06

Cost / output

Figure 13 同时画 score 与 token/cost,能力不该脱离预算阅读。

+
+
+ BROWSECOMP / CONTEXT MANAGEMENT + 300K + compression: 91.2 vs full 1M without management: 90.4 +

这是报告设置里的工程信号:更大窗口不自动消灭 context management,适时压缩可能更有效。

+
- 我们当前还不能知道的事 -

- 报告没有给出足以独立复现的完整数据配比、总训练 token 数、全部集群规模与训练成本; - 新架构也缺少广泛第三方复现。网站会持续加入开放权重评测和独立复现,但不会用参数量或单榜第一替代综合判断。 -

+ 局限必须与亮点同页 +

报告与外部材料还提示 research reasoning、cyber 等能力边界;新架构缺少广泛第三方复现,完整训练数据、集群与成本未披露。

-
-

↳ PRIMARY SOURCES

-

读完本页以后,下一步回到这些一手材料

-
- - Kimi K3: Open Frontier Intelligence

本页锚点;架构、预训练、后训练、系统和评测的完整一手报告。

-
- - Attention Residuals

跨深度选择的独立预印本、Block AttnRes 系统设计与 scaling 消融。

-
- - Kimi Linear

KDA 的表达能力、chunkwise 算法与 hybrid linear attention 祖先。

-
- - DeepSeek-V2

MLA 与 DeepSeekMoE 的系统性引入,K3 周期性全局注意力的关键来源。

-
- - DeepSeekMoE

shared experts 与细粒度专家特化,Stable LatentMoE 的组织祖先。

-
- - LatentMoE

把 full model width 与 routed expert width 分离,扩张专家数量与激活数。

-
- - Kimi k1.5

大规模强化学习、长 CoT 与推理时扩展的 Kimi 前代主线。

-
- - Kimi K2

开放 Agentic Intelligence、MoE 主干和工具使用的直接前代。

-
- - Kimi K2.5

视觉 Agent、并行 Agent Swarm 与 K3 多模态/Agent 后训练的前代。

-
+
+

26 §7 CASE STUDIES

+

案例展示“Agent 能走多远”,但每个数字都必须带着硬件、时间和任务边界

+
+
KERNEL / 24H PER TASK

AttnRes 283.6 → 114.4 ms

报告还给出 DSA/KDA reductions 55.1%/73.6%,MLA 超过一半 peak;均为作者个案。

+
MINITRITON / L20

从 compiler 到 distributed stack

模型构建 tensor library、autograd、compiler 与 distributed;roofline 结果只限报告硬件/任务。

+
CHIP / 48H

nano-kpu 与 RTL simulation

nano model 同型但 AttnRes block size=2;4mm²、100MHz、>8700 tok/s 等不是主模型推理规格。

+
KNOWLEDGE / RESEARCH / VIDEO

长程交付物与视觉闭环

展示工具、证据、迭代与产物;属于作者选择的 case study,不是平均成功率。

+
+ 案例的正确用途 +

用来研究 trajectory、工具与 verifier 怎样协作;不能用一个成功案例推断所有真实任务的可靠性。

+
+
+ +
+

27 APPENDIX F / XTML

+

消息格式不是装饰:它决定选项放在哪里、哪些 prefix 可以复用、工具何时动态出现

+
+
GLOBAL OPTIONShistory 之前

tool declarations · reasoning effort

+ [open] +
HISTORYmessages + channels

think · response · tools

+ [sep] +
ONE-SHOT OPTIONShistory 之后

避免破坏已有 KV prefix

+ [close] +
NEW INPUTdynamic tools

会话中可加入 input options

+ [end_of_msg] +
+

+ XTML 用 `[open]`、`[sep]`、`[close]`、`[end_of_msg]` 标消息边界; + think / response / tools 分 channel;thinking / instruct 由 prefix 选择。 + global options 放历史前,one-shot options 放历史后,是为了既传控制又保留 KV cache。 +

+
+ +
+

28 EIGHT INTERACTIVE WORKBENCHES

+

现在动手:从标量递推一路算到混合 prefix cache

+

+ 八张实验台各自声明“精确计算”和“教学模型”的边界。 + 重点不是玩滑条,而是看哪个量发生变化、哪个结论仍然不能推出。 +

+ +
+ +
+

29 FIGURE & TABLE AUDIT

+

Figure 1–16、Table 1–5:每张图究竟支持什么,不能支持什么

+
+ {k3FigureAtlas.map(([id, report, title, contract]) => ( +
+
{id}{report}
+

{title}

+

{contract}

+
+ ))} +
+
+
RREPORT

作者直接陈述或报告数字。

+
PPRIMARY

原论文、官方代码或 benchmark。

+
DDERIVATION

由公开公式确定性计算。

+
TTOY

帮助理解方向,不是实测。

+
+
+ +
+

↳ ONE HUNDRED PRIMARY NODES

+

不要一次读完:沿着正在困惑的那条机制往回走

+

+ 这 100 个节点经过标题、年份、作用与 URL 核对;优先采用论文原页、官方仓库与 benchmark 官方入口。 + 它们不是“引用越多越好”,而是把 K3 放回 attention、MoE、数值、RL、系统与评测的历史脉络。 +

+ {paperGroups.map(([group, label]) => { + const items = k3PaperChain.filter((paper) => paper[5] === group); + if (!items.length) return null; + return ( +
+
{group}

{label}

{String(items.length).padStart(2, "0")} NODES
+
+ {items.map(([id, year, title, href, reason]) => ( + + {title}

{reason}

+
+ ))} +
+
+ ); + })}
diff --git a/src/pages/progress/index.astro b/src/pages/progress/index.astro index dc8b55c..5635c7a 100644 --- a/src/pages/progress/index.astro +++ b/src/pages/progress/index.astro @@ -9,7 +9,7 @@ const researching = chapters.filter((chapter) => ["researching", "drafting"].inc const workstreams = [ { label: "研究框架与规范", value: 83, next: "给 Scaling 与推理专题补逐篇图表/实验精读层级" }, { label: "网站设计系统", value: 89, next: "打印样式与更多通用可视化组件" }, - { label: "Kimi K3 深读", value: 66, next: "扩写 pre-training / infra 逐图笔记" }, + { label: "Kimi K3 深读", value: 88, next: "第三轮加入官方权重 traces、独立复现与逐图数值重绘" }, { label: "语言模型前史", value: 78, next: "逐图精读 Kneser–Ney、LSTM 与 Bahdanau,并加入真实小语料复现" }, { label: "Transformer 基础", value: 79, next: "逐图精读多头电路、Pre/Post-LN 与真实 kernel / KV 配置" }, { label: "表示、位置与残差高速公路", value: 81, next: "加入真实 hidden-state / norm traces、长上下文位置外推复现与更多深层稳定性消融" }, @@ -50,7 +50,7 @@ const workstreams = [
OVERALL
专题平均 {average}%
READABLE
{published} 个首版可读专题
ACTIVE
{researching} 个研究/写作中
-
UPDATED
2026-07-29 11:10 CST
+
UPDATED
2026-07-29 11:54 CST
MODE
持续迭代,不锁死版本
@@ -97,12 +97,13 @@ const workstreams = [
✓

K3 报告已结构化拆解

47 页报告目录、151 条参考来源和架构/后训练/系统主线已经提取。

✓

17 专题知识图

从语言模型基础到评测安全,包含先修依赖和三条贯穿案例。

✓

编辑式网站系统

响应式导航、章节模板、侧栏、进度、论文链和证据提示组件。

-
✓

五十九个原创交互视图

K3、语言模型前史、Transformer、表示深度、DeepSeek 四联实验、长上下文、MoE、推理、Agent、多模态,以及训练系统、推理服务、Scaling、数据工程、数值、Alignment 与评测安全专题。

+
✓

六十七个原创交互视图

K3 三轴图与八联实验、语言模型前史、Transformer、表示深度、DeepSeek 四联实验、长上下文、MoE、推理、Agent、多模态,以及训练系统、推理服务、Scaling、数据工程、数值、Alignment 与评测安全专题。

✓

十七篇首版长文

K3、语言模型前史、Transformer、表示/位置/残差、DeepSeek、Scaling、数据工程、长上下文、MoE、后训练、推理、Agent、原生多模态、训练系统、推理服务、数值优化与评测安全专题。

✓

语言模型前史深度专题

八张独立问题账、33 个正式节点、20 段长文与概率—向量—记忆—对齐四联实验。

✓

Transformer 深度专题

十张独立问题账、40 个正式节点、21 段正文与 QKV—Mask—多头位置—Block 成本四联实验。

✓

表示、位置与残差高速公路深度专题

二十张问题账、66 个一手节点、DeepSeek/Kimi 双谱系,以及 Token—位置—Norm—Residual/FFN 四联实验。

✓

DeepSeek 技术谱系二轮深读

二十四张问题账、十次技术转向、60 个一手/官方节点,以及稀疏容量—MLA 缓存—V3 协同—RL 偏差四联实验。

+
✓

Kimi K3 技术报告二轮深读

三十二张问题账、Figure 1–16 / Table 1–5 审计、100 节点阅读链,以及 Delta—Decay—AttnRes—LatentMoE—SiTU—QB—MOPD—Cache 八联实验。

✓

Scaling Laws 深度专题

九张账、29 个一手节点、DeepSeek/Kimi 双谱系与曲面—部署—复用—涌现四联实验。

✓

数据工程深度专题

十二张账、31 个一手节点、DeepSeek/Kimi 双谱系与流水线—去重—混合—改写四联实验。

✓

长上下文深度专题

五张成本账、26 篇一手论文、10+ 机制图与 8 策略交互实验室。

@@ -130,6 +131,7 @@ const workstreams = [
优先级专题本轮交付完成闸门
+
P0K3 三轮

开放权重 traces → FlashKDA / AttnRes / MoE 真实行为 → Figure 1–16 数值重绘与独立复现

运行证据 + 逐图复现
P0DeepSeek 三轮

真实 expert load / MLA kernel → FP8 / pipeline traces → R1-like RL 小模型复现

运行证据 + 独立复现
P0Transformer 二轮

多头电路逐图 → Pre/Post-LN 真实 traces → Flash/KV 配置与 kernel 对照

逐图笔记 + 实测边界
P0表示、位置与残差二轮

真实 hidden-state / norm traces → 长上下文位置外推 → mHC / AttnRes 深层稳定性消融

可复现实验 + 逐图笔记
@@ -204,6 +206,9 @@ const workstreams = [
DeepSeek 与 Kimi 服务谱系按状态对象重建

MLA→V4 异构状态与 Mooncake→KDA→K3 混合缓存分开说明;作者报告、精确公式和教学估算使用不同标签。

表示与深度按二十张账组织

计算单位、词表接口、上下文化、位置、外推、Norm 对象、拓扑、残差路由与非线性极值不再混成一个 hidden-state 名词。

K3 Block AttnRes 来源数按原报告重算

93 层按 12 层形成 8 个 layer blocks(7 个完整块加 1 个尾块);再加 embedding,共 9 个 block-level 来源,废弃早期错误的“2 层一块”读法。

+
K3 二轮按三十二张账重建

从架构组件摘要升级为覆盖预训练、后训练、环境、系统、评测、案例与附录的完整报告因果链。

+
K3 原生视觉事实纠错

MoonViT-V2 从头训练;视觉与文本从训练开始在同一个 NTP objective 中联合优化,不再沿用冻结/解冻式 post-hoc 叙述。

+
K3 图表与实验永久分级

Figure 1–16 / Table 1–5 建立视觉契约;报告事实、原论文、确定性推导与教学模型使用 R/P/D/T 四种身份。

diff --git a/src/pages/roadmap/index.astro b/src/pages/roadmap/index.astro index bfa1cd5..c970884 100644 --- a/src/pages/roadmap/index.astro +++ b/src/pages/roadmap/index.astro @@ -101,13 +101,13 @@ const stages = [
ROUTE B · K3 REVERSE -

从 K3 反向拆组件

-

K3 → 07 → 06 → 03 → 11 → 08/14

+

从 47 页 K3 报告反向拆组件

+

K3 架构 → 07/06/03 → 05/04 → 11/12 → 08/14/15

    -
  1. 解释三维信息流
  2. -
  3. 比较 KDA 与 MLA
  4. -
  5. 解释 2.8T / 104B
  6. -
  7. 读懂 1M Agentic RL 系统
  8. +
  9. 沿 32 张问题账解释三维信息流
  10. +
  11. 用 8 个实验比较 KDA、MLA、AttnRes 与 LatentMoE
  12. +
  13. 分清 2.78T / 104.2B、2.5× 与 1M 的证据口径
  14. +
  15. 读懂九专家 MOPD、AgentENV、混合缓存与评测协议