← 返回书架人工智能 · 交互式 Wiki
模型结构进阶专题讲解

ARCHITECTURE / VARIANTS & CONCLUSIONS

架构变体:逐项比较结构与成本

现代 decoder 可以看成几个可替换零件的组合:Attention / KV 结构、位置编码、归一化、FFN 激活、 残差布局和 Dense/MoE。每个选择通常优化一个资源或能力,同时在其他地方付出代价。

01

一个 block 的五项结构选择

比较模型结构时,可以逐项查看下面五类设计及其参数。

01Sequence mixing

full attention、滑窗/稀疏 attention、linear/recurrent、SSM 或混合层。

token 如何交换信息
02KV 组织

MHA、GQA、MQA、MLA;query heads 与 KV heads 的数量关系。

表达 vs 推理缓存
03位置与稳定化

absolute、relative bias、ALiBi、RoPE 及缩放;Pre/Post Norm、RMSNorm、QK-Norm。

顺序与深度训练
04FFN 容量

ReLU/GELU、SwiGLU、Dense MLP、MoE experts、共享专家。

参数容量 vs 激活计算
05残差布局

pre-norm 主干、scale 乘子、并行/串行 residual、QKV 初始化。

梯度与激活传播
02

各类变体的结构、收益与代价

选择一项变体。重点看结构改了什么、改善了哪项指标,以及结论适用于哪些条件。

STANDARD ATTENTION

每个 query head 都有独立 K/V

每个 query head 拥有自己的 K/V projection。固定 batch、序列长度、层数、query heads、head dim 和存储精度时,MHA 的 KV 缓存不小于共享 KV 的 GQA/MQA;结构本身不保证任务质量更高。

结构变化 Hq = Hkv; cache ∝ Hkv · D
获得

每个 query head 有独立的 K/V 投影。

代价

固定其他维度时缓存通常更大;实际时延取决于实现与硬件。

评估条件

head 数量的收益需要结合每头维度、训练配方和任务结果评估。

03

按资源和任务约束组合结构

选择你当前最想优化的约束,页面给出常见的结构组合与限制。具体收益需要在目标任务和相同预算下测试。

INFERENCE MEMORY

先减少 KV heads,再考虑缓存精度与压缩

GQA 是常见折中:多个 query heads 共享 KV heads;MQA 更激进;MLA 则学习压缩潜在缓存。还要配合 paged KV、prefix cache 和 batch 调度。

常见组合
配套条件

KV 与权重占用应分别计算;长上下文吞吐还受 attention 计算和调度影响。

04

代表性模型的部件对照

下表用于对照结构。使用具体模型时,核对对应版本和尺寸的配置及模型卡。

家族类型位置NormFFNKV / 容量结构关键点
BERTEncoderLearned absolutePost-LNGELU FFNMHA、双向用于 masked LM 的双向编码接口
T5 / T5 v1.1Encoder-decoderRelative bias无均值中心化的 Norm原版 ReLU;v1.1 gated-GELUMHA版本改变 FFN,不宜合称为同一配置
LLaMA 2 7BDecoderRoPEPre-RMSNormSwiGLUMHA现代 decoder 配方,KV 较大
Mistral 7BDecoderRoPEPre-RMSNormSwiGLUGQA + sliding window用有限窗口降低长序列成本
Mixtral 8×7BMoE DecoderRoPEPre-RMSNormSwiGLU expertsGQA、8 experts / top-2总参数约 46.7B,每 token 激活约 12.9B
DeepSeek-V2 / V3MoE DecoderRoPE 相关RMSNorm 类MoEMLA、细粒度 experts压缩 KV latent + 共享/路由 expert;以模型卡为准
Mamba(原版)SSM状态递推架构相关无独立 FFN;投影与门控融入统一块SSM 状态与短卷积状态选择性 SSM、短卷积与门控;不使用标准 attention KV
05

结构选择的常见影响

这些是机制层面的结论;具体幅度仍依赖规模、数据和 kernel。

01

Residual + pre-norm 是现代深层的默认底座

残差与 pre-norm 影响梯度和表示的传播。RMSNorm 省去了均值中心化,具体质量收益需要在相同训练配方下做替换实验。

