Files
llm-atlas/research/DEEPSEEK_ROUTING_HISTORY_BOUNDARY_TOKEN_AUDIT.md
2026-07-29 20:00:37 +08:00

24 KiB
Raw Permalink Blame History

DeepSeek-V2-Lite 历史边界 Token 控制审计

状态:真实官方权重执行(X)
模型:deepseek-ai/DeepSeek-V2-Lite base checkpoint
revision:604d5664dddd88a0433dbae533b7fe9472482de0
执行边界:layer 0–6;观测 MoE layer 1–6
样本:WikiText-2 / TNEWS / HumanEval / GSM8K 各 32 条
正式运行与独立复跑:byte-exact
完整 JSON SHA-256:9bb93834ffd8536aeebe4325e45d2179ba590554c6ff6b6fcceaba2f499b9c37

0. 一句话先说结论

在固定 DeepSeek-V2-Lite base 权重、固定 128 个公开样本、固定重复词元 历史、固定角色标记、固定长度、固定目标位置和固定八格 batch 时:

把历史 assistant 后面的官方 EOS token 换成 x、句点或换行这三个 单 token 对照,会让后续目标内容对 system 开关表现出更大的专家路由差异。

目标内容、prompt-balanced 口径下,六个 MoE 层 × 四个域的平均 system-edge total variation(TV)为:

官方 EOS      .0374
x             .0539
句点          .0553
换行          .0492

但这句话必须与下面四条边界一起读:

  1. 本实验使用的是 base checkpoint,不是 Chat/SFT checkpoint;
  2. 三个替换条件不是官方有效对话序列,而是精确的 token-ID 反事实;
  3. 下一条 User: 角色标记仍然存在,所以没有“移除全部回合边界”;
  4. 本实验没有生成答案,因此没有证明 EOS 让回答更好、更稳或更正确。

最准确的命名是:

历史 assistant 边界上的单 token 身份路由控制。


1. 为什么要继续拆上一轮

上一轮把 system 开/关与三种历史组合成了 2×3:

none → repeated-token filler → fixed demo

其中 filler 与 demo:

  • 都增加 17 个官方模板 token;
  • 都包含一个 user turn;
  • 都包含一个 assistant turn;
  • 都在 assistant 内容后插入 EOS;
  • 都把目标 user 推到同一绝对位置。

这已经把“具体示例文本”从“历史结构”里拆出了一层。

可是 none → filler 仍然同时增加了:

  • 历史文本;
  • user / assistant 角色切换;
  • assistant EOS;
  • 目标距离;
  • 一整段新的隐藏状态演化。

因此上一轮无法回答:

历史缓冲模式中,assistant 后面的那个 EOS token 本身是不是一个特殊边界输入?

本轮只处理这个更窄、也更可辨识的问题。


2. 先看官方模板到底做了什么

固定 revision 的官方 tokenizer_config.json 中,核心模板是:

{% if message['role'] == 'user' %}
  {{ 'User: ' + message['content'] + '\n\n' }}
{% elif message['role'] == 'assistant' %}
  {{ 'Assistant: ' + message['content'] + eos_token }}
{% elif message['role'] == 'system' %}
  {{ message['content'] + '\n\n' }}
{% endif %}

所以 repeated-token 历史与目标 user 被序列化为:

<BOS>
User: x x x x x x x x x

Assistant: x
<EOS>
User: TARGET

Assistant:

这里的 <EOS> 不是我们根据字符串猜出来的边界。

在固定 tokenizer 中:

名称 文本 / special token token ID token 数
官方 EOS <|end▁of▁sentence|> 100001 1
内容对照 x 87 1
标点对照 . 13 1
格式对照 \n 185 1

四个 ID 完全不同;后三者不是 special token。

官方模板事实可以在 固定模型工件 中直接检查。


3. 为什么不直接“删掉 EOS”

最直觉的 EOS 消融是:

有 EOS  vs  没有 EOS

但直接删除会同时改变:

  • 总 token 数;
  • 目标 user 的绝对位置;
  • RoPE 位置;
  • padded sequence;
  • 矩阵形状或有效 attention mask;
  • 后续所有 token 在批中的列号。

那样看到差异时,无法知道它来自 EOS 身份还是“一格位置移动”。

因此本轮采用一条更干净的干预:

官方 token IDs
... Assistant :  x  EOS  User : ...

