推理 · 评测 · 冲刺冲刺 · 代码填空(模块三·四·五·八)代码约 16 分钟
第一轮冲刺:代码填空专项
样题最爱的几段代码,逐个吃透
学完这节你能:
- 熟记高频代码模式
- 看清易错的符号/维度
- 能独立补全关键行
第一轮的代码填空来来去去就那几段:注意力、RoPE、MoE 路由、LoRA、RAG 池化。把它们的「关键行」和「常见陷阱」记牢,就能稳拿分。
① 注意力(缩放别忘、softmax 维度别错)
scores = Q @ K.transpose(-2, -1) / (dk ** 0.5) # 记得 /√dk
weights = softmax(scores, dim=-1) # 沿 key 维
out = weights @ V② RoPE(第一行减、第二行加)
q_rot_even = q_even * cos - q_odd * sin
q_rot_odd = q_even * sin + q_odd * cos③ MoE 路由(softmax 沿专家维,再 topk)
probs = F.softmax(gate(x), dim=-1) # 不是 sigmoid、不是 dim=0
topk_w, topk_idx = torch.topk(probs, k, dim=-1) # 选 Top-K 专家④ RAG 掩码平均(padding 不入池化)
vec = (emb * mask.unsqueeze(-1)).sum(1) / mask.sum(1, keepdim=True)⚠️ 陷阱清单:注意力忘除 √dk、softmax 用错 dim;RoPE 符号写反或用加法;MoE 用 sigmoid/沿 batch 维;LoRA 忘了冻结 W;池化忘了掩码。这些正是选项里的错误项。
自测MoE 路由里,把 logits 变成专家概率分布应使用:
// 带走一句话
代码填空五段:注意力(/√dk+softmax dim=-1)、RoPE(先减后加)、MoE(softmax dim=-1+topk)、LoRA(冻结 W)、RAG(掩码平均);错误项都在这些坑上。
独立练习
做到这些,才算完成本节
- 在本地运行代码,打印每个关键张量的 shape。
- 关闭示例后从空文件重写核心部分,并补一个异常或边界测试。
学习记录
记录本节阅读进度
建议先独立回答自测。读完记录不等于已经掌握。