{strategy.label}
+{strategy.summary}
+-
+
- 主要解决
- {strategy.solves}
- 仍然留下
- {strategy.leaves}
From 761a75d5af3f9414670df7009a67465af3036e72 Mon Sep 17 00:00:00 2001
From: wuyang <5700876+banisherwy@user.noreply.gitee.com>
Date: Tue, 28 Jul 2026 22:49:04 +0800
Subject: [PATCH] feat: publish long-context deep dive
---
PROGRESS.md | 21 +-
README.md | 3 +-
ROADMAP.md | 3 +
research/LONG_CONTEXT_RESEARCH.md | 99 ++
src/components/ContextStrategyLab.astro | 981 ++++++++++++++
src/components/SiteFooter.astro | 1 +
src/components/SiteHeader.astro | 1 +
src/data/chapters.ts | 8 +-
src/pages/deepseek/index.astro | 7 +-
src/pages/index.astro | 106 ++
src/pages/k3/index.astro | 6 +-
src/pages/long-context/index.astro | 1556 +++++++++++++++++++++++
src/pages/progress/index.astro | 20 +-
13 files changed, 2788 insertions(+), 24 deletions(-)
create mode 100644 research/LONG_CONTEXT_RESEARCH.md
create mode 100644 src/components/ContextStrategyLab.astro
create mode 100644 src/pages/long-context/index.astro
diff --git a/PROGRESS.md b/PROGRESS.md
index e1ea4a6..e26d7ed 100644
--- a/PROGRESS.md
+++ b/PROGRESS.md
@@ -7,11 +7,12 @@
| 工作流 | 状态 | 完成度 | 下一检查点 |
|---|---:|---:|---|
| 研究框架与规范 | 进行中 | 72% | 给 125 篇索引补充逐篇精读层级 |
-| 网站设计系统 | 进行中 | 86% | 打印样式与更多通用可视化组件 |
+| 网站设计系统 | 进行中 | 89% | 打印样式与更多通用可视化组件 |
| Kimi K3 深读 | 进行中 | 55% | 扩写 scaling / infra 逐图笔记 |
| Transformer 基础 | 进行中 | 52% | 矩阵形状动画与手算练习 |
-| DeepSeek 专题 | 进行中 | 54% | MLA 与 GRPO 完整公式推导 |
-| 引用与事实检查 | 进行中 | 48% | 自动化外链复查与来源等级扩展 |
+| DeepSeek 专题 | 进行中 | 61% | GRPO 完整公式与训练轨迹推导 |
+| 长上下文专题 | 完成首版 | 72% | 真实模型配置、内核细节与失败案例 |
+| 引用与事实检查 | 进行中 | 54% | 自动化外链复查与来源等级扩展 |
| 开源仓库 | 已完成首版 | 100% | 持续提交研究与网站迭代 |
| k1412 部署 | 已完成首版 | 100% | 每轮发布保留不可变镜像与回滚点 |
@@ -26,17 +27,19 @@
- [x] 使用 Grok CLI 检索并形成约 95 篇一手论文的补充路线,主代理已回查关键来源。
- [x] 完成首批 125 篇关键论文索引,覆盖 12 个专题与 Kimi/DeepSeek 聚光主线。
- [x] 完成可检索、可按专题筛选的论文库页面。
-- [x] 完成 K3、Transformer 基础与 DeepSeek 三篇首版长文。
-- [x] 完成 K3 三轴架构、Self-Attention 实验与 DeepSeek 谱系三张原创交互图。
-- [x] Astro 类型检查、生产构建、7 个内部路由和桌面/移动端视觉检查通过。
+- [x] 完成 K3、Transformer 基础、DeepSeek 谱系与长上下文四篇首版长文。
+- [x] 完成 K3 三轴架构、Self-Attention 实验、DeepSeek 谱系与长上下文成本实验室四张原创交互图。
+- [x] 完成长上下文首版:五张成本账、26 篇一手论文、10+ 机制图与 8 策略交互实验室。
+- [x] 核验 FlashAttention、DeepSeek-V2/V3.2/V4、Kimi Linear/K3 等六份论文原文,并建立长上下文研究账本。
+- [x] Astro 类型检查、生产构建、8 个内部路由和桌面/移动端视觉检查通过。
- [x] 创建 `wuyang/llm-atlas` 公开仓库,匿名 API 确认 `private: false`。
-- [x] 本地生产镜像通过健康检查与全部 7 个页面路由烟雾测试。
+- [x] 本地生产镜像通过健康检查与全部 8 个页面路由烟雾测试。
- [x] 通过 Unraid Compose Manager、Nginx Proxy Manager 与 HTTPS 发布首版。
## 正在进行
-- [ ] 长上下文 / 高效注意力专题深度正文。
- [ ] MoE 路由模拟器与通信成本账本。
+- [ ] 长上下文专题的真实模型配置对比、内核细节与失败案例二轮深化。
## 研究账本
@@ -49,6 +52,8 @@
| 2026-07-28 | 首批论文库收录 125 篇,按问题与专题多标签组织 | 论文库承担发现入口,专题正文承担深度精读与机制复核 |
| 2026-07-28 | 源码公开到 `git.k1412.top/wuyang/llm-atlas` | 路线、进度、研究方法和内容变更均可追踪 |
| 2026-07-28 | 站点使用不可变镜像与 Compose Manager 部署 | 每次发布保留明确版本、健康检查和回滚点 |
+| 2026-07-28 | 长上下文按计算、缓存、位置、状态容量、系统五张账单组织 | 避免把 FlashAttention、位置外推和“记住更久”混成同一个问题 |
+| 2026-07-28 | 交互缓存数字统一标记为教学估算 | 展示增长规律,不冒充任一模型的真实线上显存基准 |
## 未决问题
diff --git a/README.md b/README.md
index ea0ce0d..89ab38f 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,8 @@
- 证据与写作规范:[research/METHODOLOGY.md](./research/METHODOLOGY.md)
首个里程碑包含 16 专题学习地图、125 篇关键论文索引、Kimi K3 完整导读、
-Transformer 基础、DeepSeek 技术谱系,以及三张原创交互可视化。其余专题按进度账本持续扩建。
+Transformer 基础、DeepSeek 技术谱系、长上下文与高效注意力深度专题,以及四张原创交互可视化。
+其余专题按进度账本持续扩建。
## 本地开发
diff --git a/ROADMAP.md b/ROADMAP.md
index 81bece4..6d88eea 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -49,6 +49,9 @@ Conditional Computation → Sparsely-Gated MoE → GShard/Switch → DeepSeekMoE
稀疏注意力、线性注意力、FlashAttention、MQA/GQA、MLA、状态空间模型、Delta Rule、Kimi Linear/KDA、混合注意力与 1M 上下文。
+首版已发布:以“计算、缓存、位置、状态容量、系统”五张账单串起 2019–2026 的 26 篇一手论文,
+包含 10+ 张原创机制图和 Full MHA / Flash / GQA / MLA / DSA / KDA / K3 / DeepSeek-V4 交互比较实验。
+
### 08. 大规模训练系统
数据/张量/流水线/序列/上下文/专家并行,ZeRO,Megatron,通信重叠,容错;对比 DeepSeek DualPipe/DeepEP 与 K3 MoonEP。
diff --git a/research/LONG_CONTEXT_RESEARCH.md b/research/LONG_CONTEXT_RESEARCH.md
new file mode 100644
index 0000000..96f5949
--- /dev/null
+++ b/research/LONG_CONTEXT_RESEARCH.md
@@ -0,0 +1,99 @@
+# 长上下文与高效注意力:研究账本
+
+最后核验:2026-07-28
+
+## 研究问题
+
+“上下文窗口变长”至少包含五个彼此独立的问题:
+
+1. **二次计算**:标准 softmax attention 的配对计算随序列长度平方增长。
+2. **KV Cache**:自回归推理需要为历史 Token 保存逐层 K/V,缓存宽度和序列长度共同决定显存。
+3. **位置外推**:能接受更长输入不等于能在训练长度之外正确使用位置。
+4. **有限状态表达**:线性注意力或 SSM 用固定状态压缩历史,获得常数缓存,也因此存在容量上限。
+5. **系统实现**:单算子变快以后,跨设备序列切分、状态传递、前缀缓存和请求调度仍可能成为瓶颈。
+
+正文必须分别记账,不能把“更省显存”“更少 FLOPs”“更快墙钟时间”和“更强长程检索”混成一个“高效”。
+
+## 已核验的一手来源
+
+本地只读研究缓存位于 `research/sources/long-context/`,PDF 与抽取文本不进入 Git。
+
+| 论文 | 本地原文 | 本轮核验重点 |
+|---|---:|---|
+| FlashAttention (2205.14135) | 34 页 | exact attention;减少 HBM IO;仍有二次算术,反向重算甚至增加 FLOPs |
+| DeepSeek-V2 (2405.04434) | 52 页 | MLA 低秩联合 KV 压缩、权重吸收、decoupled RoPE、缓存维度 |
+| Gated DeltaNet (2412.06464) | 22 页 | delta rule 与 scalar gate 的组合 |
+| Kimi Linear (2510.26692) | 28 页 | KDA、3:1 KDA/MLA、NoPE、混合比例消融、1M 解码实验 |
+| DeepSeek-V3.2 (2512.02556) | 23 页 | Lightning Indexer、top-k=2048、两阶段稀疏训练 |
+| DeepSeek-V4 (2606.19348) | 58 页 | CSA/HCA、压缩率、top-k、局部窗口、Partial RoPE、1M 成本 |
+| Kimi K3 (2607.24653) | 47 页 | 69 KDA + 24 Gated MLA、NoPE、1M curriculum、FlashKDA/KCP/服务 |
+
+辅助检索使用 Grok CLI Headless 模式扩大覆盖;正文数字只采纳上述论文、arXiv 元数据或作者官方仓库能够回查的内容。
+
+## 关键事实与边界
+
+### FlashAttention
+
+- 它是 **IO-aware exact attention**,不是近似注意力。
+- 它不把完整 `N × N` attention matrix 写入 HBM,使用分块和 online softmax 在 SRAM 中累计。
+- 理论 attention 算术仍为二次;论文明确说明反向重算会增加 FLOPs。
+- 论文报告的 `7.6×` 是 GPT-2 上 attention kernel 的加速,不应写成所有模型端到端都快 7.6×。
+- 同文端到端数字包括 GPT-2 约 `3×`、Long Range Arena 约 `2.4×`,必须带实验语境。
+
+### MQA / GQA / MLA
+
+- MQA/GQA 缩小 **KV 头数**,历史 Token 数仍是 `L`。
+- MLA 为每个 Token 缓存联合低秩 latent `c_t^KV`,内容 K/V 的 up-projection 可分别吸收到 Query 与输出投影。
+- 如果直接对内容 Key 使用 RoPE,位置相关旋转矩阵会阻断权重吸收。因此 DeepSeek-V2 用单独的 RoPE Query/共享 Key 分支。
+- DeepSeek-V2 的缓存为每层每 Token `(d_c + d_h^R)` 个元素;报告配置为 `d_c=512`、`d_h^R=64`。
+- `KV Cache −93.3%` 与 `最大生成吞吐 5.76×` 是相对 DeepSeek 67B 的整模型报告数字,不是 MLA 对所有 MHA 的普适常数。
+
+### 线性注意力、Delta Rule 与 KDA
+
+- 核化线性注意力把历史压进固定矩阵状态,解码缓存不再随 `L` 增长。
+- 固定状态不是无损的全历史表;精确检索和多关系绑定会受有限容量约束。
+- Delta Rule 先擦除状态中与当前 Key 对齐的旧预测,再写入 Key—Value 关系。
+- Gated DeltaNet 加入遗忘 gate;KDA 进一步把 gate 细化到 Key 通道。
+- Kimi Linear 的原文消融支持 `3 KDA : 1 MLA`:训练/验证 PPL 为 `9.23 / 5.65`,优于测试的 `0:1、1:1、7:1、15:1`。
+- Kimi Linear 报告同时区分了约 `2.3×` 的单请求 1M 解码加速和通过缓存节省扩大 batch 后最高约 `6.3×` 的理论吞吐;正文不可混写。
+
+### DeepSeek Sparse / Compressed Attention
+
+- DeepSeek-V3.2 的 DSA 用 Lightning Indexer 为主 MLA 选择历史 Token;主 attention 每 Query 选择 `2048` 个 KV。
+- Indexer 先在 dense attention 下单独训练 `2.1B` Token,再与主模型稀疏续训 `943.7B` Token。
+- V3.2 窗口是 `128K`,不是 `1M`。
+- DeepSeek-V4 的 CSA 先每 `m=4` 个历史条目压成一个,再稀疏选择;V4-Flash top-k 为 `512`,V4-Pro 为 `1024`。
+- HCA 每 `m'=128` 个条目压成一个,不再做稀疏选择。
+- 两者都增加 `128` Token 的未压缩滑窗分支,并只在向量末 `64` 维使用 Partial RoPE。
+- V4-Pro 为 `61` 层、`1.6T/49B activated`;V4-Flash 为 `43` 层、`284B/13B activated`。
+- 在 1M 语境下,报告给出 V4-Pro 相对 V3.2 的单 Token FLOPs `27%`、KV Cache `10%`;V4-Flash 分别为 `10%` 和 `7%`。
+
+### Kimi K3
+
+- K3 的 93 个主干层由 `69 KDA + 24 Gated MLA` 构成;基本节奏是三层 KDA 后一层 MLA,并以 MLA 收尾。
+- 全部 MLA 使用 NoPE。位置和近因偏置主要由 KDA 的递归 gate/decay 提供,MLA 专注全局内容寻址。
+- 上下文 curriculum:预训练从 `8K → 64K`,cooldown 从 `256K → 1M`。
+- KDA 用固定大小状态替代增长 KV;24 个 MLA 层仍保留随长度增长的压缩缓存,所以 K3 不是“完全无 KV Cache”。
+- 系统侧必须同时阅读 FlashKDA、KDA Context Parallelism、混合 KDA/MLA prefix cache、外置 KV Pool 和 cache-aware scheduling。
+
+## 因果主线
+
+```text
+全连接注意力
+├─ 计算太重:局部/稀疏 → Flash(IO) → DSA → CSA/HCA
+├─ 缓存太宽:MQA → GQA → MLA
+├─ 位置外推:相对位置 → RoPE/ALiBi → PI/YaRN → NoPE+递归位置
+├─ 历史太长:线性 attention → fast weight → DeltaNet/GDN → KDA
+└─ 单卡装不下:Transformer-XL → Ring/Context Parallel → KCP/服务缓存
+
+汇流:
+Kimi K3 = 3×固定状态 KDA + 1×NoPE 全局 MLA + KDA 系统协同
+DeepSeek-V4 = CSA 压缩后稀疏 + HCA 重压缩后稠密 + 局部窗口
+```
+
+## 正文的证据标注
+
+- `论文事实`:公式、结构或数字可在对应原文定位。
+- `教学估算`:用统一假设计算的 KV/状态大小,不等于作者报告的生产显存。
+- `机制推断`:从公开结构推出的代价或能力边界,必须明确写“推断”。
+- `未知`:训练数据配比、未公开 kernel 细节和线上集群参数不猜测。
diff --git a/src/components/ContextStrategyLab.astro b/src/components/ContextStrategyLab.astro
new file mode 100644
index 0000000..0fa203b
--- /dev/null
+++ b/src/components/ContextStrategyLab.astro
@@ -0,0 +1,981 @@
+---
+const strategies = [
+ {
+ id: "mha",
+ label: "Full MHA",
+ kicker: "全连接 · 全缓存",
+ summary: "每个 Query 精确比较全部历史 Token;每层为每个历史 Token 保存所有 KV 头。",
+ solves: "表达力基线",
+ leaves: "二次计算 + 最宽 KV",
+ },
+ {
+ id: "flash",
+ label: "Flash",
+ kicker: "全连接 · IO 优化",
+ summary: "连接关系与 Full MHA 完全相同,只是不再把完整注意力矩阵写进 HBM。",
+ solves: "显存读写与中间矩阵",
+ leaves: "理论 FLOPs 仍为二次",
+ },
+ {
+ id: "gqa",
+ label: "GQA",
+ kicker: "全连接 · 共享 KV",
+ summary: "Query 头仍可很多,但一组 Query 共享一组 K/V;历史条目不减少,缓存宽度变窄。",
+ solves: "KV 头数",
+ leaves: "序列仍逐 Token 增长",
+ },
+ {
+ id: "mla",
+ label: "MLA",
+ kicker: "全连接 · 潜变量 KV",
+ summary: "每个历史 Token 只缓存低维联合 latent;通过权重吸收避免在解码时展开完整多头 K/V。",
+ solves: "每 Token KV 宽度",
+ leaves: "全局两两计算仍在",
+ },
+ {
+ id: "dsa",
+ label: "DSA",
+ kicker: "索引 · Top-k 稀疏",
+ summary: "轻量 Indexer 从全部 latent KV 中选出少量候选,再让主注意力只读这些候选。",
+ solves: "主注意力连接数",
+ leaves: "仍需索引和保存历史 latent",
+ },
+ {
+ id: "kda",
+ label: "KDA",
+ kicker: "递推 · 固定状态",
+ summary: "历史被持续写入固定矩阵状态;Delta Rule 擦除旧关联,通道 gate 控制遗忘。",
+ solves: "长度相关 KV 与二次配对",
+ leaves: "有限状态容量",
+ },
+ {
+ id: "k3",
+ label: "K3 Hybrid",
+ kicker: "3×KDA + 1×MLA",
+ summary: "三层用固定状态做廉价混合,每四层用一次 NoPE MLA 重新获得全局内容寻址。",
+ solves: "效率与全局表达折中",
+ leaves: "MLA 层仍有增长缓存",
+ },
+ {
+ id: "v4",
+ label: "V4 Hybrid",
+ kicker: "CSA ↔ HCA",
+ summary: "CSA 先 4:1 压缩再 Top-k;HCA 128:1 重压缩后读全部,并都保留局部滑窗。",
+ solves: "序列维缓存与连接数",
+ leaves: "压缩有损且系统复杂",
+ },
+];
+
+const size = 20;
+const matrix = Array.from({ length: size * size }, (_, index) => ({
+ row: Math.floor(index / size),
+ col: index % size,
+}));
+
+const contexts = [
+ { label: "4K", value: 4096 },
+ { label: "32K", value: 32768 },
+ { label: "128K", value: 131072 },
+ { label: "1M", value: 1048576 },
+];
+---
+
+ INTERACTIVE / ATTENTION STRATEGY LAB
+ 上半区看信息连接,下半区看缓存。切换方法时,注意“连接变少”和“缓存变窄”不是一回事。
+ {strategy.summary}
+ 横轴是可被读取的历史,纵轴是当前 Query。图只画 20 个位置,展示的是连接模式,不代表论文真实头数或窗口大小。
+ 02 / CACHE BUDGET
+ 统一教学模型:64 层、64 个 Query 头、head dim 128、BF16、GQA 8 个 KV 头、MLA latent 576。
+ 数字用于比较增长规律,不是任何具体模型的线上显存报告。
+
+ KDA 行只计算固定递推状态;K3 行按 3:1 层比叠加 KDA 状态与 MLA latent;
+ V4 行用 1:1 CSA/HCA、4×/128×压缩和 128 局部窗口做结构估算,未计 Indexer、未压缩尾部、分页和框架开销。
+ “支持长上下文”到底改了哪一笔账?
+ {strategy.label}
+
+
+ 把上下文拖到一百万 Token
+