# 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:`c372c1b03a8b15f615b54ded5d9257a8fc2cdb7728001735d3d4c1d8534af5bf` ## 0. 一句话先说结论 固定 DeepSeek-V2-Lite base 权重、128 个公开样本、重复词元历史、角色块、 长度、目标位置和八格 batch 后,只把历史 assistant 后的一个边界 ID 设为 `EOS / BOS / x / .`: ```text 目标内容 · prompt-balanced · 24 个 layer×domain 平均 system-edge TV EOS .037518 BOS .048018 x .053975 句点 .055289 ``` 相对官方 EOS: ```text BOS − EOS +.010500 22↑ / 2↓ x − EOS +.016457 24↑ / 0↓ 句点 − EOS +.017771 24↑ / 0↓ ``` 这说明: > 在本实验的固定协议中,边界的具体 token 身份会改变后续目标内容对 system > 开关的路由距离;BOS 不能简单复现 EOS 的作用。 但是它**不能**推出: > “特殊 token 普遍让 system effect 更小”。 原因非常具体:固定 tokenizer 的 special inventory 只有 EOS 和 BOS, 所以二者确实被完全枚举;但普通词元空间接近十万个 ID,本实验只挑了 `x` 和句点两个对照。`mean(x, .) − mean(EOS, BOS) = +.011864` 是四个 ID 内的 描述性 2-vs-2 汇总,不是对“普通 token 总体”的抽样推断。 --- ## 1. 为什么要继续做这一轮 上一轮边界实验比较: ```text EOS ↔ x / 句点 / 换行 ``` 结果表明,三个普通单 token 替换都能改变后续目标路由,而且多数格子的 system-edge TV 大于 EOS 条件。但它仍留下一个关键混淆: - EOS 是特殊 token; - 三个替换项都不是特殊 token; - 因此差异可能来自 EOS 的具体身份,也可能来自“specialness”。 本轮加入 BOS,因为 BOS: - 与 EOS 一样是 tokenizer 官方声明的 special token; - 与 EOS 一样只有一个 token ID; - 可以在不改变长度、目标位置和 batch shape 的前提下进行单 ID 替换。 问题随之变成: 1. BOS 能否复现 EOS 的 system-edge 路由模式? 2. EOS/BOS 与两个选定普通对照的描述性均值是否不同? 3. 这种差异是否在直接替换、CV、完整输入等口径下也同向? --- ## 2. 固定 tokenizer 的完整特殊词元库存 固定 revision 的真实 tokenizer 合同: | 项目 | token / ID | |---|---| | `vocab_size` | `100000` | | tokenizer 总长度 | `100002` | | BOS | `<|begin▁of▁sentence|>` / `100000` | | EOS | `<|end▁of▁sentence|>` / `100001` | | PAD | `100001`,与 EOS 同 ID | | `all_special_ids` | `[100000, 100001]` | | `all_special_tokens` 数量 | `2` | 因此: ```text special inventory = {BOS, EOS} ``` 本轮确实穷尽了 special inventory,而不是只挑两个看起来特殊的字符串。 四个实验 ID: | 水平 | token ID | special | 官方历史边界 | |---|---:|---:|---:| | `eos` | `100001` | 是 | 是 | | `bos` | `100000` | 是 | 否,反事实 | | `x` | `87` | 否 | 否,反事实 | | `period` | `13` | 否 | 否,反事实 | 需要特别注意: - PAD 与 EOS 共用 ID,所以不能把 PAD 当作第五个独立 special control; - `x` 和句点不是从普通词元总体随机抽样; - 普通词元还有不同频率、脚本、空白、标点和语义类别,本实验没有覆盖。 官方合同可在固定 revision 的 [tokenizer_config.json](https://huggingface.co/deepseek-ai/DeepSeek-V2-Lite/blob/604d5664dddd88a0433dbae533b7fe9472482de0/tokenizer_config.json) 中核查。 --- ## 3. 2×4 实验设计 两个因子: - `S`:system message 关闭 / 开启; - `B`:边界 ID 为 EOS / BOS / `x` / 句点。 八格: | 条件 | system | 边界 ID | 官方模板序列 | |---|---:|---|---:| | `S0 / EOS` | 0 | `100001` | 是 | | `S1 / EOS` | 1 | `100001` | 是 | | `S0 / BOS` | 0 | `100000` | 否 | | `S1 / BOS` | 1 | `100000` | 否 | | `S0 / X` | 0 | `87` | 否 | | `S1 / X` | 1 | `87` | 否 | | `S0 / PERIOD` | 0 | `13` | 否 | | `S1 / PERIOD` | 1 | `13` | 否 | 序列局部形态: ```text ... Assistant : x [BOUNDARY_ID] User : TARGET ... ``` 所有替换发生在官方 renderer 完成之后。除 EOS 外,其余三格是明确的 token-ID counterfactual,不是官方模板会自然渲染出的聊天。 --- ## 4. 什么被严格固定 每个 source 的八格共同固定: - 同一 checkpoint、revision、tokenizer 与 remote code; - 同一 system 文本; - 同一重复词元 user/assistant 历史; - 同一 `User:` / `Assistant:` 角色块; - 同一目标文本和 canonical 23-token span; - 同一序列长度; - 同一目标绝对起止位置; - 同一 attention mask 和 right-padding; - 同一个 32-row BF16 forward。 正式验证: | 闸门 | 结果 | |---|---:| | source prompts | 128 | | 输入变体 | 1,024 | | system groups | 256 | | 八格同长度 | 256 / 256 | | 八格同目标位置 | 256 / 256 | | 官方 EOS 零 ID 改动 | 256 / 256 | | 三类反事实恰好一 ID 改动 | 768 / 768 | | 实际 MoE routes | 2,044,224 | 正式运行与独立复跑都是 54,440,827 bytes,完整 JSON byte-exact。 --- ## 5. 统计量回答的是三个不同问题 ### 5.1 system edge 固定边界 `b`: ```text TV(P(S0, b), P(S1, b)) ``` 它问:开关 system 时,目标内容的专家份额移动了多少? ### 5.2 相对 EOS 的 system-edge contrast ```text TV_system(b) − TV_system(EOS) ``` 它问:把边界 ID 换掉后,system-edge 距离变大还是变小? ### 5.3 直接替换距离 固定 system 水平 `s`: ```text TV(P(s, EOS), P(s, b)) ``` 它问:只改这个历史 ID,本身让后续目标路由移动了多少? 直接替换距离非零,不代表 system-edge contrast 必然同方向。这两张账不能相减 之后只保留一个顺眼结论。 --- ## 6. 主结果:目标内容的 system edge 主口径是: ```text scope = target_content aggregation = prompt_balanced metric = total variation bootstrap = source-paired, 2,000 resamples seed = 20260729 ``` 24 格 system-edge TV: | 层 | 域 | EOS | BOS | x | 句点 | BOS−EOS [95% CI] | |---:|---|---:|---:|---:|---:|---:| | 1 | 英文 | .056 | .108 | .084 | .081 | +.052 [.040, .061] | | 1 | 中文 | .028 | .057 | .051 | .052 | +.030 [.022, .037] | | 1 | 代码 | .057 | .071 | .080 | .081 | +.014 [.007, .022] | | 1 | 数学 | .078 | .125 | .107 | .105 | +.047 [.039, .053] | | 2 | 英文 | .030 | .039 | .044 | .043 | +.009 [.002, .017] | | 2 | 中文 | .020 | .026 | .027 | .029 | +.005 [.001, .013] | | 2 | 代码 | .033 | .044 | .054 | .050 | +.011 [.005, .019] | | 2 | 数学 | .041 | .049 | .052 | .055 | +.008 [.003, .016] | | 3 | 英文 | .030 | .042 | .043 | .044 | +.012 [.005, .017] | | 3 | 中文 | .023 | .027 | .032 | .028 | +.004 [.000, .013] | | 3 | 代码 | .041 | .049 | .047 | .044 | +.008 [.002, .014] | | 3 | 数学 | .032 | .039 | .035 | .036 | +.006 [.001, .014] | | 4 | 英文 | .034 | .040 | .050 | .052 | +.006 [.001, .014] | | 4 | 中文 | .030 | .032 | .041 | .042 | +.003 [-.001, .010] | | 4 | 代码 | .041 | .048 | .061 | .075 | +.007 [.001, .015] | | 4 | 数学 | .051 | .057 | .069 | .070 | +.006 [.000, .015] | | 5 | 英文 | .034 | .039 | .050 | .052 | +.006 [-.000, .013] | | 5 | 中文 | .026 | .030 | .037 | .045 | +.004 [.001, .013] | | 5 | 代码 | .039 | .039 | .051 | .051 | +.000 [-.005, .008] | | 5 | 数学 | .044 | .042 | .055 | .053 | -.002 [-.008, .006] | | 6 | 英文 | .031 | .038 | .056 | .060 | +.007 [.001, .014] | | 6 | 中文 | .026 | .029 | .044 | .048 | +.003 [.000, .011] | | 6 | 代码 | .032 | .043 | .061 | .062 | +.011 [.006, .018] | | 6 | 数学 | .045 | .039 | .066 | .070 | -.006 [-.011, .002] | 把 24 格作为描述性层×域单元汇总: | contrast | 平均 ΔTV | 点估计方向 | CI 全正 / 全负 / 跨零 | |---|---:|---:|---:| | BOS−EOS | +.010500 | 22↑ / 2↓ | 19 / 0 / 5 | | x−EOS | +.016457 | 24↑ / 0↓ | 23 / 0 / 1 | | 句点−EOS | +.017771 | 24↑ / 0↓ | 22 / 0 / 2 | 可读结论: - BOS 在多数格比 EOS 产生更大的 system-edge 路由距离; - 但 L5/L6 数学已经出现反向点估计; - `x` 和句点的差异更大、更一致; - 因此“BOS 是特殊 token”并不足以复现 EOS 的模式。 --- ## 7. 四 ID 的描述性 family summary 只在同一 shared-source bootstrap 内计算: ```text special mean = mean(EOS, BOS) ordinary-control mean = mean(x, period) ordinary − special ``` 目标内容、prompt-balanced 的 24 格均值: ```text special mean .042768 ordinary-control mean .054632 ordinary − special +.011864 ``` 24 / 24 点估计为正;95% CI 分类为 20 全正、0 全负、4 跨零。 正确表述: > 在这四个具体 ID 中,两个选定普通对照的 system-edge TV 均值高于完整 > special inventory 的均值。 错误表述: > 普通 token 普遍比特殊 token 产生更大的 system effect。 后一句需要对普通 token 总体定义抽样框、抽取更多频率与类别匹配 ID,并进行 层级推断;本轮没有做。 --- ## 8. 直接替换没有给出同样简单的故事 跨 24 格平均 direct target TV: | EOS→替换项 | S0 | S1 | S1−S0 | 点估计方向 | |---|---:|---:|---:|---:| | BOS | .043479 | .040793 | -.002686 | 7↑ / 17↓ | | x | .036428 | .044132 | +.007704 | 20↑ / 4↓ | | 句点 | .036296 | .045606 | +.009310 | 22↑ / 2↓ | 其中: - BOS direct interaction 的 CI 分类为 3 正 / 4 负 / 17 跨零; - `x` 为 10 正 / 0 负 / 14 跨零; - 句点为 12 正 / 0 负 / 12 跨零。 所以本轮不是“所有替换都被 system 统一放大”。BOS 与两个普通对照在 直接作用的 system modulation 上呈现不同方向。 CV 也没有形成简单类别规律。BOS−EOS 的 system-edge ΔCV 跨 24 格平均 `+.009904`,点估计 `13↑ / 11↓`,CI `7 / 3 / 14`。 --- ## 9. 为什么完整输入只能作稳健性账 完整输入会把被编辑的边界 token 自己也计入聚合,因此它混合: 1. 边界 ID 自身的路由; 2. 后续角色块; 3. 对齐目标内容的下游传播。 full-input、prompt-balanced 的平均 system-edge TV: ```text EOS .138988 BOS .137253 x .141592 句点 .140312 ``` BOS−EOS 平均为 `-.001735`,点估计 `6↑ / 18↓`;方向与目标内容主结果不同。 四 ID family summary 为 `+.002831`,也远小于目标内容的 `+.011864`。 这不是矛盾,而是统计对象不同。因果主张只落在: > **边界 token 之后、精确对齐的目标内容路由。** --- ## 10. 路由集合稳定性 以 EOS↔BOS 的直接替换为例,聚合后的 target top-6 set exact: | 层 | S0 | S1 | mean Jaccard S0 / S1 | |---:|---:|---:|---:| | 1 | 40.9% | 45.4% | .795 / .817 | | 2 | 52.8% | 53.2% | .851 / .853 | | 3 | 60.4% | 57.4% | .880 / .870 | | 4 | 59.8% | 54.8% | .878 / .862 | | 5 | 59.5% | 58.6% | .875 / .874 | | 6 | 58.9% | 57.9% | .872 / .870 | 这说明一个历史单 ID 的变化可以传播到后续专家集合,但并非每个 token 都换 专家;路由变化是部分、分层且受内容影响的。 --- ## 11. batch-content 审计 当前实验与上一轮边界实验共享 EOS / `x` / 句点三类条件: ```text message hash 768 / 768 exact rendered hash 768 / 768 exact token-ID hash 768 / 768 exact target contract 768 / 768 exact ``` 然而把同一行放入不同 companion rows 的 32-row BF16 batch 后,深层临界 gate 决策不必 byte-exact。把三个共享水平合计: | 层 | target route hash exact | target integer load exact | |---:|---:|---:| | 1 | 768 / 768 | 768 / 768 | | 2 | 610 / 768 | 667 / 768 | | 3 | 477 / 768 | 572 / 768 | | 4 | 368 / 768 | 496 / 768 | | 5 | 269 / 768 | 437 / 768 | | 6 | 244 / 768 | 402 / 768 | 因此: > BF16 的 batch content 是执行合同的一部分。正式统计只比较本轮同一个 > 八格 batch 内的 source-paired 条件,不跨实验拼接深层数值。 --- ## 12. 可复现入口 正式运行: ```bash PYTHONPATH=/tmp/deepseek-v2-lite-pydeps.6ZJAH3:/usr/lib/python3/dist-packages \ /home/wuyang/.pyenv/versions/navi-router-cu128/bin/python \ experiments/deepseek/v2_lite_routing_special_token_family_control.py \ --artifact-dir /tmp/deepseek-v2-lite-artifacts.OEjfce \ --human-eval /tmp/llm-atlas-routing-corpus/human-eval/data/HumanEval.jsonl.gz \ --gsm8k /tmp/llm-atlas-routing-corpus/gsm8k/grade_school_math/data/test.jsonl \ --tnews /tmp/llm-atlas-routing-corpus/tnews/test.json \ --tnews-archive /tmp/llm-atlas-routing-corpus/tnews_public.zip \ --wikitext /tmp/llm-atlas-routing-corpus/wikitext-2-raw-v1-validation.parquet \ --output src/data/deepseek-v2-lite-routing-special-token-family-control.json \ --batch-prompts 4 \ --bootstrap 2000 \ --seed 20260729 ``` 独立复跑只改输出文件名。确定性前端 compact: ```bash npm run build:data:deepseek-special ``` 完整工件: | 文件 | bytes | SHA-256 | |---|---:|---| | 正式运行 JSON | 54,440,827 | `c372c1b0…4af5bf` | | 独立复跑 JSON | 54,440,827 | `c372c1b0…4af5bf` | --- ## 13. 与已有论文怎样对齐 外部研究已经反复说明 prompt 的词汇、格式与分隔符变化可能显著影响模型输出: - [Lexical Sensitivity of Language Models](https://aclanthology.org/2024.emnlp-main.295/) 研究词汇变化对任务表现的影响; - [Prompt Sensitivity Prediction](https://aclanthology.org/2024.naacl-long.325/) 讨论模型与任务对 prompt 变化的敏感性; - [PROMPTPRISM](https://aclanthology.org/2026.findings-eacl.61.pdf) 在 taxonomy 中明确区分 delimiter、prefix、suffix 与 special-token 修改; - [URIAL](https://proceedings.iclr.cc/paper_files/paper/2024/file/6bcbb4a501dbad0eba1b660c1a55318c-Paper-Conference.pdf) 展示 base model 对格式化与对齐样式的利用; - [LIMA](https://arxiv.org/abs/2305.11206) 是理解对话格式、回合边界与少量高质量对齐数据的背景材料。 这些论文提供问题背景,但不替本实验背书。尤其不能把: ```text 路由 TV 变化 ``` 直接改写成: ```text 准确率、质量、安全性或指令遵循变化 ``` 本实验没有生成答案,也没有行为评测。 --- ## 14. 允许说什么,不允许说什么 可以说: - 固定 tokenizer 的 special inventory 只有 BOS 和 EOS; - 在固定协议里,BOS 不复现 EOS 的目标 system-edge 路由模式; - `x`/句点相对 EOS 在 24 格中表现出更大的目标 system-edge TV; - 四 ID 的 2-vs-2 family summary 是描述性结果; - 单 ID 边界变化能传播到后续目标的 MoE routing; - 正式运行与独立复跑 byte-exact。 不可以说: - 普通 token 普遍比 special token 更有效; - EOS 让模型更懂回合或让回答更好; - BOS/EOS 具有已识别的专家语义; - 结果适用于所有 27 层、Chat/SFT/RL 权重或线上流量; - 路由差异等于性能差异; - 24 个 layer×domain 单元是 24 个独立随机样本。 --- ## 15. 下一步 这一轮解决了 special inventory,却还没有解决角色块内部结构。固定模板中的: ```text User: = [5726, 25] Assistant: = [77398, 25] ``` 都是两个普通 token。所以下一轮采用完整 2×2: ```text head = User / Assistant delimiter = : / x ``` 用同一个 batch 分离词头主效应、分隔符主效应与二者 interaction。