Files
exp-model-parameter-similarity/docs/QK_GAIN_FACTORIZATION.md
T

47 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Q/K 未旋转维度的确定性增益合并(已数值验证,归为重参数化)
这是从已核对架构直接推导的恒等式,不是看留出指标后扩大近邻搜索。
原定 11 对候选保留原协议;本项是独立的解析对照,不训练、不求 R,也不选择层。
预先固定完整网络干预层为第 3 层,分别验证两个移动方向;不根据数据换层。
## 恒等式与前提
以完成 RMS 单位化、尚未乘可学习增益的 q/k 为 u/v,Q/K 增益向量为 a/b。
固定 checkpoint 的 norm 参数实际使用 a=1+w_Q,b=1+w_K。
模型 head_dim=256,partial_rotary_factor=0.25:前 64 维旋转,后 192 维不旋转。
逐头共享的增益向量与 GQA 结构已由官方代码确认。
对于后 192 维,任意 query/key 位置 p/s:
sum_j (a_j u_pj)(b_j v_sj) = sum_j u_pj ((a_j b_j) v_sj)
= sum_j ((a_j b_j) u_pj) v_sj。
前 64 维保留原增益和位置旋转。因而完整 QK 点积在实数算术中相等,softmax、V、
输出门控和 O 不变时,完整 attention 分支也是同一个函数。这个结论不依赖某一输入分布。
浮点乘法次序改变,不能承诺逐 bit 相等;需报告实际误差并验证留出 NLL。
不能把这一规则用于旋转维度,或未经核对的逐头独立增益架构。
## 验证与成本边界
1. 在已有真实 q/k 输入上,检查 6 个 full-attention 层的原始/两个合并方向分数、概率及输出。
2. 固定第 3 层进行两个方向的独立网络替换,不叠加,使用原留出文本和质量阈值。
3. 记录预先缓存增益后、相同 CPU 环境下原版与合并版局部归一化耗时;不外推 GPU 性能。
4. 双精度数学推导和 FP32 实测分开。没有消除 Q/K 投影或 RMS 方差计算。
将 Q 的未旋转增益移入 K 时,每 token、每层少做 8×192=1,536 次逐元素增益乘法;
反方向少做 2×192=384 次。它们只是归一化里的小部分操作,不是整个模型的百分比加速。
NumPy 切片/拼接可能抵消这点收益,必须报告测得的局部时延。
参数量从两个 256 维增益变为两个 64 维旋转增益及一个 192 维联合增益,即 512→320 个数。
但原增益以 BF16 存储、联合乘积以 FP32 保留时,载荷仍是 1,024 字节,没有 checkpoint
净压缩;元数据还可能增加。FP32 运行时缓存增益的理论载荷 2,048→1,280 字节,
不等于已测得整个模型 RSS 降低。另行 BF16 量化乘积会增加误差,不属于本次恒等式验证。
这是同一注意力计算内部的重参数化与冗余消除,不是两个现成 attention 层能互换的证明。
若得到正例,应将它作为小粒度确定性优化机会;较大模块互换仍由原候选试验单独回答。
## 完成状态
96 组真实输入分数/概率检查及固定第3层双向网络检查均通过。
该结果独立归类;主目标的已训练函数重复正例见 [CPU 功能结论](CPU_FUNCTIONAL_FINDINGS.md)。