反事实 token IDs
... Assistant :  x   x   User : ...
... Assistant :  x   .   User : ...
... Assistant :  x  \n   User : ...

每次只改一个历史 token ID。

这样可以固定:

  • 序列长度;
  • 目标绝对位置;
  • user / assistant 文本;
  • User: / Assistant: 角色标记;
  • attention mask;
  • generation prompt;
  • 同一次 forward 的 batch shape。

代价是:

三个替换条件不再是官方 chat template 能自然产生的合法序列。

所以它们必须叫 token-ID counterfactuals,不能叫三种官方模板。


4. 2×4 设计

两个因子是:

  • S:system 关闭 / 开启;
  • B:边界 ID 为 EOS / x / . / \n。

八格如下:

条件 system 历史边界 官方序列
S0 / EOS 0 EOS 100001 是
S1 / EOS 1 EOS 100001 是
S0 / X 0 x ID 87 否,单 ID 反事实
S1 / X 1 x ID 87 否,单 ID 反事实
S0 / PERIOD 0 . ID 13 否,单 ID 反事实
S1 / PERIOD 1 . ID 13 否,单 ID 反事实
S0 / NEWLINE 0 \n ID 185 否,单 ID 反事实
S1 / NEWLINE 1 \n ID 185 否,单 ID 反事实

同一个 source prompt 的八格进入同一个 right-padded batch。

正式运行采用:

batch-prompts = 4
rows per batch = 4 prompts × 8 conditions = 32

5. 三个问题,三个不同统计量

5.1 system 对目标路由影响多大

设:

P(s, b, l, d)

为 system 水平 s、边界 b、层 l、域 d 的目标内容专家份额分布。

边界 b 下的 system edge 是:

Δ_b = P(S1, b) - P(S0, b)

实际两分布之间的 standard TV 是:

TV_b = 1/2 × Σ_e |P(S1, b, e) - P(S0, b, e)|

它回答:

开关固定 system 消息,目标 token 的总体专家份额移动了多少?

5.2 替换 EOS 后,system edge 变大还是变小

对每个普通 token 对照:

C_x       = TV_x       - TV_EOS
C_period  = TV_period  - TV_EOS
C_newline = TV_newline - TV_EOS

若 C_x > 0,只表示:

在这个协议里,把 EOS 换成 x 后,system 开关造成的目标路由距离更大。

它不表示:

  • EOS 更正确;
  • EOS 更有语义;
  • EOS 提高准确率;
  • x 是噪声;
  • system 的内容被“记住”或“忘掉”。

5.3 EOS 替换本身改了多少路由

固定 system 水平,定义:

D_s,b = TV(P(s, EOS), P(s, b))

再比较:

I_b = D_1,b - D_0,b

它回答:

system 的存在是否会改变目标路由对边界 ID 替换的敏感度?

I_b 不是传统线性模型中的标量主效应,而是两个实际分布距离的差。


6. 为什么 bootstrap 必须八格共用

每个域有 32 个 source prompts。

本轮使用 2,000 次 source-paired bootstrap:

  1. 对一个 layer × domain × scope × aggregation 生成一张 2000 × 32 source index 矩阵;
  2. 同一张矩阵同时重采八个条件;
  3. 每次先重算八个专家分布;
  4. 再计算 TV、JSD、CV 与对比;
  5. 最后取 2.5% / 97.5% 分位数。

这样:

  • 八格的 source 构成逐次完全相同;
  • TV_x - TV_EOS 是配对差;
  • D_1,x - D_0,x 也是配对差;
  • 不会把 token 当成独立样本。

24 个 layer × domain 区间仍然是描述性格子:

没有进行家族级多重检验校正。


7. 正式执行账

7.1 语料与变体

项目 数量
源 prompts 128
每域 32
条件数 8
prompt variants 1,024
canonical target tokens 每条 23
六层逐条件精确对齐目标 token 2,874

7.2 输入 token

条件 输入 token
S0 / EOS 6,074
S1 / EOS 8,122
S0 / X 6,074
S1 / X 8,122
S0 / PERIOD 6,074
S1 / PERIOD 8,122
S0 / NEWLINE 6,074
S1 / NEWLINE 8,122
合计 56,784

每个 source × system 分组内,四种边界逐条同长度。

7.3 路由量

56,784 input tokens
× 6 observed MoE layers
× top-6 routed experts
= 2,044,224 route selections

