diag: print wo_a g_flat magnitude to find where zeros come from

This commit is contained in:
2026-06-01 01:40:53 +00:00
parent efe63caea9
commit 7804b779ce

View File

@@ -366,6 +366,8 @@ def forward_attention(x_normed, w, li, cfg, rope_cos, rope_sin,
a_grp = a_flat.reshape(T, o_groups, gid); oa_3d = oa_bf.reshape(o_groups, o_rank, gid)
g_out = torch.bmm(a_grp.permute(1, 0, 2), oa_3d.transpose(1, 2))
g_flat = g_out.permute(1, 0, 2).reshape(T, o_groups * o_rank)
if li < 3:
print(f" L{li} wo_a: |g_flat|={g_flat.abs().max().item():.6f} shape={g_flat.shape}", flush=True)
F_attn = prod_lin['o_b'](g_flat)
else:
# o_a_proj as full-rank BF16 linear (no low-rank)
@@ -375,6 +377,8 @@ def forward_attention(x_normed, w, li, cfg, rope_cos, rope_sin,
else:
log.warning(f"L{li}: No o_a_proj weight, zero attention output")
F_attn = torch.zeros(T, cfg["hidden_size"], dtype=torch.bfloat16, device=dev)
if li < 3:
print(f" L{li} F_attn: |F_attn|={F_attn.abs().max().item():.6f}", flush=True)
return F_attn, q_a
# =====================================================================