Skip to content

Commit b343a05

Browse files
authored
fix dsv32 and gemma3 (#664)
1 parent 82dfd39 commit b343a05

2 files changed

Lines changed: 20 additions & 8 deletions

File tree

mlx_lm/models/deepseek_v32.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def __call__(
9898
k_pe = self.rope(k_pe, offset=offset)
9999
k = mx.concatenate([k_pe, k_nope], axis=-1)
100100
if cache is not None:
101-
k, _ = cache.update_and_fetch(k, mx.zeros([b, 1, s, 0]))
101+
k, _ = cache.update_and_fetch(mx.zeros_like(k), mx.zeros([b, 1, s, 0]))
102102
if k.shape[2] <= self.index_topk:
103103
return None
104104
scores = q @ k.swapaxes(-1, -2)
@@ -222,6 +222,11 @@ def __call__(
222222
if mask is not None:
223223
sparse_mask = sparse_mask & mask
224224
mask = sparse_mask
225+
# Ensure the indexer cache is evaluated even if the topk_indices are unused
226+
# to keep the graph from getting too large
227+
if cache is not None:
228+
cache[0].keys = mx.depends(cache[0].keys, (cache[1].keys, cache[1].values))
229+
225230
output = scaled_dot_product_attention(
226231
queries, keys, values, cache=cache[0], scale=self.scale, mask=mask
227232
)

mlx_lm/models/gemma3_text.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,20 @@ def __init__(self, args: ModelArgs, layer_idx: int):
5454
self.k_norm = RMSNorm(dims=head_dim, eps=args.rms_norm_eps)
5555
self.is_sliding = (layer_idx + 1) % args.sliding_window_pattern != 0
5656

57-
self.rope = initialize_rope(
58-
dims=head_dim,
59-
base=(args.rope_local_base_freq if self.is_sliding else args.rope_theta),
60-
traditional=False,
61-
max_position_embeddings=args.max_position_embeddings,
62-
scaling_config=args.rope_scaling,
63-
)
57+
if self.is_sliding:
58+
self.rope = initialize_rope(
59+
dims=head_dim,
60+
base=args.rope_local_base_freq,
61+
traditional=False,
62+
)
63+
else:
64+
self.rope = initialize_rope(
65+
dims=head_dim,
66+
base=args.rope_theta,
67+
traditional=False,
68+
max_position_embeddings=args.max_position_embeddings,
69+
scaling_config=args.rope_scaling,
70+
)
6471

6572
def __call__(
6673
self,

0 commit comments

Comments
 (0)