加上前序公开实验:

3,112,848 + 2,044,224 = 5,157,072

截至本轮,网站公开账本累计记录 5,157,072 次真实 top-6 路由。

7.4 单 ID 合同

校验 结果
source × system 分组 256
四格逐组同输入长度 256 / 256
四格逐组同目标起始位置 256 / 256
官方 EOS 格相对官方模板改 0 个 ID 256 / 256
三个反事实格相对官方模板改 1 个 ID 768 / 768

8. 主结果:24 张目标内容问题账

口径:

  • scope:target_content
  • aggregation:prompt_balanced
  • 数字:system-edge TV
  • 括号:replacement − EOS 的 source-paired 95% interval
层 域 EOS X 句点 换行 X−EOS 句点−EOS 换行−EOS
1 英文 .0559 .0836 .0807 .0802 +.0277 [.0187,.0353] +.0248 [.0166,.0310] +.0243 [.0168,.0295]
1 中文 .0276 .0505 .0517 .0510 +.0229 [.0168,.0310] +.0241 [.0169,.0319] +.0234 [.0168,.0319]
1 代码 .0571 .0804 .0810 .0917 +.0233 [.0172,.0301] +.0239 [.0173,.0298] +.0346 [.0280,.0407]
1 数学 .0784 .1069 .1055 .1056 +.0285 [.0211,.0360] +.0271 [.0197,.0342] +.0272 [.0194,.0345]
2 英文 .0305 .0432 .0427 .0463 +.0127 [.0059,.0208] +.0122 [.0047,.0202] +.0158 [.0076,.0227]
2 中文 .0207 .0272 .0281 .0286 +.0066 [.0029,.0152] +.0075 [.0029,.0143] +.0079 [.0029,.0147]
2 代码 .0327 .0532 .0509 .0468 +.0205 [.0152,.0286] +.0182 [.0126,.0252] +.0141 [.0088,.0222]
2 数学 .0404 .0522 .0547 .0516 +.0118 [.0060,.0195] +.0144 [.0082,.0222] +.0113 [.0057,.0189]
3 英文 .0312 .0432 .0445 .0423 +.0120 [.0042,.0198] +.0133 [.0052,.0189] +.0111 [.0036,.0180]
3 中文 .0229 .0317 .0277 .0263 +.0088 [.0034,.0161] +.0048 [.0003,.0126] +.0034 [−.0008,.0122]
3 代码 .0403 .0473 .0446 .0432 +.0070 [.0018,.0125] +.0043 [.0000,.0091] +.0029 [−.0010,.0082]
3 数学 .0333 .0360 .0360 .0422 +.0027 [−.0014,.0100] +.0027 [−.0008,.0104] +.0089 [.0035,.0155]
4 英文 .0324 .0510 .0515 .0453 +.0187 [.0119,.0263] +.0191 [.0128,.0267] +.0129 [.0068,.0210]
4 中文 .0293 .0404 .0422 .0331 +.0111 [.0063,.0192] +.0129 [.0085,.0204] +.0039 [−.0002,.0109]
4 代码 .0413 .0609 .0750 .0591 +.0197 [.0134,.0266] +.0337 [.0284,.0401] +.0178 [.0133,.0259]
4 数学 .0512 .0705 .0705 .0607 +.0193 [.0132,.0289] +.0192 [.0130,.0283] +.0094 [.0045,.0168]
5 英文 .0342 .0503 .0508 .0409 +.0161 [.0109,.0225] +.0165 [.0120,.0222] +.0067 [.0012,.0137]
5 中文 .0256 .0365 .0447 .0276 +.0109 [.0077,.0195] +.0191 [.0134,.0281] +.0021 [−.0014,.0110]
5 代码 .0389 .0501 .0515 .0384 +.0113 [.0058,.0181] +.0126 [.0067,.0185] −.0004 [−.0054,.0059]
5 数学 .0442 .0555 .0530 .0455 +.0113 [.0049,.0195] +.0088 [.0022,.0181] +.0013 [−.0057,.0089]
6 英文 .0300 .0562 .0607 .0434 +.0262 [.0165,.0355] +.0307 [.0220,.0395] +.0134 [.0073,.0231]
6 中文 .0258 .0428 .0469 .0292 +.0170 [.0114,.0263] +.0211 [.0152,.0315] +.0034 [−.0007,.0118]
6 代码 .0320 .0603 .0634 .0546 +.0283 [.0207,.0345] +.0314 [.0240,.0383] +.0226 [.0137,.0307]
6 数学 .0427 .0643 .0690 .0470 +.0216 [.0154,.0304] +.0264 [.0201,.0350] +.0043 [−.0003,.0135]

