第35章:Attention 与模型前向传播源码链路

张开发
2026/6/11 9:39:54 15 分钟阅读

分享文章

第35章:Attention 与模型前向传播源码链路
1 项目背景业务场景算法团队在客服工单分类模型的基础上,尝试做 Attention 可视化——展示模型在判断"这是投诉工单"时关注了文本中的哪些词。产品经理想把这个功能做成一个可解释性面板,让客服理解 AI 为什么做出这个判断。小陈在 BERT 模型的forward()中插入了一个 hook 来提取 attention 权重,但发现提取出来的 attention 矩阵全是 0——原来 BERT 默认不返回 attention weights(output_attentions=False)。即使设置为 True 后,返回的 attention 矩阵维度是(batch, num_heads, seq_len, seq_len),如何从 12 层 12 头共 144 个矩阵中提取有意义的信息又是个难题。同时,团队在尝试用 KV Cache 加速 GPT-2 生成时,发现past_key_values的使用方式与预期不同——KV Cache 的 shape 在每一步都会增长,但代码中并没有显式的拼接操作。这背后的机制是什么?痛点Attention 是 Transformer 的灵魂,但从"知道 Attention 公式"到"看懂源码中 Attention 的完整计算链路"中间有一条大沟:attention_mask 的玄学:BERT 的extended_attention

更多文章