02

GQA/MQA 是 KV 与表达的折中

减少 KV heads 直接压低 decode 带宽与缓存,但共享越激进越依赖训练弥补表达。实际选择看上下文长度、batch 与质量回归线。

03

MoE 用显存和通信换每 token 计算

总参数增大、激活参数可以较小;所有 experts 仍需驻留/可达,router 不均与 all-to-all 是核心风险。

04

长上下文的有效使用范围

位置外推、训练长度、attention 模式、数据与评估都决定模型能否在远端 token 上可靠工作。

05

FlashAttention 优化注意力的执行方式

它通过分块与在线 softmax 降低内存访问,通常仍是同一 attention 数学;评估时分别记录数学目标和执行 kernel。

06

质量同时受结构、数据和预算影响

宽度、深度、FFN、数据、token 预算、位置和推理成本共同作用。比较时先固定预算,否则结论不可迁移。

06 / LONG CONTEXT

长上下文训练需要哪些配合?

01 / POSITIONS

位置机制兼容

检查 RoPE 频率、缩放、插值、滑窗/全局层;新长度下的相位关系改变。

02 / DATA

长程监督有用

长文本应包含需要跨段结合的证据,让模型有机会学习远距离依赖。

03 / TRAIN

预算与稳定性

调整长度混合、microbatch、LR、重算和 context parallel;保持全局有效 token 口径。

04 / VERIFY

长短任务一起测

长度、位置、干扰、检索/组合/聚合与短上下文回归,连同成本和延迟报告。

RoPE 让不同位置的 Q/K 通过旋转表达相对位移。把位置插值进已训练范围,或修改频率尺度,会改变距离与相位关系;这可能帮助扩展,但不能单凭数学变换保证新长度的能力。继续训练的数据、长度课程和原始模型决定是否适应,短距离分辨率也可能受影响。

长度 L 的全注意力算术量含 L² 项;FlashAttention 减少物化中间矩阵与 HBM 搬运,不消除这个交互数。滑窗缩小局部访问,但跨窗口信息如何传播取决于层结构。context parallel 把同一长序列的计算分给设备,仍需要交换相应状态,共同完成这条序列的前向与反向。

评估轴测试变化能回答什么
长度 × 位置固定任务,改变上下文长度、证据放头/中/尾的位置。模型在哪些长度和位置可靠,而非只报告最大可输入长度。
单条检索找一个明确事实或标记,加入相似干扰。能否找到局部信息;不能代表跨多证据推理。
多跳/组合分散多条事实,必须按关系组合才能回答。各条远端证据是否共同影响答案。
聚合/顺序计数、排序、跨段去重、事件先后和矛盾更新。长程任务执行与状态维护;单 needle 命中率不足以覆盖。
成本与短程回归相同任务/推理预算下测显存、TTFT、ITL 与短问题质量。扩展是否值得,以及是否牺牲常见场景。

RULER 用多类合成任务揭示“标称上下文”与实际使用能力之间的差距;合成评估也有范围,应再测真实文档、代码仓库或多轮任务。报告可靠长度时应明确通过阈值、任务类型和位置分布,每个可靠长度结论都应对应到这些评估条件。

CASE / RECURRENT MEMORY

Gated DeltaNet 与 KDA:固定状态怎样写入,训练又怎样分块?

这类层把历史压入每个 head 的矩阵状态。新 key 用来读取旧关联,再把“新 value 与旧预测的差”写回;衰减控制旧状态保留多少。它与逐 token 保存 K/V 的全注意力、只保留固定邻域的滑窗,以及完整 Mamba 块的结构分别理解。

三个来源,三种具体配置
公开版本本节对应内容配置边界
Gated DeltaNet v1 · 2024-12-09
NVIDIA / MIT,§3
每头一个标量遗忘门,结合 delta 修正;原文提供 WY 分块训练与混合层。原文状态是 dᵥ×dₖ;下文统一转置成 dₖ×dᵥ。完整块还含短卷积、归一化与输出门。
Kimi Linear v1 · 2025-10-30
Moonshot,§3–4
KDA 改为逐 key 通道衰减,原文式 1 给定乘法顺序。Kimi Linear 以 3:1 混合 KDA 与 full MLA;其 WY/UT 实现和模型结果不同于本站稠密小矩阵教具。
Qwen3.5-9B 官方模型卡
2026-10-30 核对,c202236
明确列出 8 组“3 层 Gated DeltaNet + 1 层 Gated Attention”,每层 mixer 后接 FFN。这是指定 9B 版本;GDN 不等于 KDA,Gated Attention 也不等于 Kimi 的 MLA。模型卡不是未披露训练配方的依据。

