v01_1_split_gqa
本版本引入什么
本版本保持与 v01_0_ragged_batch 相同的行为,但把 GQA 前向路径拆分为具名阶段。
在 KV 缓存引入第二种执行模式前,注意力代码变得更容易检查。
为什么引入
如果核心函数只是包含张量变形、RoPE、掩码和投影逻辑的一整块代码,优化会非常困难。这个检查点在下一版本改变行为前提供了更清晰的基线。
核心原则
分组查询注意力可以拆成相对独立的概念步骤:
- 投影 Q、K 和 V。
- 重排注意力头。
- 对 Q 和 K 应用 RoPE。
- 按 KV 头对查询头分组。
- 对每个请求执行因果注意力。
- 把上下文向量投影回模型宽度。
为这些步骤命名,可以降低阅读后续差异的成本。
建议对比的文件
- 将
layer/gqa.py与v01_0_ragged_batch/layer/gqa.py对比。
保留的权衡
这是可读性检查点,不是性能检查点。有些版本的价值就在于让下一项变化容易理解。