Files
llm-atlas/research/DEEPSEEK_V2_LITE_CHAT_TASK_BOOTSTRAP_CRN_AUDIT.md
T
2026-07-30 05:59:38 +08:00

22 KiB
Raw Blame History

DeepSeek-V2-Lite-Chat:32 题任务 bootstrap 与显式共同随机数审计

协议:llm-atlas-deepseek-chat-task-bootstrap-crn-v1

模型:deepseek-ai/DeepSeek-V2-Lite-Chat

revision:85864749cd611b4353ce1decdb286193298f64c7

预注册协议: research/DEEPSEEK_V2_LITE_CHAT_TASK_BOOTSTRAP_PROTOCOL.md

冻结清单: research/DEEPSEEK_V2_LITE_CHAT_TASK_BOOTSTRAP_MANIFEST.json

执行日期:2026-07-30

0. 先说结论

Round 08 把 Round 07 的“每域 4 道题 × 4 seeds”扩成:

主分析:
  HumanEval 32 题 × T0 × 4 conditions = 128 outputs
  GSM8K    32 题 × T0 × 4 conditions = 128 outputs

随机带敏感性:
  每域 4 道固定题 × T0–T3 × 4 conditions
  其中 T1–T3 新增 96 outputs

正式总计:
  64 tasks × 4 conditions on T0
  + 8 diagnostic tasks × 3 extra tapes × 4 conditions
  = 352 outputs

四个条件不再只是“同 seed 对齐”,而是在同一道题、同一随机带、同一个生成步显式读取 完全相同的均匀数 u_t。.3/.95 的温度和 nucleus 分布来自固定 checkpoint 与 Transformers warper,离散取样则由本协议定义的 token-ID 顺序逆 CDF 完成。

最稳的观察不是 correctness,而是输出长度具有明显的 domain × prompt 条件交互:

  • Code:在 period 边界下,打开 system 后平均缩短 130.875 tokens;当前 32 题、T0 selected-task resampling band 为 [-178.688, -83.218];
  • Math:同一对比反而平均延长 25.125 tokens;对应 band 为 [7.874, 44.531];
  • EOS 边界下的 system 长度差在两个 domain 都没有得到同样清楚的非零带;
  • 所有四个预注册 correctness contrast 的 selected-task band 在 Code 和 Math 中都跨 0,不能写成稳定能力提升或下降;
  • 64 条独立跨进程 replay 在 12 个冻结字段上全部 64 / 64 exact。

因此,本轮最合理的结论是:

同一个 system 文本的生成长度效应并不是孤立、固定方向的“system 开关效应”;它依赖 历史边界 token,并且在 Code 与 Math 两类任务上方向相反。correctness 的方向则仍有 明显任务与随机带不确定性。


1. 为什么 Round 07 还不够

Round 07 已经避免了最明显的伪样本量错误:它没有把同一道题的四个 seed 当成四道独立 题。但每域只有 4 道题:

4 tasks × 4 seeds × 4 conditions

这仍有三个缺口:

  1. 4 道题上的方向很容易被单题主导;
  2. 同一个 batch seed 不等于四行使用同一个随机数;
  3. 任务差异与 sampling 随机带差异没有被正交地拆开。

Round 08 因此把预算优先给更多任务,并额外留下一个小型交叉设计:

32 tasks × T0     → 主 selected-task 分析
4 tasks × T0–T3  → tape sensitivity

4 tasks × 4 tapes 是 crossed repeated measures,不是 16 道独立题。


2. 预注册与预运行修订

2.1 先冻结、后生成

首版协议与 64 题选择清单在任何本轮模型输出产生前提交:

6181af9 research: preregister task bootstrap CRN protocol

实现与 256 个 Chat prompt hash 在 smoke 前提交:

a09e6b1 research: freeze Chat prompts and CRN runner

评估、重放与 bootstrap 的指标口径已经写入首版协议;对应计算脚本在 formal 运行期间实现 并提交:

