ThingsAI commited on
Commit
23eadd7
·
verified ·
1 Parent(s): 434cb12

fix: SDPA in float32 per stabilità numerica

Browse files
Files changed (1) hide show
  1. modeling_quark.py +4 -3
modeling_quark.py CHANGED
@@ -78,13 +78,14 @@ class GroupedQueryAttention(nn.Module):
78
  if self.n_groups > 1:
79
  k = k.repeat_interleave(self.n_groups, dim=1)
80
  v = v.repeat_interleave(self.n_groups, dim=1)
81
- # Cast uniforme prima di SDPA (q/k possono essere float32 dopo RoPE)
82
- dtype = v.dtype
83
- q, k = q.to(dtype), k.to(dtype)
84
  out = F.scaled_dot_product_attention(
85
  q, k, v, is_causal=True,
86
  dropout_p=self.drop if self.training else 0.0,
87
  )
 
88
  out = out.transpose(1, 2).contiguous().view(B, T, self.n_heads * self.head_dim)
89
  return self.o_proj(out)
90
 
 
78
  if self.n_groups > 1:
79
  k = k.repeat_interleave(self.n_groups, dim=1)
80
  v = v.repeat_interleave(self.n_groups, dim=1)
81
+ # SDPA in float32 per stabilità numerica, poi riporta al dtype originale
82
+ orig_dtype = v.dtype
83
+ q, k, v = q.float(), k.float(), v.float()
84
  out = F.scaled_dot_product_attention(
85
  q, k, v, is_causal=True,
86
  dropout_p=self.drop if self.training else 0.0,
87
  )
88
+ out = out.to(orig_dtype)
89
  out = out.transpose(1, 2).contiguous().view(B, T, self.n_heads * self.head_dim)
90
  return self.o_proj(out)
91