先衰减旧状态,再读出误差并修正

以下 Sₜ∈ℝᵈₖ×ᵈᵥ,qₜ/kₜ 为 dₖ 维列向量,vₜ 为 dᵥ 维列向量;本节统一使用 Kimi 论文的方向。令 Dₜ=Diag(αₜ),逐通道 αₜ∈[0,1]ᵈₖ,写入强度 βₜ∈[0,1]。GDN 的标量门是 Dₜ=αₜI 的特例。

Xt=DtSt−1,rt=vt−Xt⊤kt,St=Xt+βtktrt⊤=(I−βtktkt⊤)DtSt−1+βtktvt⊤,ot=St⊤qt.\begin{aligned} X_t&=D_tS_{t-1},\qquad r_t=v_t-X_t^\top k_t,\\ S_t&=X_t+\beta_t k_t r_t^\top\\ &=(I-\beta_t k_tk_t^\top)D_tS_{t-1}+\beta_t k_tv_t^\top,\\ o_t&=S_t^\top q_t. \end{aligned}
rₜ 以衰减后的状态为基准。通道衰减 Dₜ 与 I−βₜkₜkₜᵀ 通常不交换;标量门能交换,不代表向量门也能。状态是每次前向变化的中间量,βₜ 是输入相关的写门,不是更新模型参数的优化器学习率。

本地固定四个位置、2×3 初始状态、单位 q/k,以及预先保存的 v、α、β;不运行模型投影、短卷积或输出门。三个输出坐标直接来自 Sₜᵀqₜ;此表显示四位小数,完整数值保存在结果文件中:

位置 toₜ[0]oₜ[1]oₜ[2]
10.25300.01000.0100
20.01480.3423-0.1890
30.2251-0.1926-0.1203
40.2190-0.10400.1031
换成标量门、交换顺序、清零计算块,结果一样吗?

标量门依次固定为 [0.8,0.875,0.75,0.675];错序例将旧状态路径改成 Dₜ(I−βₜkₜkₜᵀ)Sₜ₋₁,写入项保持原样。清零例在处理第 3 个位置前把状态置零。其他输入不变,比较最后一个输出:

路径o₄[0]o₄[1]o₄[2]
KDA:逐通道衰减0.218979-0.1039970.103106
GDN:每头标量衰减0.223563-0.1049360.108299
错序:先修正再衰减旧状态0.213903-0.0950910.106742
误把计算分块当新文档清零0.139264-0.1141760.091648

这些差异说明算子和边界约定不同,不比较模型质量。计算分块要延续同一文档的状态;独立文档需要自己的状态、短卷积和注意力隔离规则。

分块重排计算,不等于截断跨块梯度

对本层给定的 q/k/v 与门值,每步可写成 Sₜ=AₜSₜ₋₁+Bₜ。若前块表示为 S↦P₁S+R₁、后块为 S↦P₂S+R₂,代入后得到 P=P₂P₁、R=P₂R₁+R₂。因此能先组合块内仿射变换,再用块入口状态求输出。组合顺序保留因果关系;代数等价允许浮点舍入差异。

本地枚举四位置的全部 8 种连续分块方式,核对每个中间状态与输出。这个稠密展开用于看懂依赖;真实高效训练还需论文的结构化 WY/UT、块内并行、精度处理和硬件实现,不能用教具的运算时间代表论文收益。