65a91ae research: add task bootstrap evaluation pipeline

脚本实现没有根据 correctness 结果替换题、随机带、contrast、bootstrap seed 或主指标。

2.2 修订 1:固定四行 batch

最初草案写成四条 trajectory 逐条 forward。实现审查发现这会把同一模型 forward 重复四 次,预计增加约四倍 GPU/CPU-offload 时间。任何 smoke 输出之前,合同修订为:

  • 固定四行 batch;
  • 行序 s0_eos, s1_eos, s0_period, s1_period;
  • 四行第 t 步读取同一个 u_t;
  • 某行 EOS 后,后续追加 PAD=EOS、attention mask 为 0;
  • batch 内不存在跨行 attention;
  • sampling 不调用 PyTorch RNG。

这项修订只改变执行效率与完成行的 padding 合同,没有看结果。

2.3 修订 2:纠正 Chat prompt hash

tokenizer-only 闸门在模型加载前发现,首版 manifest 把路由探针的短输入 hash 错标成了 Chat 生成 prompt hash。例如 HumanEval/31:

路由探针 s0_eos:48 tokens
Chat 生成 s0_eos:145 tokens

当时:

  • 本轮模型输出为 0;
  • checkpoint 尚未加载;
  • correctness 未计算。

清单随后:

  1. 保留原字段,并改名为 routing_probe_prompt_token_ids_sha256;
  2. 用正式 Chat renderer 重新产生 64 × 4 = 256 个 hash;
  3. 写入 chat_generation_prompt_token_ids_sha256;
  4. runner 只核验后者。

最终:

项目 SHA-256
manifest 文件 6313e70536c464fe598a93035576752418f08016dfd60ac246437c3b43bf2ae1
manifest 规范内容 d15303e18345f6dec2aaf891ba812c0a0232b86f416f8f685eabbe818249e838
256 Chat prompt 合同 7f766be54463c7f513948dd6d63a55e12b85b9220ee177361c743cd9997f6c3b

3. source 与执行网格

3.1 source 选择

两个 domain 都使用前序 routing control 中已冻结的全部 32 条:

sample salt = llm-atlas-deepseek-routing-template-control-v1
within_domain_index = 0..31

没有按 Round 07 pass、EOS、长度、文本质量或 selection rank 的“好看程度”二次筛选。 完整 source ID、source hash、selection rank、四格 prompt hash 与 tape 分配见 manifest。

3.2 主随机带与诊断随机带

tape display seed
T0 2,572,353,518
T1 399,507,326
T2 405,284,229
T3 568,701,915

全部 64 题运行 T0。每域 index 0, 8, 16, 24 再运行 T1–T3。

3.3 独立 replay 子集

每域固定:

0, 4, 8, 12, 16, 20, 24, 28

只 replay T0 × 四条件,共:

16 tasks × 4 conditions = 64 cells

这不是看完 formal 后挑的“容易复现样本”。


4. 显式共同随机数取样器

4.1 u_t 的定义

对同一 source_id + tape + step:

H = SHA256(
  protocol_id + "\0uniform\0"
  + tape_label + "\0"
  + source_id + "\0"
  + decimal(step)
)

z_t = H[0:8] as big-endian uint64
u_t = (z_t + 0.5) / 2^64

四个 condition 使用完全相同的 z_t / u_t。每条 output 都记录:

-实际消费步数; -消费前缀的规范 SHA-256; -前 8 个 uint64 hex;

  • prompt、trajectory 与文本 hash。

离线审计从协议重新派生全部 352 条 output 的 uniform 前缀:

352 / 352 exact

4.2 概率分布

每步:

  1. fixed checkpoint 产生 BF16 logits;
  2. TemperatureLogitsWarper(0.3);
  3. TopPLogitsWarper(0.95, min_tokens_to_keep=1);
  4. float32 softmax;
  5. token ID 顺序 float32 CDF;
  6. CDF 最后一个值强制为 1;
  7. u_t 转 float32并 clamp 到相邻可表示开区间端点;
  8. torch.searchsorted(..., right=False) 选 token。

