From 3db826dd4a10f664cd16d629d44f885674155168 Mon Sep 17 00:00:00 2001 From: wuyang <5700876+banisherwy@user.noreply.gitee.com> Date: Tue, 28 Jul 2026 23:32:14 +0800 Subject: [PATCH] feat: publish MoE deep dive --- PROGRESS.md | 22 +- README.md | 4 +- ROADMAP.md | 3 + package.json | 4 +- research/MOE_RESEARCH.md | 159 +++ scripts/check-moe-browser.mjs | 187 ++++ scripts/check-site.mjs | 67 ++ src/components/MoERoutingLab.astro | 1298 +++++++++++++++++++++ src/components/SiteFooter.astro | 1 + src/components/SiteHeader.astro | 1 + src/data/chapters.ts | 8 +- src/data/papers.ts | 41 + src/pages/deepseek/index.astro | 5 + src/pages/index.astro | 82 +- src/pages/k3/index.astro | 1 + src/pages/moe/index.astro | 1680 ++++++++++++++++++++++++++++ src/pages/progress/index.astro | 18 +- 17 files changed, 3533 insertions(+), 48 deletions(-) create mode 100644 research/MOE_RESEARCH.md create mode 100644 scripts/check-moe-browser.mjs create mode 100644 scripts/check-site.mjs create mode 100644 src/components/MoERoutingLab.astro create mode 100644 src/pages/moe/index.astro diff --git a/PROGRESS.md b/PROGRESS.md index e26d7ed..0b57a96 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -6,11 +6,12 @@ | 工作流 | 状态 | 完成度 | 下一检查点 | |---|---:|---:|---| -| 研究框架与规范 | 进行中 | 72% | 给 125 篇索引补充逐篇精读层级 | +| 研究框架与规范 | 进行中 | 76% | 给 130 篇索引补充逐篇精读层级 | | 网站设计系统 | 进行中 | 89% | 打印样式与更多通用可视化组件 | | Kimi K3 深读 | 进行中 | 55% | 扩写 scaling / infra 逐图笔记 | | Transformer 基础 | 进行中 | 52% | 矩阵形状动画与手算练习 | | DeepSeek 专题 | 进行中 | 61% | GRPO 完整公式与训练轨迹推导 | +| 稀疏计算与 MoE | 完成首版 | 74% | 真实负载 traces 与专家特化案例 | | 长上下文专题 | 完成首版 | 72% | 真实模型配置、内核细节与失败案例 | | 引用与事实检查 | 进行中 | 54% | 自动化外链复查与来源等级扩展 | | 开源仓库 | 已完成首版 | 100% | 持续提交研究与网站迭代 | @@ -25,21 +26,24 @@ - [x] 提炼参考网站的编辑设计语言。 - [x] 确认 `git.k1412.top` 为 Gitea/Forgejo 兼容服务且本机 HTTPS 凭据可用于既有仓库。 - [x] 使用 Grok CLI 检索并形成约 95 篇一手论文的补充路线,主代理已回查关键来源。 -- [x] 完成首批 125 篇关键论文索引,覆盖 12 个专题与 Kimi/DeepSeek 聚光主线。 +- [x] 完成首批 130 篇关键论文索引,覆盖 12 个专题与 Kimi/DeepSeek 聚光主线。 - [x] 完成可检索、可按专题筛选的论文库页面。 -- [x] 完成 K3、Transformer 基础、DeepSeek 谱系与长上下文四篇首版长文。 -- [x] 完成 K3 三轴架构、Self-Attention 实验、DeepSeek 谱系与长上下文成本实验室四张原创交互图。 +- [x] 完成 K3、Transformer 基础、DeepSeek 谱系、长上下文与 MoE 五篇首版长文。 +- [x] 完成 K3 三轴架构、Self-Attention 实验、DeepSeek 谱系、长上下文成本与 MoE 路由实验室五张原创交互图。 - [x] 完成长上下文首版:五张成本账、26 篇一手论文、10+ 机制图与 8 策略交互实验室。 - [x] 核验 FlashAttention、DeepSeek-V2/V3.2/V4、Kimi Linear/K3 等六份论文原文,并建立长上下文研究账本。 -- [x] Astro 类型检查、生产构建、8 个内部路由和桌面/移动端视觉检查通过。 +- [x] 核验 Switch、ST-MoE、DeepSeekMoE、Loss-Free、V3、LatentMoE 与 K3 原文,并建立 MoE 研究账本。 +- [x] 完成 MoE 首版:六张账、19 篇一手论文、完整 DeepSeek/K3 主线与路由—容量—通信实验室。 +- [x] Astro 类型检查、生产构建、9 个内部路由和桌面/移动端视觉检查通过。 - [x] 创建 `wuyang/llm-atlas` 公开仓库,匿名 API 确认 `private: false`。 -- [x] 本地生产镜像通过健康检查与全部 8 个页面路由烟雾测试。 +- [x] 本地生产镜像通过健康检查与全部 9 个页面路由烟雾测试。 - [x] 通过 Unraid Compose Manager、Nginx Proxy Manager 与 HTTPS 发布首版。 ## 正在进行 -- [ ] MoE 路由模拟器与通信成本账本。 +- [ ] 推理模型与测试时扩展:CoT、verifier、GRPO、R1、Kimi k1.5 与 K3 MOPD。 - [ ] 长上下文专题的真实模型配置对比、内核细节与失败案例二轮深化。 +- [ ] MoE 专题的真实集群 traces、专家特化案例与二轮外部证据。 ## 研究账本 @@ -49,11 +53,13 @@ | 2026-07-28 | K3 作为“汇流点”,不是课程起点 | 初学者可以先学基础,高阶读者可以从 K3 反向跳转 | | 2026-07-28 | 优先重绘论文图并标明“简化/改绘” | 图可缩放、可交互,也减少脱离上下文复制论文图片 | | 2026-07-28 | Grok 只用于线索扩展与交叉检查 | 正文事实必须回到论文、官方仓库或正式文档 | -| 2026-07-28 | 首批论文库收录 125 篇,按问题与专题多标签组织 | 论文库承担发现入口,专题正文承担深度精读与机制复核 | +| 2026-07-28 | 首批论文库收录 130 篇,按问题与专题多标签组织 | 论文库承担发现入口,专题正文承担深度精读与机制复核 | | 2026-07-28 | 源码公开到 `git.k1412.top/wuyang/llm-atlas` | 路线、进度、研究方法和内容变更均可追踪 | | 2026-07-28 | 站点使用不可变镜像与 Compose Manager 部署 | 每次发布保留明确版本、健康检查和回滚点 | | 2026-07-28 | 长上下文按计算、缓存、位置、状态容量、系统五张账单组织 | 避免把 FlashAttention、位置外推和“记住更久”混成同一个问题 | | 2026-07-28 | 交互缓存数字统一标记为教学估算 | 展示增长规律,不冒充任一模型的真实线上显存基准 | +| 2026-07-28 | MoE 按六张账组织,路由算法与集群执行分开核算 | 避免用“稀疏所以便宜”跳过容量、负载、通信与权重读取 | +| 2026-07-28 | “aux-loss-free”保留论文真实边界 | 区分 selection bias、mixture weight、z-loss 与 V3 的极小 sequence-wise loss | ## 未决问题 diff --git a/README.md b/README.md index 89ab38f..a011fa1 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ - 持续进度:[PROGRESS.md](./PROGRESS.md) - 证据与写作规范:[research/METHODOLOGY.md](./research/METHODOLOGY.md) -首个里程碑包含 16 专题学习地图、125 篇关键论文索引、Kimi K3 完整导读、 -Transformer 基础、DeepSeek 技术谱系、长上下文与高效注意力深度专题,以及四张原创交互可视化。 +当前里程碑包含 16 专题学习地图、130 篇关键论文索引、Kimi K3 完整导读、 +Transformer 基础、DeepSeek 技术谱系、长上下文与 MoE 深度专题,以及五张原创交互可视化。 其余专题按进度账本持续扩建。 ## 本地开发 diff --git a/ROADMAP.md b/ROADMAP.md index 6d88eea..61070fc 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -45,6 +45,9 @@ GPT 系列 → Kaplan scaling laws → Chinchilla compute-optimal → 数据质 Conditional Computation → Sparsely-Gated MoE → GShard/Switch → DeepSeekMoE → LatentMoE → K3 Stable LatentMoE。重点解释路由、专家特化、负载均衡与通信。 +首版已发布:以“容量、激活计算、路由、负载、通信、稳定性”六张账串起 1991–2026 的 19 篇一手论文, +包含 DeepSeekMoE / Loss-Free / LatentMoE / K3 重点推导,以及 8 种架构、4 类平衡策略的交互实验室。 + ### 07. 长上下文与高效注意力 稀疏注意力、线性注意力、FlashAttention、MQA/GQA、MLA、状态空间模型、Delta Rule、Kimi Linear/KDA、混合注意力与 1M 上下文。 diff --git a/package.json b/package.json index 767c119..0e70d59 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,9 @@ "dev": "astro dev --host 0.0.0.0", "build": "astro build", "preview": "astro preview --host 0.0.0.0", - "check": "astro check" + "check": "astro check", + "check:site": "node scripts/check-site.mjs", + "check:moe-browser": "node scripts/check-moe-browser.mjs" }, "dependencies": { "@astrojs/sitemap": "3.7.3", diff --git a/research/MOE_RESEARCH.md b/research/MOE_RESEARCH.md new file mode 100644 index 0000000..2a0e5e4 --- /dev/null +++ b/research/MOE_RESEARCH.md @@ -0,0 +1,159 @@ +# 稀疏计算与 MoE 研究账本 + +最后核验:2026-07-28 + +## 教学主线 + +MoE 不能只写成“更多参数、较少计算”。本专题固定拆成六张账单: + +1. **容量**:模型一共存了多少参数。 +2. **激活计算**:每个 Token 实际经过多少专家参数。 +3. **路由**:谁决定 Token 去哪里,选择是 top-1、top-2 还是 top-k。 +4. **负载**:专家收到的 Token 是否均匀,溢出时是否丢 Token。 +5. **通信**:专家分散在不同设备后,dispatch / combine 两次 All-to-All 搬多少数据。 +6. **稳定性**:硬路由、router logits、极稀疏潜空间链怎样影响训练。 + +核心因果链: + +> 稠密 FFN 把容量与每 Token 算力绑死 +> → 软门控专家学会分工,但所有专家仍可能参与 +> → 稀疏 top-k 让条件计算进入大规模模型 +> → Transformer MoE 把 FFN 专家分到设备上 +> → 容量、掉 Token、负载和 All-to-All 成为新瓶颈 +> → DeepSeek 细分专家、隔离共享知识,并限制跨设备路由 +> → 无辅助损失 bias 把均衡移出主梯度 +> → LatentMoE 压缩路由载荷与专家宽度 +> → K3 在 896 选 16 的极稀疏区间进一步解决激活爆炸、bias 更新和执行不均。 + +## 本地一手材料 + +PDF 与文本只作本地研究缓存,受 `.gitignore` 排除;公开仓库仅提交本账本和 canonical URL。 + +| ID | 来源 | 本地页数 | 本轮用途 | +|---|---|---:|---| +| `1701.06538` | Sparsely-Gated MoE | 19 | Noisy Top-k 与现代稀疏门控起点 | +| `2006.16668` | GShard | 35 | Transformer MoE、自动切分与 Top-2 | +| `2101.03961` | Switch Transformers | 40 | Top-1、capacity factor、drop 与 EP | +| `2202.08906` | ST-MoE | 38 | router z-loss、稳定性与迁移 | +| `2202.09368` | Expert Choice | 14 | 专家选 Token 的负载均衡分支 | +| `2401.04088` | Mixtral of Experts | 13 | 社区可运行的 8 选 2 MoE | +| `2401.06066` | DeepSeekMoE | 33 | 细粒度专家与共享专家 | +| `2408.15664` | Auxiliary-Loss-Free Balancing | 14 | expert bias 与干扰梯度 | +| `2412.19437` | DeepSeek-V3 | 53 | 256 选 8、node limit、系统协同 | +| `2601.18089` | LatentMoE | 18 | 潜空间专家、带宽与通信 | +| `2607.24653` | Kimi K3 | 47 | Stable LatentMoE、QB 与 MoonEP | + +补充复用: + +- DeepSeek-V2 `2405.04434`:本地缓存位于 `research/sources/long-context/`。 +- Kimi K3 原报告:`research/sources/kimi-k3/k3_tech_report.*`。 + +## 已核验的关键结论 + +### Switch:capacity factor 不是模型容量 + +Switch 的专家容量定义为: + +```text +expert capacity = tokens per batch / number of experts × capacity factor +``` + +- 它是每个专家这一批最多能处理多少 Token,不是专家参数量。 +- 大于 1 的 capacity factor 提供负载缓冲。 +- 专家溢出时,Switch 跳过专家计算并让表示沿残差路径进入下一层。 +- capacity factor 增大也会增加 padding、计算、激活内存和通信。 +- 论文报告在其主要实验中 dropped tokens 通常低于 1%,不可外推为所有 MoE。 + +### ST-MoE:稳定不等于均衡 + +- Load-balancing loss 管“专家是否被均匀使用”。 +- Router z-loss 管“进入 router softmax 的 logits 是否过大”。 +- ST-MoE 的公式惩罚每个 Token router log-partition 的平方。 +- 论文的稳定性研究使用训练 CF=1.25、评估 CF=2.0,并令 z-loss 系数 `0.001`。 +- 因而 z-loss 不能被写成另一种负载均衡损失。 + +### DeepSeekMoE:同计算预算下切得更细 + +- 传统配置有 `N` 个专家、激活 `K` 个。 +- DeepSeekMoE 把每个 FFN 专家沿中间维切成 `m` 个更小专家,总数成为 `mN`,激活数成为 `mK`,保持总专家参数与激活计算近似不变。 +- 论文示例:`N=16, K=2` 只有 `C(16,2)=120` 种组合;切成 `64` 个小专家并激活 `8` 个后,组合数为 `C(64,8)=4,426,165,368`。 +- Shared expert isolation 让共享专家始终执行,承载共性变换;路由专家更专注于差异知识。 +- 2B 验证模型为 1 个共享专家 + 63 个路由专家,其中每 Token 激活 1+7。 +- 禁用共享专家并多激活一个路由专家时,论文的 Pile loss 从 1.808 上升到 2.414;这是该实验设置下的证据,不是通用常数。 + +### Loss-Free / V3:selection 与 mixture weight 分开 + +- 原始 affinity score 为 `s`,expert bias 为 `b`。 +- `s+b` 只用于决定 top-k;最终混合专家输出的权重仍来自原始 `s`。 +- 因此 bias 调整 dispatch,不向语言建模参数引入 auxiliary-loss 的干扰梯度。 +- 原方法按上一步负载以固定步长更新 bias;步长过小反应慢、过大会振荡。 +- DeepSeek-V3:671B 总参数、37B 激活;每个 MoE 层 1 shared + 256 routed,激活 8 routed;每 Token 最多发往 4 个节点。 +- V3 主要使用 auxiliary-loss-free 策略,但仍保留系数极小的 sequence-wise balance loss 防止单序列极端失衡。正文必须保留这个边界,不能简写为“完全没有任何辅助损失”。 +- V3 报告称训练和推理都不 drop Token;这是其负载均衡与部署策略下的模型报告事实。 + +### LatentMoE:省下的是路由宽度与专家权重流量 + +- 标准 MoE 以模型宽度 `d` dispatch Token,并让 routed expert 在 `d` 宽度上计算。 +- LatentMoE 先下投影到 `ℓ