9. 把 24 张账压成可读摘要

9.1 平均 system-edge TV

边界 平均 TV 相对 EOS
EOS .03744 —
X .05393 +.01649,约 +44%
句点 .05531 +.01787,约 +48%
换行 .04920 +.01176,约 +31%

9.2 方向计数

对比 点估计 replacement > EOS 区间完全高于 0 跨 0
X − EOS 24 / 24 23 / 24 1 / 24
句点 − EOS 24 / 24 23 / 24 1 / 24
换行 − EOS 23 / 24 16 / 24 8 / 24

token-weighted 口径得到几乎相同的总体图景:

EOS .03742
X .05392
句点 .05531
换行 .04919

因此主现象不是由某几个长 prompt 在 token-weighted 口径里取得更高权重造成的。


10. 深度与领域不是平的

10.1 按层平均

MoE 层 EOS X 句点 换行
1 .0548 .0803 .0797 .0821
2 .0311 .0440 .0441 .0433
3 .0319 .0396 .0382 .0385
4 .0385 .0557 .0598 .0496
5 .0357 .0481 .0500 .0381
6 .0326 .0559 .0600 .0436

边界替换效应不是简单随深度单调放大或衰减。

Layer 3 的差距最小;Layer 6 的 X / 句点差距又明显扩大。

10.2 按域平均

域 EOS X 句点 换行
英文 .0357 .0546 .0552 .0498
中文 .0253 .0382 .0402 .0326
代码 .0404 .0587 .0611 .0556
数学 .0484 .0642 .0648 .0588

四个域都保留 EOS 较小的总体模式,但幅度不同。


11. 逐 token 专家集合给出第二条证据

分布 TV 可能掩盖“哪些 token 改路由”。

因此本轮同时对 2,874 个精确对齐目标 token 聚合:

  • ordered top-6 exact;
  • unordered top-6 set exact;
  • mean top-6 Jaccard;
  • mean overlap。

下面报告 system 开/关两格之间的 set exact 与 Jaccard:

层 EOS exact / Jaccard X 句点 换行
1 .565 / .864 .437 / .815 .441 / .817 .441 / .815
2 .695 / .905 .551 / .855 .554 / .856 .566 / .860
3 .682 / .901 .573 / .865 .573 / .865 .588 / .868
4 .673 / .895 .522 / .839 .511 / .834 .538 / .846
5 .656 / .887 .522 / .839 .525 / .840 .575 / .859
6 .651 / .888 .486 / .827 .474 / .821 .519 / .845

六层中,EOS 条件的 system-pair top-6 set exact 和 Jaccard 都高于三个普通 token 对照。

这与“EOS 下 system-edge TV 更小”同向,但不是同一个统计量:

  • TV 看聚合专家份额移动;
  • exact / Jaccard 看逐 token 专家集合是否保持。

12. system 会不会改变对 EOS 替换的敏感度

目标内容、prompt-balanced 下,EOS → 普通 token 的直接 TV 均值:

替换 system 关 system 开 S1 − S0
EOS → X .03655 .04396 +.00741
EOS → 句点 .03630 .04525 +.00896
EOS → 换行 .04094 .04652 +.00557

点估计 S1 > S0 的格数:

X       20 / 24
句点    21 / 24
换行    18 / 24

但配对区间完全高于零的格数只有:

X       11 / 24
句点    12 / 24
换行     8 / 24

所以可以报告平均交互模式,不能写成每层每域都成立的规律。


13. target content 与 full input 必须分开

13.1 目标内容

EOS .0374 → X .0539 / 句点 .0553 / 换行 .0492

方向高度一致。

13.2 完整输入

EOS       .13894
X         .14159
句点      .14026
换行      .14076

replacement > EOS 的点估计仅为:

X       16 / 24
句点    15 / 24
换行    15 / 24

完整输入包含:

  • system 本身;
  • filler 历史;
  • 被替换的边界 token;
  • User: / Assistant: 包装;
  • 目标内容;
  • generation prompt。

一个 ID 的替换在完整输入总体计数里很容易被稀释。