必须区分:

模型与 .3/.95 概率分布:官方固定对象
离散 sampler:本协议的显式 inverse CDF

本轮没有调用:

transformers.generate
torch.multinomial

所以不能把 trajectory 写成“官方 Transformers sampler 的 exact 输出”。

4.3 共同随机数不等于共同 token

共享的是概率积分尺度上的 u_t。prompt 条件改变 logits 后,同一个 u_t 会落入不同 token 的 CDF 区间。

这正是想要的配对:

随机冲击相同
条件分布不同
→ token 可以不同

八个 domain × contrast 的主分析中:

32 sources × 8 domain-contrasts
= 256 / 256 shared-uniform-prefix audits exact

5. smoke 闸门

smoke:

每域 index 0,8,16,24
× T0/T1
× 4 conditions
× 16-token cap
= 64 short outputs

结果:

闸门 结果
Chat prompt hash 256 / 256 exact
short outputs 64 / 64
同进程 T0 replay 32 / 32 exact
T0/T1 可比格 32
T0/T1 trajectory 分叉 17 / 32
RNG state 前后不变 16 / 16 runs
synthetic inverse-CDF test passed
OOM / NaN / exception 0

smoke 文件:

/tmp/deepseek-v2-lite-chat-task-bootstrap-smoke.json
SHA-256 c868e74f88e39343f95524b4b38d0c1503f727a22d4dfa3937532514205110b5

smoke 不进入正式统计。


6. 正式执行账

6.1 总数

项目 数值
tasks 64
source × tape runs 88
outputs 352
T0 主 outputs 256
T1–T3 新增诊断 outputs 96
natural EOS 343
budget truncated 9
unique trajectory hashes 320
RNG state 前后不变 88 / 88 runs

6.2 分 domain 的全部 formal outputs

这里含诊断题 T1–T3,只用于执行账,不是主通过率。

domain outputs natural EOS truncated mean tokens
Code 176 168 8 277.278
Math 176 175 1 183.188

6.3 资源

项目 数值
checkpoint load 8.344 s
formal generation sum 4,336.699 s
peak CUDA allocated 29,919,644,672 bytes
peak CUDA allocated 27.864 GiB
GPU NVIDIA GeForce RTX 5090
dtype BF16
CUDA resident embedding + layers 0–23
CPU offload layers 24–26 + norm + lm_head

这不是 serving benchmark。CPU-offloaded eager latency 不能外推成吞吐。


7. 独立 evaluator

7.1 HumanEval sandbox

固定:

python:3.11-alpine
@sha256:25976e9d34a0fab1f278cae931f34c8303d97bf0c0d7f85b6b4dcf641d7702a4

约束:

  • network none;
  • read-only root filesystem;
  • user 65534:65534;
  • drop ALL capabilities;
  • no-new-privileges;
  • 256 MiB memory / swap;
  • 64 PIDs;
  • 0.5 CPU;
  • 5 秒 timeout;
  • host mounts 0。

7.2 T0 主评估总账

domain outputs fixed-budget pass strict pass natural EOS truncated mean tokens
Code 128 59 59 122 6 284.227
Math 128 71 71 127 1 185.969

不要把 59 / 128 或 71 / 128 当成标准 benchmark 分数。分母是:

32 frozen tasks × 4 prompt conditions

同一道题在四条件中重复出现。

7.3 失败分类

HumanEval T0:

outcome count
passed 59
assertion failed 47
runtime error 16
timeout 3
extract failed 2
syntax error 1

GSM8K T0:

outcome count
numeric exact 71
wrong numeric answer 57
no numeric answer 0

通过 HumanEval tests 只是功能证据,不是安全证据。


