feat: add DeepSeek chat-template routing probe
This commit is contained in:
+11
-3
@@ -14,7 +14,7 @@
|
||||
| 表示、位置与残差高速公路 | 完成首版 | 81% | 真实 hidden-state / norm traces、长上下文位置外推与深层稳定性消融 |
|
||||
| Scaling Laws | 完成首版 | 74% | 真实拟合复现、置信区间与更多模型族对照 |
|
||||
| 数据工程与预训练配方 | 完成首版 | 73% | FineWeb / DCLM 逐图精读、真实去重误伤与 mixture traces |
|
||||
| DeepSeek 专题 | 三轮实证进行中 | 92% | SM90 FlashMLA kernel、完整 27 层、tokenization 扰动、FP8/pipeline 与 R1-like RL 复现 |
|
||||
| DeepSeek 专题 | 三轮实证进行中 | 93% | SM90 FlashMLA kernel、完整 27 层、词元边界 / system / few-shot 正交扰动、FP8/pipeline 与 R1-like RL 复现 |
|
||||
| 指令微调与人类偏好 | 完成首版 | 75% | 真实偏好分歧、RM 长度偏置与 PPO/DPO 小模型复现 |
|
||||
| 推理与测试时扩展 | 完成首版 | 76% | 真实模型采样曲线、PRM 案例与逐篇图表精读 |
|
||||
| 工具使用与长程 Agent | 完成首版 | 74% | 真实环境 traces、cross-harness 对照、Agent RL 曲线与安全案例 |
|
||||
@@ -41,7 +41,7 @@
|
||||
- [x] 完成 486 篇关键论文索引,覆盖 16 个标签专题与 Kimi/DeepSeek 聚光主线。
|
||||
- [x] 完成可检索、可按专题筛选的论文库页面。
|
||||
- [x] 完成 K3、语言模型前史、Transformer 基础、表示/位置/残差、DeepSeek 谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、Agent、原生多模态、训练系统、推理服务、数值优化与评测安全十七篇首版长文。
|
||||
- [x] 完成 K3 三轴架构、八联报告实验与四联开放工件实验、语言模型前史四联实验、Transformer 四联实验、表示深度四联实验、DeepSeek 十联实验、长上下文、MoE 路由、推理三页签,以及训练系统、推理服务、Scaling、数据工程、数值、Alignment、Agent、原生多模态与评测安全专题各四页签等七十七个原创交互视图。
|
||||
- [x] 完成 K3 三轴架构、八联报告实验与四联开放工件实验、语言模型前史四联实验、Transformer 四联实验、表示深度四联实验、DeepSeek 十一联实验、长上下文、MoE 路由、推理三页签,以及训练系统、推理服务、Scaling、数据工程、数值、Alignment、Agent、原生多模态与评测安全专题各四页签等七十八个原创交互视图。
|
||||
- [x] 完成长上下文首版:五张成本账、26 篇一手论文、10+ 机制图与 8 策略交互实验室。
|
||||
- [x] 核验 FlashAttention、DeepSeek-V2/V3.2/V4、Kimi Linear/K3 等六份论文原文,并建立长上下文研究账本。
|
||||
- [x] 核验 Switch、ST-MoE、DeepSeekMoE、Loss-Free、V3、LatentMoE 与 K3 原文,并建立 MoE 研究账本。
|
||||
@@ -190,11 +190,16 @@
|
||||
- [x] 中文↔代码 JSD 在六层均下降但没有消失;Layer 2 `0.091→0.065`、Δ `-0.026 [-0.036,-0.018]`。结论限定为固定前缀长度敏感性,不推出因果内容效应、专家语义或训练/线上总体。
|
||||
- [x] 自然长度与等长 16 / 24 三 cohort 合计 13,580 个有效 token、488,880 次真实路由;机器可读比较结果第二次生成 SHA-256 均为 `00bdc7fe…61a1`,网站加入 cohort、层、聚合口径与 paired delta 联动。
|
||||
- [x] DeepSeek 长度敏感性版本以源提交 `9ca0850`、不可变镜像 `20260729T081849Z-9ca0850` 发布;OCI digest `sha256:c2146735…3d641`,NAS / VPS / NPM / DNS / TLS / HTTP2 / gzip / 门户与十六套生产 Chrome 回归全通过;保留 `20260729T073342Z-5bcfd58` 回滚。
|
||||
- [x] 官方 chat-template 扰动固定同一批 128 条 source prompt 与 23 个 canonical content tokens,在同一 padded batch 运行 raw / user / generation 384 个变体;用相对字符跨度与 token ID 的交集精确对齐 2,874 个内容 token。
|
||||
- [x] RTX 5090 新增 10,612 个输入 token、382,032 次真实 top-6 路由,使公开语料累计达到 870,912 次;完整 JSON 独立复跑 SHA-256 均为 `da1f1033…bc1b9`,byte-exact。
|
||||
- [x] causal suffix 负对照闭环:USER→GENERATION 的 3,642-token 共享前缀在每层全部 ordered top-6 exact,六层合计 `21,852 / 21,852`;对齐内容的 CV Δ / TV / JSD 全为零,而完整输入因新增 `Assistant:` token 保持非零分布变化。
|
||||
- [x] RAW→USER 的模板敏感性不写成单向规律:L1 英文/中文与 L2 中文/代码更平,L3 中文、L5 中文/代码与 L6 四域更集中;网站第七个真实工件页签联动 layer、scope、aggregation,并展示 paired 95% 区间与逐 token top-6 稳定性。
|
||||
- [x] 模板扰动里程碑本地闸门通过:69 个 Astro 文件零诊断、21 个页面、1,151 个站内引用、12 个跨页锚点零失败,十六套真实 Chrome 回归全部通过,桌面与 390px 移动端无文档级横向溢出。
|
||||
|
||||
## 正在进行
|
||||
|
||||
- [ ] K3 三轮下一闸门:获得真实 token hidden states、expert load 与 cache traces,解释或修订 `A_log [128]` 工件冲突,再做 Figure 3/4/5 数值重绘和独立小模型复现。
|
||||
- [ ] DeepSeek 三轮下一闸门:在官方支持的 SM90 环境执行 FlashMLA 优化 kernel;扩到完整 27 层并补 tokenizer / prompt-template 扰动对照,再推进 FP8 / pipeline traces 与 R1-like RL 小模型复现。
|
||||
- [ ] DeepSeek 三轮下一闸门:在官方支持的 SM90 环境执行 FlashMLA 优化 kernel;扩到完整 27 层并补词元边界 / system / few-shot 正交扰动,再推进 FP8 / pipeline traces 与 R1-like RL 小模型复现。
|
||||
- [ ] 表示、位置与残差二轮:真实 hidden-state / norm traces、长上下文位置外推复现与 mHC / AttnRes 深层稳定性消融。
|
||||
- [ ] 评测安全二轮:真实 cross-harness / pass@k 复跑、Judge 元评测、动态污染与过拒案例。
|
||||
- [ ] 推理服务二轮:真实 GPU kernel / workload traces、功耗与成本、跨 vLLM / SGLang / TensorRT-LLM 复现。
|
||||
@@ -325,6 +330,9 @@
|
||||
| 2026-07-29 | 长度效应必须用 paired prompt bootstrap | 16-token 输入是 24-token 输入前缀,2,000 次重采样共用 prompt indices;区间描述固定 cohort 的敏感性,不升级为内容因果或总体显著性 |
|
||||
| 2026-07-29 | 自然长度、matched-16 与 matched-24 永久分开呈现 | 自然 cohort 回答“本批原始样本如何路由”;matched cohort 回答“同一前缀多看 8 tokens 后如何变化”,不能互相替代 |
|
||||
| 2026-07-29 | DeepSeek 长度敏感性里程碑以 `20260729T081849Z-9ca0850` 发布 | OCI digest `sha256:c2146735…3d641`;复用 NAS 12010→8080、NPM 31 / cert 41、门户 order 180;十六套生产 Chrome 回归通过,保留上一不可变镜像回滚 |
|
||||
| 2026-07-29 | 模板扰动只比较同一 canonical content | raw / official user / generation 三条件同 batch;字符跨度与 token ID 同时相同才进入 2,874-token 内容交集,wrapper 与边界重切分 token 不混入内容效应 |
|
||||
| 2026-07-29 | `Assistant:` 追加条件承担 causal-mask 负对照 | 21,852 个共享前缀 ordered top-6 全部 exact;证明未来 suffix 不改写过去,但不推出 suffix 自身没有路由作用 |
|
||||
| 2026-07-29 | 模板效应永久分 scope、layer 与 domain 报告 | 对齐内容回答上下文条件化,完整输入回答真实协议流量;RAW→USER 的 CV 方向跨层翻转,不压成“角色模板更均衡/更集中” |
|
||||
| 2026-07-29 | K3 二轮按 32 张对象账与完整报告顺序重建 | total/active、2.5×、KDA state、深度来源、专家路由、视觉目标、轨迹、缓存与评测协议不再压成一页组件摘要 |
|
||||
| 2026-07-29 | K3 原生视觉事实回到 §2.4 / §3.3 核验 | 删除“先冻结语言模型再解冻”旧表述;明确 MoonViT-V2 从头训练,视觉/文本从开始共同 NTP |
|
||||
| 2026-07-29 | K3 Figure 1–16 / Table 1–5 全部建立课程视觉契约 | 每张图同时写支持范围与不可外推项;作者报告、论文、推导与 toy model 使用 R/P/D/T 标签 |
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
当前里程碑包含 17 专题学习地图、486 篇关键论文索引、Kimi K3 完整导读,
|
||||
语言模型前史、Transformer 基础、表示/位置/残差、DeepSeek 技术谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、工具使用与长程 Agent、原生多模态、训练系统、推理服务、数值优化,以及评测与安全深度专题,
|
||||
以及 77 个覆盖核心机制的原创交互视图。K3 二轮导读以 32 张问题账、16 图 / 5 表审计、
|
||||
以及 78 个覆盖核心机制的原创交互视图。K3 二轮导读以 32 张问题账、16 图 / 5 表审计、
|
||||
8 个交互实验和 100 个一手/官方节点,完整覆盖架构、预训练、后训练、系统、评测、案例与附录。
|
||||
第三轮已完成开放工件与首个真实 kernel 里程碑:固定官方模型与 FlashKDA revisions,审计 96 个 checkpoint shards、
|
||||
497,220 个 tensor entries、真实 KDA / MLA / MoE / MoonViT shapes 与小范围参数统计,并用 4 个新视图
|
||||
@@ -28,7 +28,7 @@
|
||||
[K3_ARTIFACT_AUDIT.md](./research/K3_ARTIFACT_AUDIT.md) 与
|
||||
[checkpoint_probe.py](./experiments/k3/checkpoint_probe.py)、[FlashKDA probe](./experiments/k3/flashkda/)。
|
||||
DeepSeek 三轮专题以 24 张问题账、10 次技术转向、
|
||||
10 个交互实验和 60 个一手/官方节点,串起 Dense、MoE、MLA、V3 协同、R1 与 V4;
|
||||
11 个交互实验和 60 个一手/官方节点,串起 Dense、MoE、MLA、V3 协同、R1 与 V4;
|
||||
并固定官方 V2-Lite revision,在 RTX 5090 上连续执行 7/27 层,记录 3,240 次真实专家选择、
|
||||
MLA/HF eager cache shapes 与 `31/31` exact 独立复跑;进一步用真实 layer-1 权重执行官方 V3
|
||||
naive/absorb 路径,实际写入 576 元素 latent cache,并以 FP32 将两种结合顺序的最大误差压到
|
||||
@@ -37,11 +37,16 @@ naive/absorb 路径,实际写入 576 元素 latent cache,并以 FP32 将两
|
||||
整份 JSON byte-exact。随后又对同一批 128 条、源长度至少 24 tokens 的 prompt 执行
|
||||
16 / 24-token 嵌套前缀对照,新增 184,320 次真实路由;paired bootstrap 显示延长前缀通常
|
||||
降低 CV,尤其 Layer 2 代码为 `−0.251 [−0.283, −0.215]`,但六层中文↔代码 JSD 仍未消失。
|
||||
当前累计 488,880 次公开语料路由。FlashMLA 的 SM90/SM100 官方支持矩阵与本机 SM120 边界单独记账。详见
|
||||
最新一轮再用官方 chat template 对同一段内容构造 raw / user / generation 三个条件,
|
||||
新增 382,032 次真实路由:精确对齐 2,874 个内容 token 后,RAW→USER 的方向随层与域改变,
|
||||
而 USER→GENERATION 的 21,852 个共享前缀 ordered top-6 全部 exact,验证未来 suffix
|
||||
不能改写过去路由。当前累计 870,912 次公开语料路由。FlashMLA 的 SM90/SM100 官方支持矩阵
|
||||
与本机 SM120 边界单独记账。详见
|
||||
[DEEPSEEK_V2_LITE_TRACE.md](./research/DEEPSEEK_V2_LITE_TRACE.md) 与
|
||||
[DEEPSEEK_MLA_ABSORB_AUDIT.md](./research/DEEPSEEK_MLA_ABSORB_AUDIT.md)、
|
||||
[DEEPSEEK_ROUTING_CORPUS_AUDIT.md](./research/DEEPSEEK_ROUTING_CORPUS_AUDIT.md)、
|
||||
[DEEPSEEK_ROUTING_LENGTH_CONTROL_AUDIT.md](./research/DEEPSEEK_ROUTING_LENGTH_CONTROL_AUDIT.md)。
|
||||
[DEEPSEEK_ROUTING_LENGTH_CONTROL_AUDIT.md](./research/DEEPSEEK_ROUTING_LENGTH_CONTROL_AUDIT.md) 与
|
||||
[DEEPSEEK_ROUTING_TEMPLATE_AUDIT.md](./research/DEEPSEEK_ROUTING_TEMPLATE_AUDIT.md)。
|
||||
其余专题按进度账本持续扩建。
|
||||
|
||||
## 本地开发
|
||||
|
||||
@@ -153,3 +153,55 @@ python -B experiments/deepseek/compare_routing_length_control.py \
|
||||
See `research/DEEPSEEK_ROUTING_LENGTH_CONTROL_AUDIT.md` for the sampling bias
|
||||
audit, paired CV/JSD deltas, total-variation accounting, and interpretation
|
||||
boundaries.
|
||||
|
||||
## Official chat-template sensitivity
|
||||
|
||||
`v2_lite_routing_template_probe.py` renders three variants of one fixed
|
||||
23-content-token prefix:
|
||||
|
||||
```text
|
||||
raw BOS + content
|
||||
user BOS + "User: " + content + "\n\n"
|
||||
generation user prefix + "Assistant:"
|
||||
```
|
||||
|
||||
The latter two use the pinned official `chat_template` through
|
||||
`apply_chat_template`. All three variants of one source prompt execute in the
|
||||
same padded batch. Statistics are split between:
|
||||
|
||||
- the full operational input, including wrapper tokens;
|
||||
- the exact intersection of `(relative character span, token ID)` inside the
|
||||
source content across all three variants.
|
||||
|
||||
The `user → generation` comparison is a causal negative control: the appended
|
||||
suffix must not change routes on their shared prefix.
|
||||
|
||||
```bash
|
||||
PYTHONPATH=/path/to/transformers-4.41.2-deps:/usr/lib/python3/dist-packages \
|
||||
python -B experiments/deepseek/v2_lite_routing_template_probe.py \
|
||||
--artifact-dir /path/to/deepseek-v2-lite \
|
||||
--human-eval /path/to/HumanEval.jsonl.gz \
|
||||
--gsm8k /path/to/gsm8k/test.jsonl \
|
||||
--tnews /path/to/tnews/test.json \
|
||||
--tnews-archive /path/to/tnews_public.zip \
|
||||
--wikitext /path/to/wikitext-validation.parquet \
|
||||
--output src/data/deepseek-v2-lite-routing-template.json \
|
||||
--per-domain 32 \
|
||||
--content-tokens 23 \
|
||||
--batch-prompts 8 \
|
||||
--layers 7 \
|
||||
--bootstrap 2000 \
|
||||
--seed 20260729 \
|
||||
--captured-at 2026-07-29T08:30:00+00:00
|
||||
```
|
||||
|
||||
The three variants add 382,032 real top-6 route selections. Across six MoE
|
||||
layers, all 21,852 `user → generation` shared-prefix token routes are
|
||||
ordered-top-6 exact. The committed run and independent rerun are byte-exact:
|
||||
|
||||
```text
|
||||
da1f10333b2fa269e64f9716a0ca6c1a656d23d3e70b8a25d6e59f8a5b3bc1b9
|
||||
```
|
||||
|
||||
See `research/DEEPSEEK_ROUTING_TEMPLATE_AUDIT.md` for the aligned-content
|
||||
contract, paired intervals, per-token route stability, and claim boundaries.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,438 @@
|
||||
# DeepSeek-V2-Lite 路由的官方模板敏感性审计
|
||||
|
||||
> 状态:真实官方 BF16 权重、本机 RTX 5090、layer 0–6 连续 forward。
|
||||
> 固定模型 revision:`604d5664dddd88a0433dbae533b7fe9472482de0`。
|
||||
> 研究单位:同一批 128 条公开 source prompt 的三种输入协议。
|
||||
> 结论身份:**协议敏感性探针**,不是能力评测、训练分布、线上流量或专家语义。
|
||||
|
||||
## 1. 这轮究竟要排除什么混杂因素
|
||||
|
||||
上一轮已经证明:自然长度不同会改变路由集中度,因此我们不能把所有域间差异都
|
||||
解释成“内容语义”。
|
||||
|
||||
但即使内容和长度都固定,输入模型之前还有一层协议:
|
||||
|
||||
```text
|
||||
纯文本
|
||||
↓ tokenizer
|
||||
BOS + content
|
||||
|
||||
单轮对话
|
||||
↓ official chat template + tokenizer
|
||||
BOS + "User: " + content + "\n\n" + optional "Assistant:"
|
||||
```
|
||||
|
||||
角色前缀会:
|
||||
|
||||
1. 增加 wrapper token;
|
||||
2. 改变内容 token 的绝对位置;
|
||||
3. 为每个内容 token 增加可见的左侧上下文;
|
||||
4. 可能让第一个内容 token 在 BPE 边界处重新切分;
|
||||
5. 改变“整段输入统计”的分母。
|
||||
|
||||
所以本轮不是问“chat 模型强不强”,而是问:
|
||||
|
||||
> 同一段内容送入同一个 base checkpoint,仅改变官方输入包装时,前六个 MoE
|
||||
> 层的路由统计会怎样变化?
|
||||
|
||||
## 2. 官方模板不是自行编写的教学字符串
|
||||
|
||||
固定 revision 的 `tokenizer_config.json` 给出:
|
||||
|
||||
```jinja
|
||||
{{ bos_token }}
|
||||
{% for message in messages %}
|
||||
user -> "User: " + content + "\n\n"
|
||||
assistant -> "Assistant: " + content + eos_token
|
||||
system -> content + "\n\n"
|
||||
{% endfor %}
|
||||
{% if add_generation_prompt %}"Assistant:"{% endif %}
|
||||
```
|
||||
|
||||
完整模板字符串 SHA-256:
|
||||
|
||||
```text
|
||||
8aeba567270fa9a8d5372caf4b04affea947c4421d96adc01e3ff94021b0ae8e
|
||||
```
|
||||
|
||||
特殊 token:
|
||||
|
||||
| 角色 | 文本 | ID |
|
||||
| --- | --- | ---: |
|
||||
| BOS | `<|begin▁of▁sentence|>` | 100000 |
|
||||
| EOS / PAD | `<|end▁of▁sentence|>` | 100001 |
|
||||
|
||||
实验通过 Transformers 4.41.2 的 `apply_chat_template` 生成字符串和 token IDs;
|
||||
随后再次对渲染字符串编码,并要求两条路径的 token IDs 完全一致。
|
||||
|
||||
## 3. 三个条件如何构成“实验 + 负对照”
|
||||
|
||||
每条 source prompt 都渲染三遍:
|
||||
|
||||
```text
|
||||
RAW
|
||||
[BOS] [content]
|
||||
|
||||
USER
|
||||
[BOS] [User:] [content] [\n\n]
|
||||
|
||||
GENERATION
|
||||
[BOS] [User:] [content] [\n\n] [Assistant:]
|
||||
```
|
||||
|
||||
比较分两种:
|
||||
|
||||
### 3.1 `RAW → USER`
|
||||
|
||||
这是主要敏感性实验。
|
||||
|
||||
- 内容字符前缀相同;
|
||||
- checkpoint、权重、batch、层、dtype 相同;
|
||||
- 改变的是左侧角色前缀和尾部换行;
|
||||
- 尾部换行不能反向影响更早的内容 token;
|
||||
- `User:` 前缀可以通过因果注意力影响后续内容 token。
|
||||
|
||||
它能描述“输入协议敏感性”,但不能单独证明训练中的角色语义或能力变化。
|
||||
|
||||
### 3.2 `USER → GENERATION`
|
||||
|
||||
这是因果负对照。
|
||||
|
||||
`GENERATION` 只在 `USER` 末尾追加 `Assistant:`。在严格因果 attention 中,
|
||||
未来 suffix 不应改变此前共享前缀的 hidden state 或路由。
|
||||
|
||||
因此它同时验证:
|
||||
|
||||
- causal mask;
|
||||
- batching;
|
||||
- token prefix;
|
||||
- route 捕获;
|
||||
- 分析管线。
|
||||
|
||||
若这个负对照失败,`RAW → USER` 的任何解释都不可信。
|
||||
|
||||
## 4. 固定 cohort 与内容长度合同
|
||||
|
||||
四个公开域仍为:
|
||||
|
||||
| 域 | 来源 | 使用字段 | 数量 |
|
||||
| --- | --- | --- | ---: |
|
||||
| 英文百科 | WikiText-2 raw validation | `text` | 32 |
|
||||
| 中文新闻 | CLUE TNEWS public test | `sentence` | 32 |
|
||||
| Python 代码 | OpenAI HumanEval | `prompt` | 32 |
|
||||
| 小学数学 | OpenAI GSM8K test | `question` | 32 |
|
||||
|
||||
答案不输入,HumanEval 代码不执行。
|
||||
|
||||
### 4.1 为什么固定 23 个 content tokens
|
||||
|
||||
上一轮 24-token matched cohort 的总长包括 BOS:
|
||||
|
||||
```text
|
||||
1 BOS + 23 source-content tokens = 24 raw input tokens
|
||||
```
|
||||
|
||||
本轮直接把内容合同写清楚为 **23 个 regular-tokenizer content tokens**。
|
||||
这样 RAW 条件固定为 24 tokens,同时保留足够多的 TNEWS 候选。
|
||||
|
||||
### 4.2 字符前缀如何重建
|
||||
|
||||
BPE 对“完整字符串”和“截断后的字符串”可能在最后一个 token 发生不同合并。
|
||||
因此不能粗暴地取完整编码的前 23 个 IDs 再假设可逆。
|
||||
|
||||
脚本采用:
|
||||
|
||||
1. 读取 fast tokenizer offset mapping;
|
||||
2. 在目标 token 边界附近搜索字符终点;
|
||||
3. 重新编码字符前缀;
|
||||
4. 只接受恰好得到 23 tokens 的最长前缀。
|
||||
|
||||
选样排序固定为:
|
||||
|
||||
```text
|
||||
ascending SHA256(
|
||||
"llm-atlas-deepseek-routing-template-control-v1"
|
||||
| domain
|
||||
| source_id
|
||||
)
|
||||
```
|
||||
|
||||
候选与选中来源长度:
|
||||
|
||||
| 域 | 可用候选 | 选中 | source tokens min / mean / max |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| 英文百科 | 1,655 | 32 | 29 / 142.84 / 280 |
|
||||
| 中文新闻 | 1,609 | 32 | 23 / 24.66 / 30 |
|
||||
| Python 代码 | 164 | 32 | 42 / 141.78 / 352 |
|
||||
| 小学数学 | 1,319 | 32 | 31 / 59.88 / 131 |
|
||||
|
||||
TNEWS 在完成选中前有 1 条无法构造精确 23-token 字符前缀,脚本显式记录并继续按
|
||||
哈希顺序选择下一条;其余域为 0。
|
||||
|
||||
## 5. 为什么必须分“整段输入”和“对齐内容”
|
||||
|
||||
若直接把 wrapper token 与 content token 全部求和,得到的是部署协议问题:
|
||||
|
||||
> 这一整段实际输入会把 token 路由到哪里?
|
||||
|
||||
若只研究内容,需要保证比较的是同一 token,而不是“都在内容字符范围内”就算相同。
|
||||
|
||||
本轮为三种条件中的每个 token 记录:
|
||||
|
||||
```text
|
||||
(相对内容字符起点, 相对内容字符终点, token ID)
|
||||
```
|
||||
|
||||
然后只保留三个条件的精确交集。
|
||||
|
||||
### 5.1 Token 账
|
||||
|
||||
| 条件 | 输入 tokens | 对齐内容 tokens | 六层真实 top-6 routes |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| RAW | 3,072 | 2,874 | 110,592 |
|
||||
| USER | 3,642 | 2,874 | 131,112 |
|
||||
| GENERATION | 3,898 | 2,874 | 140,328 |
|
||||
| 合计 | 10,612 | — | **382,032** |
|
||||
|
||||
RAW 原始内容范围共有 2,944 tokens;由于 `User: ` 后的 BPE 边界,70 个首 token
|
||||
不能以相同 `(span, token ID)` 对齐,因此从三个条件中同时剔除。
|
||||
|
||||
按域的对齐覆盖:
|
||||
|
||||
| 域 | aligned / RAW content | 覆盖率 |
|
||||
| --- | ---: | ---: |
|
||||
| 英文百科 | 706 / 736 | 95.9% |
|
||||
| 中文新闻 | 735 / 736 | 99.9% |
|
||||
| Python 代码 | 733 / 736 | 99.6% |
|
||||
| 小学数学 | 700 / 736 | 95.1% |
|
||||
|
||||
这意味着 `content_only` 比较中的每一条 route 都对应相同字符段与相同 token ID。
|
||||
|
||||
## 6. 统计合同
|
||||
|
||||
与长度实验相同,抽样单位仍是 source prompt,而不是 token。
|
||||
|
||||
每个 layer × scope × mode × domain:
|
||||
|
||||
1. 32 条 prompt;
|
||||
2. 有放回重采样 2,000 次;
|
||||
3. before / after 使用完全相同的 prompt indices;
|
||||
4. 固定 seed `20260729`;
|
||||
5. 报告 percentile 95% 区间;
|
||||
6. 不进行假设检验;
|
||||
7. 不做多重比较校正。
|
||||
|
||||
聚合口径:
|
||||
|
||||
- `prompt_balanced`:每条 prompt 先归一,再让 32 条 prompt 等权;
|
||||
- `token_weighted`:先汇总选中 token routes,再整体归一。
|
||||
|
||||
主要正文使用 `prompt_balanced`,避免少量 tokenization 长度差异改变 prompt 权重。
|
||||
|
||||
## 7. 负对照:21,852 个共享前缀 token 全部 exact
|
||||
|
||||
每个 MoE 层:
|
||||
|
||||
| Layer | USER 共享前缀 tokens | ordered top-6 exact | 违规 prompt |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| L1 | 3,642 | 3,642 | 0 |
|
||||
| L2 | 3,642 | 3,642 | 0 |
|
||||
| L3 | 3,642 | 3,642 | 0 |
|
||||
| L4 | 3,642 | 3,642 | 0 |
|
||||
| L5 | 3,642 | 3,642 | 0 |
|
||||
| L6 | 3,642 | 3,642 | 0 |
|
||||
| 合计 | **21,852** | **21,852** | **0** |
|
||||
|
||||
`content_only` 的 USER→GENERATION 在 6 层 × 4 域共 24 个比较中:
|
||||
|
||||
```text
|
||||
CV Δ = 0
|
||||
total variation = 0
|
||||
JSD = 0
|
||||
```
|
||||
|
||||
但若看 `full_input`,因为 GENERATION 确实新增了 `Assistant:` token,prompt-balanced
|
||||
total variation 为 0.037–0.051,平均 0.0445。
|
||||
|
||||
这组结果正好说明:
|
||||
|
||||
> suffix 没有改写过去;整段统计改变,是因为统计对象加入了新 token。
|
||||
|
||||
## 8. 主结果:同一个 `User:` 前缀在不同深度方向不同
|
||||
|
||||
以下使用:
|
||||
|
||||
- scope:三个条件精确对齐的 content tokens;
|
||||
- mode:prompt-balanced;
|
||||
- Δ:`CV(USER) − CV(RAW)`。
|
||||
|
||||
| Layer | English | Chinese | Code | Math |
|
||||
|---|---:|---:|---:|---:|
|
||||
| L1 | 0.633→0.593, **−0.040** [−0.063, −0.017] | 0.670→0.621, **−0.049** [−0.068, −0.028] | 0.901→0.882, −0.019 [−0.039, 0.001] | 0.817→0.796, −0.021 [−0.049, 0.006] |
|
||||
| L2 | 0.404→0.405, 0.001 [−0.014, 0.016] | 0.383→0.353, **−0.030** [−0.041, −0.016] | 0.684→0.617, **−0.067** [−0.084, −0.047] | 0.453→0.455, 0.002 [−0.016, 0.016] |
|
||||
| L3 | 0.405→0.422, 0.017 [−0.002, 0.033] | 0.415→0.471, **0.057** [0.033, 0.075] | 0.824→0.812, −0.011 [−0.023, 0.001] | 0.541→0.547, 0.006 [−0.011, 0.023] |
|
||||
| L4 | 0.530→0.555, 0.025 [−0.002, 0.049] | 0.897→0.848, **−0.048** [−0.067, −0.030] | 1.064→1.038, **−0.027** [−0.039, −0.016] | 0.668→0.649, −0.020 [−0.040, 0.000] |
|
||||
| L5 | 0.446→0.451, 0.005 [−0.015, 0.021] | 0.478→0.504, **0.026** [0.006, 0.042] | 0.808→0.850, **0.043** [0.032, 0.055] | 0.770→0.779, 0.008 [−0.005, 0.021] |
|
||||
| L6 | 0.502→0.562, **0.060** [0.036, 0.076] | 0.509→0.539, **0.030** [0.009, 0.043] | 0.851→0.909, **0.058** [0.046, 0.068] | 0.738→0.775, **0.037** [0.013, 0.058] |
|
||||
|
||||
### 8.1 初学者应该怎样读
|
||||
|
||||
CV 越高,64 个 routed experts 的份额越不平。
|
||||
|
||||
- L1:英文、中文的对齐内容变得更平;
|
||||
- L2:中文、代码变得更平;
|
||||
- L3:中文反而更集中;
|
||||
- L4:中文、代码又变平;
|
||||
- L5:中文、代码更集中;
|
||||
- L6:四域全部更集中。
|
||||
|
||||
因此不应写成:
|
||||
|
||||
> Chat template 会让路由更均衡。
|
||||
|
||||
也不应写成:
|
||||
|
||||
> Chat template 会让路由更集中。
|
||||
|
||||
更准确的说法是:
|
||||
|
||||
> 在这个 23-token 固定探针中,角色前缀对路由集中度的影响随层和域改变方向;
|
||||
> 低层与高层不能用一个单调结论概括。
|
||||
|
||||
## 9. “整段输入”会给出另一幅图
|
||||
|
||||
若把 BOS、`User:`、换行与 content 全部计算,Δ CV 为:
|
||||
|
||||
| Layer | English | Chinese | Code | Math |
|
||||
|---|---:|---:|---:|---:|
|
||||
| L1 | 0.061 [0.041, 0.077] | 0.093 [0.062, 0.112] | 0.014 [−0.009, 0.035] | 0.058 [0.029, 0.083] |
|
||||
| L2 | 0.093 [0.069, 0.106] | 0.138 [0.106, 0.151] | 0.038 [0.020, 0.052] | 0.098 [0.065, 0.122] |
|
||||
| L3 | 0.100 [0.072, 0.110] | 0.140 [0.096, 0.159] | 0.078 [0.058, 0.092] | 0.058 [0.031, 0.076] |
|
||||
| L4 | 0.131 [0.093, 0.152] | −0.012 [−0.033, 0.003] | 0.051 [0.035, 0.063] | 0.066 [0.042, 0.083] |
|
||||
| L5 | 0.083 [0.050, 0.094] | 0.036 [−0.003, 0.054] | 0.092 [0.070, 0.112] | −0.053 [−0.075, −0.036] |
|
||||
| L6 | 0.134 [0.090, 0.155] | 0.046 [0.000, 0.069] | 0.103 [0.079, 0.118] | 0.027 [−0.004, 0.047] |
|
||||
|
||||
多数格子是正值,与对齐内容的混合方向明显不同。
|
||||
|
||||
原因不是统计错误,而是问题不同:
|
||||
|
||||
- `full_input` 包含重复出现的 wrapper token;
|
||||
- `content_only` 只比较相同字符段和 token ID;
|
||||
- wrapper 自己可能有很强、很稳定的路由偏好;
|
||||
- wrapper 数量占短输入的比例不小。
|
||||
|
||||
这也是为什么评测协议、chat template 和 tokenizer 必须进入实验账本,而不能只写模型名。
|
||||
|
||||
## 10. 逐 token top-6 有多稳定
|
||||
|
||||
对 RAW 与 USER 中能按 `(relative span, token ID)` 对齐的内容 token,报告:
|
||||
|
||||
- `set`:top-6 专家集合完全相同的比例;
|
||||
- `J`:top-6 专家集合的平均 Jaccard。
|
||||
|
||||
| Layer | English | Chinese | Code | Math |
|
||||
|---|---:|---:|---:|---:|
|
||||
| L1 | set 0.552 · J 0.854 | set 0.600 · J 0.867 | set 0.625 · J 0.867 | set 0.459 · J 0.822 |
|
||||
| L2 | set 0.606 · J 0.874 | set 0.604 · J 0.869 | set 0.562 · J 0.846 | set 0.577 · J 0.860 |
|
||||
| L3 | set 0.625 · J 0.881 | set 0.634 · J 0.875 | set 0.570 · J 0.864 | set 0.644 · J 0.890 |
|
||||
| L4 | set 0.572 · J 0.865 | set 0.590 · J 0.869 | set 0.562 · J 0.831 | set 0.593 · J 0.873 |
|
||||
| L5 | set 0.540 · J 0.849 | set 0.550 · J 0.841 | set 0.551 · J 0.824 | set 0.610 · J 0.872 |
|
||||
| L6 | set 0.581 · J 0.859 | set 0.558 · J 0.839 | set 0.529 · J 0.814 | set 0.544 · J 0.846 |
|
||||
|
||||
两个数字可以同时成立:
|
||||
|
||||
- 只有约 46%–64% 的 token 保持完全相同的 top-6 集合;
|
||||
- 但平均 Jaccard 仍为 0.814–0.890。
|
||||
|
||||
直觉上,这说明很多变化不是“六个专家全部换掉”,而是 top-6 边缘的一两个专家发生替换。
|
||||
它仍不能告诉我们专家“负责什么语义”。
|
||||
|
||||
## 11. 分布距离不大,不等于逐 token 没变化
|
||||
|
||||
RAW→USER 的对齐内容、prompt-balanced:
|
||||
|
||||
- total variation 点估计约为 0.024–0.067;
|
||||
- JSD 点估计约为 0.001–0.008 nats。
|
||||
|
||||
聚合分布看起来接近,但上一节仍有大量 token 的 top-6 集合不完全相同。
|
||||
|
||||
这是一个重要的测量层级区别:
|
||||
|
||||
```text
|
||||
aggregate distribution close
|
||||
≠
|
||||
every token took the same route
|
||||
```
|
||||
|
||||
相反,也不能从 token route 变化推出输出答案或任务分数必然变化;本实验没有执行完整模型生成。
|
||||
|
||||
## 12. 独立复跑
|
||||
|
||||
正式输出:
|
||||
|
||||
```text
|
||||
src/data/deepseek-v2-lite-routing-template.json
|
||||
src/data/deepseek-v2-lite-routing-template-repro.json
|
||||
```
|
||||
|
||||
两份完整 JSON:
|
||||
|
||||
```text
|
||||
SHA-256
|
||||
da1f10333b2fa269e64f9716a0ca6c1a656d23d3e70b8a25d6e59f8a5b3bc1b9
|
||||
```
|
||||
|
||||
`cmp` byte-exact。
|
||||
|
||||
复现命令:
|
||||
|
||||
```bash
|
||||
PYTHONPATH=/path/to/transformers-4.41.2-deps:/usr/lib/python3/dist-packages \
|
||||
python -B experiments/deepseek/v2_lite_routing_template_probe.py \
|
||||
--artifact-dir /path/to/deepseek-v2-lite \
|
||||
--human-eval /path/to/HumanEval.jsonl.gz \
|
||||
--gsm8k /path/to/gsm8k/test.jsonl \
|
||||
--tnews /path/to/tnews/test.json \
|
||||
--tnews-archive /path/to/tnews_public.zip \
|
||||
--wikitext /path/to/wikitext-validation.parquet \
|
||||
--output /path/to/template-probe.json \
|
||||
--per-domain 32 \
|
||||
--content-tokens 23 \
|
||||
--batch-prompts 8 \
|
||||
--layers 7 \
|
||||
--bootstrap 2000 \
|
||||
--seed 20260729 \
|
||||
--captured-at 2026-07-29T08:30:00+00:00
|
||||
```
|
||||
|
||||
Jinja2 是 `apply_chat_template` 的运行依赖;正式环境记录为 3.1.6。
|
||||
|
||||
## 13. 可以说什么,不能说什么
|
||||
|
||||
### 可以说
|
||||
|
||||
- 固定官方 revision 的 chat template 会改变输入 token 序列;
|
||||
- 相同字符段、相同 token ID 的内容路由对角色前缀敏感;
|
||||
- 敏感性随层和域改变方向;
|
||||
- 追加在未来的 `Assistant:` 不改变此前共享前缀,六层 21,852 / 21,852 exact;
|
||||
- wrapper-inclusive 与 aligned-content 统计回答不同问题;
|
||||
- 正式运行与独立复跑 byte-exact。
|
||||
|
||||
### 不能说
|
||||
|
||||
- `User:` 专门激活某类“对话专家”;
|
||||
- top-6 ID 的变化等于专家语义变化;
|
||||
- 路由更平或更集中等于模型能力更强;
|
||||
- 这个 base checkpoint 的 route probe 等于 chat model 的线上流量;
|
||||
- 前六层等于完整 27 层;
|
||||
- 23-token 前缀代表长对话;
|
||||
- 不生成答案的实验可以给出任务准确率结论;
|
||||
- 24 个 layer×domain 区间是已校正的显著性检验。
|
||||
|
||||
## 14. 下一道闸门
|
||||
|
||||
1. 下载并执行完整 layer 0–26,检查“低层变平、高层变集中”的模式是否延续;
|
||||
2. 加入 system role、few-shot turn 与换行边界的正交扰动;
|
||||
3. 把模板敏感性接到完整生成与输出指标,仍保持 route / output 两张账;
|
||||
4. 在支持环境执行 FlashMLA optimized kernel;
|
||||
5. 继续 FP8 / pipeline traces 与 R1-like 小模型复现。
|
||||
@@ -80,6 +80,9 @@ const overview = await evaluate(`(() => ({
|
||||
followups: document.querySelectorAll(".lineage-row.followup").length,
|
||||
navLinks: document.querySelectorAll(".top-nav a").length,
|
||||
activeNav: document.querySelector('.top-nav a[aria-current="page"]')?.textContent.trim(),
|
||||
heroLabs: [...document.querySelectorAll(".page-facts > div")]
|
||||
.find((node) => node.querySelector("dt")?.textContent.trim() === "LABS")
|
||||
?.querySelector("dd")?.textContent.trim(),
|
||||
documentOverflow: document.documentElement.scrollWidth - document.documentElement.clientWidth,
|
||||
}))()`);
|
||||
|
||||
@@ -344,6 +347,57 @@ await evaluate(`(() => {
|
||||
await pause(120);
|
||||
await screenshot("/tmp/llm-atlas-deepseek-length-sensitivity-desktop.png");
|
||||
|
||||
const artifactTemplate = await evaluate(`(() => {
|
||||
const root = document.querySelector("[data-dsv2-lab]");
|
||||
root.querySelector('[data-artifact-tab="template"]').click();
|
||||
const read = () => ({
|
||||
panel: root.querySelector("[data-artifact-panel]:not([hidden])").dataset.artifactPanel,
|
||||
domainCards: root.querySelectorAll("[data-template-domain-grid] > article").length,
|
||||
domains: [...root.querySelectorAll("[data-template-domain-grid] > article")].map((node) => ({
|
||||
label: node.querySelector("span").textContent.trim(),
|
||||
values: node.querySelector("b").textContent.trim(),
|
||||
delta: node.querySelector("strong").textContent.trim(),
|
||||
className: node.querySelector("strong").className,
|
||||
ci: node.querySelector("p").textContent.trim(),
|
||||
distance: node.querySelector("small").textContent.trim(),
|
||||
stability: node.querySelector("em").textContent.trim(),
|
||||
})),
|
||||
prefixExact: root.querySelector("[data-template-prefix-exact]").textContent.trim(),
|
||||
contentZero: root.querySelector("[data-template-content-zero]").textContent.trim(),
|
||||
suffixTv: root.querySelector("[data-template-suffix-tv]").textContent.trim(),
|
||||
note: root.querySelector("[data-template-note]").textContent.trim(),
|
||||
depthRows: root.querySelectorAll("[data-template-depth-map] > div").length,
|
||||
depthCells: root.querySelectorAll("[data-template-depth-map] > div > span").length,
|
||||
exact: root.querySelector(".template-ledger .exact b").textContent.trim(),
|
||||
activeLayer: root.querySelector("[data-template-layer].active").textContent.trim(),
|
||||
activeScope: root.querySelector('[data-template-scope][aria-pressed="true"]').dataset.templateScope,
|
||||
activeMode: root.querySelector('[data-template-mode][aria-pressed="true"]').dataset.templateMode,
|
||||
});
|
||||
const layer1Content = read();
|
||||
root.querySelector('[data-template-layer="6"]').click();
|
||||
const layer6Content = read();
|
||||
root.querySelector('[data-template-scope="full_input"]').click();
|
||||
const layer6Full = read();
|
||||
root.querySelector('[data-template-mode="token_weighted"]').click();
|
||||
const layer6FullToken = read();
|
||||
root.querySelector('[data-template-scope="content_only"]').click();
|
||||
root.querySelector('[data-template-mode="prompt_balanced"]').click();
|
||||
root.querySelector('[data-template-layer="2"]').click();
|
||||
const layer2Content = read();
|
||||
return { layer1Content, layer6Content, layer6Full, layer6FullToken, layer2Content };
|
||||
})()`);
|
||||
await evaluate(`(() => {
|
||||
document.querySelector("[data-dsv2-lab]").scrollIntoView({ block: "start", behavior: "instant" });
|
||||
window.scrollBy(0, -82);
|
||||
})()`);
|
||||
await pause(180);
|
||||
await screenshot("/tmp/llm-atlas-deepseek-template-desktop.png");
|
||||
await evaluate(`(() => {
|
||||
document.querySelector(".template-domain-grid").scrollIntoView({ block: "center", behavior: "instant" });
|
||||
})()`);
|
||||
await pause(120);
|
||||
await screenshot("/tmp/llm-atlas-deepseek-template-results-desktop.png");
|
||||
|
||||
const artifactEvidence = await evaluate(`(() => {
|
||||
const root = document.querySelector("[data-dsv2-lab]");
|
||||
root.querySelector('[data-artifact-tab="evidence"]').click();
|
||||
@@ -417,6 +471,11 @@ const mobile = await evaluate(`(() => {
|
||||
artifactHeatCells: artifact.querySelectorAll("[data-route-heatmap] > span").length,
|
||||
corpusCohorts: artifact.querySelectorAll("[data-corpus-cohort]").length,
|
||||
lengthDeltaCards: artifact.querySelectorAll("[data-length-delta-grid] > article").length,
|
||||
templateLayers: artifact.querySelectorAll("[data-template-layer]").length,
|
||||
templateScopes: artifact.querySelectorAll("[data-template-scope]").length,
|
||||
templateModes: artifact.querySelectorAll("[data-template-mode]").length,
|
||||
templateDomainCards: artifact.querySelectorAll("[data-template-domain-grid] > article").length,
|
||||
templateDepthCells: artifact.querySelectorAll("[data-template-depth-map] > div > span").length,
|
||||
offenders: [...document.querySelectorAll("body *")]
|
||||
.filter((node) => !node.closest(".paper-chain, .advantage-table, .precision-table, .mapping-table, [data-deepseek-lab], [data-dsv2-lab]"))
|
||||
.filter((node) => node.getBoundingClientRect().right > document.documentElement.clientWidth + 1)
|
||||
@@ -444,8 +503,22 @@ await evaluate(`(() => {
|
||||
})()`);
|
||||
await pause(120);
|
||||
await screenshot("/tmp/llm-atlas-deepseek-length-sensitivity-mobile.png");
|
||||
await evaluate(`(() => {
|
||||
const artifact = document.querySelector("[data-dsv2-lab]");
|
||||
artifact.querySelector('[data-artifact-tab="template"]').click();
|
||||
artifact.scrollIntoView({ block: "start", behavior: "instant" });
|
||||
window.scrollBy(0, -70);
|
||||
})()`);
|
||||
await pause(180);
|
||||
await screenshot("/tmp/llm-atlas-deepseek-template-mobile.png");
|
||||
await evaluate(`(() => {
|
||||
document.querySelector(".template-domain-grid").scrollIntoView({ block: "start", behavior: "instant" });
|
||||
window.scrollBy(0, -72);
|
||||
})()`);
|
||||
await pause(120);
|
||||
await screenshot("/tmp/llm-atlas-deepseek-template-results-mobile.png");
|
||||
|
||||
const report = { overview, capacity, cache, codesign, rl, artifactRoute, artifactLoad, artifactCache, artifactAbsorb, artifactCorpus, artifactEvidence, home, papers, mobile, exceptions };
|
||||
const report = { overview, capacity, cache, codesign, rl, artifactRoute, artifactLoad, artifactCache, artifactAbsorb, artifactCorpus, artifactTemplate, artifactEvidence, home, papers, mobile, exceptions };
|
||||
console.log(JSON.stringify(report, null, 2));
|
||||
|
||||
const numeric = (text) => Number.parseFloat(text.replaceAll(",", ""));
|
||||
@@ -455,7 +528,8 @@ if (overview.sections !== 26 || overview.tocLinks !== 26) failures.push("二十
|
||||
if (overview.ledgers !== 24 || overview.waves !== 10) failures.push("二十四张问题账或十次转向结构异常");
|
||||
if (overview.paperLinks !== 60 || overview.branches !== 5 || overview.followups !== 1) failures.push("论文链、旁支或公开后续标记异常");
|
||||
if (overview.labTabs !== 4 || overview.labPanels !== 4) failures.push("四联实验结构异常");
|
||||
if (overview.artifactTabs !== 6 || overview.artifactPanels !== 6 || overview.artifactLayers !== 27) failures.push("真实权重六联实验结构异常");
|
||||
if (overview.artifactTabs !== 7 || overview.artifactPanels !== 7 || overview.artifactLayers !== 27) failures.push("真实权重七联实验结构异常");
|
||||
if (overview.heroLabs !== "11 个可操作实验") failures.push("DeepSeek 实验总数账异常");
|
||||
if (overview.navLinks !== 20 || home.navLinks !== 20 || mobile.mobileLinks !== 20 || overview.activeNav !== "DeepSeek") failures.push("全站导航未同步 DeepSeek");
|
||||
if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在文档级横向溢出");
|
||||
if (capacity.initial.panel !== "capacity" || capacity.initial.total !== "32.1× FFN" || capacity.initial.active !== "1.13× FFN") failures.push("V3 稀疏容量初始账异常");
|
||||
@@ -489,12 +563,18 @@ if (!artifactCorpus.matched16.highest.includes("Python 代码 · 0.969") || arti
|
||||
if (!artifactCorpus.matched24.highest.includes("Python 代码 · 0.718") || artifactCorpus.matched24.cohortTitle !== "同样本 · 24 tokens" || !artifactCorpus.matched24.tokens.every((value) => value.includes("768 tokens"))) failures.push("24-token 同源 cohort 切换异常");
|
||||
if (artifactCorpus.matched24.deltaCards !== 4 || artifactCorpus.matched24.lengthLargest !== "Python 代码 · Δ -0.251" || artifactCorpus.matched24.lengthJsd !== "0.091 → 0.065 · Δ -0.026") failures.push("16→24 token 成对敏感性结论异常");
|
||||
if (!artifactCorpus.tokenWeighted.heatTitle.includes("token 加权") || !artifactCorpus.tokenWeighted.modeNote.includes("理论上重合")) failures.push("等长 cohort 聚合口径切换异常");
|
||||
if (artifactTemplate.layer1Content.panel !== "template" || artifactTemplate.layer1Content.domainCards !== 4 || artifactTemplate.layer1Content.depthRows !== 4 || artifactTemplate.layer1Content.depthCells !== 24 || artifactTemplate.layer1Content.exact !== "BYTE-EXACT") failures.push("官方模板扰动结构或独立复跑闸门异常");
|
||||
if (artifactTemplate.layer1Content.domains[0].values !== "0.633 → 0.593" || artifactTemplate.layer1Content.domains[0].delta !== "Δ -0.040" || artifactTemplate.layer1Content.domains[1].delta !== "Δ -0.049") failures.push("L1 对齐内容模板敏感性统计异常");
|
||||
if (artifactTemplate.layer1Content.prefixExact !== "3,642 / 3,642 EXACT · L1" || artifactTemplate.layer1Content.contentZero !== "4 / 4 DOMAINS · Δ 0") failures.push("L1 causal suffix 负对照异常");
|
||||
if (artifactTemplate.layer6Content.domains.some((domain) => domain.className !== "up") || artifactTemplate.layer6Content.domains[0].delta !== "Δ +0.060" || artifactTemplate.layer6Content.domains[2].delta !== "Δ +0.058") failures.push("L6 对齐内容跨域方向异常");
|
||||
if (artifactTemplate.layer6Full.domains[0].delta !== "Δ +0.134" || !artifactTemplate.layer6Full.note.includes("完整输入") || artifactTemplate.layer6Full.activeScope !== "full_input") failures.push("模板完整输入 scope 切换异常");
|
||||
if (artifactTemplate.layer6FullToken.activeMode !== "token_weighted" || artifactTemplate.layer2Content.activeLayer !== "L2" || artifactTemplate.layer2Content.domains[2].delta !== "Δ -0.067") failures.push("模板层或聚合口径切换异常");
|
||||
if (artifactEvidence.panel !== "evidence" || artifactEvidence.layers !== 27 || artifactEvidence.executed !== 7 || artifactEvidence.split !== 1 || artifactEvidence.unloaded !== 19 || artifactEvidence.exact !== "31 / 31") failures.push("真实工件执行边界或复跑闸门异常");
|
||||
if (!artifactEvidence.dependency.includes("Transformers 5.5") || !artifactEvidence.dependency.includes("4.41.2") || !artifactEvidence.boundary.includes("完整 27 层生成")) failures.push("依赖版本或未覆盖边界异常");
|
||||
if (artifactEvidence.keyboardSelected !== "load" || artifactEvidence.keyboardVisible !== "load") failures.push("真实工件实验键盘 tab 导航异常");
|
||||
if (home.releaseCards !== 17 || !home.firstRelease.includes("47 页不再压成摘要") || home.firstHref !== "/k3/" || home.paperCount !== "486") failures.push("首页 DeepSeek 首发入口或论文数异常");
|
||||
if (papers.total !== 486 || !papers.hasFilter || papers.visible < 20 || !papers.hasCoder || !papers.hasEngram) failures.push("论文库 DeepSeek 聚光异常");
|
||||
if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4 || mobile.artifactTabs !== 6 || mobile.artifactHeatCells !== 64 || mobile.corpusCohorts !== 3 || mobile.lengthDeltaCards !== 4) failures.push("移动端导航或实验异常");
|
||||
if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4 || mobile.artifactTabs !== 7 || mobile.artifactHeatCells !== 64 || mobile.corpusCohorts !== 3 || mobile.lengthDeltaCards !== 4 || mobile.templateLayers !== 6 || mobile.templateScopes !== 2 || mobile.templateModes !== 2 || mobile.templateDomainCards !== 4 || mobile.templateDepthCells !== 24) failures.push("移动端导航或实验异常");
|
||||
if (mobile.offenders.length) failures.push(`移动端越界元素:${JSON.stringify(mobile.offenders)}`);
|
||||
if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`);
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@ import rawMatched16Repro from "@/data/deepseek-v2-lite-routing-matched16-repro.j
|
||||
import rawMatched24 from "@/data/deepseek-v2-lite-routing-matched24.json";
|
||||
import rawMatched24Repro from "@/data/deepseek-v2-lite-routing-matched24-repro.json";
|
||||
import rawLengthSensitivity from "@/data/deepseek-v2-lite-routing-length-sensitivity.json";
|
||||
import rawTemplate from "@/data/deepseek-v2-lite-routing-template.json";
|
||||
import rawTemplateRepro from "@/data/deepseek-v2-lite-routing-template-repro.json";
|
||||
|
||||
const trace = rawTrace as any;
|
||||
const repro = rawRepro as any;
|
||||
@@ -22,10 +24,13 @@ const matched16Repro = rawMatched16Repro as any;
|
||||
const matched24 = rawMatched24 as any;
|
||||
const matched24Repro = rawMatched24Repro as any;
|
||||
const lengthSensitivity = rawLengthSensitivity as any;
|
||||
const template = rawTemplate as any;
|
||||
const templateRepro = rawTemplateRepro as any;
|
||||
const absorbExact = JSON.stringify(absorb) === JSON.stringify(absorbRepro);
|
||||
const corpusExact = JSON.stringify(corpus) === JSON.stringify(corpusRepro);
|
||||
const matched16Exact = JSON.stringify(matched16) === JSON.stringify(matched16Repro);
|
||||
const matched24Exact = JSON.stringify(matched24) === JSON.stringify(matched24Repro);
|
||||
const templateExact = JSON.stringify(template) === JSON.stringify(templateRepro);
|
||||
const bytes = (value: number) => value >= 1024
|
||||
? `${(value / 1024).toFixed(2)} KiB`
|
||||
: `${value.toLocaleString()} B`;
|
||||
@@ -82,6 +87,63 @@ const corpusCompact = {
|
||||
lengthSensitivity,
|
||||
};
|
||||
const corpusCompactJson = JSON.stringify(corpusCompact).replaceAll("<", "\\u003c");
|
||||
const aggregateTemplateAlignment = (layer: any, domain: string) => {
|
||||
const rows = layer.prompts
|
||||
.filter((prompt: any) => prompt.domain === domain)
|
||||
.map((prompt: any) => prompt.alignments.raw_to_user_content);
|
||||
const aligned = rows.reduce((sum: number, row: any) => sum + row.aligned_tokens, 0);
|
||||
const setExact = rows.reduce((sum: number, row: any) => sum + row.set_topk_exact, 0);
|
||||
const orderedExact = rows.reduce((sum: number, row: any) => sum + row.ordered_topk_exact, 0);
|
||||
const weightedJaccard = rows.reduce(
|
||||
(sum: number, row: any) => sum + row.mean_jaccard * row.aligned_tokens,
|
||||
0,
|
||||
);
|
||||
return {
|
||||
aligned,
|
||||
setExactRate: setExact / aligned,
|
||||
orderedExactRate: orderedExact / aligned,
|
||||
meanJaccard: weightedJaccard / aligned,
|
||||
};
|
||||
};
|
||||
const templateCompact = {
|
||||
domains: template.corpus_contract.domains,
|
||||
labels: template.corpus_contract.domain_labels,
|
||||
inference: template.inference_contract,
|
||||
template: {
|
||||
sha256: template.template_contract.chat_template_sha256,
|
||||
bos: template.template_contract.bos_token_id,
|
||||
},
|
||||
exact: templateExact,
|
||||
layers: template.layers.slice(1).map((layer: any) => ({
|
||||
layer: layer.layer,
|
||||
invariant: layer.causal_suffix_invariant,
|
||||
alignment: Object.fromEntries(
|
||||
template.corpus_contract.domains.map((domain: string) => [
|
||||
domain,
|
||||
aggregateTemplateAlignment(layer, domain),
|
||||
]),
|
||||
),
|
||||
scopes: Object.fromEntries(
|
||||
["content_only", "full_input"].map((scope) => [
|
||||
scope,
|
||||
{
|
||||
modes: Object.fromEntries(
|
||||
["prompt_balanced", "token_weighted"].map((mode) => [
|
||||
mode,
|
||||
{
|
||||
rawToUser: layer.statistics[scope].modes[mode]
|
||||
.comparisons.raw_to_user,
|
||||
userToGeneration: layer.statistics[scope].modes[mode]
|
||||
.comparisons.user_to_generation,
|
||||
},
|
||||
]),
|
||||
),
|
||||
},
|
||||
]),
|
||||
),
|
||||
})),
|
||||
};
|
||||
const templateCompactJson = JSON.stringify(templateCompact).replaceAll("<", "\\u003c");
|
||||
const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoint_tensor_bytes;
|
||||
---
|
||||
|
||||
@@ -93,7 +155,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
</div>
|
||||
<p>
|
||||
固定官方 revision、tokenizer、模型代码和 BF16 第一分片;RTX 5090 连续执行 layer 0–6,
|
||||
从 3,240 次 token 显微轨迹扩到 488,880 次公开语料路由,并让 layer-1 权重继续走入官方吸收式 cache。
|
||||
从 3,240 次 token 显微轨迹扩到 870,912 次公开语料路由,并让 layer-1 权重继续走入官方吸收式 cache。
|
||||
所有结论都带证据身份与停止线。
|
||||
</p>
|
||||
</header>
|
||||
@@ -121,8 +183,11 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
<button type="button" role="tab" data-artifact-tab="corpus" aria-selected="false" tabindex="-1">
|
||||
<span>05</span><b>128 样本区间</b><small>4 domains · bootstrap</small>
|
||||
</button>
|
||||
<button type="button" role="tab" data-artifact-tab="template" aria-selected="false" tabindex="-1">
|
||||
<span>06</span><b>官方模板扰动</b><small>raw → user → assistant</small>
|
||||
</button>
|
||||
<button type="button" role="tab" data-artifact-tab="evidence" aria-selected="false" tabindex="-1">
|
||||
<span>06</span><b>证据断面</b><small>revision · shards · rerun</small>
|
||||
<span>07</span><b>证据断面</b><small>revision · shards · rerun</small>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -541,6 +606,117 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="artifact-panel" data-artifact-panel="template" hidden>
|
||||
<div class="panel-lead">
|
||||
<div><span>X / OFFICIAL CHAT TEMPLATE</span><h4>同一段内容,只在前面加上「User:」</h4></div>
|
||||
<p>
|
||||
三种输入使用同一 checkpoint、同一批 128 条 source prompt、同一 padded batch。
|
||||
既比较真实整段输入,也只比较字符跨度与 token ID 都完全对齐的 2,874 个内容 token。
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="template-ledger">
|
||||
<article><span>SOURCE PROMPTS</span><b>128</b><p>四域 × 32 · 固定哈希选样</p></article>
|
||||
<article><span>PROMPT VARIANTS</span><b>384</b><p>raw · user · generation</p></article>
|
||||
<article><span>INPUT TOKENS</span><b>10,612</b><p>三种协议的真实输入总数</p></article>
|
||||
<article><span>REAL ROUTES</span><b>382,032</b><p>三种协议 × 前六个 MoE 层</p></article>
|
||||
<article><span>CAUSAL PREFIX</span><b>21,852 / 21,852</b><p>追加 Assistant: 后 ordered top-6 exact</p></article>
|
||||
<article class="exact"><span>INDEPENDENT RERUN</span><b>{templateExact ? "BYTE-EXACT" : "MISMATCH"}</b><p>完整 JSON SHA-256 da1f1033…bc1b9</p></article>
|
||||
</div>
|
||||
|
||||
<div class="template-protocol" aria-label="DeepSeek V2-Lite 三种输入协议">
|
||||
<article>
|
||||
<span>RAW</span>
|
||||
<div><i>BOS</i><b>相同内容</b></div>
|
||||
<p>每条固定 24 input tokens:1 BOS + 23 content。</p>
|
||||
</article>
|
||||
<i aria-hidden="true">→</i>
|
||||
<article>
|
||||
<span>OFFICIAL USER</span>
|
||||
<div><i>BOS</i><em>User:</em><b>相同内容</b><small>↵↵</small></div>
|
||||
<p><code>apply_chat_template</code> 的单轮 user 渲染。</p>
|
||||
</article>
|
||||
<i aria-hidden="true">→</i>
|
||||
<article>
|
||||
<span>GENERATION PROMPT</span>
|
||||
<div><i>共享前缀</i><em>Assistant:</em></div>
|
||||
<p>只在末尾追加 suffix;不能反向改变此前 token。</p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="template-controls">
|
||||
<div>
|
||||
<span>MOE LAYER</span>
|
||||
<div class="layer-switch template-layer-switch" role="group" aria-label="选择模板敏感性层">
|
||||
{[1, 2, 3, 4, 5, 6].map((layer) => (
|
||||
<button type="button" data-template-layer={layer} class={layer === 1 ? "active" : ""}>L{layer}</button>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span>MEASUREMENT SCOPE</span>
|
||||
<div class="template-scope-switch" role="group" aria-label="选择模板统计范围">
|
||||
<button type="button" data-template-scope="content_only" aria-pressed="true">精确对齐内容</button>
|
||||
<button type="button" data-template-scope="full_input" aria-pressed="false">完整输入</button>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span>AGGREGATION</span>
|
||||
<div class="template-mode-switch" role="group" aria-label="选择模板聚合口径">
|
||||
<button type="button" data-template-mode="prompt_balanced" aria-pressed="true">prompt 等权</button>
|
||||
<button type="button" data-template-mode="token_weighted" aria-pressed="false">token 加权</button>
|
||||
</div>
|
||||
</div>
|
||||
<p data-template-note>
|
||||
精确对齐内容:三种条件只保留相同相对字符跨度与相同 token ID;wrapper 和边界重切分 token 同时剔除。
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="template-domain-grid" data-template-domain-grid></div>
|
||||
|
||||
<div class="template-negative-control">
|
||||
<article>
|
||||
<span>USER → GENERATION / SHARED PREFIX</span>
|
||||
<b data-template-prefix-exact></b>
|
||||
<p>同一 batch 内逐 token ordered top-6;未来 suffix 不得改写过去。</p>
|
||||
</article>
|
||||
<article>
|
||||
<span>CONTENT-ONLY DELTA</span>
|
||||
<b data-template-content-zero></b>
|
||||
<p>CV Δ / TV / JSD;对齐内容不包含新追加的 Assistant:。</p>
|
||||
</article>
|
||||
<article>
|
||||
<span>FULL-INPUT TV</span>
|
||||
<b data-template-suffix-tv></b>
|
||||
<p>整段统计会变化,因为 generation 条件确实加入了新的 suffix token。</p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="template-depth">
|
||||
<div>
|
||||
<span>DEPTH MAP / Δ CV(USER − RAW)</span>
|
||||
<h5>角色前缀没有一个跨层恒定方向</h5>
|
||||
<p>每格是一层;绿色表示 USER 更平,红色表示 USER 更集中。切换 scope / aggregation 后重新计算。</p>
|
||||
</div>
|
||||
<div data-template-depth-map></div>
|
||||
</div>
|
||||
|
||||
<div class="evidence-links">
|
||||
<a href="https://huggingface.co/deepseek-ai/DeepSeek-V2-Lite/blob/main/tokenizer_config.json" rel="noreferrer">官方 tokenizer_config ↗</a>
|
||||
<a href="https://huggingface.co/deepseek-ai/DeepSeek-V2-Lite" rel="noreferrer">官方 V2-Lite 模型卡 ↗</a>
|
||||
<a href="https://arxiv.org/abs/2405.04434" rel="noreferrer">DeepSeek-V2 技术报告 ↗</a>
|
||||
</div>
|
||||
|
||||
<div class="artifact-boundary">
|
||||
<b>PROTOCOL SENSITIVITY, NOT CAPABILITY</b>
|
||||
<p>
|
||||
RAW→USER 的变化只描述固定 23-content-token 探针中的协议敏感性;不能命名专家,
|
||||
不能推出完整 27 层或线上对话流量,也没有生成答案。USER→GENERATION 的共享前缀 exact
|
||||
是 causal-mask 实现负对照,不是“Assistant: 没有作用”——新增 suffix 自己仍有路由。
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="artifact-panel" data-artifact-panel="evidence" hidden>
|
||||
<div class="panel-lead">
|
||||
<div><span>O + X / EVIDENCE SLICE</span><h4>为什么执行到 layer 6 就停,而不是把“部分下载”写成“完整复现”</h4></div>
|
||||
@@ -632,11 +808,14 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
<code>experiments/deepseek/v2_lite_absorb_probe.py</code> ·
|
||||
<code>experiments/deepseek/v2_lite_routing_corpus.py</code> ·
|
||||
<code>experiments/deepseek/compare_routing_length_control.py</code> ·
|
||||
<code>research/DEEPSEEK_ROUTING_LENGTH_CONTROL_AUDIT.md</code>
|
||||
<code>research/DEEPSEEK_ROUTING_LENGTH_CONTROL_AUDIT.md</code> ·
|
||||
<code>experiments/deepseek/v2_lite_routing_template_probe.py</code> ·
|
||||
<code>research/DEEPSEEK_ROUTING_TEMPLATE_AUDIT.md</code>
|
||||
</figcaption>
|
||||
|
||||
<script is:inline type="application/json" data-dsv2-trace set:html={compactJson}></script>
|
||||
<script is:inline type="application/json" data-dsv2-corpus set:html={corpusCompactJson}></script>
|
||||
<script is:inline type="application/json" data-dsv2-template set:html={templateCompactJson}></script>
|
||||
</figure>
|
||||
|
||||
<script>
|
||||
@@ -649,9 +828,11 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
};
|
||||
const payloadNode = one<HTMLScriptElement>("[data-dsv2-trace]");
|
||||
const corpusNode = one<HTMLScriptElement>("[data-dsv2-corpus]");
|
||||
if (!payloadNode?.textContent || !corpusNode?.textContent) return;
|
||||
const templateNode = one<HTMLScriptElement>("[data-dsv2-template]");
|
||||
if (!payloadNode?.textContent || !corpusNode?.textContent || !templateNode?.textContent) return;
|
||||
const data = JSON.parse(payloadNode.textContent);
|
||||
const corpusData = JSON.parse(corpusNode.textContent);
|
||||
const templateData = JSON.parse(templateNode.textContent);
|
||||
|
||||
const tabs = all<HTMLButtonElement>("[data-artifact-tab]");
|
||||
const panels = all<HTMLElement>("[data-artifact-panel]");
|
||||
@@ -1088,6 +1269,142 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
});
|
||||
});
|
||||
renderCorpus();
|
||||
|
||||
let templateLayerNumber = 1;
|
||||
let templateScope = "content_only";
|
||||
let templateMode = "prompt_balanced";
|
||||
const templateResult = (layerNumber: number, domain: string) => {
|
||||
const layer = templateData.layers.find((item: any) => item.layer === layerNumber);
|
||||
return {
|
||||
layer,
|
||||
comparison: layer.scopes[templateScope].modes[templateMode].rawToUser[domain],
|
||||
suffix: layer.scopes.full_input.modes[templateMode].userToGeneration[domain],
|
||||
contentSuffix: layer.scopes.content_only.modes[templateMode]
|
||||
.userToGeneration[domain],
|
||||
alignment: layer.alignment[domain],
|
||||
};
|
||||
};
|
||||
const deltaClass = (ci: number[]) =>
|
||||
ci[1] < 0 ? "down" : ci[0] > 0 ? "up" : "neutral";
|
||||
const renderTemplate = () => {
|
||||
all<HTMLButtonElement>("[data-template-layer]").forEach((button) => {
|
||||
button.classList.toggle(
|
||||
"active",
|
||||
Number(button.dataset.templateLayer) === templateLayerNumber,
|
||||
);
|
||||
});
|
||||
all<HTMLButtonElement>("[data-template-scope]").forEach((button) => {
|
||||
button.setAttribute(
|
||||
"aria-pressed",
|
||||
String(button.dataset.templateScope === templateScope),
|
||||
);
|
||||
});
|
||||
all<HTMLButtonElement>("[data-template-mode]").forEach((button) => {
|
||||
button.setAttribute(
|
||||
"aria-pressed",
|
||||
String(button.dataset.templateMode === templateMode),
|
||||
);
|
||||
});
|
||||
set(
|
||||
"[data-template-note]",
|
||||
templateScope === "content_only"
|
||||
? "精确对齐内容:三种条件只保留相同相对字符跨度与相同 token ID;wrapper 和边界重切分 token 同时剔除。"
|
||||
: "完整输入:BOS、User:、换行与 content 全部进入统计;它回答真实协议流量,不等同于内容本身的变化。",
|
||||
);
|
||||
|
||||
const grid = one<HTMLElement>("[data-template-domain-grid]");
|
||||
if (grid) {
|
||||
grid.replaceChildren(...templateData.domains.map((domain: string) => {
|
||||
const result = templateResult(templateLayerNumber, domain);
|
||||
const cv = result.comparison.metrics.cv;
|
||||
const card = document.createElement("article");
|
||||
const label = document.createElement("span");
|
||||
const values = document.createElement("b");
|
||||
const delta = document.createElement("strong");
|
||||
const ci = document.createElement("p");
|
||||
const distance = document.createElement("small");
|
||||
const stability = document.createElement("em");
|
||||
label.textContent = corpusLabels[domain];
|
||||
values.textContent = `${cv.before.toFixed(3)} → ${cv.after.toFixed(3)}`;
|
||||
delta.textContent = `Δ ${signed(cv.delta_after_minus_before)}`;
|
||||
delta.className = deltaClass(cv.delta_ci95);
|
||||
ci.textContent = `paired 95% ${formatSignedCi(cv.delta_ci95)}`;
|
||||
distance.textContent = `TV ${result.comparison.total_variation.point.toFixed(3)} · JSD ${result.comparison.js_divergence.point.toFixed(3)}`;
|
||||
stability.textContent = `aligned ${result.alignment.aligned} · top-6 set exact ${(result.alignment.setExactRate * 100).toFixed(1)}% · J ${result.alignment.meanJaccard.toFixed(3)}`;
|
||||
card.append(label, values, delta, ci, distance, stability);
|
||||
return card;
|
||||
}));
|
||||
}
|
||||
|
||||
const currentLayer = templateData.layers.find(
|
||||
(item: any) => item.layer === templateLayerNumber,
|
||||
);
|
||||
set(
|
||||
"[data-template-prefix-exact]",
|
||||
`${currentLayer.invariant.ordered_topk_exact.toLocaleString()} / ${currentLayer.invariant.shared_prefix_tokens.toLocaleString()} EXACT · L${templateLayerNumber}`,
|
||||
);
|
||||
const contentSuffixZero = templateData.domains.every((domain: string) => {
|
||||
const result = templateResult(templateLayerNumber, domain).contentSuffix;
|
||||
return result.metrics.cv.delta_after_minus_before === 0
|
||||
&& result.total_variation.point === 0
|
||||
&& result.js_divergence.point === 0;
|
||||
});
|
||||
set(
|
||||
"[data-template-content-zero]",
|
||||
contentSuffixZero ? "4 / 4 DOMAINS · Δ 0" : "CHECK FAILED",
|
||||
);
|
||||
const suffixTv = templateData.domains.map(
|
||||
(domain: string) =>
|
||||
templateResult(templateLayerNumber, domain).suffix.total_variation.point,
|
||||
);
|
||||
set(
|
||||
"[data-template-suffix-tv]",
|
||||
`${Math.min(...suffixTv).toFixed(3)}–${Math.max(...suffixTv).toFixed(3)} · L${templateLayerNumber}`,
|
||||
);
|
||||
|
||||
const depth = one<HTMLElement>("[data-template-depth-map]");
|
||||
if (depth) {
|
||||
depth.replaceChildren(...templateData.domains.map((domain: string) => {
|
||||
const row = document.createElement("div");
|
||||
const label = document.createElement("b");
|
||||
label.textContent = corpusLabels[domain];
|
||||
row.append(label);
|
||||
templateData.layers.forEach((layer: any) => {
|
||||
const cv = layer.scopes[templateScope].modes[templateMode]
|
||||
.rawToUser[domain].metrics.cv;
|
||||
const cell = document.createElement("span");
|
||||
cell.className = deltaClass(cv.delta_ci95);
|
||||
cell.style.setProperty(
|
||||
"--strength",
|
||||
String(Math.min(1, Math.abs(cv.delta_after_minus_before) / 0.14)),
|
||||
);
|
||||
cell.textContent = `L${layer.layer} ${signed(cv.delta_after_minus_before)}`;
|
||||
cell.title = `${corpusLabels[domain]} · L${layer.layer} · Δ CV ${signed(cv.delta_after_minus_before)} · paired 95% ${formatSignedCi(cv.delta_ci95)}`;
|
||||
row.append(cell);
|
||||
});
|
||||
return row;
|
||||
}));
|
||||
}
|
||||
};
|
||||
all<HTMLButtonElement>("[data-template-layer]").forEach((button) => {
|
||||
button.addEventListener("click", () => {
|
||||
templateLayerNumber = Number(button.dataset.templateLayer);
|
||||
renderTemplate();
|
||||
});
|
||||
});
|
||||
all<HTMLButtonElement>("[data-template-scope]").forEach((button) => {
|
||||
button.addEventListener("click", () => {
|
||||
templateScope = button.dataset.templateScope ?? "content_only";
|
||||
renderTemplate();
|
||||
});
|
||||
});
|
||||
all<HTMLButtonElement>("[data-template-mode]").forEach((button) => {
|
||||
button.addEventListener("click", () => {
|
||||
templateMode = button.dataset.templateMode ?? "prompt_balanced";
|
||||
renderTemplate();
|
||||
});
|
||||
});
|
||||
renderTemplate();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -1137,7 +1454,13 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
.corpus-heat-head span,
|
||||
.corpus-comparison span,
|
||||
.corpus-findings span,
|
||||
.length-sensitivity span {
|
||||
.length-sensitivity span,
|
||||
.template-ledger span,
|
||||
.template-protocol > article > span,
|
||||
.template-controls > div > span,
|
||||
.template-domain-grid > :global(article > span),
|
||||
.template-negative-control span,
|
||||
.template-depth span {
|
||||
margin: 0;
|
||||
color: var(--blue);
|
||||
font: 700 .69rem/1.3 var(--font-mono);
|
||||
@@ -1191,7 +1514,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
.artifact-status b { color: var(--ink); font-size: .72rem; }
|
||||
.artifact-tabs {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(6, 1fr);
|
||||
grid-template-columns: repeat(7, 1fr);
|
||||
background: var(--ink);
|
||||
}
|
||||
.artifact-tabs button {
|
||||
@@ -1787,6 +2110,237 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
font-size: .63rem;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.template-ledger {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(6, 1fr);
|
||||
border: 1px solid rgba(32,32,39,.14);
|
||||
}
|
||||
.template-ledger article {
|
||||
padding: .85rem;
|
||||
border-right: 1px solid rgba(32,32,39,.12);
|
||||
}
|
||||
.template-ledger article:last-child { border-right: 0; }
|
||||
.template-ledger article.exact { background: rgba(57,120,110,.1); }
|
||||
.template-ledger b {
|
||||
display: block;
|
||||
margin-top: .4rem;
|
||||
font: 750 1.05rem/1.05 var(--font-display);
|
||||
}
|
||||
.template-ledger p {
|
||||
margin: .3rem 0 0;
|
||||
color: rgba(32,32,39,.56);
|
||||
font-size: .61rem;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.template-protocol {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr auto 1.3fr auto 1.15fr;
|
||||
gap: .55rem;
|
||||
align-items: stretch;
|
||||
margin-top: .8rem;
|
||||
}
|
||||
.template-protocol > i {
|
||||
align-self: center;
|
||||
color: rgba(32,32,39,.35);
|
||||
font-style: normal;
|
||||
}
|
||||
.template-protocol article {
|
||||
padding: .9rem;
|
||||
border: 1px solid rgba(32,32,39,.14);
|
||||
background: #fffdf8;
|
||||
}
|
||||
.template-protocol article > div {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: .22rem;
|
||||
margin-top: .55rem;
|
||||
}
|
||||
.template-protocol article > div > * {
|
||||
padding: .35rem .45rem;
|
||||
border: 1px solid rgba(32,32,39,.14);
|
||||
font: 650 .66rem/1 var(--font-mono);
|
||||
font-style: normal;
|
||||
}
|
||||
.template-protocol article > div > i { background: var(--ink); color: white; }
|
||||
.template-protocol article > div > em { background: rgba(98,105,155,.15); color: var(--blue); }
|
||||
.template-protocol article > div > b { background: rgba(57,120,110,.12); color: var(--teal); }
|
||||
.template-protocol article > div > small { color: rgba(32,32,39,.58); }
|
||||
.template-protocol p {
|
||||
margin: .55rem 0 0;
|
||||
color: rgba(32,32,39,.58);
|
||||
font-size: .64rem;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.template-controls {
|
||||
display: grid;
|
||||
grid-template-columns: auto 1.15fr 1fr;
|
||||
gap: 1rem;
|
||||
align-items: end;
|
||||
margin-top: .8rem;
|
||||
padding: .85rem;
|
||||
border: 1px solid rgba(32,32,39,.14);
|
||||
background: #e8e2d7;
|
||||
}
|
||||
.template-controls > div { display: grid; gap: .45rem; }
|
||||
.template-controls .layer-switch { margin: 0; }
|
||||
.template-scope-switch,
|
||||
.template-mode-switch { display: flex; }
|
||||
.template-scope-switch button,
|
||||
.template-mode-switch button {
|
||||
padding: .58rem .72rem;
|
||||
border: 1px solid rgba(32,32,39,.22);
|
||||
background: #fffdf8;
|
||||
color: var(--ink);
|
||||
font: 650 .65rem/1 var(--font-mono);
|
||||
cursor: pointer;
|
||||
}
|
||||
.template-scope-switch button + button,
|
||||
.template-mode-switch button + button { border-left: 0; }
|
||||
.template-scope-switch button[aria-pressed="true"],
|
||||
.template-mode-switch button[aria-pressed="true"] {
|
||||
border-color: var(--blue);
|
||||
background: var(--blue);
|
||||
color: white;
|
||||
}
|
||||
.template-controls > p {
|
||||
grid-column: 1 / -1;
|
||||
margin: 0;
|
||||
padding-top: .75rem;
|
||||
border-top: 1px solid rgba(32,32,39,.12);
|
||||
color: rgba(32,32,39,.62);
|
||||
font-size: .69rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.template-domain-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
margin-top: .8rem;
|
||||
border: 1px solid rgba(32,32,39,.14);
|
||||
background: #fffdf8;
|
||||
}
|
||||
.template-domain-grid > :global(article) {
|
||||
padding: .85rem;
|
||||
border-right: 1px solid rgba(32,32,39,.12);
|
||||
}
|
||||
.template-domain-grid > :global(article:last-child) { border-right: 0; }
|
||||
.template-domain-grid > :global(article > b) {
|
||||
display: block;
|
||||
margin-top: .45rem;
|
||||
font: 730 .88rem/1.1 var(--font-mono);
|
||||
}
|
||||
.template-domain-grid > :global(article > strong) {
|
||||
display: inline-block;
|
||||
margin-top: .4rem;
|
||||
padding: .24rem .38rem;
|
||||
font: 750 .7rem/1 var(--font-mono);
|
||||
}
|
||||
.template-domain-grid > :global(article > strong.down),
|
||||
.template-depth :global(span.down) {
|
||||
background: rgba(57,120,110,.13);
|
||||
color: var(--teal);
|
||||
}
|
||||
.template-domain-grid > :global(article > strong.up),
|
||||
.template-depth :global(span.up) {
|
||||
background: rgba(161,77,77,.12);
|
||||
color: var(--red);
|
||||
}
|
||||
.template-domain-grid > :global(article > strong.neutral),
|
||||
.template-depth :global(span.neutral) {
|
||||
background: rgba(186,118,44,.12);
|
||||
color: var(--amber);
|
||||
}
|
||||
.template-domain-grid > :global(article > p) {
|
||||
margin: .4rem 0 0;
|
||||
color: rgba(32,32,39,.56);
|
||||
font: .59rem/1.4 var(--font-mono);
|
||||
}
|
||||
.template-domain-grid > :global(article > small),
|
||||
.template-domain-grid > :global(article > em) {
|
||||
display: block;
|
||||
margin-top: .35rem;
|
||||
color: rgba(32,32,39,.57);
|
||||
font: .58rem/1.4 var(--font-mono);
|
||||
font-style: normal;
|
||||
}
|
||||
.template-domain-grid > :global(article > em) {
|
||||
padding-top: .35rem;
|
||||
border-top: 1px solid rgba(32,32,39,.1);
|
||||
}
|
||||
.template-negative-control {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
margin-top: .8rem;
|
||||
border: 1px solid rgba(32,32,39,.14);
|
||||
background:
|
||||
linear-gradient(115deg, rgba(57,120,110,.11), transparent 48%),
|
||||
#e8e2d7;
|
||||
}
|
||||
.template-negative-control article {
|
||||
padding: .9rem;
|
||||
border-right: 1px solid rgba(32,32,39,.12);
|
||||
}
|
||||
.template-negative-control article:last-child { border-right: 0; }
|
||||
.template-negative-control b {
|
||||
display: block;
|
||||
margin-top: .4rem;
|
||||
font: 730 .88rem/1.1 var(--font-mono);
|
||||
}
|
||||
.template-negative-control p {
|
||||
margin: .4rem 0 0;
|
||||
color: rgba(32,32,39,.58);
|
||||
font-size: .64rem;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.template-depth {
|
||||
display: grid;
|
||||
grid-template-columns: .55fr 1.45fr;
|
||||
gap: 1rem;
|
||||
margin-top: .8rem;
|
||||
padding: 1rem;
|
||||
border: 1px solid rgba(32,32,39,.14);
|
||||
}
|
||||
.template-depth h5 {
|
||||
margin: .4rem 0;
|
||||
font: 720 1rem/1.15 var(--font-display);
|
||||
}
|
||||
.template-depth p {
|
||||
margin: 0;
|
||||
color: rgba(32,32,39,.58);
|
||||
font-size: .66rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.template-depth > :global([data-template-depth-map]) {
|
||||
display: grid;
|
||||
gap: .35rem;
|
||||
}
|
||||
.template-depth :global([data-template-depth-map] > div) {
|
||||
display: grid;
|
||||
grid-template-columns: 5.5rem repeat(6, 1fr);
|
||||
gap: .25rem;
|
||||
}
|
||||
.template-depth :global([data-template-depth-map] > div > b),
|
||||
.template-depth :global([data-template-depth-map] > div > span) {
|
||||
display: grid;
|
||||
align-items: center;
|
||||
min-height: 2.2rem;
|
||||
padding: .35rem;
|
||||
font: 650 .57rem/1.2 var(--font-mono);
|
||||
}
|
||||
.template-depth :global([data-template-depth-map] > div > b) {
|
||||
color: var(--blue);
|
||||
}
|
||||
.template-depth :global([data-template-depth-map] > div > span.down) {
|
||||
background: color-mix(in srgb, var(--teal) calc(var(--strength) * 55%), #eef0e9);
|
||||
color: var(--ink);
|
||||
}
|
||||
.template-depth :global([data-template-depth-map] > div > span.up) {
|
||||
background: color-mix(in srgb, var(--red) calc(var(--strength) * 48%), #f3ebe6);
|
||||
color: var(--ink);
|
||||
}
|
||||
.template-depth :global([data-template-depth-map] > div > span.neutral) {
|
||||
background: rgba(186,118,44,.1);
|
||||
color: var(--ink);
|
||||
}
|
||||
.observed-cache {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr auto 1.25fr;
|
||||
@@ -2022,7 +2576,10 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
.corpus-controls,
|
||||
.corpus-heat-head,
|
||||
.corpus-comparison,
|
||||
.length-sensitivity-head { grid-template-columns: 1fr; }
|
||||
.length-sensitivity-head,
|
||||
.template-protocol,
|
||||
.template-controls,
|
||||
.template-depth { grid-template-columns: 1fr; }
|
||||
.artifact-status { grid-template-columns: 1fr 1fr; }
|
||||
.artifact-tabs { grid-template-columns: 1fr 1fr; }
|
||||
.route-controls { grid-template-columns: 1fr 1fr; }
|
||||
@@ -2034,6 +2591,9 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
.checksum-grid,
|
||||
.absorb-metrics { grid-template-columns: 1fr 1fr; }
|
||||
.corpus-ledger { grid-template-columns: repeat(3, 1fr); }
|
||||
.template-ledger { grid-template-columns: repeat(3, 1fr); }
|
||||
.template-domain-grid { grid-template-columns: 1fr 1fr; }
|
||||
.template-protocol > i { transform: rotate(90deg); justify-self: center; }
|
||||
.length-delta-grid { grid-template-columns: 1fr 1fr; }
|
||||
.corpus-heat-head p { text-align: left; }
|
||||
.layer-evidence { grid-template-columns: repeat(9, 1fr); }
|
||||
@@ -2065,7 +2625,10 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
.corpus-ledger,
|
||||
.corpus-findings,
|
||||
.length-delta-grid,
|
||||
.length-pair-summary { grid-template-columns: 1fr; }
|
||||
.length-pair-summary,
|
||||
.template-ledger,
|
||||
.template-domain-grid,
|
||||
.template-negative-control { grid-template-columns: 1fr; }
|
||||
.route-metrics article,
|
||||
.cache-ratio article,
|
||||
.load-lessons article,
|
||||
@@ -2073,11 +2636,18 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
.artifact-identity article,
|
||||
.checksum-grid article { border-right: 0; border-bottom: 1px solid rgba(32,32,39,.12); }
|
||||
.corpus-ledger article,
|
||||
.corpus-findings article { border-right: 0; border-bottom: 1px solid rgba(32,32,39,.12); }
|
||||
.corpus-findings article,
|
||||
.template-ledger article,
|
||||
.template-domain-grid > :global(article),
|
||||
.template-negative-control article { border-right: 0; border-bottom: 1px solid rgba(32,32,39,.12); }
|
||||
.corpus-mode-switch,
|
||||
.corpus-cohort-switch { display: grid; grid-template-columns: 1fr; }
|
||||
.corpus-cohort-switch,
|
||||
.template-scope-switch,
|
||||
.template-mode-switch { display: grid; grid-template-columns: 1fr; }
|
||||
.corpus-mode-switch button + button,
|
||||
.corpus-cohort-switch button + button { border-left: 1px solid rgba(32,32,39,.22); border-top: 0; }
|
||||
.corpus-cohort-switch button + button,
|
||||
.template-scope-switch button + button,
|
||||
.template-mode-switch button + button { border-left: 1px solid rgba(32,32,39,.22); border-top: 0; }
|
||||
.length-delta-grid > :global(article),
|
||||
.length-pair-summary article { border-right: 0; border-bottom: 1px solid rgba(32,32,39,.11); }
|
||||
.artifact-boundary { grid-template-columns: 1fr; }
|
||||
@@ -2092,6 +2662,8 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
|
||||
.absorb-cache-flow > i { transform: rotate(90deg); justify-self: center; }
|
||||
.precision-lens > div { grid-template-columns: 1fr; }
|
||||
.precision-lens b { text-align: left; }
|
||||
.template-depth { overflow-x: auto; }
|
||||
.template-depth > :global([data-template-depth-map]) { min-width: 620px; }
|
||||
.layer-evidence { grid-template-columns: repeat(7, 1fr); }
|
||||
.repro-gate { grid-template-columns: 1fr; }
|
||||
.repro-gate > p { grid-column: auto; }
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -37,7 +37,7 @@ const toc = [
|
||||
|
||||
<BaseLayout
|
||||
title="DeepSeek 技术谱系与真实权重深读:从 Dense、MoE、MLA 到 R1 与 V4"
|
||||
description="用二十四张问题账、十次技术转向、十个交互实验、真实 V2-Lite 权重、公开语料路由区间与吸收式缓存 trace 和六十个一手节点,完整理解 DeepSeek 的 MoE、MLA、FP8、DualPipe、GRPO、R1、V3.2 与 V4。"
|
||||
description="用二十四张问题账、十次技术转向、十一个交互实验、真实 V2-Lite 权重、公开语料路由区间、官方模板扰动与吸收式缓存 trace 和六十个一手节点,完整理解 DeepSeek 的 MoE、MLA、FP8、DualPipe、GRPO、R1、V3.2 与 V4。"
|
||||
section="deepseek"
|
||||
>
|
||||
<header class="page-hero deepseek-hero">
|
||||
@@ -55,7 +55,7 @@ const toc = [
|
||||
<div><dt>SPAN</dt><dd>2024.01 → 2026.06</dd></div>
|
||||
<div><dt>LEDGERS</dt><dd>24 张问题账</dd></div>
|
||||
<div><dt>LINEAGE</dt><dd>10 次技术转向</dd></div>
|
||||
<div><dt>LABS</dt><dd>10 个可操作实验</dd></div>
|
||||
<div><dt>LABS</dt><dd>11 个可操作实验</dd></div>
|
||||
<div><dt>EVIDENCE</dt><dd>60 个一手 / 官方节点</dd></div>
|
||||
<div><dt>STATUS</dt><dd>三轮 · 真实权重执行</dd></div>
|
||||
</dl>
|
||||
@@ -768,15 +768,15 @@ const toc = [
|
||||
<p class="eyebrow"><span>22</span> OFFICIAL WEIGHTS / EXECUTED</p>
|
||||
<h2>从“MLA 与 MoE 的概念”再往前一步:让官方 V2-Lite 权重真的跑起来</h2>
|
||||
<p class="lede">
|
||||
前面的四联实验负责建立公式与角色合同;下面的六联工件实验固定官方 revision、tokenizer、
|
||||
前面的四联实验负责建立公式与角色合同;下面的七联工件实验固定官方 revision、tokenizer、
|
||||
模型代码和 checkpoint 第一分片,在 RTX 5090 上连续执行 layer 0–6。它把真实观测、shape 推导、
|
||||
吸收式 latent cache、自然长度与同 prompt 等长对照、实现差距和未覆盖范围放在同一张证据图里。
|
||||
吸收式 latent cache、长度对照、官方 chat-template 扰动、实现差距和未覆盖范围放在同一张证据图里。
|
||||
</p>
|
||||
<div class="artifact-callout">
|
||||
<article><span>X / FORWARD</span><b>7 / 27 layers</b><p>1 个 dense 层 + 6 个 MoE 层;layer 7 因跨分片停止。</p></article>
|
||||
<article><span>X / ROUTES</span><b>488,880</b><p>自然 ≤96 与同样本 16 / 24-token 三档、六个 MoE 层的真实 top-6 选择。</p></article>
|
||||
<article><span>X / ROUTES</span><b>870,912</b><p>三档长度 cohort 加 raw / user / generation 模板探针的真实 top-6 选择。</p></article>
|
||||
<article><span>X / ABSORB CACHE</span><b>266,240 → 29,952 B</b><p>同一真实 layer-1 权重的 naive / absorb active buffers。</p></article>
|
||||
<article><span>X / RERUN</span><b>3 / 3 EXACT</b><p>三档 trace byte-exact;16→24 delta 使用同 prompt paired bootstrap。</p></article>
|
||||
<article><span>X / RERUN</span><b>4 / 4 EXACT</b><p>三档长度 trace 与官方模板探针均 byte-exact;比较使用 paired prompt bootstrap。</p></article>
|
||||
</div>
|
||||
<DeepSeekArtifactLab />
|
||||
</section>
|
||||
|
||||
@@ -15,7 +15,7 @@ const workstreams = [
|
||||
{ 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: 92, next: "SM90 FlashMLA kernel、完整 27 层、tokenization 扰动、FP8/pipeline 与 R1-like RL 复现" },
|
||||
{ label: "DeepSeek 专题", value: 93, next: "SM90 FlashMLA kernel、完整 27 层、词元边界 / system / few-shot 正交扰动、FP8/pipeline 与 R1-like RL 复现" },
|
||||
{ label: "指令微调与人类偏好", value: 75, next: "加入真实偏好分歧样本、RM 长度偏置与 PPO/DPO 小模型复现" },
|
||||
{ label: "推理与测试时扩展", value: 76, next: "真实模型采样曲线、PRM 案例与逐篇图表精读" },
|
||||
{ label: "工具使用与长程 Agent", value: 74, next: "补真实环境 traces、cross-harness 对照、Agent RL 训练曲线与安全案例" },
|
||||
@@ -50,7 +50,7 @@ const workstreams = [
|
||||
<div><dt>OVERALL</dt><dd>专题平均 {average}%</dd></div>
|
||||
<div><dt>READABLE</dt><dd>{published} 个首版可读专题</dd></div>
|
||||
<div><dt>ACTIVE</dt><dd>{researching} 个研究/写作中</dd></div>
|
||||
<div><dt>UPDATED</dt><dd>2026-07-29 16:03 CST</dd></div>
|
||||
<div><dt>UPDATED</dt><dd>2026-07-29 17:17 CST</dd></div>
|
||||
<div><dt>MODE</dt><dd>持续迭代,不锁死版本</dd></div>
|
||||
</dl>
|
||||
</div>
|
||||
@@ -97,12 +97,12 @@ const workstreams = [
|
||||
<article><span>✓</span><h3>K3 报告已结构化拆解</h3><p>47 页报告目录、151 条参考来源和架构/后训练/系统主线已经提取。</p></article>
|
||||
<article><span>✓</span><h3>17 专题知识图</h3><p>从语言模型基础到评测安全,包含先修依赖和三条贯穿案例。</p></article>
|
||||
<article><span>✓</span><h3>编辑式网站系统</h3><p>响应式导航、章节模板、侧栏、进度、论文链和证据提示组件。</p></article>
|
||||
<article><span>✓</span><h3>七十七个原创交互视图</h3><p>K3 三轴图、八联报告实验与四联开放工件实验,DeepSeek 四联公式实验与六联真实权重实验,以及语言模型前史、Transformer、表示深度、长上下文、MoE、推理、Agent、多模态、训练系统、推理服务、Scaling、数据工程、数值、Alignment 与评测安全专题。</p></article>
|
||||
<article><span>✓</span><h3>七十八个原创交互视图</h3><p>K3 三轴图、八联报告实验与四联开放工件实验,DeepSeek 四联公式实验与七联真实权重实验,以及语言模型前史、Transformer、表示深度、长上下文、MoE、推理、Agent、多模态、训练系统、推理服务、Scaling、数据工程、数值、Alignment 与评测安全专题。</p></article>
|
||||
<article><span>✓</span><h3>十七篇首版长文</h3><p>K3、语言模型前史、Transformer、表示/位置/残差、DeepSeek、Scaling、数据工程、长上下文、MoE、后训练、推理、Agent、原生多模态、训练系统、推理服务、数值优化与评测安全专题。</p></article>
|
||||
<article><span>✓</span><h3>语言模型前史深度专题</h3><p>八张独立问题账、33 个正式节点、20 段长文与概率—向量—记忆—对齐四联实验。</p></article>
|
||||
<article><span>✓</span><h3>Transformer 深度专题</h3><p>十张独立问题账、40 个正式节点、21 段正文与 QKV—Mask—多头位置—Block 成本四联实验。</p></article>
|
||||
<article><span>✓</span><h3>表示、位置与残差高速公路深度专题</h3><p>二十张问题账、66 个一手节点、DeepSeek/Kimi 双谱系,以及 Token—位置—Norm—Residual/FFN 四联实验。</p></article>
|
||||
<article><span>✓</span><h3>DeepSeek 三轮真实权重里程碑</h3><p>在二十四张问题账、十次转向与四联公式实验上,新增 V2-Lite 7/27 层连续 forward、官方 V3 absorb 的 576 元素真实缓存,以及自然长度 / 同源 16 / 同源 24 三个 cohort、488,880 次真实路由、2,000 次成对 prompt bootstrap 与 3/3 byte-exact 独立重跑的六联实验。</p></article>
|
||||
<article><span>✓</span><h3>DeepSeek 三轮真实权重里程碑</h3><p>在二十四张问题账、十次转向与四联公式实验上,新增 V2-Lite 7/27 层连续 forward、官方 V3 absorb 的 576 元素真实缓存、自然长度 / 同源长度对照与官方模板三条件实验;累计 870,912 次真实路由,模板共享前缀 21,852 / 21,852 ordered top-6 exact,四份运行结果均 byte-exact 独立复跑。</p></article>
|
||||
<article><span>✓</span><h3>Kimi K3 技术报告二轮深读</h3><p>三十二张问题账、Figure 1–16 / Table 1–5 审计、100 节点阅读链,以及 Delta—Decay—AttnRes—LatentMoE—SiTU—QB—MOPD—Cache 八联实验。</p></article>
|
||||
<article><span>✓</span><h3>Kimi K3 三轮开放工件里程碑</h3><p>固定官方 revisions,审计 96 个 shards、497,220 个 tensor entries 与真实 KDA / MLA / MoE / MoonViT shapes;四联实验分开显示层型、tensor anatomy、参数范围和复现边界。</p></article>
|
||||
<article><span>✓</span><h3>FlashKDA RTX 5090 执行闸门</h3><p>隔离 CUDA 13.0 / glibc 2.39 编译 sm_120a wheel;6/6 官方参考逐元素相等,并完成 fixed / varlen、三种 state mode 的 1,800 个 CUDA Event samples。</p></article>
|
||||
@@ -134,7 +134,7 @@ const workstreams = [
|
||||
<div class="queue-table">
|
||||
<div class="head"><b>优先级</b><b>专题</b><b>本轮交付</b><b>完成闸门</b></div>
|
||||
<div><span>P0</span><strong>K3 三轮</strong><p>开放权重 traces → FlashKDA / AttnRes / MoE 真实行为 → Figure 1–16 数值重绘与独立复现</p><em>运行证据 + 逐图复现</em></div>
|
||||
<div><span>P0</span><strong>DeepSeek 三轮</strong><p>SM90 FlashMLA kernel / 完整 27 层 / tokenizer 与 prompt-template 扰动 → FP8 / pipeline traces → R1-like RL 小模型复现</p><em>运行证据 + 独立复现</em></div>
|
||||
<div><span>P0</span><strong>DeepSeek 三轮</strong><p>SM90 FlashMLA kernel / 完整 27 层 / 词元边界与 system / few-shot 正交扰动 → FP8 / pipeline traces → R1-like RL 小模型复现</p><em>运行证据 + 独立复现</em></div>
|
||||
<div><span>P0</span><strong>Transformer 二轮</strong><p>多头电路逐图 → Pre/Post-LN 真实 traces → Flash/KV 配置与 kernel 对照</p><em>逐图笔记 + 实测边界</em></div>
|
||||
<div><span>P0</span><strong>表示、位置与残差二轮</strong><p>真实 hidden-state / norm traces → 长上下文位置外推 → mHC / AttnRes 深层稳定性消融</p><em>可复现实验 + 逐图笔记</em></div>
|
||||
<div><span>P0</span><strong>语言模型前史二轮</strong><p>Kneser–Ney / LSTM / Bahdanau 逐图 → 真实小语料复现 → tokenizer 公平性</p><em>可复现实验 + 逐图笔记</em></div>
|
||||
|
||||
Reference in New Issue
Block a user