L=12∥o4−y∥22,Gt−1=At⊤Gt,Gt=∂L∂St\mathcal L=\tfrac12\lVert o_4-y\rVert_2^2,\qquad G_{t-1}=A_t^\top G_t,\qquad G_t=\frac{\partial\mathcal L}{\partial S_t}
末位置监督 y=[0.25,−0.15,0.1]。若只改变分块执行而保持整段训练目标,状态伴随 G 必须跨过块边界;detach 把这条链的梯度人为置零,属于截断反传的另一种训练约定。
训练路径同一前向 loss∂L/∂v₁[0]传过 S₂ 的 ‖G₂‖F
逐 token 递推0.001544-0.0038520.020273
仿射分块 [2,2]0.001544-0.0038520.020273
块边界 detach0.0015440.0000000.000000

输入状态、v、通道衰减和写门共 30 个局部量均核对手工伴随、分块伴随与有限差分。q/k 在此固定,未核验上游投影、归一化或门参数化的权重梯度。前向相同和训练梯度相同是两项独立检查。

固定状态省的是哪些槽位?

只计算抽象四层、每层一头、dₖ=2/dᵥ=3、相同精度的缓存标量数。全注意力每层保存 T(dₖ+dᵥ)=5T,循环层每层保存 dₖdᵥ=6;三层循环加一层全注意力需要 18+5T:

已处理长度 T四层全注意力四层循环3+1 混合
1202423
4802438
163202498

短前缀时,固定矩阵也可能比少量 K/V 占更多槽位;混合模型仍有随 T 增长的全注意力缓存。本表排除了短卷积状态、权重、激活与分配器,也没有套用 Qwen/Kimi 不同的 head 数、维度或量化配置。

投机解码拒绝草稿时,循环状态能像 KV 一样删尾吗?

必须按状态语义处理。作为方程的端点反例,取 β=1、k=[1,0]、D=I,两份旧状态只在第一行不同。这次写入会把第一行完全换成 v,两份新状态的最大差为 0.000000,从新状态不能唯一恢复旧第一行。

这里 β=1 是明确的数学端点,不宣称有限 sigmoid logit 必然达到该值。内部参数下的可逆性需另看 A 与数值条件;不能默认所有步都可逆,也不能只按 KV 删除位置。实现通常需要按所选机制核对状态快照、重算、短卷积状态及混合层缓存,本站不指定某个引擎未核对的回滚实现。

离线重算状态、分块、梯度与正文表格

在仓库根目录执行,仅用 Python 3.10+ 标准库。固定输入、全部状态、30 项有限差分、8 种分块、反例与来源版本随代码保存;同时核对正文四表一值。

python3 artifacts/delta-state-20261030T092245Z/check-mechanisms.py

另检查空序列、门值端点和后缀变更不影响早期状态。没有下载权重、训练完整模型、运行作者 kernel 或测 GPU 吞吐;不复现作者的任务成绩和速度提升。

CASE / RESIDUAL MIXING

mHC:多条残差流怎样混合,约束又保证到哪里?

普通残差把分支输出加回一条流。Hyper-Connections 扩成多条流,并学习层间的混合。DeepSeek 的 mHC 再约束残差混合矩阵;它改变的是计算图,不能只当成优化器或 KV 压缩技巧。

Xℓ+1=BℓXℓ+CℓFℓ(AℓXℓ),Bℓ≥0,Bℓ1=1,1⊤Bℓ=1⊤.\begin{aligned} X_{\ell+1}&=B_\ell X_\ell+C_\ell\mathcal F_\ell(A_\ell X_\ell),\\ B_\ell&\ge0,\qquad B_\ell\mathbf1=\mathbf1,\qquad\mathbf1^\top B_\ell=\mathbf1^\top. \end{aligned}
X 为 n×d 的残差流;A 为 1×n 输入混合,B 为 n×n 残差混合,C 为 n×1 输出分发。实际系数依赖状态。双随机条件约束 B;A、C 的参数化和分支 F 需另行分析。

有限次 Sinkhorn:把误差也留下来

固定正矩阵 M⁽⁰⁾=[[4,1],[1,1]],交替归一化。本站教具约定每轮先行、后列;原论文 v1 式 9 写的是先列、后行。二者有限次结果不同,不能只凭同为 20 轮就认作逐步复现。

