一个 QK 通道,多个来源:追踪低精度注意力崩溃
One QK Channel, Many Sources: Tracing Low-Precision Attention Collapse
摘要
bfloat16 Transformer 可以正常训练,然后突然崩溃。之前的工作将崩溃与结构化注意力错误联系起来,并表明 QK 标准化会破坏它们的复合。不同的低精度错误也会引发同样的崩溃,因此不清楚是否每个错误都需要从源头进行修复,或者是否可以阻止一条共享路由。我们将再现的 GPT-2 级崩溃背后的故障隔离到流式 softmax 累加器,其中 fp32 流式核心对其进行修复,并将其转变为跨源移动受控误差的分析方法。使用它,我们发现外部注意的错误仍然会导致相同的 QK 频谱失控,并且仅纠正 QK 可以保持训练稳定,同时故障保持活动状态。这是源通道分离:故障源不是故障通道。它适用于经过测试的架构和规模,并在第二个 GPU 架构上重现。作为因果探测,从当前 QK 权重的前三个奇异方向投影每次更新,使查询投影的最大奇异值保持在 11.1,而在其他地方删除相同的能量,使其保持在 237:QK 通道因果驱动早期失控。注入误差的原因是时间符号一致性,其每个头的符号在各个步骤中持续存在,而不是聚合偏差;一旦进入,失控就会显示为注意-logits 饱和。 QK-Guard 是一种休眠控制器,通过在第一个受监控的阈值交叉处打开无参数 QK 归一化来对此进行测试。在指定用于此测试的运行中,QK-local 操作可防止每个匹配或相同配置的无防护运行的失败;在普通 GPT-2 上,所有 12 个最终训练和验证损失均在相同配置始终在线 QK 范数的 0.03 nat 范围内,并且两种方法都运行了 60k 步骤而没有崩溃。因此,对 QK 基因座进行干预就足以代替对每个源进行修复。