8. T0 四条件:先看原始格

8.1 Code

condition pass / 32 natural EOS / 32 mean tokens
s0_eos 16 30 330.094
s1_eos 16 30 308.938
s0_period 15 31 314.375
s1_period 12 31 183.500

8.2 Math

condition pass / 32 natural EOS / 32 mean tokens
s0_eos 19 31 181.406
s1_eos 19 32 190.969
s0_period 17 32 173.188
s1_period 16 32 198.313

同样的 s1_period,在 Code 中最短,在 Math 中却最长。这比一个全域平均值更重要。


9. selected-task bootstrap

9.1 它是什么

每个 domain:

-固定 T0;

  • 32 题有放回重采样 32 题; -四条件保持题级配对;
  • 10,000 次;
  • numpy.random.default_rng;
  • seed 1,364,512,825; -报告 mean contrast 的 percentile 2.5 / 50 / 97.5%。

准确标签:

当前冻结 32 题、固定 T0 的 selected-task resampling band。

它不是:

-完整 benchmark population CI; -模型能力 CI;

  • generation-seed uncertainty CI; -因果效应 CI。

9.2 correctness:所有带都跨 0

右减左,单位为每题成功率:

domain contrast point selected-task band
Code period at s0 -0.0313 [-0.1563, 0.0938]
Code period at s1 -0.1250 [-0.3438, 0.0938]
Code system at EOS 0.0000 [-0.1250, 0.1250]
Code system at period -0.0938 [-0.2500, 0.0625]
Math period at s0 -0.0625 [-0.2188, 0.0938]
Math period at s1 -0.0938 [-0.2500, 0.0625]
Math system at EOS 0.0000 [-0.1563, 0.1563]
Math system at period -0.0313 [-0.1563, 0.0938]

点估计里 period 条件经常更低,但任务重采样带都覆盖 0。不能把点估计写成稳定能力损失。

9.3 correctness 转移表

right 相对 left:

domain contrast fail→pass pass→fail both pass both fail
Code period at s0 2 3 13 14
Code period at s1 4 8 8 12
Code system at EOS 2 2 14 14
Code system at period 2 5 10 15
Math period at s0 3 5 14 10
Math period at s1 2 5 14 11
Math system at EOS 3 3 16 10
Math system at period 2 3 14 13

即使平均差是 0,也可能同时有 fail→pass 与 pass→fail。例如 system at EOS 在两个 domain 都恰好净 0,但不是每题完全不变。

9.4 输出长度

右减左,单位 tokens:

domain contrast point selected-task band
Code period at s0 -15.719 [-57.627, 24.938]
Code period at s1 -125.438 [-165.031, -85.125]
Code system at EOS -21.156 [-47.846, 2.438]
Code system at period -130.875 [-178.688, -83.218]
Math period at s0 -8.219 [-27.563, 8.688]
Math period at s1 7.344 [-9.407, 26.094]
Math system at EOS 9.563 [-4.938, 25.188]
Math system at period 25.125 [7.874, 44.531]

两个清楚不跨 0 的 system-at-period 长度带方向相反:

Code  → system on 更短
Math  → system on 更长

这是一条比“system prompt 会让输出变短/变长”更精确的结论:

system 的长度关联依赖 boundary 与 domain。

9.5 EOS

EOS contrast 很小:

  • Code:四个 contrast 的 point 在 0 或 +1/32;
  • Math:同样只在 0 或 +1/32; -大部分 source 的 EOS 状态不变。

因此,Code 中 -130.875 token 的 system-at-period 差异主要不是简单的“更多题命中 EOS” 造成,而是在都自然结束的 trajectory 内结束得更早。


10. trajectory 与 first divergence

10.1 共同随机数审计