Mij(0)=exp⁡(Zij),Rij(t)=Mij(t−1)∑kMik(t−1),Mij(t)=Rij(t)∑kRkj(t).\begin{aligned} M^{(0)}_{ij}&=\exp(Z_{ij}),\\ R^{(t)}_{ij}&=\frac{M^{(t-1)}_{ij}}{\sum_kM^{(t-1)}_{ik}},\qquad M^{(t)}_{ij}=\frac{R^{(t)}_{ij}}{\sum_kR^{(t)}_{kj}}. \end{aligned}
教学输入全部为正,分母非零且不加 ε;采用 JavaScript Number 重算。表中行/列误差是对应和与 1 的最大绝对差,‖M‖₂ 是最大奇异值。
轮数最大行和误差最大列和误差‖M‖₂
04.000e+04.000e+04.302776
19.890e-2<1e−141.005465
21.097e-2<1e−141.000068
51.505e-5<1e−141.000000
20<1e−14<1e−141.000000

一轮后列和已满足,行和与二范数却仍不满足精确双随机结论。表中 1.000000 是六位舍入,不能当作严格上界;“<1e−14”也不代表精确为零。低精度、极端输入、归一化次序和稳定项会改变误差,需要在实际实现上核对。

约束后的矩阵还能怎样回传?

固定线性读出 L=ΣᵢⱼM⁽²⁰⁾ᵢⱼGᵢⱼ,G=[[0.2,−0.3],[0.4,0.8]]。本例从四个原始 Z=log M⁽⁰⁾ 出发,沿 20 轮归一化逐步反传;有限差分核对全部四个导数。一次 η=0.1 的 SGD 后,读出由 0.700000 变为 0.695987。这是指定矩阵目标的更新,不是模型质量提升,也没有实现状态相关的系数预测器。

残差混合不放大,不等于不丢差异或整网都稳定

对精确非负双随机的方阵,二范数至多为 1;这样的矩阵相乘仍满足同样约束。对每个固定输入方向 v,‖Bv‖₂≤‖v‖₂。该结论只约束残差混合算子,不把近似行列和自动升级成精确条件。

混合次数 r差异方向 [1,−1] 的范数比‖Bʳ‖₂
13.333333e-11.000000
54.115226e-31.000000
121.881676e-61.000000

这里 B=[[2/3,1/3],[1/3,2/3]],常量方向保持,差异方向却每层缩为 1/3。另取单流 B=1、A=0.5、C=1、F(u)=4u,完整转移是 x→3x,导数为 3.000000。B 满足约束,完整分支仍可放大梯度;实际 A/B/C 依赖 X 时还会出现系数导数。

Single-Pass:先改变系数依赖,再讨论融合

DeepSeek-V4.1-Flash 报告第 2.4.1 节把输入混合由本层 Aℓ 改成前层产生的 Aℓ−1,解除输入混合等待本层系数归约的依赖。报告区分预训练沿用多 kernel 实现和部署时融合执行;不能把这项改动概括成“同一计算图换个快 kernel”。

Xℓ+1=BℓXℓ+CℓFℓ(Aℓ−1Xℓ)X_{\ell+1}=B_\ell X_\ell+C_\ell\mathcal F_\ell(A_{\ell-1}X_\ell)
这里仅输入混合系数移到前一层;Bℓ、Cℓ 仍属于当前层。完整训练需按实现约定系数状态与首层初始化,本站不补猜未核对的边界配置。
相同当前状态,使用本层或前层系数会怎样?

固定 X=[2,1]、上面的 B、C=[0.25,0.75]、F(u)=2u,本层 A=[0.6,0.4],已保存前层 A=[0.8,0.2]。只对比一次转移,不生成系数或声称两行输出等价。

输入混合AX下一状态两条流
本层 Aℓ1.6000002.466667 / 3.733333
前层 Aℓ−11.8000002.566667 / 4.033333

本例检验的是系数来源与依赖,未执行融合 kernel、量化或测速。访存下界与作者的端到端收益不能由这三列数值推出。

一手版本:mHC v1(2025-12-31)第 4.1–4.2 节、式 6–9定义约束、参数化和有限次迭代;DeepSeek-V4.1-Flash v1(2026-09-17)第 2.4.1 节、式 2–6说明 Single-Pass 的系数移位与执行阶段。这里没有重跑作者训练、验证质量或复现吞吐。

