返回课堂

完整深入材料 · 保留原页与全部停点。回到相关主讲

分块以后,分子和分母都要一起接着算

N50/b0 · 固定三个位置和两块

同一个 query · 已取指数的正权重 · 标量 value块 1块 2w = 2v = 10w = 1v = 20w = 4v = 30全量输出 = (2×10 + 1×20 + 4×30) / (2+1+4)先保留尚未完成的结果,怎样才能接着算?
固定三个位置和两块

先把一个query的读取缩到三个位置。它们的未归一化正权重是二、一、四,要汇总的value分别是十、二十、三十。这里已经从打分走到了正权重,目的只是把跨块归一化讲清,不把这几个数冒充真实模型输出。前两个位置归入第一块,最后一个位置归入第二块,完整的读取范围没有改变。

教师备课:指图与模拟问答

指图与推进 · 不朗读辨认两块边界和每个位置的w/v。

N50/b1 · 保留局部分子与分母

同一个 query · 已取指数的正权重 · 标量 value块 1块 2w = 2v = 10w = 1v = 20w = 4v = 30分子 2×10 + 1×20 = 40分母 2 + 1 = 3分子 4×30 = 120分母 4局部均值:40 / 3局部均值:30两块的总权重不同,先不要平均局部均值。
保留局部分子与分母

先处理前两个位置。加权分子是二乘十加一乘二十,等于四十;分母是二加一,等于三。我们先保留四十和三。再处理第三个位置,带来分子一百二十、分母四。

教师备课:指图与模拟问答

指图与推进 · 不朗读显示两块分子分母,分别停留复算。

N50/b2 · 检验正确合并与错误平均

同一个 query · 已取指数的正权重 · 标量 value块 1块 2w = 2v = 10w = 1v = 20w = 4v = 30分子 2×10 + 1×20 = 40分母 2 + 1 = 3分子 4×30 = 120分母 4合并: (40 + 120) / (3 + 4) = 160 / 7 ≈ 22.86全量: (2×10 + 1×20 + 4×30) / (2+1+4) = 160 / 7直接平均:(40/3 + 30) / 2 = 65/3 ≈ 21.67 ≠ 160/7
检验正确合并与错误平均

把两个分子相加,把两个分母也相加,最后得到一百六十除以七,大约二十二点八六。再看完整计算式,一次算完的结果完全一样。

为什么不先各算各的答案,再平均?第一块的答案是四十除以三,第二块是三十,但两块承担的总权重分别是三和四,并不相等;直接平均会得到六十五除以三,答案就变了。因此我们保留的是还能继续合并的量。

教师备课:指图与模拟问答

指图与推进 · 不朗读先指合并式160/7与全量结果相等,再指65/3反例;本态这些式子同屏出现,按讲述顺序指读。

N50/b3 · 统一数值尺度

同一个 query · 已取指数的正权重 · 标量 value块 1块 2w = 2v = 10w = 1v = 20w = 4v = 30分子 2×10 + 1×20 = 40分母 2 + 1 = 3分子 4×30 = 120分母 4累计框:分子 u · 分母 l · 运行最大值 m遇到更大分数 → 分子、分母一起换到共同尺度
统一数值尺度

再看累计框。真实 softmax 为数值稳定,通常会减去当前最大分数后再取指数,所以还要留下运行最大值 m。如果后面的块带来更大最大值,旧分子 u 和旧分母 l 必须一起换到新的共同尺度;只改其中一个,结果就会变。完整复算在本页补充中。我们现在已经知道,必须留下还能继续合并的量;下一页把这条规则用到依次处理所有块的过程。

进一步解释

本页对应 logits=(ln2,0,ln4)。首块取 m=ln2,得到 u=20、l=1.5;第二块最大值为 ln4,旧累计同时乘 exp(ln2−ln4)=1/2,再加入第二块 u=30、l=1。结果为 u=40、l=1.75,输出40/1.75=160/7。缩放改变了分子、分母的数值,却没有改变它们的比值。

教师备课:指图与模拟问答

指图与推进 · 不朗读指累计框中的u、l、m,并指共同缩放短标签;具体ln2/ln4复算留在本态补充。

补充推导、边界与来源

本轮现行算例:正权重w=(2,1,4),value=(10,20,30),前两项为块1、第三项为块2。

$$u_1=2\times10+1\times20=40,\quad l_1=2+1=3;\qquad u_2=4\times30=120,\quad l_2=4.$$

$$o=\frac{u_1+u_2}{l_1+l_2}=\frac{160}{7}\approx22.86.$$

直接平均两个局部均值是$(40/3+30)/2=65/3\approx21.67$,与正确输出不同,因为两块分母不等。

稳定递推。 logits=(ln2,0,ln4)。首块用m=ln2缩放,得到u=20、l=1.5;第二块的最大值ln4更大,旧分子和分母一起乘1/2,第二块贡献u_b=30、l_b=1。因此新u=40、l=1.75,输出40/1.75=160/7。一般公式为$m'=\max(m,m_b)$,$u'=e^{m-m'}u+e^{m_b-m'}u_b$、$l'=e^{m-m'}l+e^{m_b-m'}l_b$。

完整向量实现与因果mask见在线softmax正文。旧权重(2,1,3)与130/6只作为历史算例,不是本页当前数据。

本页证据与条件

FlashAttention 机制;教学数值与执行示意,不是性能实测

进入主题正文