domain contrast uniform exact exact full trajectory mean common-prefix tokens
Code period at s0 32 / 32 0 13.25
Code period at s1 32 / 32 0 3.69
Code system at EOS 32 / 32 0 23.91
Code system at period 32 / 32 1 11.88
Math period at s0 32 / 32 6 52.53
Math period at s1 32 / 32 1 22.91
Math system at EOS 32 / 32 6 59.44
Math system at period 32 / 32 1 27.75

同一个 u_t 没有让四格“黏”成相同 token。特别是 Code 的 s1 period contrast 平均只 共享约 3.7 个前缀 token 就分叉。

Math 的共同前缀更长、exact trajectory 更多,说明 prompt 条件的作用方式也有 domain 差异。


11. 四随机带诊断

每域固定四题,不外推为 32 题总体。

11.1 correctness contrast 的 tape means

右减左;每个值是 4 道诊断题的均值:

Code

contrast T0 T1 T2 T3
period at s0 0.00 0.00 0.00 0.00
period at s1 -0.25 0.00 0.00 0.00
system at EOS 0.00 0.00 0.00 0.00
system at period -0.25 0.00 0.00 0.00

Code 的四题诊断子集中,T0 上的两个 -0.25 没有在 T1–T3 重现。它支持谨慎解释主 correctness 点估计。

Math

contrast T0 T1 T2 T3
period at s0 0.00 0.00 -0.25 +0.25
period at s1 -0.50 -0.75 -0.25 -0.50
system at EOS 0.00 +0.50 -0.25 +0.25
system at period -0.50 -0.25 -0.25 -0.50

Math 四题上,方向与幅度都明显依赖 tape;四题太少,不能把这些数当成稳定概率。

11.2 长度 contrast 的 tape means

Code

contrast T0 T1 T2 T3
period at s0 -14.50 +44.50 +13.50 -16.75
period at s1 -108.50 -155.00 -21.00 -163.25
system at EOS -59.00 +6.00 -90.00 -39.50
system at period -153.00 -193.50 -124.50 -186.00

Code 的 system-at-period 在四条 tape 上都明显为负;period-at-s1 也都为负,但 T2 幅度 较小。

Math

contrast T0 T1 T2 T3
period at s0 -5.25 +31.25 -10.00 +4.00
period at s1 +0.50 +0.25 +3.25 -2.50
system at EOS -3.00 +54.75 -7.50 +32.75
system at period +2.75 +23.75 +5.75 +26.25

Math 四题上的 system-at-period 四条 tape 都为正,但幅度从 +2.75 到 +26.25。

诊断支持长度交互的方向,但仍只覆盖 4 道题 × 4 条 tape。


12. 独立跨进程 replay

重放结果:

16 sources × T0 × 4 conditions = 64 cells
字段 exact
run seed 64 / 64
prompt hash 64 / 64
full run uniform hash 64 / 64
output uniform-prefix hash 64 / 64
uniform steps 64 / 64
generated token IDs 64 / 64
decoded text 64 / 64
EOS state 64 / 64
truncation state 64 / 64
CPU RNG pre-state 64 / 64
CUDA RNG pre-state 64 / 64
RNG unchanged flag 64 / 64

总闸门:

64 / 64 all preregistered fields exact

这证明固定硬件/软件/精度/执行合同下的逐 token 可重放,不证明换 GPU、PyTorch、 Transformers、kernel 或 dtype 后仍 exact。


13. 已知偏离与限制

13.1 gold 文件打开时机偏离

runner 复用了前序 behavior.task_score 路径:

  1. 在模型加载前读取 HumanEval / GSM8K gold;
  2. 每条文本生成结束后附加一个 narrow task_score;
  3. authoritative evaluator 在全部 formal 输出冻结后另行运行。

这不满足协议中最严格的“gold 只在生成进程结束后打开”表述。

为什么它不改变 trajectory:

  • gold 不进入 message / prompt;
  • gold 不进入 tokenizer 输入;
  • gold 不进入 logits、warper、CDF 或 u_t;
  • gold 不改变 source、tape、max tokens 或 stop;
  • task_score 在 token 序列生成结束后才调用; -独立 evaluator 的 352 行结果不读取 runner 的 task_score;
  • 64-cell replay exact。

