architecture-choices-and-state.md · 可读全文
这里保留原文的中文、公式标记、代码和链接。可直接交给 Agent 读取,也可选取下方原文复制。此入口返回 HTML;原始 .md / .py 文件仍保留,完整候选包同时包含 UTF-8 原件。
# 从2017计算图到2020组合,再看持续状态系统
课堂接续:[T25](https://codingai-lec05.pages.dev/classroom/T25.html?step=b0) · [T34](https://codingai-lec05.pages.dev/classroom/T34.html?step=b0) · [T53](https://codingai-lec05.pages.dev/classroom/T53.html?step=b0)。连续读本:[第4章](https://codingai-lec05.pages.dev/lecture.html#chapter-4);本主题提供独立定义、例子、代码与来源。
从同一给书任务出发,RNN、卷积与self-attention改变连接路径、已知位置的并行范围与资源开销。较短路径使新路线值得研究,不能单凭这个性质宣布所有任务都已胜出。2017的判断需要当时的翻译质量与计算条件;2020的实际组合进一步提醒我们,源编码与逐步生成可以选择不同骨干。
下面保留初稿原表、2020系统图、持续传感流和SSM完整公式。流式任务是显式更换的研究情境,不是给书九单位的同次实验;其状态与长期事实能力须分别检验。
[阅读本主题](https://codingai-lec05.pages.dev/course/knowledge/architecture-choices-and-state.html) · [返回实验](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-05-841ec8e7-e352-4840-b628-d3742b03d6d0/notebook/LAB-02-bba1d024d8e64a589c290b09381de692?utm_content=bba1d024d8e64a589c290b09381de692&utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_term=get_notebook) · [与Agent共读全文](https://codingai-lec05.pages.dev/course/knowledge/architecture-choices-and-state.md.read.html)
读本:[ CLS 02 · Attention 与 Transformer ](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-05-841ec8e7-e352-4840-b628-d3742b03d6d0/notebook/CLS-02-Attention-Transformer-2d44adcb6f3d409aa7dfb25c21a748a3?utm_content=2d44adcb6f3d409aa7dfb25c21a748a3&utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_term=get_notebook),查找“从2017计算图到2020组合,再看持续状态系统”;实验中查找“接着研究 · 哪个实验最便宜,又能区分解释?”。
<span id="architecture-choices-and-state-s01"></span>
## 用初稿的数字作当时的决定
<span id="read-R48"></span>
到这里,短路径、位置、mask、内容加工和训练方式都已形成机制理由;仍需问这些理由是否换来任务收益。先在英德看base的质量与估计成本,再转到英法检查原判断是否仍成立。若只读第一列,就容易把特定任务上的机会误写成所有翻译任务的统一结论。
GNMT 已有深层 LSTM、attention、残差与 wordpiece;ConvS2S 用卷积与 attention 组织序列,已经重视并行计算。这里采用 Transformer 2017-06-12 v1 的 Table 2,而不是将后续结果回填到初稿时点。
| 单模型 | 英德 BLEU | 估计训练 FLOPs(见口径) | 英法 BLEU |
| --- | ---: | ---: | ---: |
| GNMT + RL | 24.6 | 2.3×10¹⁹ | 39.92 |
| ConvS2S | 25.16 | 9.6×10¹⁸ | 40.46 |
| Transformer base | 27.3 | 3.3×10¹⁸ | 38.1 |
| Transformer big | 28.4 | 2.3×10¹⁹ | 41.0 |
口径:上表GNMT与ConvS2S列的是原Table 2的英德成本;原表另列它们的英法成本。Transformer两行的成本单元格在原表跨英德/英法两列合并,不能将这里的单列误读为四个模型都在同一英德硬件协议下实测,也不能自行拆成两套精确任务成本。
base 在英德质量与成本两列都值得关注;换到英法,base 的排序变化。big 的 41.0 超过此前单模型,但低于当时 GNMT 与 ConvS2S 八模型集成的 41.16、41.29。后期稿中的 41.8 不属于本课这个情景。
训练 FLOPs 是论文按时间、GPU 数与估计持续 FP32 算力计算的文献比较,不是统一硬件复测。base 为 8 张 P100 训练 12 小时,big 为 3.5 天;这提供复现规模线索,不承诺任意硬件时间。结构表的 O(n²d) 是 attention 交互项;完整块还有投影和 FFN。相对于循环 O(nd²) 的优势受 n、d 影响。普通局部卷积依靠层叠扩大范围;O(log_k n) 的路径说法需膨胀卷积等条件。
这些结果使全attention成为有机制依据、也有任务证据的新路线。若当前目标接近英德,base的质量与成本组合值得验证;若目标是英法最高质量,则要同时考虑big与已有强集成的预算。统一数据和评测后,仍需测量质量、训练吞吐、峰值内存与错误类型。卷积若在相关任务、可比预算下同样准确且端到端更省,继续采用卷积也是合理选择;论文的一个排名不能替所有部署条件作决定。
可改判结果包括:统一条件后质量优势消失;可用硬件上的吞吐收益不足;长序列内存代价无法接受;结果不稳定。相反,若质量—成本曲线与关键错误类型都改善,再扩大投入。研究选择有明确倾向,也保留其适用条件。
原版:[GNMT v2](https://arxiv.org/pdf/1609.08144v2),[ConvS2S v2](https://arxiv.org/pdf/1705.03122v2),[Transformer v1](https://arxiv.org/pdf/1706.03762v1)。
原实验还包括数据、BPE、checkpoint平均、beam4与长度惩罚α=.6等选择。英德约4.5M句对、共享BPE约37k,英法36M句对、wordpiece32k;8张P100,base100k更新约12小时,big300k更新约3.5天。它们给出复现预算的现实约束。研究目标与可用预算决定先验证哪项机制、采用哪种规模;复现时要保留能改变判断的质量与成本口径。论文§7对图像/音频/视频是后续计划;2015视觉attention+LSTM已经存在,不能把计划写成2017已证明的跨模态成绩。
<span id="architecture-choices-and-state-r71-b3406247"></span>
## 2020:编码器与解码器可以分别选择

Google在2020年的系统改进介绍中采用Transformer encoder与RNN decoder的组合。源端需要把已经收到的句子编码成有用表示,目标端需要逐步生成;两侧的计算条件不同,便可以分别权衡编码质量与解码延迟。结构图中保留“源表示→逐步读取→词表→反馈”的接口,只替换各侧承担职责的部件。这里没有给未报告的延迟编造数值,也不把该系统经验推广成所有RNN decoder都更快。[Google 2020原发布](https://research.google/blog/recent-advances-in-google-translate/)。
2021年的实时语音翻译进一步改变任务:输入还在到达,早显示可以减少等待,却可能需要回改已经显示的译文。因此质量、延迟与修订稳定性要共同评价。离线整句BLEU并未失效,但它独自不足以决定实时产品的显示策略。[2021实时翻译发布](https://research.google/blog/stabilizing-live-speech-translation-in-google-translate/)。
2017的机制和实验让新计算图值得投入,2020的组合提醒我们把判断放回实际职责。结构图仍没有解释参数从哪里获得知识。[模型目标主题](https://codingai-lec05.pages.dev/course/knowledge/model-objectives.html)从同一段文字的训练目标、数据、规模与使用方式继续;本主题接下来转向持续传感流,比较不同状态接口。
[完整Transformer主题](https://codingai-lec05.pages.dev/course/knowledge/transformer-information-flow.html) · [架构选择主题](https://codingai-lec05.pages.dev/course/knowledge/architecture-choices-and-state.html)
<span id="architecture-choices-and-state-s02"></span>
## 同一条传感流,可能需要两种历史
仪器每秒上报一条事件,大多数是“正常”,少数是“报警开启/解除”。第一项任务只问当前报警是否有效,有限状态就可能足够。第二项任务突然问“17分钟前、设备B、维护员刚换班后那次异常的原始读数是多少”,这需要按新query回查具体旧材料。两个任务都很长,但要求保存的信息不同。
RNN把历史压入递推状态,生成时状态大小通常不随长度增长;attention保存逐位置表示或K/V,允许当前query重新寻址,代价随保留长度增加。不是所有应用都值得付出完整历史寻址成本,也不是固定状态一小就自动丢掉任务需要的信息。比较之前先说明输入流、查询类型、延迟、内存和训练预算。
<span id="architecture-choices-and-state-s03"></span>
## 线性时不变 SSM:递推和卷积是一回事
令离散状态更新为 `h_t=Abar h_(t−1)+Bbar u_t`,输出 `y_t=C h_t+D u_t`。参数不随t或内容改变,初始状态为0。展开前三步:
$$h_1=\bar B u_1,\quad h_2=\bar A\bar B u_1+\bar B u_2,\quad h_3=\bar A^2\bar B u_1+\bar A\bar B u_2+\bar B u_3.$$
所以历史输入通过固定核 `K_k=C Abar^k Bbar` 贡献到输出。离线已知全序列时可做卷积,在线来一个输入时可递推;这是同一线性系统的两种计算组织。小例 `h_t=.8h_(t−1)+u_t`、u=(1,0,2),状态为(1,.8,2.64),核是(1,.8,.64),第三项`.64×1+.8×0+1×2=2.64`。它是教学构造,不是S4训练结果。
连续系统离散化有不同约定。零阶保持(ZOH)可写 `Abar=exp(ΔA)`、`Bbar=∫_0^Δ exp(sA)B ds`;S4原文§2.3实际采用双线性变换 `Abar=(I−ΔA/2)^{-1}(I+ΔA/2)`、`Bbar=(I−ΔA/2)^{-1}ΔB`。系数不同,但固定递推与固定卷积的联系仍成立。S4还利用结构化矩阵与数值算法高效生成长核,不能把它的贡献缩成这一条标量式。
<span id="architecture-choices-and-state-s04"></span>
## 输入依赖选择为什么改变问题
在传感流中,“正常”可能不值得覆盖关键报警。固定LTI核对同样时间距离使用同样系数,无法在核心递推内根据这条内容选择保留;非线性外围网络另说。Mamba v2让B_t、C_t、Δ_t随当前输入变化,A仍为学习参数,因此不再有对所有内容都相同的一条固定卷积核。
用A=−1、B=1的简化ZOH可得
$$h_t=e^{-\Delta_t}h_{t-1}+(1-e^{-\Delta_t})x_t.$$
Δ_t大时更快采用当前输入,小则更多保留过去。这把选择性写入与门控直觉连上;完整Mamba还有投影、局部卷积、多维状态和硬件实现,不是一个标量门。训练仍可利用仿射更新复合的结合律做并行scan;“不能固定卷积”不等于“只能Python逐步循环”。固定大小状态也不等于无限无损保存历史。
原始RWKV(2305.13048v2)用按通道的衰减加权分子/分母累计历史,例如 `a_t=e^{-w}a_(t−1)+e^{k_t}⊙v_t`、`b_t=e^{-w}b_(t−1)+e^{k_t}`,读取时当前项有额外u权重,receptance再门控;还有token-shift与channel-mixing。它不保存每位置K/V清单,也不是所有后继RWKV版本的统一定义。指数累加需数值稳定实现,教学公式不是可直接长流运行的完整kernel。
<span id="architecture-choices-and-state-s05"></span>
## 取舍要能被一个观察推翻
|问题|小递推状态可能有利|保留逐位置材料可能有利|
|---|---|---|
|当前有效报警|关心有限充分状态,低延迟常驻|若规则复杂、需要回查证据,保留日志也有价值|
|临时追问某次原始读数|若训练学到所需统计或接外部日志,可回答部分问题|当前query直接寻址旧材料;代价是缓存增长与读取计算|
|长流训练|固定核卷积或选择性scan可并行|已知序列attention也可并行,但密集交互成本更大|
|生成资源|递推状态通常定长|KV随保留长度增长;检索/窗口策略可改变接口|
可以成对构造只在关键事件不同的流,保持后缀相同,再改变查询是在训练时常见的“当前状态”还是新加入的细节追问。若小状态方案稳定满足前者,保留它是合理结论;若attention对后者也失败,先查训练覆盖和实际输入,不能只凭可寻址接口宣布能力已经存在。这里的S4、RWKV与Mamba分析依据原论文机制与结果;上面的传感流比较是待做研究设计。
来源:[Transformer v1](https://arxiv.org/pdf/1706.03762v1)、[v7对照](https://arxiv.org/pdf/1706.03762v7);[S4 ICLR2022 §2](https://arxiv.org/pdf/2111.00396)、[RWKV v2 §3/附录D](https://arxiv.org/html/2305.13048v2)、[Mamba v2 §3.2/附录C](https://arxiv.org/html/2312.00752v2);R7读本第四、五章。它们是具体版本的比较,不是按模型家族名称下统一结论。
<span id="architecture-choices-and-state-s06"></span>
## 版本复核说明
本节历史决定使用2017-06-12 v1:big英法41.0。后期v7摘要/Table2改为41.8,而§6.1仍留41.0,故不能用后期摘要回填初稿。表旁已经给出成本合并单元格、任务和ensemble口径;复核时分别读取两个版本,不将其作为同一次实验。当前研究取舍不依赖把这些差别抹平。
<span id="architecture-choices-and-state-s07"></span>
## 相邻知识与复核资源
[在已经认识的 block 上读懂现代部件](https://codingai-lec05.pages.dev/course/knowledge/modern-transformer-parts.html) · [路径 A:分数进步了,为什么这一句仍然错](https://codingai-lec05.pages.dev/course/knowledge/teacher-forcing-and-generation.html)
[全部主题](https://codingai-lec05.pages.dev/course/knowledge/index.html) · [关键结果JSON](https://codingai-lec05.pages.dev/course/knowledge/data/learning-paths.json) · [只读诊断源码](https://codingai-lec05.pages.dev/course/knowledge/code/learning_paths.py.read.html) · [Seq2Seq完整实现](https://codingai-lec05.pages.dev/course/knowledge/code/seq2seq.py.read.html) · [视觉机制实现](https://codingai-lec05.pages.dev/course/knowledge/code/mechanisms.py.read.html) · [TinyDecoder与cache实现](https://codingai-lec05.pages.dev/course/knowledge/code/legacy_numpy.py.read.html)