diff --git a/PROGRESS.md b/PROGRESS.md index 59d5266..c5da4fa 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -11,6 +11,7 @@ | Kimi K3 深读 | 进行中 | 66% | 扩写 pre-training / infra 逐图笔记 | | 语言模型前史 | 完成首版 | 78% | Kneser–Ney、LSTM、Bahdanau 逐图精读与真实小语料复现 | | Transformer 基础 | 完成首版 | 79% | 多头电路、归一化 traces 与真实 kernel / KV 配置 | +| 表示、位置与残差高速公路 | 完成首版 | 81% | 真实 hidden-state / norm traces、长上下文位置外推与深层稳定性消融 | | Scaling Laws | 完成首版 | 74% | 真实拟合复现、置信区间与更多模型族对照 | | 数据工程与预训练配方 | 完成首版 | 73% | FineWeb / DCLM 逐图精读、真实去重误伤与 mixture traces | | DeepSeek 专题 | 进行中 | 71% | 补 R1 / DAPO 的逐图训练轨迹与复现对照 | @@ -37,10 +38,10 @@ - [x] 提炼参考网站的编辑设计语言。 - [x] 确认 `git.k1412.top` 为 Gitea/Forgejo 兼容服务且本机 HTTPS 凭据可用于既有仓库。 - [x] 使用 Grok CLI 检索并形成约 95 篇一手论文的补充路线,主代理已回查关键来源。 -- [x] 完成 450 篇关键论文索引,覆盖 15 个标签专题与 Kimi/DeepSeek 聚光主线。 +- [x] 完成 480 篇关键论文索引,覆盖 16 个标签专题与 Kimi/DeepSeek 聚光主线。 - [x] 完成可检索、可按专题筛选的论文库页面。 -- [x] 完成 K3、语言模型前史、Transformer 基础、DeepSeek 谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、Agent、原生多模态、训练系统、推理服务、数值优化与评测安全十六篇首版长文。 -- [x] 完成 K3 三轴架构、语言模型前史四联实验、Transformer 四联实验、DeepSeek 谱系、长上下文、MoE 路由、推理三页签,以及训练系统、推理服务、Scaling、数据工程、数值、Alignment、Agent、原生多模态与评测安全专题各四页签等五十一个原创交互视图。 +- [x] 完成 K3、语言模型前史、Transformer 基础、表示/位置/残差、DeepSeek 谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、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 研究账本。 @@ -133,9 +134,17 @@ - [x] 论文库新增 BLEU、GLUE、HumanEval、MT-Bench、LiveBench、HarmBench、InjecAgent、AILuminate 等 50 个节点,从 400 篇扩充至 450 篇。 - [x] Astro 类型检查、生产构建、20 个页面、1053 个站内引用和 15 个跨页锚点通过;十三套专题 Chrome 回归、键盘 tabs 与 390px 移动端无异常。 - [x] 评测安全首版以源提交 `cfd2367`、不可变镜像 `20260729T013530Z-cfd2367` 发布;NAS、VPS/Tailscale、NPM、DNS、HTTPS、证书、门户、公开 Forgejo 与十三套生产 Chrome 回归全链路通过。 +- [x] 启动表示、位置与残差专题:用二十张账拆开计算单位、接口参数、上下文化、位置对称性、外推、Norm 对象、拓扑、深度路由、激活极值与证据边界。 +- [x] 使用 Grok Headless 扩展问题与候选论文;候选只保留在未核验 leads,66 节点正式阅读链全部回到一手论文与 K3/DeepSeek 官方报告。 +- [x] 完成表示深度首版:29 个正文目录、二十张问题账,以及 Token/weight tying/context—位置几何—Norm/深度—Residual/FFN 四联实验。 +- [x] 论文库新增 output embedding、ELMo、BLT、Fixup、ReZero、Hyper-Connections、mHC、xPos、FIRE、LongRoPE 等 30 个节点,从 450 篇扩充至 480 篇。 +- [x] 表示深度真实 Chrome 断言通过:byte/subword、weight tying、RoPE/ALiBi/NoPE、Pre/Post/QK-Norm、mHC/AttnRes、V4 clamp/SiTU、键盘 tabs 与 390px 移动端均正确响应。 +- [x] Astro 类型检查、生产构建、21 个页面、1145 个站内引用和 14 个跨页锚点通过;桌面 / 移动端无文档级横向溢出。 +- [x] 表示深度与既有十三个专题共十四套本地真实 Chrome 回归全部通过。 ## 正在进行 +- [ ] 表示、位置与残差二轮:真实 hidden-state / norm traces、长上下文位置外推复现与 mHC / AttnRes 深层稳定性消融。 - [ ] 评测安全二轮:真实 cross-harness / pass@k 复跑、Judge 元评测、动态污染与过拒案例。 - [ ] 推理服务二轮:真实 GPU kernel / workload traces、功耗与成本、跨 vLLM / SGLang / TensorRT-LLM 复现。 - [ ] 原生多模态二轮:真实视觉 Token traces、跨分辨率 / connector 消融、OCR 与视觉 Agent 安全失败案例。 @@ -233,6 +242,12 @@ | 2026-07-29 | 论文库扩充到 450 篇 | 新增 50 个指标、套件、动态基准、Judge、代码 Verifier、安全与 Agent 风险节点 | | 2026-07-29 | 评测安全首版用四个独立实验闭环 | 指标/校准、Judge/Arena、污染/动态题、系统/安全边界分开建模,不合成伪“模型总分” | | 2026-07-29 | 评测安全首版用不可变镜像 `20260729T013530Z-cfd2367` 发布 | OCI digest `sha256:3c4c34a8…50be6`;复用 `12010→8080`、NPM host 31 / cert 41、门户 order 180 与公开 Forgejo | +| 2026-07-29 | 表示与深度按二十张问题账组织 | 计算单位、接口参数、上下文化、位置、外推、Norm 对象、拓扑、残差路由与非线性极值不再混成一个 hidden-state 名词 | +| 2026-07-29 | Grok 表示候选与正式证据永久分离 | 候选问题和论文只负责查漏;66 节点正式链只接受一手论文与 K3/DeepSeek 官方报告 | +| 2026-07-29 | K3 Block AttnRes 来源数按原报告重算 | 93 层按 12 层形成 8 个 layer blocks(7 个完整块加 1 个尾块),加 embedding 后共 9 个 block-level 来源 | +| 2026-07-29 | DeepSeek 与 Kimi 的位置/深度稳定化分开建模 | V2 decoupled RoPE、V4 partial RoPE/mHC/clamp 与 K3 MLA NoPE、KDA、AttnRes/SiTU 不压成单一代际结论 | +| 2026-07-29 | 论文库扩充到 480 篇 | 新增 30 个表示、位置、归一化、残差拓扑、激活函数与深层稳定性节点 | +| 2026-07-29 | 表示深度首版用四个独立实验闭环 | Token 接口、位置几何、Norm/深度、Residual/FFN 分开操作;报告事实、数学推导与 toy model 永久分级 | ## 未决问题 diff --git a/README.md b/README.md index 4d4fe80..470f786 100644 --- a/README.md +++ b/README.md @@ -17,9 +17,9 @@ - 持续进度:[PROGRESS.md](./PROGRESS.md) - 证据与写作规范:[research/METHODOLOGY.md](./research/METHODOLOGY.md) -当前里程碑包含 17 专题学习地图、450 篇关键论文索引、Kimi K3 完整导读, -语言模型前史、Transformer 基础、DeepSeek 技术谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、工具使用与长程 Agent、原生多模态、训练系统、推理服务、数值优化,以及评测与安全深度专题, -以及 51 个覆盖核心机制的原创交互视图。 +当前里程碑包含 17 专题学习地图、480 篇关键论文索引、Kimi K3 完整导读, +语言模型前史、Transformer 基础、表示/位置/残差、DeepSeek 技术谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、工具使用与长程 Agent、原生多模态、训练系统、推理服务、数值优化,以及评测与安全深度专题, +以及 55 个覆盖核心机制的原创交互视图。 其余专题按进度账本持续扩建。 ## 本地开发 diff --git a/ROADMAP.md b/ROADMAP.md index a85bb7e..7450a62 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -45,6 +45,13 @@ KV/IO 效率 → DeepSeek MLA/CSA-HCA 与 Kimi KDA/AttnRes。逐项拆解 Q/K/V BPE/SentencePiece、绝对/相对位置、RoPE/ALiBi、LayerNorm/RMSNorm、Pre-LN、SwiGLU,以及从 ResNet 到 K3 Attention Residuals 的深度信息流。 +首版已发布:以“计算单位、接口参数、上下文化、位置对称性、外推、Norm 对象、拓扑、深度路由、 +激活极值与证据边界”等二十张账,串起 1991–2026 的 66 个一手节点。四联实验分别操作 +Token/weight tying/context、absolute/RoPE/ALiBi/NoPE、Pre/Post/RMS/QK-Norm,以及 +plain residual/HC/mHC/AttnRes 与 GELU/SwiGLU/V4 clamp/K3 SiTU。重点对照 DeepSeek-V2 的 +decoupled RoPE、V4 的 partial RoPE/mHC/激活 clamp,与 K3 的 MLA NoPE、KDA 隐式位置、 +9 个 block-level AttnRes 来源和逐点绝对值小于 100 的 SiTU-GLU。 + ### 04. Scaling Laws:规模为什么有效 GPT 系列 → Kaplan scaling laws → Chinchilla compute-optimal → 数据质量与重复 → 推理时计算。区分参数、激活参数、训练 FLOPs 与能力。 diff --git a/package.json b/package.json index 32081f8..97ede52 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "check:agents-browser": "node scripts/check-agents-browser.mjs", "check:multimodal-browser": "node scripts/check-multimodal-browser.mjs", "check:inference-serving-browser": "node scripts/check-inference-serving-browser.mjs", - "check:evaluation-browser": "node scripts/check-evaluation-browser.mjs" + "check:evaluation-browser": "node scripts/check-evaluation-browser.mjs", + "check:representation-browser": "node scripts/check-representation-browser.mjs" }, "dependencies": { "@astrojs/sitemap": "3.7.3", diff --git a/research/REPRESENTATION_GROK_LEADS.md b/research/REPRESENTATION_GROK_LEADS.md new file mode 100644 index 0000000..e45f4b5 --- /dev/null +++ b/research/REPRESENTATION_GROK_LEADS.md @@ -0,0 +1,136 @@ +# 表示、位置与残差:Grok 候选线索 + +> 状态:**UNVERIFIED / 未核验发现队列,不是正式证据。** +> +> 生成方式:2026-07-29 使用本机 Grok CLI Headless(禁用子代理)扩展候选召回。Grok 的作用仅是提出“还应查什么”;正文中的事实、数字、年份、公式和优先级都必须重新回到论文原文、正式会议页或官方技术报告。 + +## 1. Grok 建议的二十张问题账 + +1. 表示与参数:token ID、embedding、hidden state、logit、概率各是什么,为什么不能混称“词向量”? +2. 静态词向量:同一个词只有一个向量时,多义性和上下文差异怎样被压扁? +3. 上下文化:ELMo、BERT 与自回归 LLM 怎样把“词典条目”变成“此刻的状态”? +4. 输入与输出空间:为什么输入 embedding 与输出 classifier 可以共享参数? +5. Tokenizer:词、子词、字符、字节与动态 patch 分别把什么成本写进序列长度和词表? +6. 绝对位置:为什么把位置向量加到 token embedding 能破坏 Attention 的置换对称? +7. 相对位置:为什么语言规律往往更关心“相隔几步”而非“绝对第几位”? +8. RoPE:二维旋转怎样让 Q·K 只通过相对角度看到位移? +9. ALiBi / relative bias:把距离写进 logit 和写进向量有什么不同? +10. NoPE:没有显式位置向量是否真的等于模型不知道顺序? +11. 长度外推:训练长度外的新相位、距离和注意力分辨率为什么会失真? +12. 归一化对象:LayerNorm、RMSNorm、QK-Norm 分别控制哪一个量? +13. Norm 位置:Post-LN、Pre-LN 与 sandwich norm 怎样改变捷径和梯度? +14. 深度退化:信息能通过捷径不等于每一层贡献不会被稀释。 +15. 残差缩放:初始化、门控、DeepNorm 怎样控制累计更新的量级? +16. 残差宽度:Hyper-Connections 为什么把一条 residual stream 展开成多条? +17. 残差选择:AttnRes 为什么把“固定相加”改成“沿深度做注意力”? +18. 激活谱系:ReLU、GELU、GLU、SwiGLU 的非线性与乘法门控分别在做什么? +19. FFN 记忆:为什么逐 token 的 FFN 仍可承载大量模式和事实关联? +20. 极值稳定:DeepSeek-V4 的 clamping 与 K3 的 SiTU-GLU 分别怎样限制异常激活? + +## 2. 候选历史波次 + +| 波次 | Grok 提议的主问题 | 候选锚点 | +|---|---|---| +| 1986–2013 | 离散符号怎样进入可学习几何? | distributed representation、word2vec、BPE | +| 2014–2018 | 同一符号怎样随上下文改变? | Seq2Seq、ELMo、BERT | +| 2015–2017 | 深网怎样先“走得通”? | BatchNorm、ResNet、LayerNorm、Transformer | +| 2018–2021 | 顺序怎样进入 Attention? | relative position、Transformer-XL、T5 bias、RoPE、ALiBi | +| 2019–2022 | Transformer 怎样稳定堆深? | RMSNorm、Pre-LN、Fixup、ReZero、Admin、NormFormer、DeepNet | +| 2021–2024 | 位置怎样跨出训练窗口? | xPos、NoPE study、Position Interpolation、YaRN、FIRE、LongRoPE | +| 2024–2026 | residual stream 能否从一条路变成可学习拓扑? | Hyper-Connections、nGPT、mHC、AttnRes | +| 2024–2026 | 位置、残差与激活怎样成为前沿模型系统设计? | DeepSeek-V2/V4、Kimi Linear/K3 | + +## 3. 候选论文池 + +### Token、embedding 与上下文化 + +- Bengio et al. — *A Neural Probabilistic Language Model* +- Mikolov et al. — *Efficient Estimation of Word Representations in Vector Space* +- Sennrich et al. — *Neural Machine Translation of Rare Words with Subword Units* +- Kudo & Richardson — *SentencePiece* +- Press & Wolf — *Using the Output Embedding to Improve Language Models* +- Inan et al. — *Tying Word Vectors and Word Classifiers* +- Peters et al. — *Deep contextualized word representations* +- Devlin et al. — BERT +- Geva et al. — *Transformer Feed-Forward Layers Are Key-Value Memories* +- Clark et al. — CANINE +- Xue et al. — ByT5 +- Tay et al. — Charformer +- Pagnoni et al. — Byte Latent Transformer + +### 位置与长度外推 + +- Vaswani et al. — sinusoidal absolute position +- Shaw et al. — relative position representations +- Dai et al. — Transformer-XL +- Raffel et al. — T5 relative position buckets +- Su et al. — RoFormer / RoPE +- Press et al. — ALiBi +- Sun et al. — xPos / Length-Extrapolatable Transformer +- Kazemnejad et al. — NoPE length-generalization study +- Chen et al. — Position Interpolation +- Peng et al. — YaRN +- Li et al. — FIRE +- Ding et al. — LongRoPE + +### 归一化、深度与 residual stream + +- Ioffe & Szegedy — BatchNorm +- He et al. — ResNet +- Ba et al. — LayerNorm +- Zhang & Sennrich — RMSNorm +- Nguyen & Salazar — ScaleNorm / FixNorm / PreNorm +- Zhang et al. — Fixup +- Xiong et al. — Pre-LN / Post-LN analysis +- Bachlechner et al. — ReZero +- Liu et al. — Admin +- Henry et al. — QK-Norm +- Shleifer et al. — NormFormer +- Wang et al. — DeepNet / DeepNorm +- Zhu et al. — Hyper-Connections +- Loshchilov et al. — nGPT +- Xie et al. — mHC +- Kimi Team — Attention Residuals + +### 激活与 FFN + +- Nair & Hinton — ReLU +- Hendrycks & Gimpel — GELU +- Dauphin et al. — GLU +- Ramachandran et al. — Swish +- Shazeer — GLU Variants / SwiGLU +- Geva et al. — FFN as key-value memories +- So et al. — Primer / squared ReLU +- LLaMA — RMSNorm + SwiGLU 的现代配方 +- DeepSeek-V4 — SwiGLU clamping +- Kimi K3 — SiTU-GLU + +### DeepSeek / Kimi 重点候选 + +- DeepSeek-V2:MLA 的 decoupled RoPE +- DeepSeek-V3:RMSNorm、SwiGLU 与 latent normalization +- DeepSeek-V3.2:稀疏索引与 MLA 中的位置路径 +- DeepSeek-V4:mHC、partial RoPE、head-wise Q/KV RMSNorm、SwiGLU clamping +- Kimi Linear:混合 KDA / MLA 与 NoPE +- Attention Residuals:Full / Block AttnRes +- Kimi K3:KDA 隐式顺序、MLA NoPE、Block AttnRes、SiTU-GLU + +## 4. Grok 提出的四个交互实验草案 + +1. **Token / 表示工作台**:切换词、子词、字节,观察序列长度、词表参数、输入/输出权重共享,以及同一 token 在不同上下文中的状态。 +2. **位置几何台**:拖动两个位置,比较 absolute、relative bias、RoPE、ALiBi、NoPE 在训练窗内外怎样改变相似度。 +3. **Norm / 深度台**:切换 Post-LN、Pre-LN、RMSNorm、QK-Norm,观察 toy residual scale、gradient path 与 logit saturation。 +4. **Residual / FFN 台**:切换 plain residual、HC、mHC、AttnRes,并比较 GELU、SwiGLU、clamp、SiTU 对极值的响应。 + +## 5. 永久不得直接进入事实层的表述 + +- “embedding 就是模型的知识”:embedding 只是输入/输出接口的一部分,深层状态和参数共同构成模型行为。 +- “一个 token 对应一个词”:子词、字符、字节和多模态 token 都反例明显。 +- “RoPE 天然支持无限长度”:训练窗外相位分布与注意力分辨率仍可能失真。 +- “NoPE 没有位置信息”:因果 mask、递归状态或数据模式都可能让顺序被隐式编码。 +- “Pre-LN 全面优于 Post-LN”:优化稳定性、表示变化和最终性能是不同维度。 +- “RMSNorm 就是更快的 LayerNorm”:它去掉 re-centering,数学不变量与实现也不同。 +- “残差连接保证每层都被使用”:固定单位累加仍可能造成幅值增长和单层贡献稀释。 +- “FFN 只是无关紧要的两层 MLP”:它通常占大量参数,并可表现出模式/词汇关联。 +- “SwiGLU 永远最好”:论文只在具体架构、预算与任务上比较。 +- “K3 的 1M 能力只来自 NoPE”:报告还包含 KDA、长上下文数据、渐进式扩窗与系统并行;不得单因归因。 diff --git a/research/REPRESENTATION_RESEARCH.md b/research/REPRESENTATION_RESEARCH.md new file mode 100644 index 0000000..7ca00fd --- /dev/null +++ b/research/REPRESENTATION_RESEARCH.md @@ -0,0 +1,391 @@ +# 第 03 章研究账本:表示、位置与残差高速公路 + +> 核验截止:2026-07-29(Asia/Shanghai) +> +> 证据规则:论文原文、正式会议页、作者/团队官方报告和官方实现进入事实层;本站公式演算、类比和 toy simulator 明标“教学推导”。Grok 只做候选召回,隔离在 `REPRESENTATION_GROK_LEADS.md`。 + +## 0. 本章不是“RoPE 名词表” + +本章回答四个彼此耦合的问题: + +1. **表示**:离散 token 怎样变成向量;一个固定向量又怎样变成随上下文、层数不断改写的状态? +2. **位置**:内容匹配本身不含顺序时,绝对位置、相对距离、旋转、偏置和隐式状态分别怎样把顺序送进模型? +3. **深度**:几十到上百层怎样既保留捷径,又避免幅值增长、梯度失衡和表示稀释? +4. **局部非线性**:FFN / GLU 怎样加工每个位置;极端激活为什么会在大规模、低精度和 MoE 中成为系统问题? + +与相邻章节的边界: + +- 第 01 章负责 NPLM、word2vec 与语言模型前史;本章从“token 已选定”继续追踪表示在模型内部的生命史。 +- 第 02 章给出位置、Norm、Residual、FFN 的最小闭环;本章逐公式拆解并扩展到 DeepSeek / K3。 +- 第 05 章负责 tokenizer 的数据工程与训练;本章只研究它对表示、参数和计算单位的结构性影响。 +- 第 07 章负责长上下文算法与真实成本;本章只研究位置几何和长度外推边界。 +- 第 09 章负责优化器、精度和训练失稳;本章聚焦架构内部的幅值与信息路径。 + +## 1. 二十张正式问题账 + +| # | 账 | 先问什么 | 最小结论 | +|---:|---|---|---| +| 01 | 单位账 | 字符、字节、子词、token、patch 谁是模型一步? | Tokenizer 先决定序列长度、词表和边界,再由 embedding 查表。 | +| 02 | 参数账 | 词表大一倍只是多一点词吗? | 输入表和输出头常各含 `V×d` 参数;weight tying 会改变这笔账。 | +| 03 | 静态表示账 | 同一个 ID 是否永远同义? | 初始 embedding 固定,但进入网络后的 hidden state 随上下文和层而变。 | +| 04 | 上下文化账 | 多义性在哪里被展开? | 序列混合和逐位置 FFN 反复改写 token state。 | +| 05 | 输出几何账 | 下一个 token 怎样被选出? | hidden state 与输出向量点积生成 logits;向量空间同时是分类接口。 | +| 06 | 对称性账 | 没有位置时 Attention 知道先后吗? | 裸 self-attention 对输入排列等变;causal mask 只提供有向可见性。 | +| 07 | 绝对位置账 | “第 37 位”怎样进入表示? | learned / sinusoidal vector 可与内容相加,但内容与位置从入口就纠缠。 | +| 08 | 相对位置账 | “相距 3”怎样进入匹配? | 相对向量或 bias 直接改变位置对的 attention score / value。 | +| 09 | 旋转账 | RoPE 为什么用二维旋转? | 位置 `m,n` 的 Q/K 点积可写成与 `n−m` 有关的相对旋转。 | +| 10 | 外推账 | 训练窗外为何会坏? | 新距离改变相位、bias 区间和 attention resolution;可计算不等于会利用。 | +| 11 | NoPE 账 | 不显式编码位置是否等于无顺序? | 因果边界、递归衰减和内容统计可隐式编码顺序;机制必须逐模型说明。 | +| 12 | 统计账 | Norm 究竟归一化谁? | LayerNorm 控制单 token 特征的均值/方差,RMSNorm只控制 RMS,QK-Norm控制匹配向量。 | +| 13 | 拓扑账 | Norm 放在分支前还是相加后? | Pre/Post 改变 identity path、初始化梯度和深度动态。 | +| 14 | 幅值账 | Residual 为什么仍会长大? | `x_{l+1}=x_l+f_l` 固定单位累加;分支不为零时尺度通常随深度积累。 | +| 15 | 梯度账 | 有捷径为何仍难训练? | 捷径改善可达性,却不自动平衡各层更新、attention logits 和输出幅值。 | +| 16 | 稀释账 | 早期层为何会“听不见”? | 所有层固定相加会把单层贡献占比压低;Kimi 把它称为 PreNorm dilution。 | +| 17 | 拓宽账 | residual stream 必须只有一条吗? | HC 展开为多条流并学习层间连接;mHC 再约束映射稳定性。 | +| 18 | 选择账 | 深度能否像序列一样 attention? | AttnRes 对先前层/块表示做 softmax 选择,而非全用单位权重。 | +| 19 | FFN 账 | Attention 后为何还要大 MLP? | Attention 搬运跨 token 信息;FFN 在每个位置做共享非线性特征变换,并占大量参数。 | +| 20 | 极值账 | 门控为何也会爆? | SwiGLU 两个乘法因子都可无界;clamp 与 SiTU 用不同方式限制异常值。 | + +## 2. 八次历史转向 + +| 时期 | 被解决的瓶颈 | 转向 | 仍留下什么 | +|---|---|---|---| +| 2003–13 | one-hot 不能共享统计 | 稠密 distributed representation、word2vec | 同一词仍只有一个静态向量 | +| 2015–18 | 稀有词、开放词表与多义性 | BPE / SentencePiece + ELMo / BERT 上下文化 | token 边界仍由固定 tokenizer 先决定 | +| 2015–17 | 深网退化与序列 batch 统计不便 | ResNet + LayerNorm | fixed residual sum 仍会积累尺度 | +| 2018–21 | Attention 缺少顺序 | relative position、Transformer-XL、T5 bias、RoPE、ALiBi | 长度外推不自动成立 | +| 2019–22 | Transformer 堆深不稳 | RMSNorm、Pre-LN、ReZero、Admin、NormFormer、DeepNorm | 稳定和表示质量存在张力 | +| 2021–24 | 训练窗外的位置分布变了 | xPos、NoPE study、PI、YaRN、FIRE、LongRoPE | 位置修补不等于长程检索能力 | +| 2024–26 | 一条 fixed residual stream 成为深度瓶颈 | HC、nGPT、mHC、AttnRes | 更丰富拓扑带来状态/通信/约束成本 | +| 2024–26 | 前沿规模下位置与激活要协同设计 | DeepSeek-V2/V4、Kimi Linear/K3 | 结论必须绑定整个架构与训练配方 | + +## 3. 表示:从查表到上下文化状态 + +### 3.1 五个常被混成“词向量”的对象 + +给 token ID `t`、词表大小 `V`、hidden width `d`: + +1. **ID**:离散整数,本身没有几何。 +2. **输入 embedding**:`e_t = E[t]`,`E∈R^{V×d}`;这是进入第 0 层的查表结果。 +3. **hidden state**:`h_t^l`;同一个 ID 在不同句子、位置、层中通常不同。 +4. **输出向量**:输出矩阵 `W_out∈R^{V×d}` 的一行;`z_v = W_out[v]·h + b_v`。 +5. **概率**:`p(v|context)=softmax(z)_v`;概率是整个上下文计算的结果,不是 embedding 自带属性。 + +Press & Wolf 2016 研究顶层权重矩阵,指出它本身是有效 word embedding,并推荐 input/output weight tying;Inan et al. 2016 从 loss framework 得到相同 tying 方向。共享矩阵减少约 `V×d` 参数,但输入“读向量”与输出“分类”的计算角色仍不同。 + +来源:[Output Embedding](https://arxiv.org/abs/1608.05859)、[Tying Word Vectors](https://arxiv.org/abs/1611.01462)。 + +### 3.2 静态向量不是终点 + +ELMo 把词向量定义为深双向语言模型内部状态的函数,并允许下游任务混合不同层;论文明确以复杂词用法和 polysemy 为动机。BERT 后续把上下文化预训练推到 Transformer encoder。历史转向是: + +`token type → 初始向量 → 句内交互 → 每个 occurrence 的状态` + +来源:[ELMo](https://arxiv.org/abs/1802.05365)、[BERT](https://arxiv.org/abs/1810.04805)。 + +### 3.3 Tokenizer 先决定结构成本 + +- 固定词表方案:embedding / output head 参数随 `V×d` 增长;序列计算随 token 数增长。 +- byte-level:去掉固定子词词表依赖,但通常产生更长序列。 +- BLT 2024 把 byte 按 next-byte entropy 分成动态 patch,让高复杂度区域获得更多计算;论文报告的是特定 FLOP-controlled scaling study,不能泛化为“byte 模型已全面更优”。 + +来源:[Byte Latent Transformer](https://arxiv.org/abs/2412.09871)。 + +### 3.4 FFN 也是表示系统 + +Geva et al. 把 Transformer FFN 分析为 key-value memories:第一层方向与输入文本模式相关,第二层方向诱导输出词表分布;低层偏浅层模式,高层更语义化。这个分析支持“FFN 不只是扩维再缩维”,但不证明每个 neuron 都是一条独立、稳定、可编辑的事实。 + +来源:[Transformer Feed-Forward Layers Are Key-Value Memories](https://arxiv.org/abs/2012.14913)。 + +## 4. 位置:把排列对称打破到什么程度 + +### 4.1 无位置的 self-attention + +若同时对 token 行做同一个排列 `P`,且没有 mask / position: + +`Attn(PX)=P Attn(X)` + +它会跟着输入一起排列,却无法区分“相同内容的不同顺序”。Causal mask 已经打破完全对称:位置 `t` 只能看到前缀 `≤t`,所以 NoPE decoder 并非完全没有顺序信号。但它没有显式给每对 Q/K 一个距离坐标。 + +### 4.2 四种主流写法 + +1. **absolute add**:`x_t=e_t+p_t`;原始 Transformer 的 fixed sinusoid 与 learned variant 属于此类。 +2. **relative representation / bias**:score 依赖 `i−j`;Shaw 2018、Transformer-XL、T5 buckets。 +3. **RoPE**:`q_m=R_m q, k_n=R_n k`,于是 `q_mᵀk_n=qᵀR_{n−m}k`。 +4. **ALiBi**:`score_{ij}=q_iᵀk_j/√d − m_h(i−j)`;不向 embedding 加位置向量。 + +来源:[Transformer](https://proceedings.neurips.cc/paper/7181-attention-is-all-you-need)、[Relative Position](https://aclanthology.org/N18-2074/)、[Transformer-XL](https://aclanthology.org/P19-1285/)、[T5](https://jmlr.org/papers/v21/20-074.html)、[RoFormer](https://arxiv.org/abs/2104.09864)、[ALiBi](https://arxiv.org/abs/2108.12409)。 + +### 4.3 RoPE 的最小几何 + +对一对维度,把位置 `m` 写成旋转角 `mθ`: + +`R_m=[cos(mθ),−sin(mθ); sin(mθ),cos(mθ)]` + +因为 `R_mᵀR_n=R_{n−m}`,Q/K 点积自然依赖相对位移。不同维度对使用不同频率:高频区分近邻,低频覆盖较长尺度。测试距离越过训练分布时,相位组合、周期和 attention resolution 都可能陌生;“公式可算任意 m”不等于模型学会任意长度。 + +### 4.4 长度外推的四条路线 + +- xPos 提出 attention resolution,并通过位置设计与 blockwise causal attention 改善外推。 +- Kazemnejad et al. 在特定 decoder-only reasoning / math tasks 比较 APE、T5 RPE、ALiBi、RoPE 与 NoPE,报告 NoPE 最好;它不是所有语言建模场景的总定律。 +- Position Interpolation / YaRN 将超长位置映回更熟悉的 RoPE 范围;FIRE 学习相对位置函数并渐进插值。 +- LongRoPE 搜索不同维度/位置的非均匀插值,并做渐进扩展和短上下文恢复;其 2,048K 是论文模型与训练设定的结果。 + +来源:[xPos](https://arxiv.org/abs/2212.10554)、[NoPE study](https://arxiv.org/abs/2305.19466)、[Position Interpolation](https://arxiv.org/abs/2306.15595)、[YaRN](https://arxiv.org/abs/2309.00071)、[FIRE](https://arxiv.org/abs/2310.04418)、[LongRoPE](https://arxiv.org/abs/2402.13753)。 + +## 5. Norm:不是“把数字变小” + +### 5.1 三个归一化对象 + +对单 token 向量 `x∈R^d`: + +- LayerNorm:`(x−μ)/√(σ²+ε) ⊙ γ + β`,控制均值和方差。 +- RMSNorm:`x/√(mean(x²)+ε) ⊙ γ`,保留均值方向,只提供 re-scaling invariance。 +- QK-Norm:先按 attention head 归一化 Q、K,再用可学习 scale 形成 logits;它处理 softmax saturation,不替代整个 block 的 PreNorm。 + +来源:[LayerNorm](https://arxiv.org/abs/1607.06450)、[RMSNorm](https://arxiv.org/abs/1910.07467)、[QK-Norm](https://arxiv.org/abs/2010.04245)。 + +### 5.2 Pre-LN 与 Post-LN 是拓扑 + +- Post-LN:`x_{l+1}=Norm(x_l+F(x_l))` +- Pre-LN:`x_{l+1}=x_l+F(Norm(x_l))` + +Pre-LN 的 identity path 不经过 Norm,通常更易优化;Xiong et al. 用 mean-field 分析初始化梯度和 warm-up。代价是所有分支固定相加可能造成 hidden-state growth 与层贡献稀释。NormFormer 在 Pre-LN block 内增加 attention 后 Norm、head-wise scaling 和 FFN 内 Norm,以改善深浅层梯度尺度。 + +来源:[Pre-LN analysis](https://arxiv.org/abs/2002.04745)、[Transformers without Tears](https://arxiv.org/abs/1910.05895)、[NormFormer](https://arxiv.org/abs/2110.09456)。 + +### 5.3 稳定堆深的谱系 + +- Fixup 通过初始化缩放让 residual net 在无 normalization 下稳定。 +- ReZero 为每条 residual 分支乘零初始化标量,初始网络接近 identity;论文应用到 120-layer Transformer。 +- Admin 把训练不稳归因于 residual branch 对参数扰动的放大效应,并做适应性初始化。 +- DeepNorm 修改 residual scale 并配套初始化,报告训练到 1,000 Transformer layers。 +- nGPT 把 embedding、权重和 hidden state 归一化到 hypersphere;论文的 4–20× steps reduction 依赖其任务和长度设置。 + +来源:[Fixup](https://arxiv.org/abs/1901.09321)、[ReZero](https://arxiv.org/abs/2003.04887)、[Admin](https://arxiv.org/abs/2004.08249)、[DeepNet](https://arxiv.org/abs/2203.00555)、[nGPT](https://arxiv.org/abs/2410.01131)。 + +## 6. Residual:从固定加法路到可学习深度路由 + +### 6.1 成就与盲点 + +ResNet 把目标写成 `H(x)=x+F(x)`,让 identity shortcut 提供直接路径。现代 Pre-LN LLM 进一步保持裸 identity path。然而: + +`h_L=h_0+Σ F_l(Norm(h_l))` + +所有分支以固定单位系数进入同一个状态。捷径保证“能到”,不保证“每层被同等听见”,也不控制总幅值。 + +来源:[ResNet](https://openaccess.thecvf.com/content_cvpr_2016/html/He_Deep_Residual_Learning_CVPR_2016_paper.html)。 + +### 6.2 Hyper-Connections 与 mHC + +HC 把 residual stream 从 `R^d` 扩为 `R^{n×d}`: + +`X_{l+1}=B_l X_l + C_l F_l(A_l X_l)` + +mHC 指出 unconstrained HC 会破坏 residual 的 identity property并导致训练不稳;它把 `B_l` 投影到 doubly stochastic matrices 的 Birkhoff polytope。DeepSeek-V4 报告写明该约束令 `||B_l||₂≤1`、映射 non-expansive,且集合在矩阵乘法下封闭;实现用 Sinkhorn-Knopp 近似投影。这是论文/报告的理论与设计主张,页面不把它写成所有场景的完备稳定性证明。 + +来源:[Hyper-Connections](https://arxiv.org/abs/2409.19606)、[mHC](https://arxiv.org/abs/2512.24880)、[DeepSeek-V4](https://arxiv.org/abs/2606.19348)。 + +### 6.3 Attention Residuals + +Kimi Team 把“沿序列注意力”移到“沿深度注意力”: + +`α_{i→l}=exp(q_lᵀ RMSNorm(k_i)) / Σ_j exp(q_lᵀ RMSNorm(k_j))` + +`h_l=Σ_i α_{i→l}v_i` + +Block AttnRes 先把层分块,每块内部累加,再只在 block representations 上做 depth attention,把存储/通信从 `O(Ld)` 降到 `O(Nd)`。独立报告使用 48B total / 3B active、1.4T tokens 验证;K3 则把方案放进更大完整系统。 + +K3 的具体配置:93 backbone layers;按 12 层划成 8 个 layer blocks(7 个完整 12 层 block + 1 个 partial block),embedding 另作一个 source,因此共有 9 个 block-level depth sources。这里纠正早期草案里“block size 2”的误读。 + +来源:[Attention Residuals](https://arxiv.org/abs/2603.15031)、[Kimi K3](https://arxiv.org/abs/2607.24653),本地证据 `research/sources/kimi-k3/k3_tech_report.txt:373-425`。 + +## 7. 激活与 FFN:从选择性通过到有界门控 + +### 7.1 公式谱系 + +- ReLU:`max(0,x)`。 +- GELU:`x Φ(x)`。 +- GLU:`(xW+b) ⊙ σ(xV+c)`。 +- Swish / SiLU:`x σ(βx)`。 +- SwiGLU:`Swish(xW_g) ⊙ (xW_u)`;两个乘法因子都可无界。 + +来源:[GELU](https://arxiv.org/abs/1606.08415)、[GLU](https://arxiv.org/abs/1612.08083)、[Swish](https://arxiv.org/abs/1710.05941)、[GLU Variants](https://arxiv.org/abs/2002.05202)、[LLaMA](https://arxiv.org/abs/2302.13971)。 + +### 7.2 DeepSeek-V4:clamp 两条分支 + +V4 报告称训练中把 SwiGLU linear component clamp 到 `[-10,10]`,gate component 只把上界 cap 为 `10`,并报告消除 outliers、帮助稳定且未损害性能。它是作者在 V4 设置中的经验报告,不是一般数学保证。 + +本地证据:`research/sources/long-context/2606.19348.txt:1483-1493`。 + +### 7.3 K3:SiTU-GLU 的平滑上界 + +K3 Stable LatentMoE 在 routed experts 聚合后、up projection 前加入 RMSNorm,并定义: + +`SiTU-GLU(x)=β₁ tanh(W_gx/β₁) ⊙ Sigmoid(W_gx) ⊙ β₂ tanh(W_ux/β₂)` + +报告使用 `β₁=4, β₂=25`,所以输出逐点绝对值严格小于 `β₁β₂=100`。在原点附近一阶近似 SwiGLU,`β→∞` 时逐点恢复;相较 hard clamp,tanh cap 在饱和区仍有非零但很小的梯度。函数上界不等于整个网络 activation / loss 有界。 + +本地证据:`research/sources/kimi-k3/k3_tech_report.txt:458-505,2700-2815`。 + +## 8. DeepSeek 重点谱系 + +### 8.1 DeepSeek LLM / V3:现代基线配方 + +- DeepSeek LLM 使用 Pre-Norm RMSNorm、SwiGLU 和 RoPE。 +- V3 在 compressed latent vectors 后加入额外 RMSNorm;不能把 latent Norm 与 block PreNorm 混成一个位置。 + +来源:[DeepSeek LLM](https://arxiv.org/abs/2401.02954)、[DeepSeek-V3](https://arxiv.org/abs/2412.19437)。 + +### 8.2 DeepSeek-V2:把内容与位置拆开缓存 + +MLA 想把 content K/V 压入 latent 并把 up-projection 吸收到 query 侧;若把 RoPE 直接夹在 key up-projection 中,位置相关旋转阻止矩阵吸收。V2 因而增加独立 multi-head RoPE query 和 shared RoPE key,再与 content Q/K 拼接。它是 **decoupled RoPE**,不是 NoPE。 + +本地证据:`research/sources/long-context/2405.04434.txt:350-395`。 + +### 8.3 DeepSeek-V4:四件事一起看 + +1. mHC 把 residual width 扩为 4,并约束 depth mixing。 +2. CSA / HCA 的 query head 与 compressed KV entry 分别做额外 RMSNorm。 +3. Q、KV 和 core attention output 的最后 64 维使用 partial RoPE;output 再用负位置旋转恢复相对位置含义。 +4. SwiGLU 两条分支使用非对称 clamp。 + +本地证据:`research/sources/long-context/2606.19348.txt:355-432,715-747,1483-1493`。 + +## 9. Kimi K3 逐节复原 + +### 9.1 NoPE 不是删除顺序 + +- K3 以 3 个 KDA + 1 个 Gated MLA 的比例构成 hybrid backbone。 +- 所有 MLA layers 不给 Q/K 施加显式 position encoding。 +- KDA 的 channel-wise recurrent gate / decay 提供 position-sensitive、recency-aware sequence mixing。 +- 报告因此不需要在扩窗时修改 RoPE base 或 YaRN 参数。 + +报告称模型能直接外推到 1M,但同一 §3.4 还明确使用 long-context cleaning/synthesis、8K→64K→256K→1M 的渐进课程和序列并行。不得写成“NoPE 单独造出 1M”。 + +本地证据:`research/sources/kimi-k3/k3_tech_report.txt:352-370,780-811`。 + +### 9.2 Block AttnRes 是深度轴的选择器 + +- `RMSNorm(k)` 防止大幅值层仅凭尺度支配 softmax。 +- Full 形式 arithmetic `O(L²d)` 在不足百层仍可接受,真正问题是保存所有层输出的 `O(Ld)` memory / pipeline communication。 +- K3 的 Block 形式把 93 层按 12 层划块,降低到 `O(Nd)`。 + +### 9.3 Stable LatentMoE 是表示幅值控制 + +- routed experts 先在 latent space 聚合,再上投影回 full width; +- 额外 RMSNorm 控制 routed latent variation; +- SiTU-GLU 给乘法门控输出明确的 smooth bound; +- 两项与 MoE 路由、通信优化一起构成 Stable LatentMoE,不能只摘一个公式解释整套训练收益。 + +## 10. 四联交互实验合同 + +### Lab A / Token 与表示 + +输入:文本预设、token unit(word/subword/byte)、`V`、`d`、weight tying、上下文开关。 + +输出:toy token sequence、tokens/characters、embedding/head 参数、同一 token 的 base/context states。明标不是任何真实 tokenizer / checkpoint。 + +### Lab B / 位置几何 + +输入:scheme(absolute/RoPE/ALiBi/NoPE)、位置 `i,j`、训练长度、RoPE base / ALiBi slope。 + +输出:relative distance、2D Q/K 旋转图、dot similarity、train-window / extrapolation 状态。NoPE 只表示“没有显式项”。 + +### Lab C / Norm 与深度 + +输入:topology(Post-LN/Pre-LN/RMS-Pre/QK+RMS)、depth、branch scale、attention logit scale。 + +输出:toy residual magnitude、identity gradient path、softmax peak / saturation。曲线不是训练预测器。 + +### Lab D / Residual 与 FFN + +输入:residual route(plain/HC/mHC/AttnRes)、depth source scores、activation(GELU/SwiGLU/V4 clamp/SiTU)、input range。 + +输出:depth weights/path、memory-state count、activation response、最大绝对输出与理论上界;K3 preset 用 `β₁=4,β₂=25`。 + +共同验收:四 tabs / panels 一一对应,ARIA 与左右方向键可用;1440px / 390px 无横向溢出;控件变化更新数值与解释;公式事实、作者报告、本站推导不可混用。 + +## 11. 正式论文链(66 个教学节点) + +| # | 年 | 节点 | 主账 | 一句话位置 | +|---:|---:|---|---|---| +| 01 | 2003 | Neural Probabilistic LM | 表示 | 离散词变成共同学习的连续向量。 | +| 02 | 2013 | word2vec | 表示 | 高效学习静态分布式表示。 | +| 03 | 2015 | BatchNorm | Norm | 跨 batch 统计的归一化前史。 | +| 04 | 2015 | ResNet | 深度 | identity shortcut 让残差学习成为主干。 | +| 05 | 2015 | BPE for NMT | Token | 以子词处理开放词表与稀有词。 | +| 06 | 2016 | LayerNorm | Norm | 单样本内按特征归一化。 | +| 07 | 2016 | Output Embedding | 表示 | 输出 classifier 也是 embedding,可与输入表共享。 | +| 08 | 2016 | Tying Word Vectors | 表示 | 从 loss framework 推导 weight tying。 | +| 09 | 2016 | GELU | FFN | 平滑、输入相关的激活。 | +| 10 | 2016 | GLU | FFN | 内容分支乘 sigmoid gate。 | +| 11 | 2017 | Transformer | 位置/深度 | sinusoid + Post-LN residual 的原始组合。 | +| 12 | 2017 | Swish | FFN | `x·sigmoid(βx)` 的平滑非单调激活。 | +| 13 | 2018 | SentencePiece | Token | 从原始句子训练语言无关子词模型。 | +| 14 | 2018 | ELMo | 上下文化 | occurrence 表示来自深双向 LM 内部状态。 | +| 15 | 2018 | Relative Position | 位置 | 相对距离进入 self-attention。 | +| 16 | 2018 | BERT | 上下文化 | 深双向 Transformer 表示成为迁移接口。 | +| 17 | 2019 | Transformer-XL | 位置 | segment recurrence 与相对位置。 | +| 18 | 2019 | Fixup | 深度 | 用初始化而非 Norm 控制 residual 更新。 | +| 19 | 2019 | RMSNorm | Norm | 去 re-centering,只按 RMS 缩放。 | +| 20 | 2019 | T5 | 位置 | bucketed relative position bias。 | +| 21 | 2019 | ScaleNorm / FixNorm | Norm | 以固定范数和单一 scale 简化归一化。 | +| 22 | 2020 | Pre-LN analysis | 拓扑 | Norm 位置改变初始化梯度与 warm-up。 | +| 23 | 2020 | GLU Variants | FFN | GEGLU / SwiGLU 进入 Transformer FFN。 | +| 24 | 2020 | ReZero | 深度 | 零初始化 residual gate,从 identity 开始。 | +| 25 | 2020 | Admin | 深度 | 控制 residual 对参数扰动的放大。 | +| 26 | 2020 | QK-Norm | Norm | 限制 Q/K 匹配尺度和 softmax 饱和。 | +| 27 | 2020 | FFN as Memories | 表示 | FFN 方向关联输入模式与词表。 | +| 28 | 2021 | RoPE | 位置 | 绝对旋转形成相对点积。 | +| 29 | 2021 | ALiBi | 位置 | attention logit 加距离惩罚。 | +| 30 | 2021 | NormFormer | Norm | 在 Pre-LN 内补充归一化和平衡梯度。 | +| 31 | 2021 | Primer | FFN | squared ReLU 与 depthwise QKV conv。 | +| 32 | 2021 | ByT5 | Token | token-free byte-to-byte 预训练。 | +| 33 | 2021 | CANINE | Token | 无显式 tokenizer 的字符级 encoder。 | +| 34 | 2021 | Charformer | Token | 学习软子词块。 | +| 35 | 2022 | DeepNet | 深度 | DeepNorm 与初始化堆至 1,000 层。 | +| 36 | 2022 | xPos | 位置 | attention resolution 与长度外推。 | +| 37 | 2023 | LLaMA | 现代配方 | RMSNorm + SwiGLU + RoPE。 | +| 38 | 2023 | NoPE length study | 位置 | 在特定推理任务比较五类位置方案。 | +| 39 | 2023 | Position Interpolation | 位置 | 把新位置压回训练过的范围。 | +| 40 | 2023 | YaRN | 位置 | 频率分区、温度与高效扩窗。 | +| 41 | 2023 | FIRE | 位置 | 可学习相对位置函数与渐进插值。 | +| 42 | 2024 | LongRoPE | 位置 | 搜索非均匀插值并渐进扩展。 | +| 43 | 2024 | DeepSeek LLM | DeepSeek | Pre-Norm RMSNorm、SwiGLU、RoPE。 | +| 44 | 2024 | DeepSeek-V2 | DeepSeek | MLA 用 decoupled RoPE。 | +| 45 | 2024 | DeepSeek-V3 | DeepSeek | latent Norm 与现代 MoE 配方。 | +| 46 | 2024 | Hyper-Connections | 深度 | 扩宽 residual stream、学习层间映射。 | +| 47 | 2024 | nGPT | Norm/表示 | 表示与权重在 hypersphere 上学习。 | +| 48 | 2024 | Byte Latent Transformer | Token | 以 entropy 动态组成 byte patches。 | +| 49 | 2025 | Kimi Linear | Kimi | KDA 隐式位置 + MLA NoPE。 | +| 50 | 2025 | DeepSeek-V3.2 | DeepSeek | 稀疏注意力继续协同位置路径。 | +| 51 | 2025 | mHC | DeepSeek | 用流形约束 HC 稳定性。 | +| 52 | 2026 | Attention Residuals | Kimi | 在深度维选择先前层/块。 | +| 53 | 2026 | DeepSeek-V4 | DeepSeek | mHC + partial RoPE + Q/KV Norm + clamp。 | +| 54 | 2026 | Kimi K3 | Kimi | NoPE hybrid + Block AttnRes + SiTU-GLU。 | +| 55 | 2018 | GPT-1 | 上下文化 | causal decoder 状态成为迁移表示。 | +| 56 | 2019 | BERT pipeline analysis | 表示 | 不同层呈现不同语言信息探针。 | +| 57 | 2019 | Contextual Representations | 表示 | 线性 probe 做分层语言知识分析。 | +| 58 | 2020 | DeBERTa | 位置 | 内容与位置向量解耦进 attention。 | +| 59 | 2022 | PaLM | FFN | 大规模 decoder 采用 SwiGLU。 | +| 60 | 2022 | OPT | 深度 | Pre-LN decoder 的公开复现坐标。 | +| 61 | 2023 | LLaMA 2 | 现代配方 | 延续 RoPE/RMSNorm/SwiGLU。 | +| 62 | 2023 | OLMo studies | 稳定 | QK-Norm 等规模稳定性证据。 | +| 63 | 2024 | Gemma 2 | Norm | pre/post Norm 与 logit soft-cap。 | +| 64 | 2024 | Massive Activations | 极值 | LLM 隐状态异常大激活的系统观察。 | +| 65 | 2025 | Kimi K2 | Kimi | MLA、RMSNorm 与 MuonClip 的前代。 | +| 66 | 2026 | Stable LatentMoE | Kimi | K3 把 Norm 和有界 GLU 放入专家路径。 | + +## 12. 写作与证据禁区 + +1. 不把 toy simulator 曲线写成真实模型的 loss / gradient 预测。 +2. 不把 probing 可读模式写成因果、唯一、稳定的 neuron 功能。 +3. 不把“理论上可表示位置”写成“SGD 一定学到位置”。 +4. 不把短→长 perplexity 外推等同于 1M retrieval 或 Agent 长轨迹。 +5. 不把 RMSNorm、QK-Norm、latent Norm 视为同一插槽。 +6. 不把 mHC 和 AttnRes 排成单一优劣榜。 +7. 不把 V4 clamping 的经验结论写成一般定理。 +8. 不把 SiTU 的函数上界直接等同于整个网络 activation / loss 有界。 +9. 不把 K3 的 1M 上下文单因归给 NoPE。 +10. DeepSeek/Kimi 的效率、质量和稳定性数字全部保留作者自报、模型、训练与基线边界。 diff --git a/research/sources/README.md b/research/sources/README.md index 1f783fa..62c51b9 100644 --- a/research/sources/README.md +++ b/research/sources/README.md @@ -80,3 +80,15 @@ DeepSeek-VL/VL2、Janus、OCR 三分支,Kimi 三代 MoonViT、十六张问题 未影响文本核验。二十二张测量账、80 节点阅读链、DeepSeek/K3 协议谱系、四实验合同与证据边界见 `../EVALUATION_SAFETY_RESEARCH.md`。Grok Headless 仅生成教学问题和候选线索,永久隔离在 `../EVALUATION_SAFETY_GROK_LEADS.md`,不能作为正式事实来源。 + +表示、位置与残差首轮缓存位于 `representation/`(不提交 PDF/TXT/XML): + +- 表示与 token:output embedding / weight tying、ELMo、FFN memories 与 Byte Latent Transformer; +- 位置与外推:RoPE、ALiBi、xPos、NoPE study、Position Interpolation、YaRN、FIRE 与 LongRoPE; +- 归一化与深度:LayerNorm、RMSNorm、Pre-LN、Fixup、ReZero、Admin、QK-Norm、NormFormer、DeepNet 与 nGPT; +- 深度路由与激活:Hyper-Connections、mHC、Attention Residuals、GLU / SwiGLU; +- DeepSeek-V2/V3/V4 与 Kimi Linear/K3 复用 `long-context/`、`moe/`、`numerics/` 和 `kimi-k3/` 的官方报告缓存。 + +二十张问题账、66 节点阅读链、DeepSeek / Kimi 对照、公式边界与四实验合同见 +`../REPRESENTATION_RESEARCH.md`。Grok Headless 只扩展候选召回,未核验线索永久隔离在 +`../REPRESENTATION_GROK_LEADS.md`,不得直接作为正文证据。 diff --git a/scripts/check-agents-browser.mjs b/scripts/check-agents-browser.mjs index 8b3b785..565cfe6 100644 --- a/scripts/check-agents-browser.mjs +++ b/scripts/check-agents-browser.mjs @@ -217,7 +217,7 @@ if (!overview.title.includes("可靠行动")) failures.push("章节标题异常" if (overview.sections !== 28 || overview.tocLinks !== 28) failures.push("章节/目录数量异常"); if (overview.paperLinks !== 52) failures.push("正式论文链不是 52 个节点"); if (overview.labTabs !== 4 || overview.labPanels !== 4) failures.push("四联实验结构异常"); -if (overview.navLinks !== 19 || home.navLinks !== 19 || mobile.mobileLinks !== 19) failures.push("全站导航未同步评测专题"); +if (overview.navLinks !== 20 || home.navLinks !== 20 || mobile.mobileLinks !== 20) failures.push("全站导航未同步评测专题"); if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在横向溢出"); if (loop.initial.finalState !== "UNVERIFIED" || loop.directSchema.finalState !== "FAILED") failures.push("控制循环终局状态异常"); if (!loop.directSchema.observation.includes("ERROR schema") || loop.directSchema.recovery !== "FRAGILE") failures.push("Direct/schema 故障传播异常"); @@ -228,8 +228,8 @@ 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 !== 14 || !home.firstRelease.includes("榜单不是体检单") || home.firstHref !== "/evaluation/") failures.push("首页评测首发入口异常"); -if (home.paperCount !== "450" || papers.total !== 450 || !papers.hasAgentFilter || papers.agentVisible < 52) failures.push("论文库 Agent 标签或论文总数异常"); +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state") || home.firstHref !== "/architecture/representation/") failures.push("首页评测首发入口异常"); +if (home.paperCount !== "480" || papers.total !== 480 || !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 ba2aa9f..1d02202 100644 --- a/scripts/check-alignment-browser.mjs +++ b/scripts/check-alignment-browser.mjs @@ -216,7 +216,7 @@ if (!overview.title.includes("真正与人协作")) failures.push("章节标题 if (overview.sections !== 22 || overview.tocLinks !== 22) failures.push("章节/目录数量异常"); if (overview.paperLinks !== 44) failures.push("正式论文链不是 44 个节点"); if (overview.labTabs !== 4 || overview.labPanels !== 4) failures.push("四联实验结构异常"); -if (overview.navLinks !== 19 || home.navLinks !== 19 || mobile.mobileLinks !== 19) failures.push("全站导航未同步评测专题"); +if (overview.navLinks !== 20 || home.navLinks !== 20 || mobile.mobileLinks !== 20) failures.push("全站导航未同步评测专题"); if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在横向溢出"); if (sft.initial.active !== "6 / 10" || !sft.initial.lossStates.slice(0, 4).every((value) => value === "MASKED")) failures.push("SFT response-only mask 异常"); if (sft.unsafeAll.active !== "10 / 10" || numeric(sft.unsafeAll.nll) <= numeric(sft.initial.nll) || !sft.unsafeAll.reading.includes("错误")) failures.push("SFT 全序列/坏示范交互异常"); @@ -226,8 +226,8 @@ 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 !== 14 || !home.firstRelease.includes("榜单不是体检单") || home.firstHref !== "/evaluation/") failures.push("首页评测首发入口异常"); -if (home.paperCount !== "450" || papers.total !== 450 || !papers.hasAlignmentFilter || papers.alignmentVisible < 35) failures.push("论文库后训练标签或论文总数异常"); +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state") || home.firstHref !== "/architecture/representation/") failures.push("首页评测首发入口异常"); +if (home.paperCount !== "480" || papers.total !== 480 || !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 0762487..e240093 100644 --- a/scripts/check-data-browser.mjs +++ b/scripts/check-data-browser.mjs @@ -230,15 +230,15 @@ if (transform.keyboard.selected !== "transform" || transform.keyboard.visible != if (layout.articleSections !== 18 || layout.paperLinks !== 31 || layout.labTabs !== 4 || layout.views !== 4) { failures.push("章节、论文或实验数量异常"); } -if (layout.navLinks !== 19 || mobile.mobileLinks !== 19 || home.navLinks !== 19) failures.push("全站导航未同步评测专题"); +if (layout.navLinks !== 20 || mobile.mobileLinks !== 20 || home.navLinks !== 20) failures.push("全站导航未同步评测专题"); 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 !== 14 || !home.firstRelease.includes("榜单不是体检单") || home.firstHref !== "/evaluation/") { +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state") || home.firstHref !== "/architecture/representation/") { failures.push("首页 Transformer 新章入口异常"); } -if (home.paperCount !== "450") failures.push(`首页论文总数异常:${home.paperCount}`); -if (!papers.hasDataFilter || papers.total !== 450 || papers.visible < 25) failures.push("论文库数据标签或论文总数异常"); +if (home.paperCount !== "480") failures.push(`首页论文总数异常:${home.paperCount}`); +if (!papers.hasDataFilter || papers.total !== 480 || papers.visible < 25) failures.push("论文库数据标签或论文总数异常"); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-evaluation-browser.mjs b/scripts/check-evaluation-browser.mjs index f547f6d..8b102a4 100644 --- a/scripts/check-evaluation-browser.mjs +++ b/scripts/check-evaluation-browser.mjs @@ -263,7 +263,7 @@ if (overview.sections !== 33 || overview.tocLinks !== 33) failures.push("章节 if (overview.paperLinks !== 80) failures.push("正式论文链不是 80 个节点"); if (overview.ledgers !== 22) failures.push("二十二张评测账结构异常"); if (overview.labTabs !== 4 || overview.labPanels !== 4) failures.push("四联实验结构异常"); -if (overview.navLinks !== 19 || home.navLinks !== 19 || mobile.mobileLinks !== 19 || overview.activeNav !== "评测安全") failures.push("全站导航未同步评测专题"); +if (overview.navLinks !== 20 || home.navLinks !== 20 || mobile.mobileLinks !== 20 || overview.activeNav !== "评测安全") failures.push("全站导航未同步评测专题"); if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在文档级横向溢出"); if (metric.initial.visible !== "metric" || numeric(metric.initial.one) !== 80 || numeric(metric.initial.atLeast) !== 80 || numeric(metric.initial.all) !== 80) failures.push("指标实验初始值异常"); if (numeric(metric.search.atLeast) <= 99 || numeric(metric.search.all) >= 30 || !metric.search.explain.includes("搜索")) failures.push("pass@k / pass^k 方向没有分开"); @@ -277,8 +277,8 @@ 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 !== 14 || !home.firstRelease.includes("榜单不是体检单") || home.firstHref !== "/evaluation/") failures.push("首页评测首发入口异常"); -if (home.paperCount !== "450" || home.topicCount !== "17" || papers.total !== 450 || !papers.hasFilter || papers.visible < 80) failures.push("首页 / 论文库评测索引异常"); +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state") || home.firstHref !== "/architecture/representation/") failures.push("首页评测首发入口异常"); +if (home.paperCount !== "480" || home.topicCount !== "17" || papers.total !== 480 || !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)}`); if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); diff --git a/scripts/check-inference-serving-browser.mjs b/scripts/check-inference-serving-browser.mjs index 9ccde46..9447469 100644 --- a/scripts/check-inference-serving-browser.mjs +++ b/scripts/check-inference-serving-browser.mjs @@ -251,7 +251,7 @@ if (overview.sections !== 31 || overview.tocLinks !== 31) failures.push("章节/ if (overview.paperLinks !== 62) failures.push("正式论文链不是 62 个节点"); if (overview.ledgers !== 18) failures.push("十八本服务账结构异常"); if (overview.labTabs !== 4 || overview.labPanels !== 4) failures.push("四联实验结构异常"); -if (overview.navLinks !== 19 || home.navLinks !== 19 || mobile.mobileLinks !== 19) failures.push("全站导航未同步评测专题"); +if (overview.navLinks !== 20 || home.navLinks !== 20 || mobile.mobileLinks !== 20) failures.push("全站导航未同步评测专题"); if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在横向溢出"); if (!memory.initial.weight.includes("32.6") || !memory.initial.perToken.includes("128") || memory.initial.visible !== "memory") failures.push("GQA 默认显存账异常"); if (!memory.exploded.status.includes("OOM") || !memory.exploded.fit.includes("over")) failures.push("极端 MHA 配置没有触发 OOM"); @@ -264,8 +264,8 @@ 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 !== 14 || !home.firstRelease.includes("榜单不是体检单") || home.firstHref !== "/evaluation/") failures.push("首页评测首发入口异常"); -if (home.paperCount !== "450" || papers.total !== 450 || !papers.hasFilter || papers.visible !== 45) failures.push("论文库推理服务标签或总数异常"); +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state") || home.firstHref !== "/architecture/representation/") failures.push("首页评测首发入口异常"); +if (home.paperCount !== "480" || papers.total !== 480 || !papers.hasFilter || papers.visible !== 45) failures.push("论文库推理服务标签或总数异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (mobile.offenders.length) failures.push(`移动端越界元素:${JSON.stringify(mobile.offenders)}`); if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); diff --git a/scripts/check-moe-browser.mjs b/scripts/check-moe-browser.mjs index d630d69..87abb20 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 !== 14) failures.push(`首页新章卡数量异常:${home.releaseCards}`); +if (home.releaseCards !== 15) 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 5d537f6..a0e62c5 100644 --- a/scripts/check-multimodal-browser.mjs +++ b/scripts/check-multimodal-browser.mjs @@ -234,7 +234,7 @@ if (!overview.title.includes("第一类输入")) failures.push("章节标题异 if (overview.sections !== 30 || overview.tocLinks !== 30) failures.push("章节/目录数量异常"); if (overview.paperLinks !== 55) failures.push("正式论文链不是 55 个节点"); if (overview.labTabs !== 4 || overview.labPanels !== 4) failures.push("四联实验结构异常"); -if (overview.navLinks !== 19 || home.navLinks !== 19 || mobile.mobileLinks !== 19) failures.push("全站导航未同步评测专题"); +if (overview.navLinks !== 20 || home.navLinks !== 20 || mobile.mobileLinks !== 20) failures.push("全站导航未同步评测专题"); if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在横向溢出"); if (numeric(tokens.initial.patches) !== 5476 || numeric(tokens.initial.visual) !== 1369 || tokens.initial.visiblePanel !== "tokens") failures.push("视觉 Token 初始计算异常"); if (!tokens.overloaded.status.includes("超预算") || numeric(tokens.overloaded.share) <= 100) failures.push("超大视频没有触发上下文超预算"); @@ -246,8 +246,8 @@ 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 !== 14 || !home.firstRelease.includes("榜单不是体检单") || home.firstHref !== "/evaluation/") failures.push("首页评测首发入口异常"); -if (home.paperCount !== "450" || papers.total !== 450 || !papers.hasFilter || papers.multimodalVisible < 59) failures.push("论文库多模态标签或总数异常"); +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state") || home.firstHref !== "/architecture/representation/") failures.push("首页评测首发入口异常"); +if (home.paperCount !== "480" || papers.total !== 480 || !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)}`); if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); diff --git a/scripts/check-numerics-browser.mjs b/scripts/check-numerics-browser.mjs index 8b8d56e..692f919 100644 --- a/scripts/check-numerics-browser.mjs +++ b/scripts/check-numerics-browser.mjs @@ -273,15 +273,15 @@ if (stability.keyboard.selected !== "stability" || stability.keyboard.visible != if (layout.articleSections !== 19 || layout.paperLinks !== 36 || layout.labTabs !== 4 || layout.views !== 4) { failures.push("章节、论文或实验数量异常"); } -if (layout.navLinks !== 19 || mobile.mobileLinks !== 19 || home.navLinks !== 19) failures.push("全站导航未同步评测专题"); +if (layout.navLinks !== 20 || mobile.mobileLinks !== 20 || home.navLinks !== 20) failures.push("全站导航未同步评测专题"); 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 !== 14 || !home.firstRelease.includes("榜单不是体检单") || home.firstHref !== "/evaluation/") { +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state") || home.firstHref !== "/architecture/representation/") { failures.push("首页 Transformer 新章入口异常"); } -if (home.paperCount !== "450") failures.push(`首页论文总数异常:${home.paperCount}`); -if (!papers.hasOptimizerFilter || papers.total !== 450 || papers.visible < 8) failures.push("论文库优化器标签或论文总数异常"); +if (home.paperCount !== "480") failures.push(`首页论文总数异常:${home.paperCount}`); +if (!papers.hasOptimizerFilter || papers.total !== 480 || papers.visible < 8) failures.push("论文库优化器标签或论文总数异常"); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-reasoning-browser.mjs b/scripts/check-reasoning-browser.mjs index f19ac42..2898751 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 !== 14 || !home.firstRelease.includes("榜单不是体检单")) failures.push("首页评测新章入口异常"); +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state")) 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 new file mode 100644 index 0000000..762fca0 --- /dev/null +++ b/scripts/check-representation-browser.mjs @@ -0,0 +1,304 @@ +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 < 70; attempt += 1) { + await pause(100); + if (await evaluate("document.readyState === 'complete'")) return; + } + throw new Error(`${path} 加载超时`); +}; +const screenshot = async (path) => { + const result = await command("Page.captureScreenshot", { format: "png", captureBeyondViewport: false }); + 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("/architecture/representation/"); +await screenshot("/tmp/llm-atlas-representation-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, + paperLinks: document.querySelectorAll(".paper-chain a").length, + ledgers: document.querySelectorAll(".rep-ledgers > article").length, + labTabs: document.querySelectorAll("[data-rep-tab]").length, + labPanels: document.querySelectorAll("[data-rep-panel]").length, + navLinks: document.querySelectorAll(".top-nav a").length, + activeNav: document.querySelector('.top-nav a[aria-current="page"]')?.textContent.trim(), + documentOverflow: document.documentElement.scrollWidth - document.documentElement.clientWidth, +}))()`); + +const token = await evaluate(`(() => { + const root = document.querySelector("[data-representation-lab]"); + const read = () => ({ + visible: root.querySelector("[data-rep-panel]:not([hidden])").dataset.repPanel, + steps: root.querySelector("[data-token-steps]").textContent.trim(), + embedding: root.querySelector("[data-embedding-params]").textContent.trim(), + io: root.querySelector("[data-io-params]").textContent.trim(), + memory: root.querySelector("[data-embedding-memory]").textContent.trim(), + vector: root.querySelector("[data-context-vector]").textContent.trim(), + shift: root.querySelector("[data-vector-shift]").textContent.trim(), + explain: root.querySelector("[data-vector-explain]").textContent.trim(), + boundary: root.querySelector("[data-token-boundary]").textContent.trim(), + }); + const initial = read(); + const unit = root.querySelector("[data-token-unit]"); + unit.value = "byte"; + unit.dispatchEvent(new Event("input", { bubbles: true })); + const tying = root.querySelector("[data-weight-tying]"); + tying.checked = false; + tying.dispatchEvent(new Event("input", { bubbles: true })); + const context = root.querySelector("[data-context]"); + context.value = "finance"; + context.dispatchEvent(new Event("input", { bubbles: true })); + const changed = read(); + return { initial, changed }; +})()`); + +const position = await evaluate(`(() => { + const root = document.querySelector("[data-representation-lab]"); + root.querySelector('[data-rep-tab="position"]').click(); + const read = () => ({ + visible: root.querySelector("[data-rep-panel]:not([hidden])").dataset.repPanel, + regime: root.querySelector("[data-position-regime]").textContent.trim(), + term: root.querySelector("[data-explicit-term]").textContent.trim(), + mode: root.querySelector("[data-position-mode]").textContent.trim(), + equation: root.querySelector("[data-position-equation]").textContent.trim(), + score: root.querySelector("[data-position-score]").textContent.trim(), + explain: root.querySelector("[data-position-explain]").textContent.trim(), + boundary: root.querySelector("[data-position-boundary]").textContent.trim(), + }); + const initial = read(); + const key = root.querySelector("[data-key-position]"); + const train = root.querySelector("[data-train-window]"); + train.value = "64"; + train.dispatchEvent(new Event("input", { bubbles: true })); + key.value = "192"; + key.dispatchEvent(new Event("input", { bubbles: true })); + const ropeOutside = read(); + root.querySelector('[data-position-scheme="alibi"]').click(); + const alibi = read(); + root.querySelector('[data-position-scheme="nope"]').click(); + const nope = read(); + return { initial, ropeOutside, alibi, nope }; +})()`); + +const norm = await evaluate(`(() => { + const root = document.querySelector("[data-representation-lab]"); + root.querySelector('[data-rep-tab="norm"]').click(); + const read = () => ({ + visible: root.querySelector("[data-rep-panel]:not([hidden])").dataset.repPanel, + rms: root.querySelector("[data-final-rms]").textContent.trim(), + identity: root.querySelector("[data-identity-gain]").textContent.trim(), + peak: root.querySelector("[data-softmax-peak]").textContent.trim(), + target: root.querySelector("[data-norm-target]").textContent.trim(), + equation: root.querySelector("[data-norm-equation]").textContent.trim(), + boundary: root.querySelector("[data-norm-boundary]").textContent.trim(), + }); + const initial = read(); + const depth = root.querySelector("[data-depth]"); + const logits = root.querySelector("[data-logit-scale]"); + depth.value = "192"; + depth.dispatchEvent(new Event("input", { bubbles: true })); + logits.value = "160"; + logits.dispatchEvent(new Event("input", { bubbles: true })); + const unbounded = read(); + root.querySelector('[data-norm-topology="qk"]').click(); + const qk = read(); + root.querySelector('[data-norm-topology="post"]').click(); + const post = read(); + return { initial, unbounded, qk, post }; +})()`); + +const residual = await evaluate(`(() => { + const root = document.querySelector("[data-representation-lab]"); + root.querySelector('[data-rep-tab="residual"]').click(); + const read = () => ({ + visible: root.querySelector("[data-rep-panel]:not([hidden])").dataset.repPanel, + route: root.querySelector("[data-route-name]").textContent.trim(), + states: root.querySelector("[data-live-states]").textContent.trim(), + choice: root.querySelector("[data-depth-choice]").textContent.trim(), + routeExplain: root.querySelector("[data-route-explain]").textContent.trim(), + activation: root.querySelector("[data-activation-name]").textContent.trim(), + max: root.querySelector("[data-activation-max]").textContent.trim(), + bound: root.querySelector("[data-activation-bound]").textContent.trim(), + activationExplain: root.querySelector("[data-activation-explain]").textContent.trim(), + }); + const initial = read(); + root.querySelector('[data-route="mhc"]').click(); + const mhc = read(); + root.querySelector('[data-route="attnres"]').click(); + const attnres = read(); + root.querySelector('[data-activation="clamp"]').click(); + const clamp = read(); + root.querySelector('[data-activation="situ"]').click(); + const situ = read(); + const firstTab = root.querySelector('[data-rep-tab="token"]'); + firstTab.focus(); + firstTab.dispatchEvent(new KeyboardEvent("keydown", { key: "ArrowRight", bubbles: true })); + return { + initial, + mhc, + attnres, + clamp, + situ, + keyboardSelected: root.querySelector('[data-rep-tab][aria-selected="true"]').dataset.repTab, + keyboardVisible: root.querySelector("[data-rep-panel]:not([hidden])").dataset.repPanel, + }; +})()`); + +await evaluate(`(() => { + document.querySelector("[data-representation-lab]").scrollIntoView({ block: "start", behavior: "instant" }); + window.scrollBy(0, -82); +})()`); +await pause(180); +await screenshot("/tmp/llm-atlas-representation-lab-desktop.png"); + +await navigate("/"); +const home = await evaluate(`(() => ({ + releaseCards: document.querySelectorAll(".release-card").length, + firstRelease: document.querySelector(".release-card h2").textContent.trim(), + firstHref: document.querySelector(".release-card").getAttribute("href"), + paperCount: document.querySelector(".hero-stats div:nth-child(3) b").textContent.trim(), + topicCount: document.querySelector(".hero-stats div:nth-child(1) b").textContent.trim(), + navLinks: document.querySelectorAll(".top-nav a").length, +}))()`); + +await navigate("/papers/"); +const papers = await evaluate(`(() => { + const button = [...document.querySelectorAll("[data-filter]")].find((node) => node.textContent.trim() === "表示"); + button?.click(); + return { + total: document.querySelectorAll("[data-paper]").length, + visible: document.querySelectorAll("[data-paper]:not([hidden])").length, + hasFilter: Boolean(button), + }; +})()`); + +await command("Emulation.setDeviceMetricsOverride", { + width: 390, + height: 844, + deviceScaleFactor: 1, + mobile: true, +}); +await navigate("/architecture/representation/"); +const mobile = await evaluate(`(() => { + const root = document.querySelector("[data-representation-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"), + mobileLinks: document.querySelectorAll("#mobile-nav a").length, + tabs: root.querySelectorAll("[data-rep-tab]").length, + offenders: [...document.querySelectorAll("body *")] + .filter((node) => !node.closest(".paper-chain, .rep-ledgers, .position-table")) + .filter((node) => node.getBoundingClientRect().right > document.documentElement.clientWidth + 1) + .slice(0, 12) + .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-representation-mobile.png"); + +const report = { overview, token, position, norm, residual, home, papers, mobile, exceptions }; +console.log(JSON.stringify(report, null, 2)); + +const numeric = (text) => Number.parseFloat(text.replaceAll(",", "")); +const failures = []; +if (!overview.title.includes("表示") || !overview.title.includes("残差")) failures.push("章节标题异常"); +if (overview.sections !== 29 || overview.tocLinks !== 29) failures.push("章节 / 目录数量异常"); +if (overview.paperLinks !== 66) failures.push("正式论文链不是 66 个节点"); +if (overview.ledgers !== 20) failures.push("二十张问题账结构异常"); +if (overview.labTabs !== 4 || overview.labPanels !== 4) failures.push("四联实验结构异常"); +if (overview.navLinks !== 20 || home.navLinks !== 20 || mobile.mobileLinks !== 20 || overview.activeNav !== "表示深度") failures.push("全站导航未同步表示专题"); +if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在文档级横向溢出"); +if (token.initial.visible !== "token" || numeric(token.initial.steps) !== 9 || !token.initial.memory.includes("GiB")) failures.push("Token 实验初始状态异常"); +if (numeric(token.changed.steps) <= numeric(token.initial.steps) || numeric(token.changed.io) <= numeric(token.initial.io) || !token.changed.explain.includes("金融")) failures.push("Byte / untie / context 操作没有改变表示账"); +if (position.initial.visible !== "position" || position.initial.regime !== "INTERPOLATION") failures.push("位置实验初始状态异常"); +if (position.ropeOutside.regime !== "EXTRAPOLATION" || !position.ropeOutside.boundary.includes("192")) failures.push("位置外推窗口没有被识别"); +if (!position.alibi.term.includes("bias") || !position.alibi.explain.includes("logit")) failures.push("ALiBi 机制展示异常"); +if (!position.nope.mode.includes("NO EXPLICIT") || !position.nope.explain.includes("隐式")) failures.push("NoPE 边界说明异常"); +if (norm.initial.visible !== "norm" || numeric(norm.unbounded.rms) <= numeric(norm.initial.rms)) failures.push("深度 / RMS 教学曲线异常"); +if (numeric(norm.qk.peak) >= numeric(norm.unbounded.peak) || !norm.qk.boundary.includes("QK-Norm")) failures.push("QK-Norm 没有压低 toy softmax 峰值"); +if (numeric(norm.post.rms) !== 1 || numeric(norm.post.identity) >= 1) failures.push("Post-LN 拓扑展示异常"); +if (residual.initial.visible !== "residual" || !residual.initial.route.includes("ATTENTION")) failures.push("Residual 实验初始状态异常"); +if (!residual.mhc.route.includes("MANIFOLD") || numeric(residual.mhc.states) !== 4 || !residual.mhc.routeExplain.includes("Birkhoff")) failures.push("mHC 教学状态异常"); +if (numeric(residual.attnres.states) !== 9 || !residual.attnres.routeExplain.includes("93")) failures.push("K3 Block AttnRes 来源数异常"); +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 !== 15 || !home.firstRelease.includes("hidden state") || home.firstHref !== "/architecture/representation/") failures.push("首页表示新章入口异常"); +if (home.paperCount !== "480" || home.topicCount !== "17" || papers.total !== 480 || !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)}`); +if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); + +if (failures.length) { + console.error(`\nFAIL\n- ${failures.join("\n- ")}`); + process.exitCode = 1; +} else { + console.log("\nPASS representation browser regression"); +} + +socket.close(); diff --git a/scripts/check-scaling-browser.mjs b/scripts/check-scaling-browser.mjs index e1e862b..b7e0d60 100644 --- a/scripts/check-scaling-browser.mjs +++ b/scripts/check-scaling-browser.mjs @@ -269,14 +269,14 @@ if (emergence.paths.some((length) => length < 500)) failures.push("涌现多指 if (layout.articleSections !== 16 || layout.paperLinks !== 29 || layout.labTabs !== 4 || layout.views !== 4) { failures.push("章节、论文或实验数量异常"); } -if (layout.navLinks !== 19 || mobile.mobileLinks !== 19 || home.navLinks !== 19) failures.push("全站导航未同步评测专题"); +if (layout.navLinks !== 20 || mobile.mobileLinks !== 20 || home.navLinks !== 20) failures.push("全站导航未同步评测专题"); 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 !== 14 || !home.firstRelease.includes("榜单不是体检单") || home.firstHref !== "/evaluation/") { +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state") || home.firstHref !== "/architecture/representation/") { failures.push("首页 Transformer 新章入口异常"); } -if (home.paperCount !== "450") failures.push(`首页论文总数异常:${home.paperCount}`); +if (home.paperCount !== "480") failures.push(`首页论文总数异常:${home.paperCount}`); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-training-systems-browser.mjs b/scripts/check-training-systems-browser.mjs index 22f7873..4e9ebb6 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 !== 14 || !home.firstRelease.includes("榜单不是体检单")) failures.push("首页评测新章入口异常"); +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state")) 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 ed1ac0e..0853f67 100644 --- a/scripts/check-transformer-browser.mjs +++ b/scripts/check-transformer-browser.mjs @@ -172,7 +172,7 @@ const home = await evaluate(`(() => ({ releaseCards: document.querySelectorAll(".release-card").length, firstRelease: document.querySelector(".release-card h2").textContent, firstHref: document.querySelector(".release-card").getAttribute("href"), - paperCount: [...document.querySelectorAll(".hero-stats b")].map((node) => node.textContent.trim()).find((value) => value === "450"), + paperCount: [...document.querySelectorAll(".hero-stats b")].map((node) => node.textContent.trim()).find((value) => value === "480"), }))()`); await navigate("/papers/"); @@ -236,8 +236,8 @@ 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 !== 14 || !home.firstRelease.includes("榜单不是体检单") || home.firstHref !== "/evaluation/") failures.push("首页评测首发入口异常"); -if (home.paperCount !== "450" || papers.total !== 450 || papers.transformerVisible < 30) failures.push("论文库或首页论文数量异常"); +if (home.releaseCards !== 15 || !home.firstRelease.includes("hidden state") || home.firstHref !== "/architecture/representation/") failures.push("首页评测首发入口异常"); +if (home.paperCount !== "480" || papers.total !== 480 || 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/RepresentationLab.astro b/src/components/RepresentationLab.astro new file mode 100644 index 0000000..0c71d0e --- /dev/null +++ b/src/components/RepresentationLab.astro @@ -0,0 +1,893 @@ +--- +const tokenPresets = { + word: ["我", "在", "河岸", "看见", "一座", "银行"], + subword: ["我", "在", "河", "岸", "看见", "一", "座", "银", "行"], + byte: ["E6", "88", "91", "E5", "9C", "A8", "E6", "B2", "B3", "…", "E8", "A1", "8C"], + patch: ["[我在]", "[河岸]", "[看见]", "[一座银行]"], +}; +--- + +
+
+
+