因此本轮最有辨识力的结论应限定在:

完全相同的后续目标内容 token。


14. 负载“更均衡”仍然不是结论

若把每个条件的专家份额压成 CV,replacement − EOS 的 system-edge CV 对比方向为:

替换 点估计负 点估计正 区间负 / 正 / 跨零
X 6 18 4 / 8 / 12
句点 6 18 4 / 10 / 10
换行 6 18 2 / 9 / 13

它不像 TV 那样高度一致。

因此本轮不能推出:

  • EOS 让专家更均衡;
  • ordinary token 让专家更集中;
  • 更小 system-edge TV 等于更优负载均衡。

TV 衡量两条件间的路由距离,CV 衡量单条件内的份额离散程度。 两者回答不同问题。


15. BF16 batch shape 再次显示为真实复现边界

新实验的官方 EOS 条件与上一轮 filler 条件具有逐条完全相同的 token IDs:

256 / 256 condition sequences token-ID hash exact

但上一轮 batch 是:

5 prompts × 6 conditions = 30 rows

本轮 batch 是:

4 prompts × 8 conditions = 32 rows

跨两次运行比较六层、128 prompts、system 开关两格:

对象 exact / 1,536
完整 ordered top-6 route hash 359
目标内容 ordered top-6 route hash 758
完整 expert-load vector 577
目标内容 expert-load vector 996

逐层完整 route hash exact:

Layer 1   242 / 256
Layer 2    57 / 256
Layer 3    30 / 256
Layer 4     2 / 256
Layer 5    11 / 256
Layer 6    17 / 256

这不是 token 合同漂移,而是矩阵形状改变后,BF16 前向中的微小数值差异 沿层传播,并让接近 top-k 边界的 gate 排序分叉。

因此正式主结论只使用:

同一次 32-row 八格 batch 内的配对对比。

不能把上一轮 .0378 与本轮 .0374 当成“EOS 效应复现误差”做统计比较。


16. 这次能说“因果”到哪一层

本轮比观察性相关更强,因为在每个 EOS → control 对比中:

  • source prompt 相同;
  • system 相同;
  • token 数相同;
  • attention mask 相同;
  • 目标位置相同;
  • 角色标记相同;
  • batch 相同;
  • 只有一个历史 input ID 被替换。

因此在固定模型与固定 forward 合同内,可以说:

这个单 input-ID 干预造成了观测到的后续路由差异。

但不能继续跳到:

“EOS 的语义导致模型正确关闭回合。”

缺失的证据包括:

  • Chat/SFT checkpoint 对照;
  • 行为生成与任务指标;
  • attention / residual / gate-logit 中介;
  • EOS embedding 与多个 special-token 对照;
  • 去掉 User: 角色标记的独立实验;
  • 完整 27 层。

这是“输入干预的路由因果”,不是“语义机制的完整因果解释”。


17. 文献脉络:哪些来源支持什么

17.1 DeepSeek 官方工件

DeepSeek-V2-Lite tokenizer config 直接规定 assistant 内容后拼接 eos_token。

它支持:

  • 本实验边界位置来自官方工件;
  • 不是自行发明的字符串模板。

它不支持:

  • base checkpoint 已经学习了聊天角色层级;
  • EOS 的内部功能就是“回合关闭”。

17.2 Chat template 是序列化合同

Hugging Face Chat Templates 明确说明 chat 消息最终仍会变成一条线性 token 序列,角色和边界通常通过 模型特定的 control tokens 注入。

它支持:

  • 角色字段本身不会被 Transformer 神奇地看见;
  • 真正进入模型的是序列化 token。

它不支持:

  • 任意模型都共享相同 role / EOS 语义。

17.3 EOT 可以成为监督目标

LIMA: Less Is More for Alignment 在用户与 assistant 说话者之间加入专门 EOT token,并训练模型在回答结束时 预测它。

它支持:

  • 对话边界 token 可以通过监督训练学成。

它不支持:

  • DeepSeek-V2-Lite base 的 EOS 等同于 LIMA 的 EOT;
  • 本轮结果来自 instruction tuning。

17.4 EOS 会改变隐藏状态动力学,但任务不同

The EOS Decision and Length Extrapolation 比较训练时预测 / 不预测 EOS 的序列模型,发现 EOS 决策会伴随 length manifolds 与 length attractors,并影响长度外推。