CASE / ATTENTION OVER DEPTH

Attention Residuals:在网络深度上选择来源,分块又改变了什么?

标准残差展开后,是 embedding 与此前各子层输出的固定加和。Moonshot 的 AttnRes 将这些来源保留为候选,用学习到的权重重新聚合。这里选择的是同一 token 的不同深度来源;GDN/KDA 处理序列状态,mHC 混合相邻层之间的多条残差流,三者的对象不同。

本节绑定 Attention Residuals v1(2026-03-16)§3–4。作者仓库将示例标为 PyTorch-style pseudocode;本轮保存了 README 的文件 blob 身份,未把伪代码当完整训练实现。报告中的 Attention 和 FFN 各算一个子层。

查询是学习参数,键和值承担不同作用

对目标子层 ℓ,伪查询 wℓ 是独立的学习向量,不是当前 hidden state 的 Q 投影。候选 vᵢ 来自 embedding 或此前子层输出;权重随输入变化,是因为候选键随输入变化。RMSNorm 用于计算键,最终加权的值仍是原始 vᵢ。

ki=viϵ+∥vi∥22/d,si=wℓ⊤ki,αi=exp⁡(si)∑jexp⁡(sj),hℓ=∑iαivi.\begin{aligned} k_i&=\frac{v_i}{\sqrt{\epsilon+\lVert v_i\rVert_2^2/d}},\qquad s_i=w_\ell^\top k_i,\\ \alpha_i&=\frac{\exp(s_i)}{\sum_j\exp(s_j)},\qquad h_\ell=\sum_i\alpha_i v_i. \end{aligned}
这里为本地教具固定单位 RMS gain、ε=10⁻⁵,无额外 1/√d 缩放;不据此指定作者模型的全部数值配置。softmax 沿来源/深度轴归一化,不沿 token 或特征轴。

固定一个 token、四个三维来源:v₀=[1,0,−0.5],v₁=[0.2,0.8,−0.1],v₂=[0.6,−0.4,0.5],v₃=[−0.3,0.2,0.9];w=[0.5,−0.25,0.2]。Full 聚合的分数和权重如下:

来源分数 sᵢ权重 αᵢ
embedding0.6196700.295685
f1-0.2502120.123892
f20.9869080.426893
f3 / partial-0.0357290.153530

Block AttnRes 改候选;两阶段执行保持同一候选集合

本例 Full 的候选是 [v₀,v₁,v₂,v₃]。另设前两个子层构成已完成块 b₁=v₁+v₂,当前块已产生 partial=v₃;Block 的候选变成 [v₀,b₁,v₃]。先求和再做 RMSNorm/softmax,与分别对 v₁、v₂ 打分并不等价。

两阶段执行则先计算 embedding/已完成块的结果,再计算当前 partial,并合并归一化统计量。若两组各自的归一化输出为 hA/hB,log-partition 为 LA/LB,合并必须按概率质量加权:

L=log⁡(exp⁡(LA)+exp⁡(LB)),h=exp⁡(LA−L)hA+exp⁡(LB−L)hB.\begin{aligned} L&=\log\bigl(\exp(L_A)+\exp(L_B)\bigr),\\ h&=\exp(L_A-L)h_A+\exp(L_B-L)h_B. \end{aligned}
实现使用减最大值的稳定统计量;不能把局部归一化后的两个向量简单平均。原文 Algorithm 1 借助学习查询独立于本层前向这一点,并行处理已完成块,再顺序处理当前块的 partial。
聚合路径h[0]h[1]h[2]
Full:四个原始来源0.530540-0.0409370.191392
Block:embedding / f1+f2 / f30.6557310.2041550.151084
Block:两阶段精确合并0.6557310.2041550.151084
错误:两组结果各取一半0.2986990.2026030.430857
错误:把归一化键当作值0.933016-0.0755260.413283

固定来源只比较本地聚合算子;真实 Full/Block 网络还会改变后续 fᵢ(hᵢ),不能把这几列当作模型能力比较。原文 Block 还改变跨层来源的保留与传递:每 token 的这部分候选存储由 O(Ld) 降到 O(Nd),不等于整个训练的总内存都按此缩减。