INTERACTIVE / REPRESENTATION WORKBENCH

+

沿四个坐标轴拆开一条 hidden state

+
+

+ 四台仪器只计算公开公式与明确标注的 toy model。它们帮助建立方向直觉,不是任何真实 tokenizer、 + checkpoint、训练 loss 或梯度的复跑。 +

+
+ +
+ + + + +
+ +
+
+
WORKBENCH 01 / REPRESENTATION

一个“词”进模型后,至少会经过五种身份

+

切换计算单位、词表和 weight tying,观察参数账;再让同一 token 进入两个上下文,看初始向量如何被改写。

+
+ +
+ + + + + +
+ +
+
RAW“我在河岸看见一座银行”字符串不是模型一步
+ +
SEGMENT9 tokens0.64 token / 字
+ +
LOOKUPID → E[id]固定的第 0 层向量
+ +
CONTEXThltoken随句子、位置、层而变
+ +
LOGITSWouth再成为词表分类分数
+
+ +
+ {tokenPresets.subword.map((token, index) => {index}{token})} +
+ +
+
SEQUENCE STEPS9

同一句话的教学计算步数

+
EMBEDDING PARAMS1.15B

`V × d`,不含位置和 block

+
INPUT + OUTPUT1.15B

共享时一张表;否则两张

