experiments.md · 可读全文

这里保留原文的中文、公式标记、代码和链接。可直接交给 Agent 读取,也可选取下方原文复制。此入口返回 HTML;原始 .md / .py 文件仍保留,完整候选包同时包含 UTF-8 原件。

# 实验入口|从已有结果继续判断

实验材料围绕本讲的表示、序列生成、动态读取、图像条件和资源选择展开。可以先阅读已经保存的输出,再选择一项值得核对的计算。读本解释问题和机制,LAB 提供代码、参数、结果与可改变的条件。

课堂“我昨天给了他一本书。”用于连续理解系统怎样工作;Notebook 中的字符反转、小语法、湖边图片和随机 decoder 各有自己的任务。它们的结果要按原输入与评价条件理解,不能直接当作这句自然翻译的成绩。

[学生学习导读](guide.html) · [十三个完整主题](course/knowledge/index.html) · [连续讲义](lecture.html)

## 七本 Notebook,从自己的问题进入

| Notebook | 适合带着什么问题进入 | 当前课堂与正文 |
|---|---|---|
| [CLS 00 · 第五讲材料导读][cls00] | 我的问题属于哪一段?怎样在读本、机制计算与已有结果之间往返? | [全课学习路线](guide.html) |
| [CLS 01 · 序列目标与共享状态][cls01] | 文字怎样成为表示?每步预测什么?共享状态和共享参数怎样参与训练? | [表示(T01–T09)](classroom/T01.html?step=b0)、[状态与生成(T10–T18)](classroom/T10.html?step=b0);[第一章](lecture.html#chapter-1)、[第二章](lecture.html#chapter-2) |
| [LAB 01 · 序列状态与预测目标][lab01] | 观察共现与切分;读取已训练小语言模型的结果;复算共享梯度、门控与共同后缀任务。 | [输入与表示](course/knowledge/text-units-and-representations.html)、[状态与梯度](course/knowledge/recurrent-state-and-credit.html)、[目标与评价](course/knowledge/objectives-and-evaluation.html) |
| [CLS 02 · Attention 与 Transformer][cls02] | 固定摘要为什么可用?读取怎样形成预测?整套 Transformer 和训练目标怎样连接? | [读取(T19–T24)](classroom/T19.html?step=b0)、[Transformer(T25–T34)](classroom/T25.html?step=b0)、[训练(T40–T43)](classroom/T40.html?step=b0);[第三章](lecture.html#chapter-3)、[第四章](lecture.html#chapter-4)、[第五章](lecture.html#chapter-5) |
| [LAB 02 · 读取机制与架构判断][lab02] | 复算搜索树和 q/V 干预;读固定摘要与动态读取的已训练合成任务;定位一条生成错误。 | [2014 年的翻译选择](course/knowledge/translation-choices-2014.html)、[从读取到预测](course/knowledge/attention-to-prediction.html)、[训练与生成](course/knowledge/teacher-forcing-and-generation.html) |
| [CLS 03 · 生成、视觉条件与上下文][cls03] | 怎样区分训练评分、实际生成、视觉通路、事实使用和资源成本? | [视觉条件(T44–T49)](classroom/T44.html?step=b0)、[执行(T50–T51)](classroom/T50.html?step=b0);[第六章](lecture.html#chapter-6)、[第七章](lecture.html#chapter-7)、[第八章](lecture.html#chapter-8) |
| [LAB 03 · Transformer、视觉条件与有效上下文][lab03] | 跟踪一个完整 encoder block;换图并关闭视觉分支;检查缓存等价、失效、计时和证据位置。 | [完整 Transformer](course/knowledge/transformer-information-flow.html)、[视觉条件](course/knowledge/visual-condition-use.html)、[缓存与有效上下文](course/knowledge/cache-and-effective-context.html)、[资源账本](course/knowledge/resource-ledger.html) |

若要运行,先在自己的副本执行对应 LAB 的准备单元和依赖。LAB 01 的语言模型、LAB 02 的 Seq2Seq 默认加载既有 checkpoint;只改采样或搜索时可以复用参数。要研究新的训练配置,再启用相应重训开关。新的结论依据本次实际输出,参考结果用于对照。

## 例一:模型分数改善以后,完整输出为什么还要检查?

从 [LAB 02][lab02] 的“D/E · 固定源序,比较两种读取接口”进入。任务是把字符序列反转,例如 `a c b → b c a EOS`。下面是 2026-10-15 保存的 CPU 云端结果:两组都用双向 LSTM 编码器、同一去重划分 3000/300/300,源长度为 3–7;共同完成 500 次更新,每组累计处理 102,417 个目标 token。

| 保存的测试结果 | 固定摘要 | 动态读取 |
|---|---:|---:|
| 参数量 | 15,577 | 16,601 |
| 每个目标 token 的负对数似然 NLL,越低越好 | 0.287898 | 0.106673 |
| 300 条测试序列的整句精确匹配率 | 57.67% | 87.00% |
| 长度为 7 的精确匹配率,92 条 | 22.83% | 73.91% |

先看两组都能拟合 16 条短例,再看完整测试和逐长度结果。这个次序使“系统可以工作”与“在什么条件下更好”成为两个问题。长度 3 的测试仅有 2 条,不能凭它的高分判断稳定能力。动态组多出 1,024 个参数;这次单种子合成结果支持特定条件下的比较,尚不能给自然翻译或所有架构排名。配置、曲线、失败例与保存结果可在 [LAB 02][lab02] 和[相应完整主题](course/knowledge/translation-choices-2014.html)核对。

接着查找“路径A · 分数进步了,为什么这一句仍然错”。保存样本的源为 `b d a d e`,正确目标为 `e d a d b EOS`,greedy 却输出 `d e d a b EOS`。第一步两条路径都只接收 BOS,已经选错,因而首错不能归因于此前自馈错误的累积。

在这个现成例子里,将 `beam_width` 在 1、2、4 之间切换,核对最后一轮候选表,同时保持 checkpoint 和评分规则不变。已保存结果中,宽度 2 保留了正确完成项,但模型给它的累计 log 概率约为 −1.280045,低于错误完成项的 −0.905535。扩大搜索并未自动修正模型排序。把“有没有找到候选”“模型怎样评分”“任务答案是否正确”分开,就能更有根据地选择下一项改动。逐步前缀与概率表见[训练与生成主题](course/knowledge/teacher-forcing-and-generation.html)。

## 例二:换图后分布变了,证据究竟支持什么?

从 [LAB 03][lab03] 的“视觉接口”或“路径B”进入。这里使用湖边与 bank 两张已有图片、固定前缀 `a scene`,将 224×224 图片分成 196 个 patch。每块的 RGB 均值和 x/y 位置经随机投影进入 cross-attention;视觉投影、语言侧参数和词表头均未训练。

先看四个条件:A 图开分支、B 图开分支、A 图关分支、B 图关分支。保存结果中,换图后的最大 logits 差约为 0.016440292;两图最高概率词仍都是 `a`。关闭包含输出偏置在内的整条视觉分支后,两图 logits 的差为 0。这证明本次图像通路影响了计算,而且关闭操作确实隔离了该通路;它没有证明模型正确理解了图片。[完整图、张量表与输出](course/knowledge/visual-condition-use.html)可以逐项对照。

动手时可先复算现有四个条件:保持参数、前缀和预处理相同,换图时重算 Z、K、V;开关分支时同时查看中间量与最终 logits。如果关闭分支后仍有图像差异,就检查是否还残留图像路径或偏置。不要只挑一张热图来命名模型“看到了什么”。

再与[第三讲 LAB14 的受训像素问答记录](https://codingai-lec03.pages.dev/course/pages/l3-r2-p54.html)比较。那项任务用 720 张训练图、180 张留出图,每图询问数量、左侧颜色或右侧形状;保存的图+问模型在 540 个留出图问对上总体为 100%,另训的问题模型、零图输入和循环错配图条件总体均为 44.44%,但分项表现不同。问题模型与零图也不是同一个干预。这是有限受控任务中的训练能力证据,任务、模型和图片都与本课随机通路不同。

课堂的蓝书/红书比较则是在明确“描述事件并补充颜色”的任务后提出事实使用检验。它还没有新的模型准确率。把这三种证据分别读清,才知道下一步需要检查接线、学习对应,还是评价事实使用。

## 例三:缓存算得相同,为什么保存的计时反而更慢?

从 [LAB 03][lab03] 的“G · 旧 K/V 哪些可以沿用,哪些必须作废?”进入。模型是未训练的两层 TinyDecoder,宽度 8、两头、batch 1、float64。先核对同一组 token 的逐层缓存路径与完整前缀重算,再读计时。

同一份保存的 CPU 云端记录使用 16 个 token 做 prefill,之后追加 32 个预定 token;一次预热、五次测量,prefill 另计:

| 检查或测量 | 保存结果 |
|---|---:|
| 多种合法前缀与位置配置中的最大 logits 绝对误差 | 约 2.72×10⁻¹⁵,低于 10⁻¹⁰ 容差 |
| 错把新增位置设为 0 的差异 | 约 3.101679 |
| 改旧前缀却沿用旧缓存的差异 | 约 0.158329 |
| cached decode,32 步合计中位数 | 19.95 ms |
| 完整前缀重算,32 步合计中位数 | 11.46 ms |
| 48 个位置的 K/V 数组数据量 | 12,288 字节 |

**这次缓存路径确实更慢。**它使用便于核对的 Python 标量循环和逐次拼接,完整路径则使用 NumPy 矩阵计算。减少重复工作与缩短墙钟时间是不同判断;这些毫秒既不是每 token 延迟,也不能拿去给现代 GPU 内核排名。数组数据量仅统计 K/V payload,不是进程总内存。结果与计算口径见[缓存主题](course/knowledge/cache-and-effective-context.html)和[资源账本](course/knowledge/resource-ledger.html)。

先在现有表中比较合法复用、错误位置和过期缓存,解释为什么后两者应该失效。想改条件时,可从上方六 token 的逐步演示入手:固定模型与 token,选择另一个 prefill 切点,再让每个新增位置同时走缓存和完整重算两条路径,逐步核对误差。要复测速度则使用完整计时单元,并记录自己的环境;小演示的耗时不能替代上表的测量协议。

还可阅读“路径C”的门禁记录:把一条撤回通知移动到文档开头,保留事件时间与总长度,按规则得到的答案不变。但随机 decoder 的数值一致性不能告诉我们它是否会处理撤回或采用远处事实。KV cache、有效上下文能力和 FlashAttention 的 GPU 执行性能,需要各自相应的证据。

## 带着一个问题回到同一份结果

不必先运行全部单元。可以从某个完整主题读出疑问,把主题 URL 和具体困惑交给 Agent;讨论涉及实验时,加上正在看的输入、参数或输出。然后回到原 Notebook,核对 Agent 的解释是否能对应到真实表格和计算。

已有结果、机制复算与新训练可以相互帮助,但结论要对应实际做过的操作。进一步需要多种子训练、自然翻译数据、视觉能力评价或 GPU 测量时,应先说明新的问题与条件,再依据新结果作判断。原 A–G 实验的详细过程、历次配置与来源可在[完整材料档案](https://app.notion.com/p/3fe298d59b0781b9a8f3e0bae728a7e3)继续查阅。

[cls00]: https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-05-841ec8e7-e352-4840-b628-d3742b03d6d0/notebook/CLS-00-8a4bf306c998419bb050e362b5139dec?utm_content=8a4bf306c998419bb050e362b5139dec&utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_term=generate_project_url
[cls01]: https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-05-841ec8e7-e352-4840-b628-d3742b03d6d0/notebook/CLS-01-b1c8e2fd764441e8820b808fc40ec3cb?utm_content=b1c8e2fd764441e8820b808fc40ec3cb&utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_term=generate_project_url
[cls02]: 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=generate_project_url
[cls03]: https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-05-841ec8e7-e352-4840-b628-d3742b03d6d0/notebook/CLS-03-719b25c7c5b64687998ba9c19d2f6776?utm_content=719b25c7c5b64687998ba9c19d2f6776&utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_term=generate_project_url
[lab01]: https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-05-841ec8e7-e352-4840-b628-d3742b03d6d0/notebook/LAB-01-ec403d28cc2c400ba661cd270588669f?utm_content=ec403d28cc2c400ba661cd270588669f&utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_term=generate_project_url
[lab02]: 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=generate_project_url
[lab03]: https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-05-841ec8e7-e352-4840-b628-d3742b03d6d0/notebook/LAB-03-Transformer-9c5b3d45acdb438a8e7df1dc6cb97e40?utm_content=9c5b3d45acdb438a8e7df1dc6cb97e40&utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_term=generate_project_url