三个“分块”分别保持了什么?
分块方式保持的对象需要单独核对
GDN/KDA 的执行分块相同递推与输入下的状态和输出。跨块梯度;detach 会更改反传约定。
Block AttnRes 的结构分块将子层输出求和为块级候选。候选与模型计算图发生变化;不是 Full 的精确执行重排。
AttnRes 的两阶段执行同一组已完成块/partial 候选的 softmax 聚合。归一化分母、稳定合并和因果可用性。

本地枚举 Full 四候选的 8 种连续分组和 Block 三候选的 4 种连续分组,合并后都与各自直接求值一致;不据此把 Full 与 Block 的输出等同。

反传既经过原值,也经过打分路径

固定监督 y=[0.2,−0.1,0.3],L=½‖h−y‖²。来源 vᵢ 一方面直接作为 value,另一方面经过 RMSNorm、分数和 softmax 改变权重。只把本轮 α 当常量会漏掉第二条路径。下表核对同一个原始来源 v₁[0] 的局部导数:

候选结构value 直通项打分路径项完整导数中心有限差分
Full0.040951-0.0038600.0370910.037091
Block0.1866110.0117120.1983220.198322

两种结构分别对原始来源的 12 个坐标及查询的 3 个坐标做有限差分,共 30 项;Block 的导数继续通过 b₁=v₁+v₂ 返回原始来源。分项独立四舍五入,完整精度保存在结果文件中。

学习查询的一次更新,与零查询的边界

只更新 Full 的三个查询参数,来源保持不动,η=0.05,执行一次 SGD。下表只验证这次固定目标更新:

阶段w[0]w[1]w[2]本地 loss
更新前0.500000-0.2500000.2000000.062270
一次 query SGD 后0.494158-0.2493220.2074600.060482

若另取 w=0,四来源权重均为 1/4,输出是均值 [0.375,0.15,0.2];它不是标准残差的原始求和。不能只凭“均匀权重”就宣称两种完整网络的初始化行为完全相同;还需核对后续归一化与具体实现。

新块首层:没有 partial,不等于 partial 是零向量

原文式 6 明确:新块首个子层只使用 embedding 与此前已完成块;后续子层才加入当前 partial。多加一个零向量虽然不直接贡献 value,却会以 exp(0) 增大 softmax 分母,改变已有来源的权重。未来子层输出也不能提前加入。

本地另核对省略 partial 与加入零候选的不同输出、单来源、空候选拒绝、排列不变性和大分数的稳定求值;不猜测官方伪代码未完整展示的初始状态约定。

离线重算四张正文表与边界

在仓库根目录执行,仅使用 Python 3.10+ 标准库。固定输入先于结果保存;30 项局部导数、12 种执行分组、查询更新及反例均可重算:

python3 artifacts/attnres-20261030T095028Z/check-mechanisms.py

没有实现完整骨干、流水线通信或作者 GPU kernel,也未复现作者训练、scaling law 或线上速度;本文的数值只核验指定聚合机制。

07

看到一篇架构论文,怎样判断它在证明什么?

先检查控制变量,再看机制是否解释结果。

同一参数/激活预算?

MoE 的“更大”可能是总参数,也可能只是训练 compute;要区分。

同一训练 token?

多训练本身就能提升质量,与结构改良混在一起。

同一数据和 tokenizer?

词表变化会改变有效序列长度和 bits/byte。

同一推理协议?

batch、context、precision、decoding 参数不同,延迟与质量不可直接比。

有消融还是只有总表?

一次换多个部件时,无法归因到具体设计。

机制和指标一致吗?

声称省 KV,就应报告缓存、带宽和长上下文回归;不能只报训练 loss。

适用范围与一手资料

mHC、GDN/KDA 与 AttnRes 均用固定教具核验,并区分序列状态、残差流和深度候选。AttnRes 只检查四来源的聚合、30 局部导数与两阶段合并;Block 改候选,执行分组才保持同一 softmax。各节保留版本与简化边界,不复现完整模型、厂商训练或速度。

公式与机制的原始依据 · 13 项
知识目录
搜索知识库