+
BF16 FOOTPRINT2.14 GiB

只算 input / output matrix

+
+ +
+
+ SAME TOKEN / DIFFERENT STATE +
初始 embedding 不读上下文,hidden state 会
+

“行”在河岸语境中被教学变换到“行走/景物”方向;这不是任何真实模型的向量,也不宣称二维投影能容纳全部语义。

+
+
BASE E[id]
(0.24, 0.61)
+
CONTEXT hˡ
(−0.43, 0.78)
+
SHIFT
0.71
+
+
+ + + + + + + + E[id] + river hˡ + +
+ +
+ 先记住 +

Tokenizer 决定计算单位,embedding 只负责入口查表;真正的上下文化表示来自后续层的序列混合与 FFN。

+
+
+ + + + + + + +
+ 教学模拟 + 公式和机制来自已核验论文;二维向量、RMS 曲线、source scores 与采样范围由本站构造,目的是让变量关系可操作。 +
+
+ + + + diff --git a/src/components/SiteHeader.astro b/src/components/SiteHeader.astro index 1cd6730..0e7dbef 100644 --- a/src/components/SiteHeader.astro +++ b/src/components/SiteHeader.astro @@ -10,6 +10,7 @@ const items = [ { id: "k3", href: "/k3/", label: "K3 解剖" }, { id: "deepseek", href: "/deepseek/", label: "DeepSeek" }, { id: "foundations", href: "/foundations/language-models/", label: "基础原理" }, + { id: "representation", href: "/architecture/representation/", label: "表示深度" }, { id: "scaling", href: "/scaling/", label: "Scaling" }, { id: "data", href: "/pretraining/data/", label: "数据工程" }, { id: "moe", href: "/moe/", label: "MoE" }, diff --git a/src/data/chapters.ts b/src/data/chapters.ts index 24a6c52..00fb21e 100644 --- a/src/data/chapters.ts +++ b/src/data/chapters.ts @@ -60,12 +60,12 @@ export const chapters: Chapter[] = [ title: "表示、位置与残差高速公路", kicker: "REPRESENTATION", question: "模型如何知道词序,又如何让信息穿过上百层?", - summary: "从分词、位置编码、归一化与激活函数,走到深层网络的信息流和 Attention Residuals。", - status: "researching", - progress: 18, - papers: 16, + summary: "用二十张账与四联实验,从 Token/embedding、RoPE/NoPE、Norm 拓扑一路走到 DeepSeek mHC、K3 AttnRes 与 SiTU-GLU。", + status: "published", + progress: 81, + papers: 66, prerequisites: ["02"], - highlights: ["RoPE", "RMSNorm", "AttnRes"], + highlights: ["二十张表示账", "位置与深度四联实验", "DeepSeek / K3"], }, { number: "04", diff --git a/src/data/papers.ts b/src/data/papers.ts index 2ca449e..6b51484 100644 --- a/src/data/papers.ts +++ b/src/data/papers.ts @@ -1,5 +1,6 @@ export type PaperTopic = | "基础" + | "表示" | "Transformer" | "长上下文" | "MoE" @@ -3654,10 +3655,252 @@ export const papers: Paper[] = [ contribution: "从新近 GitHub issue 持续构建可执行软件任务,以版本化动态集降低仓库级代码评测污染。", verified: true, }, + { + year: 2015, + title: "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift", + url: "https://arxiv.org/abs/1502.03167", + topics: ["表示"], + contribution: "以 mini-batch 统计量归一化神经活动,是 LayerNorm 与后续尺度控制路线的重要前史。", + verified: true, + }, + { + year: 2016, + title: "Using the Output Embedding to Improve Language Models", + url: "https://arxiv.org/abs/1608.05859", + topics: ["表示", "基础"], + contribution: "指出语言模型输出权重矩阵也是有效 embedding,并推荐与输入 embedding 共享参数。", + verified: true, + }, + { + year: 2016, + title: "Tying Word Vectors and Word Classifiers: A Loss Framework for Language Modeling", + url: "https://arxiv.org/abs/1611.01462", + topics: ["表示", "基础"], + contribution: "从语言模型 loss framework 得到输入词向量与输出分类器权重共享,显著减少词表接口参数。", + verified: true, + }, + { + year: 2018, + title: "Deep contextualized word representations", + url: "https://arxiv.org/abs/1802.05365", + topics: ["表示", "基础"], + contribution: "ELMo 把词表示写成深双向语言模型内部状态的函数,让同一词的不同 occurrence 随上下文改变。", + verified: true, + }, + { + year: 2020, + title: "Transformer Feed-Forward Layers Are Key-Value Memories", + url: "https://arxiv.org/abs/2012.14913", + topics: ["表示", "Transformer"], + contribution: "分析 FFN 第一层方向与输入模式、第二层方向与输出词表分布的关联,揭示逐位置非线性中的模式记忆。", + verified: true, + }, + { + year: 2024, + title: "Byte Latent Transformer: Patches Scale Better Than Tokens", + url: "https://arxiv.org/abs/2412.09871", + topics: ["表示", "基础"], + contribution: "按 next-byte entropy 形成动态大小 patch,在不使用固定子词词表时按局部复杂度分配主干计算。", + verified: true, + }, + { + year: 2019, + title: "Fixup Initialization: Residual Learning Without Normalization", + url: "https://arxiv.org/abs/1901.09321", + topics: ["表示", "Transformer"], + contribution: "以 depth-aware 初始化控制 residual update,使极深残差网络无需归一化也能稳定优化。", + verified: true, + }, + { + year: 2019, + title: "Transformers without Tears: Improving the Normalization of Self-Attention", + url: "https://arxiv.org/abs/1910.05895", + topics: ["表示", "Transformer"], + contribution: "系统比较 PreNorm、ScaleNorm 与 FixNorm,展示归一化拓扑、尺度和 embedding 范数的不同作用。", + verified: true, + }, + { + year: 2020, + title: "ReZero is All You Need: Fast Convergence at Large Depth", + url: "https://arxiv.org/abs/2003.04887", + topics: ["表示", "Transformer"], + contribution: "给每条 residual branch 加零初始化 scalar gate,使初始网络近似 identity 并支持更深 Transformer。", + verified: true, + }, + { + year: 2020, + title: "Understanding the Difficulty of Training Transformers", + url: "https://arxiv.org/abs/2004.08249", + topics: ["表示", "Transformer", "训练系统"], + contribution: "把训练不稳连接到 residual branch 对参数扰动的放大效应,并提出 Admin 自适应初始化。", + verified: true, + }, + { + year: 2024, + title: "Hyper-Connections", + url: "https://arxiv.org/abs/2409.19606", + topics: ["表示", "Transformer"], + contribution: "扩宽 residual stream 并学习层输入、流间和层输出映射,为网络深度增加新的连接轴。", + verified: true, + }, + { + year: 2025, + title: "mHC: Manifold-Constrained Hyper-Connections", + url: "https://arxiv.org/abs/2512.24880", + topics: ["表示", "Transformer"], + contribution: "把 Hyper-Connections 的 residual mapping 投到特定流形,恢复 identity 性质并改善规模训练稳定性。", + spotlight: "DeepSeek", + verified: true, + }, + { + year: 2024, + title: "nGPT: Normalized Transformer with Representation Learning on the Hypersphere", + url: "https://arxiv.org/abs/2410.01131", + topics: ["表示", "Transformer"], + contribution: "把 embedding、hidden state 与主要权重向量归一化到 hypersphere,把层更新解释为球面位移。", + verified: true, + }, + { + year: 2016, + title: "Gaussian Error Linear Units (GELUs)", + url: "https://arxiv.org/abs/1606.08415", + topics: ["表示", "Transformer"], + contribution: "提出平滑的输入相关激活 xΦ(x),成为 BERT 等 Transformer FFN 的代表非线性。", + verified: true, + }, + { + year: 2017, + title: "Searching for Activation Functions", + url: "https://arxiv.org/abs/1710.05941", + topics: ["表示", "Transformer"], + contribution: "通过自动搜索得到 Swish / SiLU 形式 x·sigmoid(βx),成为 SwiGLU gate 的直接函数前史。", + verified: true, + }, + { + year: 2021, + title: "Primer: Searching for Efficient Transformers for Language Modeling", + url: "https://arxiv.org/abs/2109.08668", + topics: ["表示", "Transformer"], + contribution: "在低层算子空间搜索 Transformer,主要收益归于 squared ReLU 与 Q/K/V 后的 depthwise convolution。", + verified: true, + }, + { + year: 2021, + title: "ByT5: Towards a Token-Free Future with Pre-trained Byte-to-Byte Models", + url: "https://arxiv.org/abs/2105.13626", + topics: ["表示", "基础"], + contribution: "以 UTF-8 bytes 作为模型输入输出单位,系统研究去除固定子词词表的质量与计算折中。", + verified: true, + }, + { + year: 2021, + title: "CANINE: Pre-training an Efficient Tokenization-Free Encoder for Language Representation", + url: "https://arxiv.org/abs/2103.06874", + topics: ["表示", "基础"], + contribution: "以字符级输入、下采样和深 Transformer 构建不依赖显式 tokenizer 的预训练 encoder。", + verified: true, + }, + { + year: 2021, + title: "Charformer: Fast Character Transformers via Gradient-based Subword Tokenization", + url: "https://arxiv.org/abs/2106.12672", + topics: ["表示", "基础"], + contribution: "用可学习的软子词块在字符输入上选择局部组合,探索模型内部自适应 token 边界。", + verified: true, + }, + { + year: 2022, + title: "A Length-Extrapolatable Transformer", + url: "https://arxiv.org/abs/2212.10554", + topics: ["表示", "长上下文"], + contribution: "提出 attention resolution 指标与 xPos 等设计,面向训练短、测试长的位置外推。", + verified: true, + }, + { + year: 2023, + title: "The Impact of Positional Encoding on Length Generalization in Transformers", + url: "https://arxiv.org/abs/2305.19466", + topics: ["表示", "长上下文"], + contribution: "在特定 decoder-only 推理任务系统比较 APE、T5 RPE、ALiBi、RoPE 与 NoPE,并分析 NoPE 的隐式位置模式。", + verified: true, + }, + { + year: 2023, + title: "Functional Interpolation for Relative Positions Improves Long Context Transformers", + url: "https://arxiv.org/abs/2310.04418", + topics: ["表示", "长上下文"], + contribution: "FIRE 以可学习函数表达相对位置并渐进插值,覆盖多种既有 relative bias 形式。", + verified: true, + }, + { + year: 2024, + title: "LongRoPE: Extending LLM Context Window Beyond 2 Million Tokens", + url: "https://arxiv.org/abs/2402.13753", + topics: ["表示", "长上下文"], + contribution: "搜索 RoPE 维度与位置的非均匀插值,并以渐进扩展与短窗恢复延长论文模型上下文。", + verified: true, + }, + { + year: 2020, + title: "DeBERTa: Decoding-enhanced BERT with Disentangled Attention", + url: "https://arxiv.org/abs/2006.03654", + topics: ["表示", "Transformer"], + contribution: "在 attention 中分离内容与相对位置向量,并在解码侧增强绝对位置。", + verified: true, + }, + { + year: 2019, + title: "BERT Rediscovers the Classical NLP Pipeline", + url: "https://arxiv.org/abs/1905.05950", + topics: ["表示", "评测"], + contribution: "用 edge probing 观察 BERT 不同层中句法与语义信息的可提取性,建立分层表示分析坐标。", + verified: true, + }, + { + year: 2019, + title: "Linguistic Knowledge and Transferability of Contextual Representations", + url: "https://arxiv.org/abs/1903.08855", + topics: ["表示", "评测"], + contribution: "跨 ELMo、GPT 与 BERT 的层级线性 probing 比较多类语言知识与迁移特性。", + verified: true, + }, + { + year: 2024, + title: "Gemma 2: Improving Open Language Models at a Practical Size", + url: "https://arxiv.org/abs/2408.00118", + topics: ["表示", "Transformer"], + contribution: "组合 local/global attention、pre/post normalization 与 logit soft-capping,展示现代尺度控制配方。", + verified: true, + }, + { + year: 2024, + title: "Massive Activations in Large Language Models", + url: "https://arxiv.org/abs/2402.17762", + topics: ["表示", "低精度"], + contribution: "系统观察 LLM 少数 hidden dimensions 中极端大的激活,并分析其跨层、跨 token 行为。", + verified: true, + }, + { + year: 2022, + title: "PaLM: Scaling Language Modeling with Pathways", + url: "https://arxiv.org/abs/2204.02311", + topics: ["表示", "Scaling", "Transformer"], + contribution: "在大规模 decoder 中采用 SwiGLU、并行 block 等配方,推动门控 FFN 成为现代主线。", + verified: true, + }, + { + year: 2022, + title: "OPT: Open Pre-trained Transformer Language Models", + url: "https://arxiv.org/abs/2205.01068", + topics: ["表示", "Transformer"], + contribution: "公开 Pre-LN decoder 训练配置与模型族,为深度、归一化和复现提供对照。", + verified: true, + }, ]; export const paperTopics: PaperTopic[] = [ "基础", + "表示", "Transformer", "长上下文", "MoE", diff --git a/src/pages/architecture/representation/index.astro b/src/pages/architecture/representation/index.astro new file mode 100644 index 0000000..4b5e5b7 --- /dev/null +++ b/src/pages/architecture/representation/index.astro @@ -0,0 +1,873 @@ +--- +import BaseLayout from "@/layouts/BaseLayout.astro"; +import RepresentationLab from "@/components/RepresentationLab.astro"; + +const toc = [ + ["00", "compass", "先拆成二十张账"], + ["01", "objects", "五种“词向量”"], + ["02", "token-unit", "Token 是计算单位"], + ["03", "tying", "输入与输出能否共享"], + ["04", "contextual", "静态到上下文化"], + ["05", "ffn-memory", "FFN 也是表示系统"], + ["06", "history", "八次历史转向"], + ["07", "symmetry", "位置先打破什么对称"], + ["08", "absolute", "绝对位置"], + ["09", "relative", "相对位置"], + ["10", "rope", "RoPE 的二维几何"], + ["11", "extrapolation", "长度外推为何会坏"], + ["12", "nope", "NoPE 不等于无顺序"], + ["13", "deepseek-rope", "DeepSeek 位置谱系"], + ["14", "norm-object", "Norm 控制谁"], + ["15", "norm-topology", "Pre / Post 是拓扑"], + ["16", "deep-stack", "堆深的稳定谱系"], + ["17", "residual", "Residual 的成就与盲点"], + ["18", "hc", "Hyper-Connections"], + ["19", "mhc", "mHC 的流形约束"], + ["20", "attnres", "AttnRes 沿深度检索"], + ["21", "k3-block", "K3 的 9 个深度来源"], + ["22", "activation", "激活函数谱系"], + ["23", "outliers", "从 clamp 到 SiTU"], + ["24", "deepseek", "DeepSeek 重点复盘"], + ["25", "k3", "K3 四轴合流"], + ["26", "lab", "四联交互工作台"], + ["27", "audit", "读架构图的审计卡"], + ["↳", "papers", "66 个关键节点"], +]; + +const ledgers = [ + ["Q01 / UNIT", "单位账", "字符、byte、subword、token、patch 谁是模型一步?", "边界先决定序列长度、词表和计算密度。"], + ["Q02 / PARAM", "参数账", "词表变大,哪张矩阵跟着变?", "输入 embedding 和输出 head 常各含 V×d 参数。"], + ["Q03 / STATIC", "静态表示账", "同一个 token ID 是否永远同义?", "第 0 层查表固定,深层 hidden state 随上下文变化。"], + ["Q04 / CONTEXT", "上下文化账", "多义性在哪里被展开?", "序列混合与逐位置 FFN 反复改写每次 occurrence。"], + ["Q05 / OUTPUT", "输出几何账", "hidden state 怎样变成下一个 token?", "与输出向量点积成 logits,再经 softmax。"], + ["Q06 / SYMMETRY", "对称性账", "无位置 Attention 知道先后吗?", "裸算子排列等变;causal mask 只给有向可见性。"], + ["Q07 / ABSOLUTE", "绝对位置账", "“第 37 位”如何进入表示?", "位置向量可加到内容,但两者从入口便纠缠。"], + ["Q08 / RELATIVE", "相对位置账", "“相隔 3”如何进入匹配?", "距离表示或 bias 可直接改变位置对的 score。"], + ["Q09 / ROTATION", "旋转账", "RoPE 为什么要成对旋转维度?", "两次绝对旋转在 Q·K 中相消为相对旋转。"], + ["Q10 / LENGTH", "外推账", "公式能算更长,为何模型仍可能坏?", "新相位、距离、bias 与注意力分辨率可能越出训练分布。"], + ["Q11 / NOPE", "NoPE 账", "无显式位置是否等于无顺序?", "因果边界、递归衰减和内容统计都可能隐式带序。"], + ["Q12 / TARGET", "统计账", "LayerNorm、RMSNorm、QK-Norm在管谁?", "它们控制不同对象,不能互相替换名字。"], + ["Q13 / TOPOLOGY", "拓扑账", "Norm 在分支前还是相加后?", "位置改变 identity path、初始化梯度与深度动态。"], + ["Q14 / SCALE", "幅值账", "有 Residual 为何 state 仍会长大?", "固定单位累加没有自动控制总尺度。"], + ["Q15 / GRADIENT", "梯度账", "有捷径为何仍会训练不稳?", "可达性不等于各层更新和 attention logits 都平衡。"], + ["Q16 / DILUTION", "稀释账", "早期层为何会逐渐听不见?", "总和持续增长时,单层增量的相对份额下降。"], + ["Q17 / WIDTH", "拓宽账", "Residual stream 必须只有一条吗?", "HC 扩宽成多条流,学习跨层连接。"], + ["Q18 / SELECT", "选择账", "深度能否像序列一样 Attention?", "AttnRes 对历史层或块做内容相关 softmax。"], + ["Q19 / FFN", "FFN 账", "Attention 后为何还要大 MLP?", "前者跨位置搬运,后者逐位置做非线性加工。"], + ["Q20 / OUTLIER", "极值账", "乘法门控为何也会爆?", "SwiGLU 两支可无界;clamp 与 SiTU 以不同方式限幅。"], +]; + +const waves = [ + ["2003–13", "从 one-hot 到连续几何", "NPLM · word2vec", "相似上下文可共享统计,但一个词仍只有一个静态点。"], + ["2015–18", "开放词表与上下文化", "BPE · SentencePiece · ELMo · BERT", "先解决边界,再让每次出现拥有不同状态。"], + ["2015–17", "深层捷径与单样本归一化", "ResNet · LayerNorm · Transformer", "网络先能堆起来,固定累加的幅值问题随后出现。"], + ["2018–21", "把顺序写进 Attention", "Relative PE · Transformer-XL · RoPE · ALiBi", "从绝对入口向 pair-wise 距离与旋转几何转移。"], + ["2019–22", "稳定训练更深 Transformer", "RMSNorm · Pre-LN · ReZero · Admin · DeepNorm", "优化稳定、表示变化与最终质量并非同一目标。"], + ["2021–24", "跨出训练窗口", "xPos · NoPE · PI · YaRN · FIRE · LongRoPE", "位置外推变成独立问题,但不替代长程数据和检索。"], + ["2024–26", "重写 residual stream", "HC · nGPT · mHC · AttnRes", "一条固定总线变成多流映射或沿深度选择。"], + ["2024–26", "前沿模型协同设计", "DeepSeek-V2/V4 · Kimi Linear/K3", "位置、Norm、Residual 与激活开始按缓存、低精度和系统共同设计。"], +]; + +const representationObjects = [ + ["01", "TOKEN ID", "离散索引", "它只说“查哪一行”,没有距离、方向或概率。"], + ["02", "INPUT EMBEDDING", "E[id]", "同一 ID 的第 0 层查表结果;还没有读到句内上下文。"], + ["03", "HIDDEN STATE", "hᶫₜ", "同一 ID 在不同句子、位置和层中通常不同。"], + ["04", "OUTPUT VECTOR", "Wout[v]", "与最终 state 点积,扮演词表 classifier 的类别向量。"], + ["05", "PROBABILITY", "softmax(logits)", "整个上下文计算后的分布,不是某个向量独自携带的属性。"], +]; + +const positionRows = [ + ["Absolute add", "xₜ = eₜ + pₜ", "入口 state", "直接给绝对坐标;内容与位置从入口混合。"], + ["Relative repr.", "scoreᵢⱼ += qᵢᵀaᵢ₋ⱼ", "Q–K pair", "直接表达距离;可做 buckets 或截断。"], + ["RoPE", "qᵢᵀRⱼ₋ᵢkⱼ", "Q / K 旋转", "绝对角度进入向量,相对角度留在内积。"], + ["ALiBi", "scoreᵢⱼ − mₕ|i−j|", "attention logit", "不给 embedding 加位置,只施加 head-wise 近邻偏置。"], + ["NoPE", "explicit term = 0", "无显式插槽", "必须继续问 causal mask、递归状态和数据怎样提供顺序。"], +]; + +const normRows = [ + ["LayerNorm", "单 token 的全部特征", "去均值 + 除标准差", "re-centering + re-scaling"], + ["RMSNorm", "单 token 的全部特征", "只除 RMS", "re-scaling"], + ["QK-Norm", "每个 attention head 的 Q / K", "先归一化再学习温度", "防 logit 任意饱和"], + ["Latent Norm", "压缩后的 cKV / routed latent", "在低维状态上控制尺度", "不是 block PreNorm"], + ["AttnRes key Norm", "不同深度来源的 keys", "比较前先做 RMSNorm", "避免大幅值层靠尺度胜出"], +]; + +const deepStack = [ + ["2015", "ResNet", "identity shortcut", "先解决深网优化退化;没有给每层贡献可学习权重。"], + ["2019", "Fixup", "depth-scaled init", "用初始化控制初始 residual update,不依赖 Norm。"], + ["2019", "RMSNorm", "scale only", "去掉 re-centering,简化归一化。"], + ["2020", "Pre-LN analysis", "Norm before branch", "裸 identity path 改善初始化梯度,但会固定累加所有分支。"], + ["2020", "ReZero / Admin", "gate / adaptive init", "从近 identity 开始,或控制 residual 对参数扰动的放大。"], + ["2021", "NormFormer", "extra internal Norms", "修补 Pre-LN 深浅层梯度尺度不匹配。"], + ["2022", "DeepNorm", "scaled Post-LN", "用 residual scale 与初始化稳定到 1,000 层。"], + ["2024–26", "HC → mHC → AttnRes", "new depth topology", "从控制单位加法,走向多流连接或选择性深度读取。"], +]; + +const activationRows = [ + ["ReLU", "max(0,x)", "单支、分段线性", "正向无界;负半轴为零"], + ["GELU", "x Φ(x)", "单支、平滑", "正向无界;负向平滑衰减"], + ["GLU", "g ⊙ σ(u)", "内容 × 有界 gate", "内容支仍无界"], + ["SwiGLU", "Swish(g) ⊙ u", "两条可学习支相乘", "两个乘法因子都可无界"], + ["V4 clamp", "cap(Swish(g)) ⊙ clamp(u)", "硬限幅", "作者配方:linear [−10,10],gate 上界 10"], + ["K3 SiTU", "4tanh(g/4)σ(g) · 25tanh(u/25)", "平滑限幅", "逐点 |y| < 100"], +]; + +const deepseekRows = [ + ["DeepSeek LLM / 2024", "Pre-Norm RMSNorm · SwiGLU · RoPE", "建立现代 dense 基线;Norm、激活与位置是三条独立轴。"], + ["DeepSeek-V2 / 2024", "MLA · decoupled RoPE", "内容 K/V 可低秩压缩并吸收投影;位置另走 shared key / multi-head query。"], + ["DeepSeek-V3 / 2024", "MLA · extra latent RMSNorm", "除 block PreNorm 外,再控制 compressed latent;不要把两个 Norm 混为一处。"], + ["DeepSeek-V3.2 / 2025", "稀疏索引继续接入 MLA 谱系", "位置、内容与索引需要在高效注意力里共同保真。"], + ["mHC / 2025", "4× residual streams · Birkhoff constraint", "把 HC 的自由映射投到 doubly stochastic manifold。"], + ["DeepSeek-V4 / 2026", "mHC · partial RoPE · Q/KV RMSNorm · SwiGLU clamp", "最后 64 维承载旋转;残差、匹配尺度和 FFN 极值一起控制。"], +]; + +const auditRows = [ + ["单位", "原始字符串怎样分成模型一步?训练和推理使用同一 tokenizer / patcher 吗?"], + ["接口参数", "V、d、input embedding、output head 是否 tying?参数和显存怎样算?"], + ["状态", "图里画的是初始 embedding、某层 hidden state、KV latent 还是 logits?"], + ["位置入口", "位置加在 embedding、Q/K、logit、Value、递归 gate 还是完全隐式?"], + ["相对性", "“relative”来自公式恒等式、learned bias、bucket 还是模型经验模式?"], + ["外推", "训练长度、微调长度、测试长度和真实利用长度是否分开报告?"], + ["Norm 对象", "state、Q/K、latent、expert aggregate、depth key 中哪一个被归一化?"], + ["Norm 拓扑", "Pre、Post、sandwich、parallel 或额外 latent Norm 放在计算图哪里?"], + ["Residual", "固定单位相加、可学习 scalar、多流矩阵还是沿深度 attention?"], + ["状态成本", "需要保留 1 条 stream、n 条 stream、所有层还是 block summaries?"], + ["激活", "单支还是门控双支?是否有数学上界、硬 clamp 或只是一项经验稳定措施?"], + ["证据", "结论是函数性质、论文理论、作者自报实验、第三方复跑还是本站教学推导?"], +]; + +const paperChain = [ + ["2003","A Neural Probabilistic Language Model","https://www.jmlr.org/papers/v3/bengio03a.html","离散词查表进入共同学习的连续表示。"], + ["2013","Efficient Estimation of Word Representations","https://arxiv.org/abs/1301.3781","以高效目标大规模学习静态词向量。"], + ["2015","Batch Normalization","https://arxiv.org/abs/1502.03167","归一化神经活动的 batch 统计前史。"], + ["2015","Deep Residual Learning","https://arxiv.org/abs/1512.03385","identity shortcut 把深度优化改写为 residual learning。"], + ["2015","BPE for Neural Machine Translation","https://arxiv.org/abs/1508.07909","以子词处理稀有词和开放词表。"], + ["2016","Layer Normalization","https://arxiv.org/abs/1607.06450","单样本内按整层特征统计归一化。"], + ["2016","Using the Output Embedding","https://arxiv.org/abs/1608.05859","输出 classifier 也是 embedding,并可与输入表共享。"], + ["2016","Tying Word Vectors and Word Classifiers","https://arxiv.org/abs/1611.01462","从 loss framework 得到 weight tying。"], + ["2016","Gaussian Error Linear Units","https://arxiv.org/abs/1606.08415","以输入大小做平滑、概率式加权。"], + ["2016","Language Modeling with Gated ConvNets","https://arxiv.org/abs/1612.08083","GLU 用内容分支乘 sigmoid gate。"], + ["2017","Attention Is All You Need","https://proceedings.neurips.cc/paper/7181-attention-is-all-you-need","sinusoid、Post-LN residual 与逐位置 FFN 的原始组合。"], + ["2017","Searching for Activation Functions","https://arxiv.org/abs/1710.05941","搜索得到 Swish:x·sigmoid(βx)。"], + ["2018","SentencePiece","https://arxiv.org/abs/1808.06226","从原始句子训练语言无关子词模型。"], + ["2018","Deep Contextualized Word Representations","https://arxiv.org/abs/1802.05365","同一词的表示变成深双向 LM 状态的函数。"], + ["2018","Self-Attention with Relative Position","https://aclanthology.org/N18-2074/","把相对距离表示加入 attention 的 key/value 路径。"], + ["2018","BERT","https://arxiv.org/abs/1810.04805","深双向 Transformer 上下文化表示成为迁移接口。"], + ["2019","Transformer-XL","https://aclanthology.org/P19-1285/","跨段 recurrence 与相对位置共同延长依赖。"], + ["2019","Fixup Initialization","https://arxiv.org/abs/1901.09321","用初始化缩放训练无归一化 residual networks。"], + ["2019","RMSNorm","https://arxiv.org/abs/1910.07467","去掉 re-centering,只保留 RMS re-scaling。"], + ["2019","T5","https://jmlr.org/papers/v21/20-074.html","以 bucketed relative bias 进入统一 text-to-text 系统。"], + ["2019","Transformers without Tears","https://arxiv.org/abs/1910.05895","PreNorm、ScaleNorm 与 FixNorm 的系统比较。"], + ["2020","On Layer Normalization in Transformers","https://proceedings.mlr.press/v119/xiong20b.html","分析 Post-LN / Pre-LN 的初始化梯度与 warm-up。"], + ["2020","GLU Variants Improve Transformer","https://arxiv.org/abs/2002.05202","GEGLU / SwiGLU 等门控 FFN 变体。"], + ["2020","ReZero","https://arxiv.org/abs/2003.04887","零初始化 residual gate 让网络从 identity 开始。"], + ["2020","Understanding Training Difficulty / Admin","https://arxiv.org/abs/2004.08249","把不稳连接到 residual 对参数扰动的放大。"], + ["2020","Query-Key Normalization","https://arxiv.org/abs/2010.04245","直接控制 Q/K 尺度和 softmax 饱和。"], + ["2020","FFN Layers Are Key-Value Memories","https://arxiv.org/abs/2012.14913","分析 FFN 方向与输入模式、输出词表的关联。"], + ["2021","RoFormer / RoPE","https://arxiv.org/abs/2104.09864","绝对旋转在 Q·K 中形成相对位置。"], + ["2021","ALiBi","https://arxiv.org/abs/2108.12409","直接给 attention logits 添加距离惩罚。"], + ["2021","NormFormer","https://arxiv.org/abs/2110.09456","以额外内部 Norm 修补 Pre-LN 梯度尺度。"], + ["2021","Primer","https://arxiv.org/abs/2109.08668","搜索得到 squared ReLU 与 depthwise QKV conv。"], + ["2021","ByT5","https://arxiv.org/abs/2105.13626","无固定子词词表的 byte-to-byte 预训练。"], + ["2021","CANINE","https://arxiv.org/abs/2103.06874","字符级 encoder 避免显式 tokenizer。"], + ["2021","Charformer","https://arxiv.org/abs/2106.12672","学习软子词块的 token-free 路线。"], + ["2022","DeepNet / DeepNorm","https://arxiv.org/abs/2203.00555","residual scale 与初始化把 Transformer 堆到 1,000 层。"], + ["2022","A Length-Extrapolatable Transformer","https://arxiv.org/abs/2212.10554","以 attention resolution 与 xPos 改善长度外推。"], + ["2023","LLaMA","https://arxiv.org/abs/2302.13971","RMSNorm、SwiGLU、RoPE 的代表性现代配方。"], + ["2023","Impact of Positional Encoding","https://arxiv.org/abs/2305.19466","在特定推理任务系统比较 APE、RPE、RoPE、ALiBi、NoPE。"], + ["2023","Position Interpolation","https://arxiv.org/abs/2306.15595","把扩展位置映回训练过的 RoPE 区间。"], + ["2023","YaRN","https://arxiv.org/abs/2309.00071","分频率插值并调节 attention 温度。"], + ["2023","FIRE","https://arxiv.org/abs/2310.04418","学习 relative position 函数并渐进插值。"], + ["2024","LongRoPE","https://arxiv.org/abs/2402.13753","搜索非均匀插值并渐进扩展到论文设定的 2,048K。"], + ["2024","DeepSeek LLM","https://arxiv.org/abs/2401.02954","Pre-Norm RMSNorm、SwiGLU 与 RoPE 的 DeepSeek 基线。"], + ["2024","DeepSeek-V2","https://arxiv.org/abs/2405.04434","MLA 以 decoupled RoPE 分离内容压缩与位置。"], + ["2024","DeepSeek-V3","https://arxiv.org/abs/2412.19437","在 compressed latent 后增加 RMSNorm。"], + ["2024","Hyper-Connections","https://arxiv.org/abs/2409.19606","扩宽 residual stream 并动态学习层间映射。"], + ["2024","nGPT","https://arxiv.org/abs/2410.01131","让表示、hidden state 与权重在 hypersphere 上学习。"], + ["2024","Byte Latent Transformer","https://arxiv.org/abs/2412.09871","按 next-byte entropy 形成动态 patches。"], + ["2025","Kimi Linear","https://arxiv.org/abs/2510.26692","KDA 隐式位置与 MLA NoPE 的 3:1 混合。"], + ["2025","DeepSeek-V3.2","https://arxiv.org/abs/2512.02556","稀疏注意力继续接入 MLA 与长上下文谱系。"], + ["2025","mHC","https://arxiv.org/abs/2512.24880","把 HC residual mapping 投到受约束流形。"], + ["2026","Attention Residuals","https://arxiv.org/abs/2603.15031","对先前层或 block 表示做内容相关深度聚合。"], + ["2026","DeepSeek-V4","https://arxiv.org/abs/2606.19348","mHC、partial RoPE、Q/KV Norm 与 clamp 合流。"], + ["2026","Kimi K3","https://arxiv.org/abs/2607.24653","NoPE hybrid、Block AttnRes 与 SiTU-GLU 合流。"], + ["2018","GPT-1","https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf","causal decoder hidden state 成为迁移表示。"], + ["2019","BERT Rediscovers the NLP Pipeline","https://arxiv.org/abs/1905.05950","用 probes 观察语言信息在层间的分布。"], + ["2019","Linguistic Knowledge in Contextual Representations","https://arxiv.org/abs/1903.08855","跨 ELMo、GPT、BERT 做分层线性 probing。"], + ["2020","DeBERTa","https://arxiv.org/abs/2006.03654","把内容与位置表示解耦进 attention。"], + ["2022","PaLM","https://arxiv.org/abs/2204.02311","大规模 decoder 采用 SwiGLU 等配方。"], + ["2022","OPT","https://arxiv.org/abs/2205.01068","公开 Pre-LN decoder 的规模复现坐标。"], + ["2023","LLaMA 2","https://arxiv.org/abs/2307.09288","延续 RoPE、RMSNorm 与 SwiGLU 配方。"], + ["2023","Small-Scale Proxies for Training Instabilities","https://arxiv.org/abs/2309.14322","以 QK-LayerNorm 等干预研究规模训练不稳。"], + ["2024","Gemma 2","https://arxiv.org/abs/2408.00118","组合 pre/post normalization 与 logit soft-capping。"], + ["2024","Massive Activations in LLMs","https://arxiv.org/abs/2402.17762","系统观察少量异常大的 hidden activations。"], + ["2025","Kimi K2","https://arxiv.org/abs/2507.20534","K3 之前的 MLA、RMSNorm 与稳定训练配方。"], + ["2026","Stable LatentMoE / K3 §2.3","https://arxiv.org/abs/2607.24653","把 routed latent Norm 与有界 SiTU-GLU 放进专家路径。"], +]; +--- + + +
+
+

CHAPTER 03 REPRESENTATION · POSITION · DEPTH

+

表示、位置与
残差高速公路

+

+ Token 不是词,embedding 不是知识,位置也不是一串神秘正弦。真正的问题是: + 一条离散符号怎样获得上下文、顺序和深度,又怎样在 93 层与乘法门控中不被放大或稀释? +

+
+ ONE SENTENCE +

模型的 hidden state 同时沿 词表接口、序列位置、网络深度、局部非线性 四个坐标轴被改写;K3 正是把四轴分别重做后再拼成一套系统。

+
+
+ +
+ +
+ + +
+
+

00 / PROBLEM LEDGERS

+

先别背 RoPE:把一条 state 拆成二十本账

+

+ 这章最危险的读法,是把 Tokenizer、位置编码、Norm、Residual 和激活函数当作五个互不相干的组件。 + 它们其实共同决定一件事:同一条向量在进入模型、匹配上下文、穿过深度、通过非线性时,哪些信息和尺度能被保留。 +

+
+ {ledgers.map(([code, title, question, answer]) => ( +
+ {code}

{title}

{question}

{answer} +
+ ))} +
+
+
VOCABULARY AXISID → vector → logits

谁是模型的一步,入口和出口各花多少参数?

+
SEQUENCE AXIScontent + order

位置怎样改变 token-to-token 匹配?

+
DEPTH AXISlayer 0 → layer L

捷径怎样避免阻塞,又怎样避免所有层固定混成一团?

+
NONLINEAR AXISFFN / GLU / experts

逐位置加工怎样增加容量,又怎样制造极端激活?

+
+
+ +
+

01 / REPRESENTATION OBJECTS

+

“词向量”这个词,至少藏着五个不同对象

+

如果不先区分对象,后面所有讨论都会滑坡:把 ID 当语义、把 embedding 当知识、把概率当一个向量固有属性。

+
+ {representationObjects.map(([number, name, formula, note]) => ( +
{number}
{name}{formula}

{note}

+ ))} +
+
+ MINIMUM PIPELINE + t → eₜ = E[t] → hₜ⁰ → hₜ¹ → … → hₜᴸ → zᵥ = Wout[v]ᵀhₜᴸ → softmax(z) +

同一个 token ID 的 `E[t]` 固定;真正随上下文变化的是层内状态 `hᶫₜ`。输出概率还依赖整个词表的相对 logits。

+
+
+ +
+

02 / TOKEN AS COMPUTE UNIT

+

Tokenizer 不是预处理小工具,它先写下三笔架构账

+
+
VOCABULARYV 大

embedding / output head 参数增大,常见词可用更少步表示。

+
SEQUENCET 长

Attention、状态更新、训练 token budget 与推理步数都增加。

+
BOUNDARY切在哪里

语言、数字、代码、稀有词和拼写鲁棒性会获得不同归纳偏置。

+
+
+
WORD少步 / 大词表 / OOV
+
SUBWORD固定折中 / 现代主流
+
CHAR / BYTE小词表 / 长序列
+
DYNAMIC PATCH按局部熵分配步数
+
+
+ BLT / 2024 +

Byte Latent Transformer 不把每个 byte 都交给大 Transformer;它按 next-byte entropy 形成动态 patch,在难预测位置分配更多计算。论文结果属于其 FLOP-controlled scaling 设置,不是“固定 tokenizer 已被淘汰”。

+ 阅读原文 → +
+
+ +
+

03 / INPUT–OUTPUT GEOMETRY

+

模型从一张表里“读入”,也可以用同一张表“分类输出”

+
+
INPUTE[t]按 ID 查一行
+ →
BACKBONEcontext → h反复改写 state
+ →
OUTPUTE[v]ᵀh与每个候选行点积
+ +
+
+
设计接口参数直觉边界
+
Untied2Vd输入与输出各学一套几何更自由,也更昂贵
+
TiedVd读入和分类共享类别向量角色仍不同,不等于计算相同
+
+

Press & Wolf 与 Inan et al. 在 2016 年独立把 weight tying 推到语言模型主线:Output Embedding · Tying Word Vectors

+
+ +
+

04 / CONTEXTUALIZATION

+

同一个 token 的“词典坐标”,怎样变成这句话里的状态?

+
+
LAYER 0

固定查表

“bank” 无论在河岸还是金融句中先取同一行。

type-level
+ → +
LOWER LAYERS

局部与形式

邻近词、词形、标点与短程组合开始改变方向。

occurrence-level
+ → +
MIDDLE / UPPER

句内任务状态

与语义、指代、预测目标相关的特征继续被重组。

context-conditioned
+ → +
LM HEAD

候选分布

最终 state 与全部输出向量比较,产生下一 token 分布。

decision interface
+
+
+ 不要把 probe 读成“解剖标签”。 + ELMo、BERT 和后续 probing 工作展示不同层可线性提取不同语言信息;它们没有证明某层只负责一种功能,也没有证明 probe 读出的关联就是模型决策的因果电路。 +
+
+ +
+

05 / FFN AS REPRESENTATION

+

Attention 负责“从哪里搬”,FFN 负责“在当前位置怎样改写”

+
+
+ CROSS-TOKEN

Attention

+
ABCD
+

每个位置按 Q/K 权重汇总其他位置的 Value;它重排和混合序列信息。

+
+ +
+ WITHIN-TOKEN

FFN / GLU / MoE

+
d→≈4d→d
+

同一组权重逐位置应用,产生非线性特征、门控与大量参数容量。

+
+
+

+ Geva et al. 把 FFN 分析为 key-value memories:第一层方向与输入模式相关,第二层方向诱导输出词表分布; + 低层更多浅层模式,高层更语义化。这个视角说明 FFN 不是“Attention 后的填充”,但也不能把每个 neuron 直接命名成一条稳定事实。 +

+

Transformer Feed-Forward Layers Are Key-Value Memories →

+
+ +
+

06 / EIGHT TURNS

+

三十年不是一条“更复杂”的直线,而是八次瓶颈迁移

+
+ {waves.map(([years, title, papers, note], index) => ( +
{String(index + 1).padStart(2,"0")} / {years}

{title}

{papers}

{note}

+ ))} +
+
+ +
+

07 / PERMUTATION SYMMETRY

+

Attention 先天会匹配内容,却先天不知道“谁在前面”

+
+
ORIGINAL[猫, 追, 狗]

每行用同一 Q/K/V 投影

+ →
Attn(X)没有 mask / position
→ +
OUTPUT[h猫, h追, h狗]

输出跟着行顺序

+ 同时重排 P +
PERMUTED[狗, 猫, 追]

输入行被同一个 P 重排

+ →
Attn(PX)= P Attn(X)
→ +
OUTPUT[h狗, h猫, h追]

只跟随排列,不知道语序差异

+
+
+ Causal mask 已经提供一部分顺序结构 +

第 t 位只能读前缀,因此不同位置拥有不同可见集合。NoPE causal decoder 不是完全无序;但 mask 没有显式告诉 Q/K “相距多少”。

+
+
+ +
+

08 / ABSOLUTE POSITION

+

第一代答案很直接:给每个位置一张坐标卡

+
+
CONTENTetoken
+ +
POSITIONp37
+ +
STATEx37
+
+
+
FIXED SINUSOID

频率层级写进公式

原始 Transformer 使用不同频率的 sin/cos,使位置间线性关系可被学习;公式可生成未见绝对位置。

+
LEARNED TABLE

每个位置直接学一行

灵活但通常受训练最大索引约束;扩窗需要新增、插值或重训。

+
+
+ +
+

09 / RELATIVE POSITION

+

语言规律往往更像“离我三步”,而不是“绝对第 37 位”

+
+ {positionRows.map(([name, formula, target, note]) => ( +
{name}{formula}{target}

{note}

+ ))} +
+

Shaw et al. 把相对距离表示加入 self-attention;Transformer-XL 为跨段记忆重新设计相对位置;T5 将距离分桶并作为 attention bias。它们都叫“relative”,但写入的张量与参数共享方式不同。

+
+ +
+

10 / ROTARY GEOMETRY

+

RoPE 的核心不是“旋转很高级”,而是一条矩阵恒等式

+
+ + + + + + RₘqRₙk(n−m)θ + Rₘᵀ Rₙ = Rₙ₋ₘ + qₘᵀkₙ = qᵀRₙ₋ₘk + 高频维度对:近距离分辨 + 低频维度对:长尺度变化 + 一个 head 同时叠加多组频率 + +
+ 2D PAIR + R(mθ) = [ cos mθ −sin mθ
     sin mθ  cos mθ ]
+

每两维构成一个复平面。Q 在 m 旋转、K 在 n 旋转;做内积时,公共绝对角度相消,只剩相对位移 `n−m`。

+ 公式可生成任何 m ≠ 模型熟悉任何 m +
+
+
+ +
+

11 / LENGTH EXTRAPOLATION

+

训练窗外不是“索引越界”这么简单,而是几何分布变了

+
+
TRAIN / 0–8K模型见过的相位组合与距离
+
TEST / 8K–1M公式可算,但组合可能陌生
+
近邻训练边缘新周期组合极长距离
+
+
+
CHANGE GEOMETRYxPos · ALiBi · FIRE

重新设计距离衰减、分辨率或相对函数。

+
MAP BACKPI · YaRN · LongRoPE

把新位置压回熟悉范围,或按频率非均匀插值。

+
REMOVE EXPLICIT TERMNoPE

避免位置参数外推,但仍须证明顺序和长程能力从何而来。

+
TRAIN THE REGIME长数据 · 渐进扩窗

位置公式不替代远距离依赖数据与训练系统。

+
+
+ “Context window = 1M”至少有四层含义: + 数学上能接收、系统上能运行、训练中见过、任务上能有效利用。任何一层都不能代替其余三层。 +
+
+ +
+

12 / NO POSITION ENCODING

+

NoPE 删除的是显式插槽,不是宇宙里的“顺序”

+
+
EXPLICIT PE0

Q/K 或 embedding 不再加人工位置函数。

+ 但仍有 +
CAUSAL PREFIX{0…t}

每个位置的可见集合不同。

+
RECURRENT STATESₜ = f(Sₜ₋₁,xₜ)

状态更新本身带方向与时间。

+
DATA STATISTICSorder patterns

语言序列的条件分布并不对称。

+
+

+ 2023 的系统研究在一组 decoder-only 推理与数学任务上发现 NoPE 优于若干显式方案,并从表示能力与 SGD 模式分析它; + 这不是所有语言建模、所有架构和所有长度的普遍胜负。K3 更不能只写成“NoPE 模型”:它用 KDA 的 recurrent gating / decay 显式承担位置敏感与 recency-aware 混合。 +

+
+ +
+

13 / DEEPSEEK POSITION LINEAGE

+

DeepSeek 没有从 RoPE 走向“越用越多”,而是越拆越细

+
+
LLM / 2024

Full RoPE

标准 decoder 配方:所有相关 Q/K 维度旋转。

位置与内容共处 head
+ → +
V2 / MLA

Decoupled RoPE

content K/V 压入 latent;额外 shared K 与 multi-head Q 专门携带 RoPE。

为矩阵吸收和 KV cache 拆路
+ → +
V4 / CSA·HCA

Partial RoPE

Q、compressed KV 与 output 的最后 64 维旋转;output 用负位置抵消绝对角。

只给部分通道位置责任
+
+
+
CONTENT PATHh → cKV → KC, VC低秩 latent 可缓存、可吸收投影
+
POSITION PATHh → RoPE(KR)额外 shared key + per-head query
+
ATTENTION KEY[KC; KR]内容与位置在 score 前拼接
+
+
+ +
+

14 / NORMALIZATION TARGET

+

看到“RMSNorm”先别点头:第一问永远是“它在归一化谁?”

+
+
方法 / 插槽对象动作主要目的
+ {normRows.map(([name, target, action, purpose]) => ( +
{name}{target}{action}{purpose}
+ ))} +
+
+
LAYERNORMLN(x) = γ ⊙ (x−μ) / √(σ²+ε) + β

同时获得平移和缩放不变性;需要均值与方差。

+
RMSNORMRMS(x) = γ ⊙ x / √(mean(x²)+ε)

保留均值方向,只控制 root-mean-square 尺度。

+
+
+ +
+

15 / PRE VS POST

+

Norm 的位置会改变那条“什么都不做也能通过”的路

+
+
+ POST-LN / 2017 TRANSFORMER + xₗ₊₁ = Norm(xₗ + F(xₗ)) +
xF+Normy
+

相加后尺度被重置,但 identity path 每层都穿过 Norm;初始化靠近输出处的梯度可能更大。

+
+
+ PRE-LN / MODERN DECODER + xₗ₊₁ = xₗ + F(Norm(xₗ)) +
xNormF+y
+

裸 identity path 直接跨层,通常更易优化;所有分支固定单位累加,幅值和层贡献稀释成为新问题。

+
+
+
+ Pre-LN “更稳”不等于“全面更优”。 + 初始化梯度、是否需要 warm-up、最终表示变化、深度收益与下游质量是不同指标。NormFormer、DeepNorm、AttnRes 正是沿不同缺口继续修补。 +
+
+ +
+

16 / TRAINING DEEP

+

从“让梯度能走”到“让每层的贡献可控”

+
+ {deepStack.map(([year, title, mechanism, note]) => ( +
{year}

{title}

{mechanism}

{note}

+ ))} +
+
+ +
+

17 / RESIDUAL STREAM

+

Residual 解决“到不了”,却没有自动解决“听不见”

+
+ PRENORM UNROLLED + hL = h0 + f0(Norm(h0)) + f1(Norm(h1)) + … + fL−1(Norm(hL−1)) +
+ {Array.from({length:12},(_,i) => L{i})} +
+

上图是“累计 state 变大时,固定大小单层增量相对占比下降”的概念图,不是实测激活。Kimi AttnRes 报告把这类现象称为 hidden-state growth 与 PreNorm dilution。

+
+
+
REACHABILITY信息能否跨层?

identity shortcut 的原始强项。

+
MAGNITUDE累计 state 会多大?

Norm、初始化、scale、gate 共同控制。

+
SELECTIVITY当前层想读哪一层?

标准加法没有选择;HC / AttnRes 才重写拓扑。

+
+
+ +
+

18 / HYPER-CONNECTIONS

+

把一条 residual stream 展开成四条“车道”

+
+
+ Xₗ ∈ Rn×d + stream 1stream 2stream 3stream 4 +
+
Aₗ4 streams → layer input d
+
FₗAttention / MoE
+
Cₗlayer output → 4 streams
+
Bₗstream-to-stream mixing
+
+
+ HYPER-CONNECTION UPDATE + Xl+1 = BlXl + ClFl(AlXl) +

实际 layer 仍只接收 d 维输入;新增的是 residual width 与连接自由度。原论文将目标描述为缓解 gradient vanishing 与 representation collapse 的跷跷板。

+
+
+ +
+

19 / MANIFOLD CONSTRAINT

+

DeepSeek 的关键追问:自由连接变多后,identity property 怎么回来?

+
+
+ RAW B̃ +
{[.8,-.4,.2,.9,.6,.1,-.7,.3,.5,.2,.4,-.1,.9,.2,.1,.6].map(v=>{v})}
+ 可能放大 / 抵消 +
+
PROJECTexp → row norm → col norm× 20DeepSeek-V4 实际设置
+
+ B ∈ BIRKHOFF POLYTOPE +
{[.42,.18,.25,.15,.16,.48,.12,.24,.22,.14,.46,.18,.20,.20,.17,.43].map(v=>{v})}
+ 非负 · 行和=1 · 列和=1 +
+
+
+
NON-EXPANSIVE‖B‖₂ ≤ 1

报告据此限制 forward / backward 中 residual transformation 的扩张。

+
CLOSED UNDER PRODUCTB₁B₂ ∈ 𝓜

doubly stochastic 集合在乘法下封闭,支持深层连续堆叠。

+
BOUNDED A / CSigmoid constraints

输入和输出映射非负且有界,降低信号抵消风险。

+
+

以上是 mHC 论文 与 DeepSeek-V4 报告 的设计和理论主张;本站不把它扩写成任意优化器与任意网络的完备稳定性证明。

+
+ +
+

20 / ATTENTION OVER DEPTH

+

Kimi 的答案不同:不扩宽车道,而是让当前层选择历史出口

+
+
+
EMBv₀
L1v₁
L2v₂
……
L−1vₗ₋₁
+
+
+ LAYER-SPECIFIC QUERY qₗ +
.08.15.36.10.31
+ αᵢ→ₗ = softmax(qₗᵀ RMSNorm(kᵢ)) +
+
CURRENT INPUThₗ = Σ αᵢ→ₗvᵢ

内容相关、归一化的深度混合

+
+
+
FULL ATTNRES保存全部层输出memory O(Ld)

depth arithmetic 为 O(L²d);不足百层时算术可接受,训练状态与 PP 通信更难。

+
BLOCK ATTNRES块内求和、块间 Attentionmemory O(Nd)

只保存 block representations,保留大部分选择性并降低跨 stage 状态。

+
+
+ +
+

21 / K3 DEPTH MAP

+

93 层不是 93 份同时常驻:K3 把它们压成 9 个深度来源

+
+
SOURCE 0Token Embedding始终可被读取
+ {Array.from({length:8},(_,i) => ( +
+ SOURCE {i+1} + {i===7?"L85–L93":"L"+(i*12+1)+"–L"+((i+1)*12)} +
{Array.from({length:i===7?9:12},(_,j)=>)}
+ {i===7?"partial / 9 layers":"12-layer block"} +
+ ))} +
+
+ 勘误 / 本章研究阶段已更正 +

K3 §2.2 明确写的是 12-layer block size:93 层形成 7 个完整块和 1 个尾块,另计 embedding 后共有 9 个 block-level sources。“block size 2”是早期草案误读,未进入正式页面结论。

+
+
+ +
+

22 / ACTIVATION LINEAGE

+

激活函数的演化,不只是把 ReLU 曲线画得更圆

+
+
方法公式结构极值
+ {activationRows.map(([name, formula, structure, bound]) => ( +
{name}{formula}{structure}{bound}
+ ))} +
+
+
GATE BRANCHg = WgxSwish(g)
+ ⊙ +
VALUE BRANCHu = Wuxlinear u
+ → +
SwiGLUunbounded × unbounded大规模 / MoE / 低精度下会放大 outlier 风险
+
+
+ +
+

23 / OUTLIER CONTROL

+

DeepSeek-V4 与 K3 都限制 SwiGLU 极值,但数学性格完全不同

+
+
+ DEEPSEEK-V4 / HARD BOUNDARY +

SwiGLU Clamping

+ gate = min(Swish(g), 10)
value = clamp(u, −10, 10)
+
+

报告称该配方消除 outliers、帮助稳定且不损性能。这是 V4 训练中的作者经验结论;硬 clamp 在边界外对被截分支给出零梯度。

+
+
+ KIMI K3 / SMOOTH BOUNDARY +

Sigmoid Tanh Unit GLU

+ 4 tanh(g/4) · σ(g)
× 25 tanh(u/25)
+
+

两支都用 tanh 平滑压缩;β₁=4、β₂=25,所以逐点 |y|<100。靠近原点一阶近似 SwiGLU,β→∞ 时逐点恢复。

+
+
+
+ FUNCTION PROPERTY ≠ WHOLE-NETWORK GUARANTEE +

SiTU 单元输出有界,不等于整个 residual stream、loss 或 gradient 有界;K3 还在 routed expert aggregate 后加入 RMSNorm,并配合路由与系统稳定措施。

+
+
+ +
+

24 / DEEPSEEK FOCUS

+

沿 DeepSeek 六个节点,看四条轴如何逐步解耦再合流

+
+ {deepseekRows.map(([model, recipe, lesson]) => ( +
{model}

{recipe}

{lesson}

+ ))} +
+
+
DEEPSEEK-V4 BLOCK表示稳定控制室
+
DEPTHmHC ×4

约束流间映射

+
MATCHQ / KV RMSNorm

控制 logits

+
POSITIONlast 64 dims RoPE

partial rotation

+
FFNSwiGLU clamp

控制 outliers

+
+
+ +
+

25 / KIMI K3 CONVERGENCE

+

K3 的四轴不是四个 patch,而是一条完整信息路径

+
+
01 / TOKEN160K vocabulary

文本与视觉 token 进入共享 backbone;接口参数和多模态配方共同决定入口。

+ → +
02 / SEQUENCE3× KDA + 1× Gated MLA

KDA recurrent decay 提供顺序与近因;MLA NoPE 提供周期性全局内容交互。

+ → +
03 / DEPTHBlock AttnRes

93 层压成 8 个 layer blocks + embedding,共 9 个可选深度来源。

+ → +
04 / LOCALStable LatentMoE

routed latent RMSNorm + SiTU-GLU,把稀疏专家路径的尺度和乘法极值一起控制。

+
+
+ K3 §3.4 / LONG-CONTEXT BOUNDARY +

NoPE 避免“修改位置参数”,却没有避免训练长上下文

+
+ 8K64K256K1M +
+

报告同时使用长文档 / 视频清洗与合成、渐进扩窗课程和序列维并行。因而“K3 直接外推到 1M”不能被简化成“NoPE 单因收益”。

+
+
+ +
+

26 / INTERACTIVE LAB

+

现在亲手改四个变量:单位、位置、深度、极值

+

每台仪器都把论文公式和本站 toy assumption 分开标注。先找方向关系,再回到真实报告核对训练与系统边界。

+ +
+ +
+

27 / ARCHITECTURE AUDIT

+

以后再看任何架构图,用这十二问防止“名字读懂、路径读错”

+
+ {auditRows.map(([title, question], index) => ( +
{String(index + 1).padStart(2,"0")}

{title}

{question}

+ ))} +
+
+ THE CHAPTER IN ONE MAP +

Token 决定“一步”,Position 决定“先后”,Norm 决定“尺度”,Residual 决定“深度可达”,FFN 决定“逐位置改写”。

+

现代 LLM 的架构创新,往往不是发明一个孤立 block,而是重新分配这五种责任,再让算法、低精度、缓存和通信能够承受它。

+
+
+ +
+

PAPER CHAIN / 2003–2026

+

六十六个节点,不按热度,按“前一篇留下什么问题”排列

+

页面只写每个节点在本章问题链上的位置;点击进入论文原文或正式页面。具体数字不脱离模型、任务和训练设定外推。

+
+ {paperChain.map(([year, title, href, note], index) => ( + + {String(index + 1).padStart(2,"0")} / {year} +

{title}

+

{note}

+ +
+ ))} +
+
+
+
+
+ + diff --git a/src/pages/index.astro b/src/pages/index.astro index 87b742f..c8b1359 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -8,6 +8,7 @@ const routes: Record = { roadmap: "/roadmap/", "foundations/language-models": "/foundations/language-models/", foundations: "/foundations/", + "architecture/representation": "/architecture/representation/", scaling: "/scaling/", "pretraining/data": "/pretraining/data/", moe: "/moe/", @@ -87,6 +88,7 @@ const paths = [ 选择学习路径 语言模型从哪里来 注意力与 Transformer + 表示、位置与残差 直接解剖 K3 DeepSeek 专题 Scaling Laws 专题 @@ -110,7 +112,7 @@ const paths = [
17核心专题
151K3 报告来源
-
450关键论文索引
+
480关键论文索引
47pK3 技术报告
@@ -124,6 +126,22 @@ const paths = [
+ +
+

NEW / CHAPTER 03 TOKEN · POSITION · DEPTH · FFN

+

一条 hidden state 同时沿词表、位置、深度和非线性四个坐标轴被改写

+

+ 用二十张问题账从 Token、embedding 与上下文化表示,走到 RoPE / NoPE、Pre / Post-LN、 + DeepSeek mHC 与 partial RoPE,以及 Kimi K3 的 9 个 AttnRes 深度来源和有界 SiTU-GLU。 +

+
+
+
LINEAGE
2003 → 2026
+
NODES
66 个一手节点
+
LAB
Token · 位置 · Norm · Residual / FFN
+
+ +

NEW / CHAPTER 15 SCORE · PROTOCOL · THREAT MODEL

@@ -581,6 +599,7 @@ const paths = [ transition: transform 180ms ease, border-color 180ms ease; } + .representation-release, .inference-release, .agent-release, .alignment-release, @@ -595,6 +614,14 @@ const paths = [ min-height: 510px; } + .representation-release { + background: + radial-gradient(circle at 82% 18%, rgba(159, 91, 52, 0.22), transparent 31%), + radial-gradient(circle at 61% 74%, rgba(56, 91, 128, 0.16), transparent 28%), + repeating-linear-gradient(90deg, transparent 0 56px, rgba(159, 91, 52, 0.04) 56px 57px), + var(--paper-raised); + } + .inference-release { background: radial-gradient(circle at 82% 18%, rgba(35, 86, 84, 0.22), transparent 31%), @@ -733,6 +760,7 @@ const paths = [ padding-bottom: 76px; } + .representation-release, .inference-release, .alignment-release, .transformer-release, diff --git a/src/pages/progress/index.astro b/src/pages/progress/index.astro index dcc5d7e..6853d89 100644 --- a/src/pages/progress/index.astro +++ b/src/pages/progress/index.astro @@ -12,6 +12,7 @@ const workstreams = [ { label: "Kimi K3 深读", value: 66, next: "扩写 pre-training / infra 逐图笔记" }, { 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、长上下文位置外推复现与更多深层稳定性消融" }, { label: "Scaling Laws", value: 74, next: "加入真实拟合复现、置信区间与更多模型族对照" }, { label: "数据工程与预训练配方", value: 73, next: "逐图精读 FineWeb / DCLM,加入真实去重与 mixture traces" }, { label: "DeepSeek 专题", value: 71, next: "补 R1 / DAPO 的逐图训练轨迹与复现对照" }, @@ -49,7 +50,7 @@ const workstreams = [
OVERALL
专题平均 {average}%
READABLE
{published} 个首版可读专题
ACTIVE
{researching} 个研究/写作中
-
UPDATED
2026-07-29 09:24 CST
+
UPDATED
2026-07-29 10:26 CST
MODE
持续迭代,不锁死版本
@@ -59,7 +60,7 @@ const workstreams = [

01 WORKSTREAMS

-

二十条工作流同时推进,但不混淆“有页面”和“已核验”

+

二十一条工作流同时推进,但不混淆“有页面”和“已核验”

内容首版优先打通全局脉络;随后每轮迭代选择一个专题推进到论文/工程层,并做独立事实复核。 @@ -96,10 +97,11 @@ const workstreams = [

✓

K3 报告已结构化拆解

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

✓

17 专题知识图

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

✓

编辑式网站系统

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

-
✓

五十一个原创交互视图

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

-
✓

十六篇首版长文

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

+
✓

五十五个原创交互视图

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 四联实验。

✓

Scaling Laws 深度专题

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

✓

数据工程深度专题

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

✓

长上下文深度专题

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

@@ -112,7 +114,7 @@ const workstreams = [
✓

原生多模态深度专题

十六张账、55 个一手节点、DeepSeek 三分支、Kimi 三代 MoonViT,以及 Token—连接器—光学压缩—视觉闭环四联实验。

✓

推理服务与低成本部署深度专题

十八本账、62 个一手节点、DeepSeek V2→V4 与 Mooncake→K3 双谱系,以及显存—阶段—推测—集群四联实验。

✓

评测、安全与“到底强不强”深度专题

二十二张账、80 个一手节点、DeepSeek/K3 评测协议谱系,以及指标—Judge—污染—系统安全四联实验。

-
✓

450 篇关键论文索引

新增 BLEU、GLUE、HumanEval、MT-Bench、LiveBench、HarmBench、InjecAgent、AILuminate 等 50 个评测安全节点。

+
✓

480 篇关键论文索引

新增 output embedding、ELMo、BLT、Fixup、ReZero、Hyper-Connections、mHC、xPos、FIRE、LongRoPE 等 30 个表示与深度节点。

✓

公开仓库与自托管发布

源码公开到 git.k1412.top,网站由不可变镜像、Compose Manager 与 HTTPS 交付。

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

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

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

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

可复现实验 + 逐图笔记
P0语言模型前史二轮

Kneser–Ney / LSTM / Bahdanau 逐图 → 真实小语料复现 → tokenizer 公平性

可复现实验 + 逐图笔记
P0Scaling Laws 二轮

真实拟合复现 → 置信区间 → 更多模型族与下游任务外推

可复现实验 + 逐图笔记
P1数据工程二轮

FineWeb / DCLM 逐图 → 真实去重误伤 → mixture traces 与污染案例

逐图笔记 + 案例库
@@ -197,6 +200,8 @@ const workstreams = [
光学压缩实验分开报告值、教学插值与证据外区域

DeepSeek-OCR 的 <10× / 20× 锚点标成作者报告;中间只做显式教学插值,超过范围不外推。

推理服务按十八本账组织

权重、增长状态、分配、阶段、batch、cache、kernel、推测、网络、路由、故障与经济性不再压成单一 tokens/s。

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 层一块”读法。

diff --git a/src/pages/roadmap/index.astro b/src/pages/roadmap/index.astro index 713cc5a..bfa1cd5 100644 --- a/src/pages/roadmap/index.astro +++ b/src/pages/roadmap/index.astro @@ -59,7 +59,7 @@ const stages = [ {stage.items.map((number) => { const chapter = chapters.find((item) => item.number === number)!; return ( -
+ {number}

{chapter.title}