图解 · 运行过程 · 工程取舍

一次输入如何连着预测,直到结束

动态图解约 1.5 千字1 组分步图解

预测到的Token什么时候显示,什么时候成为下一轮输入?

配套正文:F15基础课

动态图解 · F15

一次输入如何连着预测,直到结束

预测到的Token什么时候显示,什么时候成为下一轮输入?

生成像接一条未完的序列,但不是把整句想好再逐字揭幕。每一轮使用已有前缀产生下一项分布,选择一个Token,把它加入已生成序列,再进行下一轮。使用KV缓存时,程序只把尚未处理的新Token送入模型;历史并没有被丢掉,而是通过每层缓存参与计算。

Prefill处理已给定前缀;结束时即可选出第一个输出Token。
Decode处理刚选出的Token,并预测再下一个。
EOS结束Token;被选中后可停止继续生成。
贪心选择每次取最高分候选,不是概率抽样。

输入与适用条件:独立、可复算的微型模型:7项教学词表、4维表示、单层单头因果Attention、残差与tanh前馈;省略归一化和位置编码。输出头只用三条指定前缀拟合,目的是演示“学习→!→EOS”,不具有通用语言能力。完整参数与中间值随包提供。

1 / 10 · 输入是“我爱”,还没有输出

第1步,共10步

窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。

一次输入如何连着预测,直到结束:输入是“我爱”,还没有输出我ID 1爱ID 2本次待处理[1, 2]每层KV缓存长度0;尚未前向

本例教学分词得到[1,2]。这是一台极小的因果模型;下面的候选分数由程序计算,不是商业模型实测。

输入=[1,2];缓存长度=0

默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。

逐步说明与计算记录

以下解释全部展开,与播放器使用同一份数据;不是另换输入的第二个算例。

1.输入是“我爱”,还没有输出

本例教学分词得到[1,2]。这是一台极小的因果模型;下面的候选分数由程序计算,不是商业模型实测。

输入=[1,2];缓存长度=0

2.处理完整输入(Prefill)

首次前向处理两个已知Token,缓存长度由0变2。处理结束时,最后一个有效位置已经能给出下一项的分数。

cache_len=2;新输入=[1, 2]

3.第1次选择:学习

同一个输出头根据当前最后表示算出分布,最高概率约0.7700。按贪心规则选出“学习”。选择没有再次执行Embedding,所以它还没进入自己的K/V缓存。

已选出=学习;cache_len=2

4.显示新文字,同时准备下一轮输入

界面可以先显示“学习”,但模型还没有加工这个新Token。下一轮才会把它送进模型,预测其后的候选。

pending=[3];cache_len=2

5.新一轮:只处理“学习”

把上一步刚选出的“学习”作为新输入,追加它的K/V;历史2个位置的K/V直接复用。并不是只看这个新Token而忘记历史。

cache_len=3;新输入=[3]

6.第2次选择:!

同一个输出头根据当前最后表示算出分布,最高概率约0.7700。按贪心规则选出“!”。选择没有再次执行Embedding,所以它还没进入自己的K/V缓存。

已选出=!;cache_len=3

7.显示新文字,同时准备下一轮输入

界面可以先显示“!”,但模型还没有加工这个新Token。下一轮才会把它送进模型,预测其后的候选。

pending=[5];cache_len=3

8.新一轮:只处理“!”

把上一步刚选出的“!”作为新输入,追加它的K/V;历史3个位置的K/V直接复用。并不是只看这个新Token而忘记历史。

cache_len=4;新输入=[5]

9.第3次选择:EOS

第三次前向后选出结束Token EOS。宿主看到这个结束标记后停止;不会再为了预测下一个Token而处理EOS。EOS不作为可见文字显示。

已选出=EOS;cache_len=4

10.结束不等于每个任务都成功

本次显示的追加文字为“学习!”。EOS是此教学序列的停止标记;达到长度上限或取消是不同的停止原因,不能都宣称任务完成。

可见文本=学习!;stop_reason=EOS

为什么需要

先区分已处理、已选出、待处理三种状态,才能正确实现生成与缓存。

怎样实现

循环中先前向、再选Token、判停止;未停止时只追加新Token作为下一次输入。

可能的代价与误解

把刚选出的Token算进缓存长度,会造成位置偏移、重复追加或漏算;更改模型参数还会让缓存失效。

如何判断是否做对

本图实际算出三轮选择[3,5,6],缓存长度[2,3,4];每轮与从头计算整个前缀的结果比较。

输入关键词即可检索。

↑ ↓ 选择 Enter 打开Esc 关闭 · 仅本地搜索

阅读设置

阅读设置仅保存在本机浏览器,不上传任何数据。