它支持:

  • EOS 不是只能在 decoder 外部解释的“停止按钮”;
  • EOS 训练目标可能改变内部表示动力学。

它不支持:

  • 把 LSTM / SCAN 的结论直接迁移到 DeepSeekMoE;
  • 解释本轮具体专家路由。

17.5 跨模型的 end-of-turn 规范

Meta Llama 3 official prompt format 规定每条消息以 <|eot_id|> 结束。

它支持:

  • 现代 chat 模型确实把 message boundary 编成特殊 token。

它不支持:

  • Llama 的 EOT 与 DeepSeek base EOS 具有相同内部机制。

17.6 irrelevant context 不是 routing 论文

Large Language Models Can Be Easily Distracted by Irrelevant Context 与 Lost in the Middle 说明额外上下文和位置会影响行为表现。

它们支持:

  • 历史内容、位置与边界值得独立控制。

它们不支持:

  • route TV 必然与准确率同向;
  • repeated x 就是一般 irrelevant context。

17.7 干预方法也有边界

Towards Best Practices of Activation Patching 说明干预结论会受到 metric 与 corruption method 选择影响。

本轮因此:

  • 不用一个 CV 指标代表全部路由现象;
  • 同报 TV、JSD、逐 token exact/Jaccard;
  • 明确普通 token 对照不是自然语言合法模板;
  • 不把单 ID 输入干预升级为完整内部机制定位。

18. 正式运行与独立复跑

主结果:

src/data/deepseek-v2-lite-routing-history-boundary-token-control.json

独立复跑:

src/data/deepseek-v2-lite-routing-history-boundary-token-control-repro.json

两者:

bytes   54,254,445
SHA256  9bb93834ffd8536aeebe4325e45d2179ba590554c6ff6b6fcceaba2f499b9c37
cmp     byte-exact

执行命令:

PYTHONPATH=/path/to/transformers-4.41.2-deps:/usr/lib/python3/dist-packages \
python -B experiments/deepseek/v2_lite_routing_history_boundary_token_control.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-history-boundary-token-control.json \
  --per-domain 32 \
  --content-tokens 23 \
  --batch-prompts 4 \
  --layers 7 \
  --bootstrap 2000 \
  --seed 20260729 \
  --captured-at 2026-07-29T11:12:00+00:00

19. 已证明、未证明、下一步

已证明

  • 官方历史 EOS 在固定模板中是独立 token ID;
  • 三个反事实条件逐条只替换该一个 ID;
  • 八格逐组同长度、同目标位置、同 batch;
  • EOS 下的目标内容 system-edge TV 平均小于三个普通 token 对照;
  • X / 句点的方向在 24 / 24 格一致;
  • 逐 token set exact / Jaccard 与分布 TV 同向;
  • 正式运行与独立复跑 byte-exact。

未证明

  • EOS “理解”了回合结束;
  • base checkpoint 具有 chat role hierarchy;
  • EOS 让回答更正确;
  • 更小 TV 就是更优;
  • x / 句点 / 换行代表全部普通 token;
  • 现象覆盖全部 27 层;
  • 现象覆盖 DeepSeek-V2-Lite-Chat;
  • 现象在不同 batch shape 下 route hash 不变。

下一步

  1. 角色标记控制:固定内容与长度,替换 / 移除下一条 User: 标记;
  2. special-token 家族控制:加入 BOS、其他已训练 special token 与多个普通 token;
  3. Chat checkpoint 对照:比较 base 与 V2-Lite-Chat;
  4. 行为联结:生成答案,测任务正确率、格式终止与 route TV 的关系;
  5. gate-logit 中介:记录替换后 router logits、top-k margin 与翻转位置;
  6. 完整 27 层:获得其余 shards 后扩展;
  7. 固定 batch-shape 复跑:用 dummy rows 锁定矩阵形状,验证跨实验可比性。

20. 最终课程表述

可以写:

在 DeepSeek-V2-Lite base 的固定前六个 MoE 层中,官方 assistant EOS 与三个单 token 反事实对照产生了可重复的后续路由差异;EOS 条件下, system 开关对精确目标内容的专家分布影响更小,且逐 token top-6 集合 更稳定。

不可以写:

DeepSeek 用 EOS 理解并关闭了对话,所以回答更稳定。

前一句是当前证据。

后一句仍需要 Chat 权重、行为指标与内部中介实验。