因此它是真实的流程隔离偏离,但没有已知的生成因果路径。后续 runner 应删除 task_score,让生成进程完全不打开 gold。

13.2 不是完整 benchmark

HumanEval 只使用冻结 32 / 164 tasks;GSM8K 只使用冻结 32 / 1,319 test tasks。source selection 是前序 SHA 排序合同,不是完整 benchmark。

13.3 一条主随机带

32 题主分析只用 T0。selected-task band 不包含 generation-tape uncertainty。

13.4 多随机带只有四题

T0–T3 诊断只覆盖每域四题。它揭示 sensitivity,但不能稳定估计 tape 方差。

13.5 counterfactual 不可部署

period cell 是把一个官方 EOS boundary ID 改为普通句点 ID。它不是官方有效聊天格式。

13.6 成功不是安全

HumanEval pass 只说明固定 tests 通过。它不说明:

-安全; -鲁棒; -无未测 bug; -可部署。


14. 证据文件与 SHA-256

文件 SHA-256
formal sampling ea0607f2b197fac3f794655c1538ce1f9a1cb072d637eb31d35573682e311809
independent evaluation 82b2fc5d1f854a7e0cd7aba7c70ff74d733d24221522a4f92b962478c76177ab
replay generation 6519947e2fa4327c1ba2cc506b0861f172a6bdbd4f2d6787447edaf8fbcac508
reproduction comparison 63ed39e5dcdbc2a30e516172f3657dfa453ff3b23d5bd5c49c734939242a70f5
bootstrap analysis 9ab17561ced930a668c082141f7c6e013cbda70e42b09de63d41f1b82c01a6ae
compact website data 082e3c56373e5f91d51d88b1430d14ad3b68b0f200e80901171c2fb62a1e57bf
frozen manifest 6313e70536c464fe598a93035576752418f08016dfd60ac246437c3b43bf2ae1

离线一致性检查:

node scripts/check-deepseek-chat-task-bootstrap-crn-data.mjs

通过:

formal sources                 64
formal runs                    88
formal outputs                 352
prompt hashes exact            256
uniform output hashes exact    352
RNG unchanged runs             88
evaluation rows                352
reproduction exact cells       64 / 64
CRN contrast checks            256
bootstrap resamples            10,000

15. 最终结论该怎么写

可以写

  1. 在当前固定 32 道 HumanEval、T0 下,system-at-period 的平均输出长度比 system-off 短约 131 tokens,selected-task band 不跨 0;
  2. 在当前固定 32 道 GSM8K、T0 下,同一 contrast 平均长约 25 tokens,band 方向相反;
  3. 两个 domain 的 correctness contrast bands 都跨 0;
  4. 每域四题的 T0–T3 诊断显示 correctness 对 tape 敏感,长度交互的方向相对更一致;
  5. 显式 CRN 与 64-cell 跨进程 replay 都通过 exact audit。

不可以写

  1. “system prompt 普遍让代码更短、数学更长”;
  2. “period 会降低 DeepSeek 的总体能力”;
  3. “这些是完整 HumanEval / GSM8K 分数”;
  4. “selected-task band 是模型总体 95% CI”;
  5. “period 是官方聊天格式”;
  6. “通过 HumanEval tests 就安全”;
  7. “本协议 trajectory 等于官方 torch.multinomial trajectory”。

本轮真正增加的不是一个更大的数字,而是一条更干净的推理链:

固定任务
→ 固定概率分布
→ 显式共享随机冲击
→ 条件内逐题配对
→ 任务重采样
→ 独立随机带诊断
→ 跨进程逐 token 重放

它让“prompt 边界如何改变生成行为”从单题现象,前进到一个仍有限、但可审计的任务级机制 实验。