# Kimi K3 第四轮:Attention Residuals 独立小模型复现协议 > 协议 ID:`llm-atlas-k3-attnres-reduced-v1` > 冻结日期:2026-07-30(Asia/Shanghai) > 状态:正式输出前预注册 > 目标:用可在单张 RTX 5090 上完整训练、复跑和检查的小模型,验证 Attention > Residuals 的运算合同与早期训练动力学;不冒充 K3 checkpoint forward 或原论文规模复现。 ## 1. 为什么本轮不直接“跑 K3 第一层” 截至本协议冻结时,官方开放工件仍是: - `moonshotai/Kimi-K3@9f62e4e9fffbd0a83ddd60e1c209d828994b3569`; - K3 GitHub `MoonshotAI/Kimi-K3@7c5be9599120d7993748de66a76128614f15f210`; - Hugging Face remote code 把 KDA `A_log` 初始化为 `[num_heads]=[96]`; - checkpoint header 中每个 KDA `A_log` 仍为 `[128]`; - 当前 vLLM `fa2a2589bd2a1fce0851df7fd42ffb54b6195f04` 与 SGLang `3c1717d9b6355e48855be7cc079db3ef9958f36d` 都把参数构造成 head 轴 96,并沿该轴 sharding;没有公开的 128→96 转换合同。 因此,裁剪、重复、平均或把 `[128]` 改解释成 channel 参数都会引入未公开假设。本轮不做。 官方也没有发布可加载的 K3 reduced checkpoint;Attention Residuals 论文所述 48B/3B 模型权重 仍未公开。 ## 2. 一手来源 | 工件 | 固定 revision / checksum | 本轮用途 | |---|---|---| | Kimi K3 HF | `9f62e4e9…b3569` | 说明完整 checkpoint 的执行边界 | | Kimi K3 GitHub | `7c5be959…f210` | 报告与部署入口 | | Attention Residuals GitHub | `85e22310fe5ee860b4a023de312d791de8a5a5e6` | 官方论文与公式 | | `Attention_Residuals.pdf` | SHA-256 `e5831b0d…a26b2f` | Full / Block AttnRes 运算合同 | | WikiText-2 raw | `Salesforce/wikitext@b08601e04326c79dfdd32d625aee71d232d685c3` | 固定公开语料 | Grok Headless 只承担正式输出前的对抗式方法检查,不是事实来源,也不参与结果解释。 ## 3. 研究问题与声明边界 本轮只问: 1. 在核心 Transformer 权重、训练 Token、输入窗口与 optimizer 合同相同的缩小系统中, Full / Block AttnRes 的验证 bits-per-byte 相对 PreNorm 方向是否跨三个 seed 一致? 2. 三种残差图的输入、分支输出和累计状态 RMS 怎样随深度变化? 3. 固定诊断 batch 上,每个 Transformer block 的参数梯度 RMS 怎样分布? 4. zero-init pseudo-query 经过训练后,是否出现邻近来源、embedding 和远层来源的可见分工? 5. 额外残差运算带来多少实际 step time 与 peak allocated memory? 本轮不能回答: - K3 2.8T checkpoint 的真实 hidden state、router load 或 cache trace; - 原论文 194M–528M activated / 38.7B–119B Token scaling law; - AttnRes 的 benchmark 能力、长上下文质量或生产吞吐; - KDA、MLA、MoE 与 AttnRes 的联合因果贡献; - 任意总体显著性、p-value 或跨数据集普适性。 ## 4. 数据合同 下载并校验: ```text wikitext-2-raw-v1/train-00000-of-00001.parquet wikitext-2-raw-v1/validation-00000-of-00001.parquet wikitext-2-raw-v1/test-00000-of-00001.parquet ``` 预处理固定为: 1. 按 parquet 行序读取 `text`; 2. 每行原文后追加一个 `\n`; 3. UTF-8 编码,不做 Unicode normalization、去空行、大小写或空白改写; 4. 词表固定为 256 个原始 byte; 5. 每个样本取连续 `context+1=257` bytes,前 256 预测后 256。 训练第 `step`、第 `row` 的起点: ```text z = first 8 bytes of SHA256( protocol_id + "\0train-window\0" + seed + "\0" + step + "\0" + row ) start = uint64_be(z) mod (len(train_bytes) - 257) ``` 因此同一 seed 的三种架构逐 step、逐 row 使用完全相同的 token tensor,不依赖 Python、NumPy 或 CUDA RNG 的消费顺序。 验证窗口固定 64 条,诊断窗口固定 16 条,分别用标签 `validation-window` 与 `diagnostic-window`、固定 index 取 SHA-256 起点;它们对全部 seed / 架构相同。 manifest 必须记录: - dataset revision、三个 parquet SHA-256; - 拼接后 split byte length 与 SHA-256; - 训练 seed×step×row 的总 window-schedule hash; - validation / diagnostic tensor hash。 ## 5. 模型合同 所有模型: | 项 | 固定值 | |---|---:| | vocabulary | 256 bytes | | context | 256 | | Transformer blocks | 16 | | residual sublayers | 32(每块 attention + MLP) | | `d_model` | 192 | | heads | 6 | | head dimension | 32 | | `d_ff` | 768 | | dropout | 0 | | positional embedding | learned absolute, 256 × 192 | | norm | RMSNorm, `eps=1e-6` | | attention | causal multi-head softmax,score 用 FP32 softmax | | input/output embedding | tied | 三种 residual graph: 1. **PreNorm baseline**:`h ← h + f(RMSNorm(h))`。 2. **Full AttnRes**:每个 attention / MLP 子层从 embedding 与所有早期子层输出中, 以 `softmax(q_l^T RMSNorm(source))` 选出输入;当前分支输出成为下一个独立 source。 3. **Block AttnRes**:32 个子层按顺序冻结为 8 块、每块 4 个子层;跨块保存 8 个 block sums,块内使用 partial sum,embedding 永远是 source 0。 AttnRes 每个子层增加: - 一个 `d_model` pseudo-query,初始化严格为 0; - 一个 `d_model` RMSNorm key weight,初始化严格为 1。 核心 token / position embedding、attention、MLP、输入 norm 与 tied output weights 在同一 seed 的三种架构中必须逐 tensor SHA-256 exact。AttnRes 额外参数与 mixer 运算如实报告,不通过 无作用 dummy 参数伪造“完全等容量”。 本实验匹配: - 核心 Transformer 参数; - optimizer steps; - 每步训练 Token; - 逐 Token 数据顺序。 本实验**不匹配**: - residual mixer FLOPs; - step wall time; - peak activation memory。 后二者正是次要观测指标,不能被用于支持“同算力下更好”。 ## 6. 优化与运行合同 | 项 | 固定值 | |---|---:| | seeds | `2026073001, 2026073002, 2026073003` | | formal steps | 2,000 | | batch | 32 | | tokens / run | 16,384,000 target bytes | | optimizer | AdamW | | betas | `(0.9, 0.95)` | | epsilon | `1e-8` | | peak LR | `3e-4` | | min LR | `3e-5` | | warmup | 100 steps,linear | | decay | cosine,step 100→2,000 | | weight decay | `0.1` for parameters with `ndim >= 2`; otherwise `0` | | grad clip | global norm `1.0` | | compute | BF16 autocast,FP32 optimizer state | | device | one RTX 5090 | | compile | off / eager | | RNG | deterministic algorithms,`CUBLAS_WORKSPACE_CONFIG=:4096:8` | 验证发生在 step `0, 100, 250, 500, 1000, 1500, 2000`。每次使用固定 64 条窗口; 以 8 条一个 eval batch,报告 token-mean cross entropy(nats)与: ```text bits_per_byte = cross_entropy_nats / ln(2) ``` 计时: - 前 20 个训练 step 不进入 wall-time 统计; - step 21–2,000 每步前后 CUDA synchronize; - step 20 后 reset peak memory stats; - 同报 mean / median / p95 step ms、peak allocated 与 peak reserved。 ## 7. 预注册指标 ### 7.1 主指标 每个 seed 在 step 2,000 的验证 `bits_per_byte`: ```text Δ_full = Full AttnRes − PreNorm Δ_block = Block AttnRes − PreNorm ``` 只报告三个 paired delta、mean、min–max。 预注册解释规则: - 三个 seed 全同为负,且 mean delta ≤ `−0.010 BPC`:**directional support in this reduced protocol**; - 三个 seed 全同为正,且 mean delta ≥ `+0.010 BPC`:**directional concern in this reduced protocol**; - 其他情况:**inconclusive at this budget**。 不报告 p-value、population CI 或“复现了论文提升”。 ### 7.2 次要指标与精确定义 - `branch_output_rms[l]`:第 l 个 attention / MLP 分支输出在 batch×time×channel 上的 RMS; - `layer_input_rms[l]`:进入第 l 个分支 norm 之前的 mixture / residual state RMS; - `stream_state_rms[l]`:baseline 加法后的 state;Full 为新 source 输出集合的整体 RMS; Block 为当前 partial sum 的 RMS; - `parameter_grad_rms[block]`:固定 diagnostic batch 上、clip 前,该 block 所有核心参数梯度 拼接后的 `sqrt(sum(g²)/numel)`;不含 embedding、LM head 与 AttnRes mixer 参数; - `depth_weights[l, source]`:固定 diagnostic batch 上 softmax 权重对 batch×time 求均值; - `source_entropy[l]`:同一权重先逐 token 计算 entropy,再对 batch×time 求均值; - `step_ms` 与 CUDA memory:按 §6 固定协议。 这些指标是描述性机制账,不进入主判定。 ## 8. Smoke、正式运行与复现 正式输出前先跑: - 三种架构 × seed 1; - 20 steps; - batch 4; - 同一 window schedule; - 断言无 NaN、loss finite、common-weight hashes exact; - 在全新进程重跑相同 smoke,比较数据 hash、初始 common hash、逐 eval loss 和最终 common checkpoint hash。 smoke 只决定实现是否可运行,不用于改变 formal 超参数或挑选架构。 正式运行顺序冻结为: ```text seed 2026073001: baseline → full → block seed 2026073002: baseline → full → block seed 2026073003: baseline → full → block ``` 全部 9 个 run 完成后,在全新进程复跑 `seed 2026073001 / block / 2,000 steps`,比较: - manifest / dataset / schedule hashes; - common initial weight hash; - step 0–2,000 eval history; - final common parameter hash; - final mixer parameter hash; - diagnostic tensors与 depth-weight hashes。 计时不要求 exact;数值字段要求 exact,若底层确定性限制导致非 exact,必须报告最大差异, 不能降低字段范围后宣称复现。 ## 9. 冻结产物 ```text research/K3_ATTNRES_REDUCED_PROTOCOL.md research/K3_ATTNRES_REDUCED_AUDIT.md experiments/k3/attnres/build_dataset.py experiments/k3/attnres/train.py experiments/k3/attnres/analyze.py experiments/k3/attnres/README.md experiments/k3/attnres/manifest.json src/data/k3-attnres-reduced.json src/data/k3-attnres-reduced-compact.json ``` 原始 parquet 与训练 checkpoint 留在本机 cache,不进入公开仓库;manifest、原始指标 JSON、 分析结果、代码、环境、checksum 和确定性复现账进入开源树。