From 8c7637fbd4d69775aab5ff1a636a5cd785947bed Mon Sep 17 00:00:00 2001 From: tlkahn Date: Mon, 20 Jul 2026 10:04:45 +0700 Subject: [PATCH 1/3] feat(engine): stage D6 - qwen3_5 dense full-attn deltas Enable pure-dense MODEL_QWEN3_5 on the dense forward path: attn_output_gate (q_proj split + sigmoid gate) and partial_rotary_factor rope dims, plus weights descriptor, tiny fixtures, support-gate allow/reject matrix (R1 hybrid reject), and parity table id. Real hybrid checkpoints remain Stage E. --- scripts/parity_family.sh | 6 +- src/engine/emodel.c | 39 ++- src/engine/forward.c | 80 +++++- src/model/weights.c | 10 + .../config.json | 21 ++ .../config.json | 31 +++ tests/fixtures/tiny_qwen3_5/config.json | 19 ++ tests/fixtures/tiny_qwen3_5/model.safetensors | Bin 0 -> 232686 bytes tests/fixtures/tiny_qwen3_5_tied/config.json | 24 ++ .../tiny_qwen3_5_tied/model.safetensors | Bin 0 -> 79851 bytes tests/test_emodel_gate.c | 134 +++++++++- tests/test_forward_qwen3_5_gpu.c | 230 ++++++++++++++++++ tests/test_model_config.c | 35 +++ tests/test_parity_script.sh | 15 +- tests/test_weights.c | 59 ++++- tools/gen_tiny_ckpt.c | 44 +++- 16 files changed, 728 insertions(+), 19 deletions(-) create mode 100644 tests/fixtures/model_config_qwen3_5_dense_full/config.json create mode 100644 tests/fixtures/model_config_qwen3_5_hybrid_dense/config.json create mode 100644 tests/fixtures/tiny_qwen3_5/config.json create mode 100644 tests/fixtures/tiny_qwen3_5/model.safetensors create mode 100644 tests/fixtures/tiny_qwen3_5_tied/config.json create mode 100644 tests/fixtures/tiny_qwen3_5_tied/model.safetensors create mode 100644 tests/test_forward_qwen3_5_gpu.c diff --git a/scripts/parity_family.sh b/scripts/parity_family.sh index cffc195..5893c7e 100755 --- a/scripts/parity_family.sh +++ b/scripts/parity_family.sh @@ -26,7 +26,11 @@ family_id() { llama) echo "mlx-community/TinyLlama-1.1B-Chat-v1.0-4bit" ;; mistral) echo "" ;; gemma4) echo "mlx-community/gemma-4-e4b-it-4bit" ;; - qwen3_5) echo "" ;; + # D6 records the smallest dense 4-bit Qwen3.5 id. Real checkpoints are + # hybrid (linear + full attention). mlxd Stage D rejects linear + # attention; byte parity is Stage E. skip-if-absent still applies when + # the snapshot is not on disk. + qwen3_5) echo "mlx-community/Qwen3.5-0.8B-4bit" ;; *) return 1 ;; esac } diff --git a/src/engine/emodel.c b/src/engine/emodel.c index 9783b4e..2411f22 100644 --- a/src/engine/emodel.c +++ b/src/engine/emodel.c @@ -96,9 +96,46 @@ int engine_model_check_supported(const model_config_t *cfg, } return 0; + case MODEL_QWEN3_5: { + /* Pure-dense qwen3_5 only. Do not call reject_dense_common: it rejects + attn_output_gate and partial_rotary_factor != 1, both required here. + Hybrid linear-attention / MoE stay Stage E. */ + REJECT(cfg->attention_bias, + "attention_bias not supported"); + REJECT(cfg->has_sliding_window, + "sliding window attention not supported"); + REJECT(cfg->num_experts > 0, + "MoE models not supported"); + REJECT(cfg->linear_num_key_heads > 0 || cfg->linear_num_value_heads > 0, + "linear attention / hybrid layers not supported"); + REJECT(cfg->has_hybrid_layers, + "hybrid layer architectures not supported"); + if (cfg->has_explicit_layer_types) { + for (int i = 0; i < cfg->num_hidden_layers; i++) { + REJECT(!cfg->layer_is_global[i], + "linear attention / hybrid layers not supported"); + } + } + REJECT(cfg->hidden_act != HIDDEN_ACT_SILU, + "only SiLU activation supported"); + REJECT(cfg->norm_has_offset, + "norm_has_offset not supported"); + REJECT(cfg->scale_embeddings, + "scale_embeddings not supported"); + REJECT(cfg->has_pre_ff_norm, + "pre-feedforward norm not supported"); + REJECT(cfg->partial_rotary_factor <= 0.0f || + cfg->partial_rotary_factor > 1.0f, + "partial_rotary_factor must be in (0, 1]"); + REJECT(cfg->rope_scaling_type != NULL, + "RoPE scaling not supported"); + /* attn_output_gate allowed (true or false) */ + return 0; + } + default: REJECT(true, - "unsupported model family (only qwen3/llama/gemma4 dense supported)"); + "unsupported model family (only qwen3/llama/gemma4/qwen3_5 dense supported)"); } } diff --git a/src/engine/forward.c b/src/engine/forward.c index 23ca3e4..e400820 100644 --- a/src/engine/forward.c +++ b/src/engine/forward.c @@ -476,6 +476,18 @@ static int add_proj_bias(mlx_array *io, const weights_t *w, const char *base, return rc; } +/* RoPE dims for partial_rotary_factor on the full-attention path (qwen3_5). + Does not consult partial_rotary_factor_global (gemma4 freqs path). */ +static int fwd_rope_dims_partial(const model_config_t *cfg, int head_dim) { + float prf = cfg->partial_rotary_factor; + if (prf <= 0.0f || prf > 1.0f) + return head_dim; + int dims = (int)((float)head_dim * prf); + if (dims <= 0 || dims > head_dim) + return head_dim; + return dims; +} + int fwd_attention(mlx_array *out, mlx_array x, int layer, const weights_t *w, const model_config_t *cfg, kvcache_t *kv, mlx_array rope_freqs, mlx_stream s) { @@ -493,6 +505,7 @@ int fwd_attention(mlx_array *out, mlx_array x, int layer, cfg->attn_scale_one ? 1.0f : 1.0f / sqrtf((float)qpas); bool global = model_layer_is_global(cfg, layer); int kv_src = model_kv_source_layer(cfg, layer); + int rope_dims = fwd_rope_dims_partial(cfg, hd_l); mlx_array q = mlx_array_new(); mlx_array k = mlx_array_new(); @@ -516,6 +529,7 @@ int fwd_attention(mlx_array *out, mlx_array x, int layer, mlx_array attn_reshaped = mlx_array_new(); mlx_array result = mlx_array_new(); mlx_array vnorm_w = mlx_array_new(); + mlx_array gate = mlx_array_new(); weight_triplet_t q_tri, k_tri, v_tri, o_tri; memset(&q_tri, 0, sizeof(q_tri)); @@ -523,14 +537,52 @@ int fwd_attention(mlx_array *out, mlx_array x, int layer, memset(&v_tri, 0, sizeof(v_tri)); memset(&o_tri, 0, sizeof(o_tri)); - /* Q projection (always present) */ + /* Q projection (always present). With attn_output_gate, out features are + 2*H*D and are split into queries + gate (mlx-lm Qwen3NextAttention). */ weights_tensor_name(name, sizeof(name), cfg, layer, "self_attn.q_proj"); if (weights_get_triplet(&q_tri, w, name) != 0) goto cleanup; if (fwd_linear(&q, x, &q_tri, cfg, s) != 0) goto cleanup; if (cfg->attention_bias && add_proj_bias(&q, w, name, s) != 0) goto cleanup; - int q_shape[] = {B, S, n_heads, hd_l}; - if (!MLXB_CHECK(mlx_reshape(&q_reshaped, q, q_shape, 4, s))) goto cleanup; + if (cfg->attn_output_gate) { + int q_gate_shape[] = {B, S, n_heads, hd_l * 2}; + if (!MLXB_CHECK(mlx_reshape(&q_reshaped, q, q_gate_shape, 4, s))) + goto cleanup; + + mlx_vector_array split_vec = mlx_vector_array_new(); + if (!MLXB_CHECK(mlx_split(&split_vec, q_reshaped, 2, -1, s))) { + mlx_vector_array_free(split_vec); + goto cleanup; + } + if (mlx_vector_array_size(split_vec) != 2) { + mlx_vector_array_free(split_vec); + goto cleanup; + } + + mlx_array queries = mlx_array_new(); + mlx_array gate_4d = mlx_array_new(); + if (!MLXB_CHECK(mlx_vector_array_get(&queries, split_vec, 0)) || + !MLXB_CHECK(mlx_vector_array_get(&gate_4d, split_vec, 1))) { + mlx_array_free(queries); + mlx_array_free(gate_4d); + mlx_vector_array_free(split_vec); + goto cleanup; + } + mlx_vector_array_free(split_vec); + + mlx_array_free(q_reshaped); + q_reshaped = queries; + + int gate_flat[] = {B, S, n_heads * hd_l}; + if (!MLXB_CHECK(mlx_reshape(&gate, gate_4d, gate_flat, 3, s))) { + mlx_array_free(gate_4d); + goto cleanup; + } + mlx_array_free(gate_4d); + } else { + int q_shape[] = {B, S, n_heads, hd_l}; + if (!MLXB_CHECK(mlx_reshape(&q_reshaped, q, q_shape, 4, s))) goto cleanup; + } /* Q norm */ if (cfg->has_qk_norm) { @@ -566,7 +618,7 @@ int fwd_attention(mlx_array *out, mlx_array x, int layer, Rope offset for Q = source's offset - S (source ran earlier this forward). */ int src_offset = kvcache_layer_offset(kv, kv_src) - S; if (src_offset < 0) src_offset = 0; - if (fwd_rope_apply(&q_roped, q_transposed, hd_l, cfg, layer, + if (fwd_rope_apply(&q_roped, q_transposed, rope_dims, cfg, layer, src_offset, rope_freqs, s) != 0) goto cleanup; @@ -579,7 +631,7 @@ int fwd_attention(mlx_array *out, mlx_array x, int layer, /* K/V owning layer */ int offset = kvcache_layer_offset(kv, layer); assert(offset >= 0); - if (fwd_rope_apply(&q_roped, q_transposed, hd_l, cfg, layer, + if (fwd_rope_apply(&q_roped, q_transposed, rope_dims, cfg, layer, offset, rope_freqs, s) != 0) goto cleanup; @@ -642,7 +694,7 @@ int fwd_attention(mlx_array *out, mlx_array x, int layer, goto cleanup; /* RoPE on K */ - if (fwd_rope_apply(&k_roped, k_transposed, hd_l, cfg, layer, + if (fwd_rope_apply(&k_roped, k_transposed, rope_dims, cfg, layer, offset, rope_freqs, s) != 0) goto cleanup; @@ -682,6 +734,21 @@ int fwd_attention(mlx_array *out, mlx_array x, int layer, if (!MLXB_CHECK(mlx_reshape(&attn_reshaped, attn_back, out_shape, 3, s))) goto cleanup; + /* Optional output gate: o_proj(attn * sigmoid(gate)) */ + if (cfg->attn_output_gate) { + mlx_array gate_sig = mlx_array_new(); + mlx_array gated = mlx_array_new(); + if (!MLXB_CHECK(mlx_sigmoid(&gate_sig, gate, s)) || + !MLXB_CHECK(mlx_multiply(&gated, attn_reshaped, gate_sig, s))) { + mlx_array_free(gate_sig); + mlx_array_free(gated); + goto cleanup; + } + mlx_array_free(gate_sig); + mlx_array_free(attn_reshaped); + attn_reshaped = gated; + } + /* O projection */ weights_tensor_name(name, sizeof(name), cfg, layer, "self_attn.o_proj"); if (weights_get_triplet(&o_tri, w, name) != 0) goto cleanup; @@ -697,6 +764,7 @@ int fwd_attention(mlx_array *out, mlx_array x, int layer, weights_triplet_free(&v_tri); weights_triplet_free(&k_tri); weights_triplet_free(&q_tri); + mlx_array_free(gate); mlx_array_free(vnorm_w); mlx_array_free(result); mlx_array_free(attn_reshaped); diff --git a/src/model/weights.c b/src/model/weights.c index e60c9d8..14ec550 100644 --- a/src/model/weights.c +++ b/src/model/weights.c @@ -262,6 +262,16 @@ static const weights_family_desc_t family_descs[] = { .layer_biases = NULL, .extra_tensors = NULL, }, + { + /* qwen3_5 dense reuses the qwen3 name set; attn_output_gate doubles + q_proj out-features but does not add a separate tensor name. */ + .family = MODEL_QWEN3_5, + .layer_matmuls = dense_std_layer_matmuls, + .layer_norms = dense_std_layer_norms, + .layer_qk_norms = dense_std_layer_qk_norms, + .layer_biases = NULL, + .extra_tensors = NULL, + }, { .family = MODEL_LLAMA, .layer_matmuls = dense_std_layer_matmuls, diff --git a/tests/fixtures/model_config_qwen3_5_dense_full/config.json b/tests/fixtures/model_config_qwen3_5_dense_full/config.json new file mode 100644 index 0000000..040cf66 --- /dev/null +++ b/tests/fixtures/model_config_qwen3_5_dense_full/config.json @@ -0,0 +1,21 @@ +{ + "model_type": "qwen3_5", + "vocab_size": 248320, + "hidden_size": 1024, + "num_hidden_layers": 4, + "num_attention_heads": 8, + "num_key_value_heads": 2, + "head_dim": 256, + "intermediate_size": 3584, + "max_position_embeddings": 262144, + "rms_norm_eps": 1e-06, + "hidden_act": "silu", + "attention_bias": false, + "attn_output_gate": true, + "tie_word_embeddings": true, + "rope_parameters": { + "rope_type": "default", + "rope_theta": 10000000.0, + "partial_rotary_factor": 0.25 + } +} diff --git a/tests/fixtures/model_config_qwen3_5_hybrid_dense/config.json b/tests/fixtures/model_config_qwen3_5_hybrid_dense/config.json new file mode 100644 index 0000000..8528dd8 --- /dev/null +++ b/tests/fixtures/model_config_qwen3_5_hybrid_dense/config.json @@ -0,0 +1,31 @@ +{ + "model_type": "qwen3_5", + "vocab_size": 248320, + "hidden_size": 1024, + "num_hidden_layers": 4, + "num_attention_heads": 8, + "num_key_value_heads": 2, + "head_dim": 256, + "intermediate_size": 3584, + "max_position_embeddings": 262144, + "rms_norm_eps": 1e-06, + "hidden_act": "silu", + "attn_output_gate": true, + "full_attention_interval": 4, + "linear_conv_kernel_dim": 4, + "linear_key_head_dim": 128, + "linear_num_key_heads": 16, + "linear_num_value_heads": 16, + "linear_value_head_dim": 128, + "layer_types": [ + "linear_attention", + "linear_attention", + "linear_attention", + "full_attention" + ], + "rope_parameters": { + "rope_type": "default", + "rope_theta": 10000000.0, + "partial_rotary_factor": 0.25 + } +} diff --git a/tests/fixtures/tiny_qwen3_5/config.json b/tests/fixtures/tiny_qwen3_5/config.json new file mode 100644 index 0000000..3ea6434 --- /dev/null +++ b/tests/fixtures/tiny_qwen3_5/config.json @@ -0,0 +1,19 @@ +{ + "model_type": "qwen3_5", + "vocab_size": 256, + "hidden_size": 64, + "num_hidden_layers": 2, + "num_attention_heads": 4, + "num_key_value_heads": 2, + "head_dim": 16, + "intermediate_size": 128, + "max_position_embeddings": 512, + "rms_norm_eps": 0.000001, + "rope_theta": 10000000.0, + "tie_word_embeddings": false, + "attn_output_gate": true, + "rope_parameters": { + "rope_theta": 10000000.0, + "partial_rotary_factor": 0.25 + } +} diff --git a/tests/fixtures/tiny_qwen3_5/model.safetensors b/tests/fixtures/tiny_qwen3_5/model.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..603396ea30a358a2de4b2fe6bf0d9628560bc461 GIT binary patch literal 232686 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

-{jrL6TlN$rMfZ~Y2XD{!H=?CP*Tc=nJ_+n{}^ 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/tiny_qwen3_5_tied/config.json b/tests/fixtures/tiny_qwen3_5_tied/config.json new file mode 100644 index 0000000..6668c32 --- /dev/null +++ b/tests/fixtures/tiny_qwen3_5_tied/config.json @@ -0,0 +1,24 @@ +{ + "model_type": "qwen3_5", + "vocab_size": 256, + "hidden_size": 64, + "num_hidden_layers": 2, + "num_attention_heads": 4, + "num_key_value_heads": 2, + "head_dim": 16, + "intermediate_size": 128, + "max_position_embeddings": 512, + "rms_norm_eps": 0.000001, + "rope_theta": 10000000.0, + "tie_word_embeddings": true, + "attn_output_gate": true, + "rope_parameters": { + "rope_theta": 10000000.0, + "partial_rotary_factor": 0.25 + }, + "quantization": { + "bits": 4, + "group_size": 32, + "mode": "affine" + } +} diff --git a/tests/fixtures/tiny_qwen3_5_tied/model.safetensors b/tests/fixtures/tiny_qwen3_5_tied/model.safetensors new file mode 100644 index 0000000000000000000000000000000000000000..e7e29903600ba17bcda7cf7a117e85a7aee0be41 GIT binary patch literal 79851 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

7#U!3@==vrfpTm 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 j71ei^GQ0r@*XlQ*(0n)l1UL*K!kk$C? accept */ + { + model_config_t cfg; + int rc = model_config_load( + &cfg, MLXD_FIXTURES_DIR "/model_config_qwen3_5_dense_full"); + assert(rc == 0); + assert(cfg.family == MODEL_QWEN3_5); + char err[256] = {0}; + assert(engine_model_check_supported(&cfg, err, sizeof(err)) == 0); + model_config_free(&cfg); + } + + /* moe fixture -> family MOE -> reject */ + { + model_config_t cfg; + int rc = model_config_load( + &cfg, MLXD_FIXTURES_DIR "/model_config_qwen3_5_moe"); + assert(rc == 0); + assert(cfg.family == MODEL_QWEN3_5_MOE); + char err[256] = {0}; + assert(engine_model_check_supported(&cfg, err, sizeof(err)) != 0); + model_config_free(&cfg); + } + + /* hybrid-dense (linear heads, num_experts==0) stays MODEL_QWEN3_5 under R1 + but gate rejects linear attention */ + { + model_config_t cfg; + int rc = model_config_load( + &cfg, MLXD_FIXTURES_DIR "/model_config_qwen3_5_hybrid_dense"); + assert(rc == 0); + assert(cfg.family == MODEL_QWEN3_5); + assert(cfg.num_experts == 0); + assert(cfg.linear_num_key_heads > 0); + char err[256] = {0}; + assert(engine_model_check_supported(&cfg, err, sizeof(err)) != 0); + assert(strstr(err, "linear attention") != NULL); + model_config_free(&cfg); } } @@ -534,6 +644,24 @@ int main(void) { test_llama_llama3_valid_still_passes(); printf(" test_llama_llama3_valid_still_passes: passed\n"); + test_qwen3_5_pure_dense_passes(); + printf(" test_qwen3_5_pure_dense_passes: passed\n"); + + test_qwen3_5_moe_family_still_rejected(); + printf(" test_qwen3_5_moe_family_still_rejected: passed\n"); + + test_qwen3_5_rejects_linear_heads(); + printf(" test_qwen3_5_rejects_linear_heads: passed\n"); + + test_qwen3_5_rejects_experts(); + printf(" test_qwen3_5_rejects_experts: passed\n"); + + test_qwen3_5_rejects_partial_rotary_out_of_range(); + printf(" test_qwen3_5_rejects_partial_rotary_out_of_range: passed\n"); + + test_qwen3_5_loaded_boundary_fixtures(); + printf(" test_qwen3_5_loaded_boundary_fixtures: passed\n"); + printf("test_emodel_gate: all passed\n"); return 0; } diff --git a/tests/test_forward_qwen3_5_gpu.c b/tests/test_forward_qwen3_5_gpu.c new file mode 100644 index 0000000..b0d7c7e --- /dev/null +++ b/tests/test_forward_qwen3_5_gpu.c @@ -0,0 +1,230 @@ +#include "engine/emodel.h" +#include "engine/forward.h" +#include "engine/kvcache.h" +#include "mlxbridge/mlxbridge.h" +#include "model/model.h" +#include "model/weights.h" + +#include +#include +#include +#include + +#define FIXTURES MLXD_FIXTURES_DIR + +static mlx_stream gpu; + +static int is_finite_f32(mlx_array a, mlx_stream s) { + mlx_array f32 = mlx_array_new(); + if (!MLXB_CHECK(mlx_astype(&f32, a, MLX_FLOAT32, s))) { + mlx_array_free(f32); + return 0; + } + if (!MLXB_CHECK(mlx_array_eval(f32))) { + mlx_array_free(f32); + return 0; + } + size_t n = mlx_array_size(f32); + const float *d = mlx_array_data_float32(f32); + if (!d) { mlx_array_free(f32); return 0; } + for (size_t i = 0; i < n; i++) { + if (!isfinite(d[i])) { mlx_array_free(f32); return 0; } + } + mlx_array_free(f32); + return 1; +} + +static void test_qwen3_5_config_flags(engine_model_t *em) { + assert(em->cfg.family == MODEL_QWEN3_5); + assert(em->cfg.attn_output_gate == true); + assert(em->cfg.partial_rotary_factor == 0.25f); + assert(em->cfg.has_qk_norm == true); + assert(em->cfg.hidden_act == HIDDEN_ACT_SILU); + assert(em->cfg.tie_word_embeddings == false); + assert(em->cfg.head_dim == 16); + assert(em->cfg.rope_theta == 10000000.0f); + assert(em->cfg.linear_num_key_heads == 0); + assert(em->cfg.num_experts == 0); + /* plain theta rope - no custom freqs array */ + assert(em->rope_freqs.ctx == NULL); +} + +static void test_qwen3_5_tied_config_flags(engine_model_t *em) { + assert(em->cfg.family == MODEL_QWEN3_5); + assert(em->cfg.tie_word_embeddings == true); + assert(em->cfg.attn_output_gate == true); + assert(em->cfg.partial_rotary_factor == 0.25f); + assert(em->cfg.has_qk_norm == true); + assert(em->cfg.quant_bits == 4); +} + +static void test_qwen3_5_weight_mapping(engine_model_t *em) { + /* Same tensor count as tiny_qwen3 dense (gate is shape, not extra name). */ + assert(em->w.count == 25); + + mlx_array probe = mlx_array_new(); + assert(weights_get(&probe, &em->w, + "model.layers.0.self_attn.q_proj.weight") == 0); + /* Doubled q_proj: [2*H*D, hidden] = [128, 64] */ + assert(mlx_array_ndim(probe) == 2); + assert(mlx_array_dim(probe, 0) == 2 * em->cfg.num_attention_heads * + em->cfg.head_dim); + assert(mlx_array_dim(probe, 1) == em->cfg.hidden_size); + mlx_array_free(probe); + + probe = mlx_array_new(); + assert(weights_get(&probe, &em->w, "lm_head.weight") == 0); + mlx_array_free(probe); + + probe = mlx_array_new(); + assert(weights_get(&probe, &em->w, + "model.layers.0.linear_attn.in_proj_qkv.weight") != 0); + mlx_array_free(probe); +} + +static void test_qwen3_5_tied_weight_mapping(engine_model_t *em) { + /* tied quantized with qk_norm: + embed(3) + norm(1) + 2*(7*3 matmul + 2 ln + 2 qk) = 4 + 2*25 = 54 */ + assert(em->w.count == 54); + + mlx_array probe = mlx_array_new(); + assert(weights_get(&probe, &em->w, "lm_head.weight") != 0); + mlx_array_free(probe); +} + +static void test_qwen3_5_forward_shape(engine_model_t *em) { + int32_t ids_data[] = {1, 2, 3, 4, 5, 6}; + int ids_shape[] = {1, 6}; + mlx_array ids = mlx_array_new_data(ids_data, ids_shape, 2, MLX_INT32); + + kvcache_t kv; + assert(kvcache_init(&kv, em->cfg.num_hidden_layers) == 0); + + mlx_array logits = mlx_array_new(); + assert(model_forward(em, ids, &kv, true, &logits) == 0); + assert(MLXB_CHECK(mlx_array_eval(logits))); + assert(mlx_array_ndim(logits) == 2); + assert(mlx_array_dim(logits, 0) == 1); + assert(mlx_array_dim(logits, 1) == 256); + assert(is_finite_f32(logits, gpu)); + + mlx_array_free(logits); + kvcache_free(&kv); + mlx_array_free(ids); +} + +static void test_qwen3_5_incremental_equals_full(engine_model_t *em) { + int32_t prompt[] = {10, 20, 30, 40, 50, 60}; + int P = 6; + + kvcache_t kv_a; + assert(kvcache_init(&kv_a, em->cfg.num_hidden_layers) == 0); + + int shape_all[] = {1, P}; + mlx_array ids_all = mlx_array_new_data(prompt, shape_all, 2, MLX_INT32); + mlx_array logits_a = mlx_array_new(); + assert(model_forward(em, ids_all, &kv_a, true, &logits_a) == 0); + assert(MLXB_CHECK(mlx_array_eval(logits_a))); + + kvcache_t kv_b; + assert(kvcache_init(&kv_b, em->cfg.num_hidden_layers) == 0); + + int shape_pre[] = {1, P - 1}; + mlx_array ids_pre = mlx_array_new_data(prompt, shape_pre, 2, MLX_INT32); + assert(model_forward(em, ids_pre, &kv_b, false, NULL) == 0); + + int shape_dec[] = {1, 1}; + mlx_array ids_dec = mlx_array_new_data(&prompt[P - 1], shape_dec, 2, MLX_INT32); + mlx_array logits_b = mlx_array_new(); + assert(model_forward(em, ids_dec, &kv_b, true, &logits_b) == 0); + assert(MLXB_CHECK(mlx_array_eval(logits_b))); + + mlx_array la_f32 = mlx_array_new(); + mlx_array lb_f32 = mlx_array_new(); + MLXB_CHECK(mlx_astype(&la_f32, logits_a, MLX_FLOAT32, gpu)); + MLXB_CHECK(mlx_astype(&lb_f32, logits_b, MLX_FLOAT32, gpu)); + assert(MLXB_CHECK(mlx_array_eval(la_f32))); + assert(MLXB_CHECK(mlx_array_eval(lb_f32))); + + const float *da = mlx_array_data_float32(la_f32); + const float *db = mlx_array_data_float32(lb_f32); + int vocab = em->cfg.vocab_size; + + int argmax_a = 0, argmax_b = 0; + for (int i = 1; i < vocab; i++) { + if (da[i] > da[argmax_a]) argmax_a = i; + if (db[i] > db[argmax_b]) argmax_b = i; + } + assert(argmax_a == argmax_b); + + float maxdiff = 0.0f; + for (int i = 0; i < vocab; i++) { + float d = fabsf(da[i] - db[i]); + if (d > maxdiff) maxdiff = d; + } + assert(maxdiff < 5e-2f); + + mlx_array_free(lb_f32); + mlx_array_free(la_f32); + mlx_array_free(logits_b); + mlx_array_free(ids_dec); + mlx_array_free(ids_pre); + kvcache_free(&kv_b); + mlx_array_free(logits_a); + mlx_array_free(ids_all); + kvcache_free(&kv_a); +} + +static void test_hybrid_config_load_rejected(void) { + engine_model_t em; + char err[256] = {0}; + int rc = engine_model_load( + &em, FIXTURES "/model_config_qwen3_5_hybrid_dense", err, sizeof(err)); + assert(rc != 0); + assert(strstr(err, "linear attention") != NULL); +} + +static void run_suite(const char *label, const char *path, + void (*config_test)(engine_model_t *), + void (*weight_test)(engine_model_t *)) { + engine_model_t em; + char err[256] = {0}; + if (engine_model_load(&em, path, err, sizeof(err)) != 0) { + fprintf(stderr, "failed to load %s: %s\n", path, err); + assert(0); + } + + config_test(&em); + printf(" %s config_flags: passed\n", label); + + weight_test(&em); + printf(" %s weight_mapping: passed\n", label); + + test_qwen3_5_forward_shape(&em); + printf(" %s forward_shape: passed\n", label); + + test_qwen3_5_incremental_equals_full(&em); + printf(" %s incremental_equals_full: passed\n", label); + + engine_model_free(&em); +} + +int main(void) { + gpu = mlxbridge_gpu_stream(); + + test_hybrid_config_load_rejected(); + printf(" test_hybrid_config_load_rejected: passed\n"); + + char dense_path[512], tied_path[512]; + snprintf(dense_path, sizeof(dense_path), "%s/tiny_qwen3_5", FIXTURES); + snprintf(tied_path, sizeof(tied_path), "%s/tiny_qwen3_5_tied", FIXTURES); + + run_suite("qwen3_5_dense", dense_path, + test_qwen3_5_config_flags, test_qwen3_5_weight_mapping); + + run_suite("qwen3_5_tied", tied_path, + test_qwen3_5_tied_config_flags, test_qwen3_5_tied_weight_mapping); + + printf("test_forward_qwen3_5_gpu: all passed\n"); + return 0; +} diff --git a/tests/test_model_config.c b/tests/test_model_config.c index e74a4dd..0244084 100644 --- a/tests/test_model_config.c +++ b/tests/test_model_config.c @@ -435,6 +435,40 @@ static void test_qwen3_5_dense_vs_moe(void) { model_config_free(&cfg); } +/* Stage D6: pure-dense qwen3_5 shape + hybrid-dense R1 boundary */ +static void test_qwen3_5_dense_full_and_hybrid(void) { + model_config_t cfg; + int rc = model_config_load( + &cfg, MLXD_FIXTURES_DIR "/model_config_qwen3_5_dense_full"); + assert(rc == 0); + assert(cfg.family == MODEL_QWEN3_5); + assert(cfg.attn_output_gate == true); + assert(cfg.partial_rotary_factor == 0.25f); + assert(cfg.has_qk_norm == true); + assert(cfg.num_experts == 0); + assert(cfg.linear_num_key_heads == 0); + assert(cfg.linear_num_value_heads == 0); + assert(cfg.head_dim == 256); + assert(cfg.rope_theta == 10000000.0f); + assert(cfg.has_explicit_layer_types == false); + model_config_free(&cfg); + + /* R1: hybrid linear fields do not reclassify as MOE */ + rc = model_config_load( + &cfg, MLXD_FIXTURES_DIR "/model_config_qwen3_5_hybrid_dense"); + assert(rc == 0); + assert(cfg.family == MODEL_QWEN3_5); + assert(cfg.num_experts == 0); + assert(cfg.linear_num_key_heads == 16); + assert(cfg.linear_num_value_heads == 16); + assert(cfg.attn_output_gate == true); + assert(cfg.partial_rotary_factor == 0.25f); + assert(cfg.has_explicit_layer_types == true); + assert(cfg.layer_is_global[0] == false); /* linear_attention */ + assert(cfg.layer_is_global[3] == true); /* full_attention */ + model_config_free(&cfg); +} + /* --- A1 Cycle 7: nested text_config -------------------------------------- */ static void test_nested_text_config(void) { @@ -1099,6 +1133,7 @@ int main(void) { test_family_from_type(); test_family_defaults(); test_qwen3_5_dense_vs_moe(); + test_qwen3_5_dense_full_and_hybrid(); test_nested_text_config(); test_sliding_window_and_layers(); test_stage_e_dims(); diff --git a/tests/test_parity_script.sh b/tests/test_parity_script.sh index 366dccf..02640ff 100644 --- a/tests/test_parity_script.sh +++ b/tests/test_parity_script.sh @@ -625,13 +625,20 @@ else fail "wrapper-unknown-family-lfm2" "expected exit 2 + usage (rc=$rc)" fi -# --- wrapper: skip on TBD id (gemma4) --- +# --- wrapper: skip when canonical id present but dir absent (gemma4, qwen3_5) --- out=$(MLXD_PARITY_CKPT_ROOT=/tmp sh "$WRAPPER" gemma4 2>&1) && rc=0 || rc=$? -if [ "$rc" -eq 0 ] && printf '%s\n' "$out" | grep -q 'skipped.*no canonical checkpoint id'; then - pass "wrapper-skip-tbd-gemma4" +if [ "$rc" -eq 0 ] && printf '%s\n' "$out" | grep -q 'skipped.*checkpoint dir absent'; then + pass "wrapper-skip-absent-gemma4" +else + fail "wrapper-skip-absent-gemma4" "expected exit 0 + skipped:dir absent (rc=$rc)" +fi + +out=$(MLXD_PARITY_CKPT_ROOT=/tmp sh "$WRAPPER" qwen3_5 2>&1) && rc=0 || rc=$? +if [ "$rc" -eq 0 ] && printf '%s\n' "$out" | grep -q 'skipped.*checkpoint dir absent'; then + pass "wrapper-skip-absent-qwen3_5" else - fail "wrapper-skip-tbd-gemma4" "expected exit 0 + skipped:no canonical (rc=$rc)" + fail "wrapper-skip-absent-qwen3_5" "expected exit 0 + skipped:dir absent (rc=$rc)" fi # --- wrapper: per-family override beats MLXD_PARITY_CKPT_ROOT (N3) --- diff --git a/tests/test_weights.c b/tests/test_weights.c index 17531b0..c2f8a33 100644 --- a/tests/test_weights.c +++ b/tests/test_weights.c @@ -627,10 +627,64 @@ static void test_expected_names_gemma4(void) { assert(weights_expected_names(&cfg, small, 2) == -1); } +static void test_expected_names_qwen3_5(void) { + model_config_t cfg = {0}; + cfg.family = MODEL_QWEN3_5; + cfg.weight_prefix = "model"; + cfg.num_hidden_layers = 2; + cfg.has_qk_norm = true; + cfg.tie_word_embeddings = false; + cfg.attn_output_gate = true; + + /* Same name set as qwen3; gate is a q_proj shape convention, not a name. */ + model_config_t q3 = {0}; + q3.family = MODEL_QWEN3; + q3.weight_prefix = "model"; + q3.num_hidden_layers = 2; + q3.has_qk_norm = true; + q3.tie_word_embeddings = false; + + int count_q35 = weights_expected_names(&cfg, NULL, 0); + int count_q3 = weights_expected_names(&q3, NULL, 0); + assert(count_q35 == count_q3); + assert(count_q35 == 25); + + weight_expected_t names[25]; + int rc = weights_expected_names(&cfg, names, 25); + assert(rc == 25); + + bool found_q0 = false, found_lm = false, found_lin = false; + for (int i = 0; i < rc; i++) { + if (strcmp(names[i].name, "model.layers.0.self_attn.q_proj") == 0) { + assert(names[i].kind == WEIGHT_KIND_MATMUL); + found_q0 = true; + } + if (strcmp(names[i].name, "lm_head") == 0) { + found_lm = true; + } + if (strstr(names[i].name, "linear_attn") != NULL) { + found_lin = true; + } + } + assert(found_q0); + assert(found_lm); + assert(!found_lin); + + /* Tied: no lm_head */ + cfg.tie_word_embeddings = true; + int tied = weights_expected_names(&cfg, NULL, 0); + assert(tied == 24); + weight_expected_t tied_names[24]; + rc = weights_expected_names(&cfg, tied_names, 24); + assert(rc == 24); + for (int i = 0; i < rc; i++) + assert(strcmp(tied_names[i].name, "lm_head") != 0); +} + static void test_expected_names_other_families_zero(void) { static const model_family_t others[] = { MODEL_FAMILY_UNKNOWN, MODEL_GEMMA3, - MODEL_QWEN2, MODEL_QWEN3_5, MODEL_QWEN3_5_MOE, + MODEL_QWEN2, MODEL_QWEN3_5_MOE, MODEL_MISTRAL, MODEL_LFM2, MODEL_NEMOTRON_H, MODEL_DEEPSEEK_V4, MODEL_BERT, }; @@ -847,6 +901,9 @@ int main(void) { test_expected_names_gemma4(); printf(" test_expected_names_gemma4: passed\n"); + test_expected_names_qwen3_5(); + printf(" test_expected_names_qwen3_5: passed\n"); + test_expected_names_other_families_zero(); printf(" test_expected_names_other_families_zero: passed\n"); diff --git a/tools/gen_tiny_ckpt.c b/tools/gen_tiny_ckpt.c index ceeaa09..fce8d8d 100644 --- a/tools/gen_tiny_ckpt.c +++ b/tools/gen_tiny_ckpt.c @@ -54,6 +54,10 @@ typedef struct { double rope_high_freq_factor; int rope_original_max_position_embeddings; + /* qwen3_5 full-attn deltas (0 = unset / default) */ + bool attn_output_gate; + double partial_rotary_factor; /* emit under rope_parameters when > 0 */ + const tensor_spec_t *top; int n_top; const tensor_spec_t *layer; int n_layer; @@ -72,7 +76,10 @@ static void resolve_shape(const recipe_t *r, const char *suffix, } else if (strcmp(suffix, "lm_head.weight") == 0) { shape[0] = r->vocab; shape[1] = r->hidden; *ndim = 2; } else if (strcmp(suffix, "self_attn.q_proj.weight") == 0) { - shape[0] = r->heads * r->head_dim; shape[1] = r->hidden; *ndim = 2; + /* attn_output_gate doubles q_proj out-features: [2*H*D, hidden] */ + int q_out = r->heads * r->head_dim; + if (r->attn_output_gate) q_out *= 2; + shape[0] = q_out; shape[1] = r->hidden; *ndim = 2; } else if (strcmp(suffix, "self_attn.k_proj.weight") == 0) { shape[0] = r->kv_heads * r->head_dim; shape[1] = r->hidden; *ndim = 2; } else if (strcmp(suffix, "self_attn.v_proj.weight") == 0) { @@ -263,6 +270,26 @@ static const recipe_t LLAMA3 = { .fixture_base = "tiny_llama3", }; +/* Pure-dense qwen3_5: full-attn deltas only (gate + partial rope). + No linear_attn tensors / hybrid layer_types - those are Stage E. */ +static const recipe_t QWEN3_5 = { + .model_type = "qwen3_5", + .vocab = 256, .hidden = 64, .heads = 4, .kv_heads = 2, + .head_dim = 16, .inter = 128, .layers = 2, + .group_size = 32, .quant_bits = 4, + .max_position_embeddings = 512, + .rms_norm_eps = 1e-6, .rope_theta = 10000000.0, + .sliding_window = 0, .sliding_window_pattern = 0, + .query_pre_attn_scalar = 0, .rope_local_base_freq = 0, + .has_lm_head = true, .tie_word_embeddings = false, + .attn_output_gate = true, + .partial_rotary_factor = 0.25, + .top = QWEN3_TOP, .n_top = LEN(QWEN3_TOP), + .layer = QWEN3_LAYER, .n_layer = LEN(QWEN3_LAYER), + .emit_dense = true, .emit_sharded = false, .emit_tied = true, + .fixture_base = "tiny_qwen3_5", +}; + /* --- gemma4 recipe (custom build - not table driven) --------------------- */ /* Plan shape: vocab=256, hidden=64, inter=128, layers=4, @@ -492,8 +519,8 @@ static void write_gemma4_config(const char *dir) { yyjson_mut_doc_free(doc); } -static const recipe_t *RECIPES[] = { &QWEN3, &GEMMA3, &LLAMA3 }; -static const int N_RECIPES = 3; +static const recipe_t *RECIPES[] = { &QWEN3, &GEMMA3, &LLAMA3, &QWEN3_5 }; +static const int N_RECIPES = 4; /* --- Build tensors (table-driven) ---------------------------------------- */ @@ -585,6 +612,17 @@ static void write_config_json(const recipe_t *r, const char *dir, yyjson_mut_obj_add_val(doc, root, "rope_scaling", rs); } + if (r->attn_output_gate) + yyjson_mut_obj_add_bool(doc, root, "attn_output_gate", true); + + if (r->partial_rotary_factor > 0.0) { + yyjson_mut_val *rp = yyjson_mut_obj(doc); + yyjson_mut_obj_add_real(doc, rp, "rope_theta", r->rope_theta); + yyjson_mut_obj_add_real(doc, rp, "partial_rotary_factor", + r->partial_rotary_factor); + yyjson_mut_obj_add_val(doc, root, "rope_parameters", rp); + } + if (quantized) { yyjson_mut_val *qcfg = yyjson_mut_obj(doc); yyjson_mut_obj_add_int(doc, qcfg, "bits", r->quant_bits); From ceeb350c4f1bdb2525f7dc06ceca951eccfb3d0e Mon Sep 17 00:00:00 2001 From: tlkahn Date: Mon, 20 Jul 2026 10:43:39 +0700 Subject: [PATCH 2/3] fix(engine): address PR #99 D6 review findings (issue-83) Hard-skip qwen3_5 hybrid parity via canonical path; honor parsed attn_output_gate and reject gate-off at support gate; reject full_attention_interval > 1 and odd/degenerate partial rope dims; refactor reject_dense_common with allow flags; clean tiny fixture generator (no flat rope_theta, emit interval:1); add mlx-lm golden logits tests for both tiny qwen3_5 fixtures. --- scripts/parity_family.sh | 11 ++ src/engine/emodel.c | 63 +++++---- src/engine/forward.c | 4 +- src/model/model.c | 5 +- .../config.json | 1 + .../model_config_qwen3_5_gate_off/config.json | 21 +++ tests/fixtures/tiny_qwen3_5/config.json | 2 +- tests/fixtures/tiny_qwen3_5_tied/config.json | 2 +- tests/test_emodel_gate.c | 55 +++++++- tests/test_model_config.c | 40 ++++++ tests/test_parity_script.sh | 13 ++ tests/test_qwen3_5_goldens_gpu.c | 132 ++++++++++++++++++ tools/gen_tiny_ckpt.c | 11 +- 13 files changed, 327 insertions(+), 33 deletions(-) create mode 100644 tests/fixtures/model_config_qwen3_5_gate_off/config.json create mode 100644 tests/test_qwen3_5_goldens_gpu.c diff --git a/scripts/parity_family.sh b/scripts/parity_family.sh index 5893c7e..16bdd82 100755 --- a/scripts/parity_family.sh +++ b/scripts/parity_family.sh @@ -80,6 +80,17 @@ run_one() { return 0 fi + # qwen3_5: real checkpoints are hybrid (linear + full attention). Stage D + # rejects linear attention at the support gate, so the recorded canonical + # id cannot run parity yet. Hard-skip when resolved via the family table / + # MLXD_PARITY_CKPT_ROOT path. MLXD_PARITY_CKPT_QWEN3_5 remains an escape + # hatch for a future dense checkpoint (checked above via _override). + # Stage E deletes this branch. + if [ "$_fam" = "qwen3_5" ] && [ -z "$_override" ]; then + printf 'skipped: qwen3_5 hybrid parity deferred to Stage E\n' + return 0 + fi + # gemma4-it: use chat-template parity. Raw completion on this instruct # checkpoint collapses into short token loops; mlx-serve's degenerate-loop # detector then stops early and creates length-only mismatches against diff --git a/src/engine/emodel.c b/src/engine/emodel.c index 2411f22..df36df2 100644 --- a/src/engine/emodel.c +++ b/src/engine/emodel.c @@ -13,8 +13,15 @@ } \ } while (0) +/* Flags that relax reject_dense_common for families that need the feature. */ +enum { + REJECT_ALLOW_PARTIAL_ROPE = 1 << 0, /* skip partial_rotary_factor != 1 */ + REJECT_ALLOW_ATTN_GATE = 1 << 1, /* skip attn_output_gate reject */ +}; + static int reject_dense_common(const model_config_t *cfg, - char *err, size_t errlen) { + char *err, size_t errlen, + unsigned flags) { REJECT(cfg->attention_bias, "attention_bias not supported"); REJECT(cfg->has_sliding_window, @@ -31,10 +38,12 @@ static int reject_dense_common(const model_config_t *cfg, "scale_embeddings not supported"); REJECT(cfg->has_pre_ff_norm, "pre-feedforward norm not supported"); - REJECT(cfg->partial_rotary_factor != 1.0f, - "partial rotary embedding not supported"); - REJECT(cfg->attn_output_gate, - "attention output gate not supported"); + if (!(flags & REJECT_ALLOW_PARTIAL_ROPE)) + REJECT(cfg->partial_rotary_factor != 1.0f, + "partial rotary embedding not supported"); + if (!(flags & REJECT_ALLOW_ATTN_GATE)) + REJECT(cfg->attn_output_gate, + "attention output gate not supported"); return 0; } @@ -44,13 +53,13 @@ int engine_model_check_supported(const model_config_t *cfg, switch (cfg->family) { case MODEL_QWEN3: - if (reject_dense_common(cfg, err, errlen) != 0) return -1; + if (reject_dense_common(cfg, err, errlen, 0) != 0) return -1; REJECT(cfg->rope_scaling_type != NULL, "RoPE scaling not supported"); return 0; case MODEL_LLAMA: - if (reject_dense_common(cfg, err, errlen) != 0) return -1; + if (reject_dense_common(cfg, err, errlen, 0) != 0) return -1; REJECT(cfg->rope_scaling_type != NULL && strcmp(cfg->rope_scaling_type, "linear") != 0 && strcmp(cfg->rope_scaling_type, "llama3") != 0 && @@ -97,39 +106,41 @@ int engine_model_check_supported(const model_config_t *cfg, return 0; case MODEL_QWEN3_5: { - /* Pure-dense qwen3_5 only. Do not call reject_dense_common: it rejects - attn_output_gate and partial_rotary_factor != 1, both required here. + /* Pure-dense qwen3_5 only. Common dense rejects apply, but partial rope + and attn_output_gate are required features here (not rejects). Hybrid linear-attention / MoE stay Stage E. */ - REJECT(cfg->attention_bias, - "attention_bias not supported"); - REJECT(cfg->has_sliding_window, - "sliding window attention not supported"); - REJECT(cfg->num_experts > 0, - "MoE models not supported"); + if (reject_dense_common(cfg, err, errlen, + REJECT_ALLOW_PARTIAL_ROPE | + REJECT_ALLOW_ATTN_GATE) != 0) + return -1; REJECT(cfg->linear_num_key_heads > 0 || cfg->linear_num_value_heads > 0, "linear attention / hybrid layers not supported"); - REJECT(cfg->has_hybrid_layers, - "hybrid layer architectures not supported"); if (cfg->has_explicit_layer_types) { for (int i = 0; i < cfg->num_hidden_layers; i++) { REJECT(!cfg->layer_is_global[i], "linear attention / hybrid layers not supported"); } } - REJECT(cfg->hidden_act != HIDDEN_ACT_SILU, - "only SiLU activation supported"); - REJECT(cfg->norm_has_offset, - "norm_has_offset not supported"); - REJECT(cfg->scale_embeddings, - "scale_embeddings not supported"); - REJECT(cfg->has_pre_ff_norm, - "pre-feedforward norm not supported"); REJECT(cfg->partial_rotary_factor <= 0.0f || cfg->partial_rotary_factor > 1.0f, "partial_rotary_factor must be in (0, 1]"); + /* mlx.fast.rope requires dims even and positive. Mirror mlx-lm's + int(head_dim * prf) and fail fast on odd/degenerate products. */ + { + int dims = (int)((float)cfg->head_dim * cfg->partial_rotary_factor); + REJECT(dims < 2 || (dims & 1), + "partial_rotary_factor yields invalid rope dims (must be even, >= 2)"); + } + /* interval==0 unset, interval==1 pure dense (every layer full-attn). + interval>1 implies hybrid: is_linear = (layer_idx+1) % interval != 0. */ + REJECT(cfg->full_attention_interval > 1, + "full_attention_interval > 1 implies hybrid layers; not supported"); REJECT(cfg->rope_scaling_type != NULL, "RoPE scaling not supported"); - /* attn_output_gate allowed (true or false) */ + /* Gate is mandatory: mlx-lm gates unconditionally; no oracle or real + checkpoint for gate-off. Explicit false is parsed but unsupported. */ + REJECT(!cfg->attn_output_gate, + "qwen3_5 requires attn_output_gate"); return 0; } diff --git a/src/engine/forward.c b/src/engine/forward.c index e400820..9409bf2 100644 --- a/src/engine/forward.c +++ b/src/engine/forward.c @@ -477,7 +477,9 @@ static int add_proj_bias(mlx_array *io, const weights_t *w, const char *base, } /* RoPE dims for partial_rotary_factor on the full-attention path (qwen3_5). - Does not consult partial_rotary_factor_global (gemma4 freqs path). */ + Does not consult partial_rotary_factor_global (gemma4 freqs path). + Mirrors mlx-lm int(head_dim * prf). The qwen3_5 support gate rejects + odd/degenerate products so dims reaching here are even and >= 2. */ static int fwd_rope_dims_partial(const model_config_t *cfg, int head_dim) { float prf = cfg->partial_rotary_factor; if (prf <= 0.0f || prf > 1.0f) diff --git a/src/model/model.c b/src/model/model.c index 68f0cf6..46422d3 100644 --- a/src/model/model.c +++ b/src/model/model.c @@ -355,7 +355,10 @@ static int apply_family_defaults(model_config_t *cfg, yyjson_val *cfg_obj, cfg->has_qk_norm = true; cfg->hidden_act = HIDDEN_ACT_SILU; cfg->has_sliding_window = false; - cfg->attn_output_gate = true; + /* Default true only when key absent; honor explicit false. Gate rejects + false later (no oracle / real checkpoint for gate-off). */ + if (yyjson_obj_get(cfg_obj, "attn_output_gate") == NULL) + cfg->attn_output_gate = true; cfg->rope_scaling_factor = 1.0f; cfg->rope_local_base_freq = cfg->rope_theta; if (yyjson_obj_get(cfg_obj, "head_dim") == NULL && diff --git a/tests/fixtures/model_config_qwen3_5_dense_full/config.json b/tests/fixtures/model_config_qwen3_5_dense_full/config.json index 040cf66..d6ec395 100644 --- a/tests/fixtures/model_config_qwen3_5_dense_full/config.json +++ b/tests/fixtures/model_config_qwen3_5_dense_full/config.json @@ -12,6 +12,7 @@ "hidden_act": "silu", "attention_bias": false, "attn_output_gate": true, + "full_attention_interval": 1, "tie_word_embeddings": true, "rope_parameters": { "rope_type": "default", diff --git a/tests/fixtures/model_config_qwen3_5_gate_off/config.json b/tests/fixtures/model_config_qwen3_5_gate_off/config.json new file mode 100644 index 0000000..102db91 --- /dev/null +++ b/tests/fixtures/model_config_qwen3_5_gate_off/config.json @@ -0,0 +1,21 @@ +{ + "model_type": "qwen3_5", + "vocab_size": 248320, + "hidden_size": 1024, + "num_hidden_layers": 4, + "num_attention_heads": 8, + "num_key_value_heads": 2, + "head_dim": 256, + "intermediate_size": 3584, + "max_position_embeddings": 262144, + "rms_norm_eps": 1e-06, + "hidden_act": "silu", + "attention_bias": false, + "attn_output_gate": false, + "tie_word_embeddings": true, + "rope_parameters": { + "rope_type": "default", + "rope_theta": 10000000.0, + "partial_rotary_factor": 0.25 + } +} diff --git a/tests/fixtures/tiny_qwen3_5/config.json b/tests/fixtures/tiny_qwen3_5/config.json index 3ea6434..92ba300 100644 --- a/tests/fixtures/tiny_qwen3_5/config.json +++ b/tests/fixtures/tiny_qwen3_5/config.json @@ -9,9 +9,9 @@ "intermediate_size": 128, "max_position_embeddings": 512, "rms_norm_eps": 0.000001, - "rope_theta": 10000000.0, "tie_word_embeddings": false, "attn_output_gate": true, + "full_attention_interval": 1, "rope_parameters": { "rope_theta": 10000000.0, "partial_rotary_factor": 0.25 diff --git a/tests/fixtures/tiny_qwen3_5_tied/config.json b/tests/fixtures/tiny_qwen3_5_tied/config.json index 6668c32..dd85e6c 100644 --- a/tests/fixtures/tiny_qwen3_5_tied/config.json +++ b/tests/fixtures/tiny_qwen3_5_tied/config.json @@ -9,9 +9,9 @@ "intermediate_size": 128, "max_position_embeddings": 512, "rms_norm_eps": 0.000001, - "rope_theta": 10000000.0, "tie_word_embeddings": true, "attn_output_gate": true, + "full_attention_interval": 1, "rope_parameters": { "rope_theta": 10000000.0, "partial_rotary_factor": 0.25 diff --git a/tests/test_emodel_gate.c b/tests/test_emodel_gate.c index b85d909..1f3a6ec 100644 --- a/tests/test_emodel_gate.c +++ b/tests/test_emodel_gate.c @@ -148,22 +148,64 @@ static model_config_t make_qwen3_5_supported(void) { cfg.hidden_act = HIDDEN_ACT_SILU; cfg.attn_output_gate = true; cfg.partial_rotary_factor = 0.25f; + cfg.head_dim = 16; /* 16 * 0.25 = 4, even and >= 2 */ cfg.has_qk_norm = true; cfg.num_experts = 0; cfg.linear_num_key_heads = 0; cfg.linear_num_value_heads = 0; + cfg.full_attention_interval = 0; return cfg; } static void test_qwen3_5_pure_dense_passes(void) { model_config_t cfg = make_qwen3_5_supported(); char err[256] = {0}; + assert(cfg.attn_output_gate == true); assert(engine_model_check_supported(&cfg, err, sizeof(err)) == 0); assert(err[0] == '\0'); +} - /* gate-off pure dense also allowed */ +static void test_qwen3_5_rejects_gate_off(void) { + model_config_t cfg = make_qwen3_5_supported(); cfg.attn_output_gate = false; - cfg.partial_rotary_factor = 1.0f; + char err[256] = {0}; + assert(engine_model_check_supported(&cfg, err, sizeof(err)) != 0); + assert(strstr(err, "qwen3_5 requires attn_output_gate") != NULL); +} + +static void test_qwen3_5_full_attention_interval(void) { + model_config_t cfg = make_qwen3_5_supported(); + char err[256] = {0}; + + /* interval > 1 implies hybrid layers (is_linear when (idx+1)%interval != 0) */ + cfg.full_attention_interval = 4; + assert(engine_model_check_supported(&cfg, err, sizeof(err)) != 0); + assert(strstr(err, "full_attention_interval") != NULL); + + /* interval == 1 is pure dense (every layer full-attn) */ + cfg.full_attention_interval = 1; + memset(err, 0, sizeof(err)); + assert(engine_model_check_supported(&cfg, err, sizeof(err)) == 0); + + /* interval == 0 accepted (unset / no hybrid schedule) */ + cfg.full_attention_interval = 0; + memset(err, 0, sizeof(err)); + assert(engine_model_check_supported(&cfg, err, sizeof(err)) == 0); +} + +static void test_qwen3_5_rejects_odd_rope_dims(void) { + model_config_t cfg = make_qwen3_5_supported(); + /* head_dim=6, prf=0.5 -> dims=3 (odd); mx.fast.rope requires even >= 2 */ + cfg.head_dim = 6; + cfg.partial_rotary_factor = 0.5f; + char err[256] = {0}; + assert(engine_model_check_supported(&cfg, err, sizeof(err)) != 0); + assert(strstr(err, "partial_rotary_factor yields invalid rope dims") != NULL); + + /* even product stays accepted (16 * 0.25 = 4) */ + cfg.head_dim = 16; + cfg.partial_rotary_factor = 0.25f; + memset(err, 0, sizeof(err)); assert(engine_model_check_supported(&cfg, err, sizeof(err)) == 0); } @@ -647,6 +689,15 @@ int main(void) { test_qwen3_5_pure_dense_passes(); printf(" test_qwen3_5_pure_dense_passes: passed\n"); + test_qwen3_5_rejects_gate_off(); + printf(" test_qwen3_5_rejects_gate_off: passed\n"); + + test_qwen3_5_full_attention_interval(); + printf(" test_qwen3_5_full_attention_interval: passed\n"); + + test_qwen3_5_rejects_odd_rope_dims(); + printf(" test_qwen3_5_rejects_odd_rope_dims: passed\n"); + test_qwen3_5_moe_family_still_rejected(); printf(" test_qwen3_5_moe_family_still_rejected: passed\n"); diff --git a/tests/test_model_config.c b/tests/test_model_config.c index 0244084..4a6ffd1 100644 --- a/tests/test_model_config.c +++ b/tests/test_model_config.c @@ -450,6 +450,7 @@ static void test_qwen3_5_dense_full_and_hybrid(void) { assert(cfg.linear_num_value_heads == 0); assert(cfg.head_dim == 256); assert(cfg.rope_theta == 10000000.0f); + assert(cfg.full_attention_interval == 1); assert(cfg.has_explicit_layer_types == false); model_config_free(&cfg); @@ -469,6 +470,43 @@ static void test_qwen3_5_dense_full_and_hybrid(void) { model_config_free(&cfg); } +/* Explicit attn_output_gate:false must survive parse (not clobbered by defaults). + Absent key still defaults to true (covered by model_config_qwen3_5). */ +/* tiny_qwen3_5 fixtures emit full_attention_interval:1 and rope_theta only + under rope_parameters (no flat duplicate). */ +static void test_tiny_qwen3_5_interval_and_rope(void) { + model_config_t cfg; + int rc = model_config_load(&cfg, MLXD_FIXTURES_DIR "/tiny_qwen3_5"); + assert(rc == 0); + assert(cfg.family == MODEL_QWEN3_5); + assert(cfg.full_attention_interval == 1); + assert(cfg.rope_theta == 10000000.0f); + assert(cfg.partial_rotary_factor == 0.25f); + model_config_free(&cfg); + + rc = model_config_load(&cfg, MLXD_FIXTURES_DIR "/tiny_qwen3_5_tied"); + assert(rc == 0); + assert(cfg.full_attention_interval == 1); + assert(cfg.rope_theta == 10000000.0f); + model_config_free(&cfg); +} + +static void test_qwen3_5_attn_output_gate_explicit_false(void) { + model_config_t cfg; + int rc = model_config_load( + &cfg, MLXD_FIXTURES_DIR "/model_config_qwen3_5_gate_off"); + assert(rc == 0); + assert(cfg.family == MODEL_QWEN3_5); + assert(cfg.attn_output_gate == false); + model_config_free(&cfg); + + /* Absent key: default stays true */ + rc = model_config_load(&cfg, MLXD_FIXTURES_DIR "/model_config_qwen3_5"); + assert(rc == 0); + assert(cfg.attn_output_gate == true); + model_config_free(&cfg); +} + /* --- A1 Cycle 7: nested text_config -------------------------------------- */ static void test_nested_text_config(void) { @@ -1134,6 +1172,8 @@ int main(void) { test_family_defaults(); test_qwen3_5_dense_vs_moe(); test_qwen3_5_dense_full_and_hybrid(); + test_qwen3_5_attn_output_gate_explicit_false(); + test_tiny_qwen3_5_interval_and_rope(); test_nested_text_config(); test_sliding_window_and_layers(); test_stage_e_dims(); diff --git a/tests/test_parity_script.sh b/tests/test_parity_script.sh index 02640ff..6503c75 100644 --- a/tests/test_parity_script.sh +++ b/tests/test_parity_script.sh @@ -641,6 +641,19 @@ else fail "wrapper-skip-absent-qwen3_5" "expected exit 0 + skipped:dir absent (rc=$rc)" fi +# --- wrapper: qwen3_5 hard-skips even when hybrid snapshot dir is present --- +# Real Qwen3.5 checkpoints are hybrid; Stage D rejects them. Keep the recorded +# canonical id but never invoke parity_temp0.sh via the root path. +W_Q35_DIR=$(mktemp -d) +mkdir -p "$W_Q35_DIR/root/mlx-community/Qwen3.5-0.8B-4bit" +out=$(MLXD_PARITY_CKPT_ROOT="$W_Q35_DIR/root" sh "$WRAPPER" qwen3_5 2>&1) && rc=0 || rc=$? +rm -rf "$W_Q35_DIR" +if [ "$rc" -eq 0 ] && printf '%s\n' "$out" | grep -q 'skipped: qwen3_5 hybrid parity deferred to Stage E'; then + pass "wrapper-skip-present-qwen3_5-hybrid" +else + fail "wrapper-skip-present-qwen3_5-hybrid" "expected exit 0 + hybrid deferred skip (rc=$rc out=$out)" +fi + # --- wrapper: per-family override beats MLXD_PARITY_CKPT_ROOT (N3) --- WBOTH_DIR=$(mktemp -d) diff --git a/tests/test_qwen3_5_goldens_gpu.c b/tests/test_qwen3_5_goldens_gpu.c new file mode 100644 index 0000000..b291fef --- /dev/null +++ b/tests/test_qwen3_5_goldens_gpu.c @@ -0,0 +1,132 @@ +#include "engine/emodel.h" +#include "engine/forward.h" +#include "engine/kvcache.h" +#include "mlxbridge/mlxbridge.h" + +#include +#include +#include +#include + +#define FIXTURES MLXD_FIXTURES_DIR + +/* mlx-lm 0.31.3 (mlx_lm.models.qwen3_5) last-token logits on ids [1,2,3,4,5]. + Generated against the tiny fixtures after full_attention_interval:1 was + added. Pins the D6 deltas: sigmoid gate multiply + partial rope dims. */ + +/* tiny_qwen3_5 (bf16 dense, untied lm_head) */ +static const float dense_first8[] = { + -1.75781250e-01f, -1.33789062e-01f, 1.60156250e-01f, -5.55419922e-03f, + -2.51953125e-01f, -4.02343750e-01f, 1.23046875e-01f, 2.69775391e-02f +}; +static const int dense_argmax = 33; + +/* tiny_qwen3_5_tied (4-bit affine quant, tied embeddings) */ +static const float tied_first8[] = { + 7.41506517e-02f, -1.21642277e-01f, -1.48075938e-01f, 1.20444193e-01f, + -6.43087775e-02f, 1.13397074e+00f, -5.17259240e-02f, 1.73729137e-01f +}; +static const int tied_argmax = 5; + +static mlx_stream gpu; + +static void compare_last_logits(engine_model_t *em, + const float *expected_first8, + int expected_argmax, + float atol, + const char *label) { + int32_t ids_data[] = {1, 2, 3, 4, 5}; + int ids_shape[] = {1, 5}; + mlx_array ids = mlx_array_new_data(ids_data, ids_shape, 2, MLX_INT32); + + kvcache_t kv; + assert(kvcache_init(&kv, em->cfg.num_hidden_layers) == 0); + + mlx_array logits = mlx_array_new(); + assert(model_forward(em, ids, &kv, true, &logits) == 0); + assert(MLXB_CHECK(mlx_array_eval(logits))); + + /* model_forward returns last-token logits [1, vocab] */ + assert(mlx_array_ndim(logits) == 2); + assert(mlx_array_dim(logits, 0) == 1); + assert(mlx_array_dim(logits, 1) == em->cfg.vocab_size); + + mlx_array f32 = mlx_array_new(); + MLXB_CHECK(mlx_astype(&f32, logits, MLX_FLOAT32, gpu)); + assert(MLXB_CHECK(mlx_array_eval(f32))); + + const float *d = mlx_array_data_float32(f32); + assert(d != NULL); + + int vocab = em->cfg.vocab_size; + int argmax = 0; + for (int i = 1; i < vocab; i++) { + if (d[i] > d[argmax]) argmax = i; + } + if (argmax != expected_argmax) { + fprintf(stderr, "%s: argmax got %d expected %d (got_val=%f exp_val=%f)\n", + label, argmax, expected_argmax, + (double)d[argmax], (double)d[expected_argmax]); + } + assert(argmax == expected_argmax); + + float max_diff = 0.0f; + for (int i = 0; i < 8; i++) { + float diff = fabsf(d[i] - expected_first8[i]); + if (diff > max_diff) max_diff = diff; + if (diff > atol) { + fprintf(stderr, "%s first8[%d]: got %f expected %f (diff %f)\n", + label, i, (double)d[i], (double)expected_first8[i], + (double)diff); + } + assert(diff <= atol); + } + printf(" %s: argmax=%d max_first8_diff=%g (atol=%g)\n", + label, argmax, (double)max_diff, (double)atol); + + mlx_array_free(f32); + mlx_array_free(logits); + kvcache_free(&kv); + mlx_array_free(ids); +} + +static void test_fixture_golden(const char *relpath, + const float *expected_first8, + int expected_argmax, + float atol, + const char *label) { + char path[512]; + snprintf(path, sizeof(path), "%s/%s", FIXTURES, relpath); + + engine_model_t em; + char err[256] = {0}; + if (engine_model_load(&em, path, err, sizeof(err)) != 0) { + fprintf(stderr, "failed to load %s: %s\n", path, err); + assert(0); + } + + assert(em.cfg.family == MODEL_QWEN3_5); + assert(em.cfg.attn_output_gate == true); + assert(em.cfg.partial_rotary_factor == 0.25f); + assert(em.cfg.full_attention_interval == 1); + + compare_last_logits(&em, expected_first8, expected_argmax, atol, label); + engine_model_free(&em); +} + +int main(void) { + gpu = mlxbridge_gpu_stream(); + + /* bf16 dense: tight tolerance */ + test_fixture_golden("tiny_qwen3_5", dense_first8, dense_argmax, + 1e-2f, "dense_bf16"); + printf(" test_qwen3_5_dense_golden: passed\n"); + + /* 4-bit tied: looser tolerance for quant noise */ + test_fixture_golden("tiny_qwen3_5_tied", tied_first8, tied_argmax, + 5e-2f, "tied_4bit"); + printf(" test_qwen3_5_tied_golden: passed\n"); + + printf("test_qwen3_5_goldens_gpu: all passed\n"); + return 0; +} diff --git a/tools/gen_tiny_ckpt.c b/tools/gen_tiny_ckpt.c index fce8d8d..1b9cd91 100644 --- a/tools/gen_tiny_ckpt.c +++ b/tools/gen_tiny_ckpt.c @@ -57,6 +57,7 @@ typedef struct { /* qwen3_5 full-attn deltas (0 = unset / default) */ bool attn_output_gate; double partial_rotary_factor; /* emit under rope_parameters when > 0 */ + int full_attention_interval; /* 0 = do not emit; 1 = pure dense */ const tensor_spec_t *top; int n_top; const tensor_spec_t *layer; int n_layer; @@ -284,6 +285,7 @@ static const recipe_t QWEN3_5 = { .has_lm_head = true, .tie_word_embeddings = false, .attn_output_gate = true, .partial_rotary_factor = 0.25, + .full_attention_interval = 1, .top = QWEN3_TOP, .n_top = LEN(QWEN3_TOP), .layer = QWEN3_LAYER, .n_layer = LEN(QWEN3_LAYER), .emit_dense = true, .emit_sharded = false, .emit_tied = true, @@ -584,7 +586,10 @@ static void write_config_json(const recipe_t *r, const char *dir, yyjson_mut_obj_add_int(doc, root, "max_position_embeddings", r->max_position_embeddings); yyjson_mut_obj_add_real(doc, root, "rms_norm_eps", r->rms_norm_eps); - yyjson_mut_obj_add_real(doc, root, "rope_theta", r->rope_theta); + /* When rope_parameters carries rope_theta (partial_rotary path), skip the + flat top-level duplicate to match real qwen3_5 configs. */ + if (!(r->partial_rotary_factor > 0.0)) + yyjson_mut_obj_add_real(doc, root, "rope_theta", r->rope_theta); yyjson_mut_obj_add_bool(doc, root, "tie_word_embeddings", tied); if (r->sliding_window > 0) { @@ -615,6 +620,10 @@ static void write_config_json(const recipe_t *r, const char *dir, if (r->attn_output_gate) yyjson_mut_obj_add_bool(doc, root, "attn_output_gate", true); + if (r->full_attention_interval > 0) + yyjson_mut_obj_add_int(doc, root, "full_attention_interval", + r->full_attention_interval); + if (r->partial_rotary_factor > 0.0) { yyjson_mut_val *rp = yyjson_mut_obj(doc); yyjson_mut_obj_add_real(doc, rp, "rope_theta", r->rope_theta); From 2abb872f49d433ec8028603914bab5f4103857a8 Mon Sep 17 00:00:00 2001 From: tlkahn Date: Mon, 20 Jul 2026 10:56:15 +0700 Subject: [PATCH 3/3] fix(engine): address PR #99 second-review findings (issue-83) Gate-side REJECT for gemma4 plain partial_rotary_factor (was silently accepted while fwd_attention would take the qwen3_5 dims path). Dedup is_finite_f32 into tests/gpu_test_util.h, replace fprintf+assert(0) with abort() so load-failure messages survive NDEBUG, and document the shared 5e-2f bf16 prefill/decode tolerance on the qwen3_5 GPU suite. --- src/engine/emodel.c | 4 ++++ src/engine/forward.c | 6 ++++-- tests/gpu_test_util.h | 29 +++++++++++++++++++++++++++++ tests/test_emodel_gate.c | 11 +++++++++++ tests/test_forward_gemma3_gpu.c | 21 +-------------------- tests/test_forward_gemma4_gpu.c | 21 +-------------------- tests/test_forward_llama_gpu.c | 24 +++--------------------- tests/test_forward_qwen3_5_gpu.c | 26 +++++--------------------- tests/test_qwen3_5_goldens_gpu.c | 3 ++- 9 files changed, 60 insertions(+), 85 deletions(-) create mode 100644 tests/gpu_test_util.h diff --git a/src/engine/emodel.c b/src/engine/emodel.c index df36df2..e7a1ca5 100644 --- a/src/engine/emodel.c +++ b/src/engine/emodel.c @@ -95,6 +95,10 @@ int engine_model_check_supported(const model_config_t *cfg, REJECT(cfg->partial_rotary_factor_global <= 0.0f || cfg->partial_rotary_factor_global > 1.0f, "partial_rotary_factor_global must be in (0, 1]"); + /* Plain partial_rotary_factor is the full-attn dims path (qwen3_5). + gemma4 uses partial_rotary_factor_global via the freqs path instead. */ + REJECT(cfg->partial_rotary_factor != 1.0f, + "partial rotary embedding not supported (gemma4 uses rope_parameters.full_attention)"); /* Reject configs where a KV-shared layer has no same-type source */ for (int i = 0; i < cfg->num_hidden_layers; i++) { if (model_layer_kv_shared(cfg, i) && diff --git a/src/engine/forward.c b/src/engine/forward.c index 9409bf2..3af30f0 100644 --- a/src/engine/forward.c +++ b/src/engine/forward.c @@ -478,8 +478,10 @@ static int add_proj_bias(mlx_array *io, const weights_t *w, const char *base, /* RoPE dims for partial_rotary_factor on the full-attention path (qwen3_5). Does not consult partial_rotary_factor_global (gemma4 freqs path). - Mirrors mlx-lm int(head_dim * prf). The qwen3_5 support gate rejects - odd/degenerate products so dims reaching here are even and >= 2. */ + Mirrors mlx-lm int(head_dim * prf). Every family's gate constrains + partial_rotary_factor (qwen3/llama via reject_dense_common, gemma4 + explicitly), so only qwen3_5 reaches the non-1.0 path; its gate also + rejects odd/degenerate products so dims here are even and >= 2. */ static int fwd_rope_dims_partial(const model_config_t *cfg, int head_dim) { float prf = cfg->partial_rotary_factor; if (prf <= 0.0f || prf > 1.0f) diff --git a/tests/gpu_test_util.h b/tests/gpu_test_util.h new file mode 100644 index 0000000..b6a05a9 --- /dev/null +++ b/tests/gpu_test_util.h @@ -0,0 +1,29 @@ +#ifndef MLXD_GPU_TEST_UTIL_H +#define MLXD_GPU_TEST_UTIL_H + +#include "mlxbridge/mlxbridge.h" + +#include + +/* Shared finite-check helper for GPU forward tests. */ +static int is_finite_f32(mlx_array a, mlx_stream s) { + mlx_array f32 = mlx_array_new(); + if (!MLXB_CHECK(mlx_astype(&f32, a, MLX_FLOAT32, s))) { + mlx_array_free(f32); + return 0; + } + if (!MLXB_CHECK(mlx_array_eval(f32))) { + mlx_array_free(f32); + return 0; + } + size_t n = mlx_array_size(f32); + const float *d = mlx_array_data_float32(f32); + if (!d) { mlx_array_free(f32); return 0; } + for (size_t i = 0; i < n; i++) { + if (!isfinite(d[i])) { mlx_array_free(f32); return 0; } + } + mlx_array_free(f32); + return 1; +} + +#endif /* MLXD_GPU_TEST_UTIL_H */ diff --git a/tests/test_emodel_gate.c b/tests/test_emodel_gate.c index 1f3a6ec..567b767 100644 --- a/tests/test_emodel_gate.c +++ b/tests/test_emodel_gate.c @@ -437,6 +437,14 @@ static void test_gemma4_reject_proportional_factor_zero(void) { assert(strstr(err, "rope_proportional_factor") != NULL); } +static void test_gemma4_reject_partial_rotary_plain(void) { + model_config_t cfg = make_gemma4_supported(); + cfg.partial_rotary_factor = 0.5f; + char err[256] = {0}; + assert(engine_model_check_supported(&cfg, err, sizeof(err)) != 0); + assert(strstr(err, "partial rotary") != NULL); +} + static void test_gemma4_reject_partial_rotary_global_zero(void) { model_config_t cfg = make_gemma4_supported(); cfg.partial_rotary_factor_global = 0.0f; @@ -584,6 +592,9 @@ int main(void) { test_gemma4_reject_proportional_factor_zero(); printf(" test_gemma4_reject_proportional_factor_zero: passed\n"); + test_gemma4_reject_partial_rotary_plain(); + printf(" test_gemma4_reject_partial_rotary_plain: passed\n"); + test_gemma4_reject_partial_rotary_global_zero(); printf(" test_gemma4_reject_partial_rotary_global_zero: passed\n"); diff --git a/tests/test_forward_gemma3_gpu.c b/tests/test_forward_gemma3_gpu.c index 65e057d..cc64691 100644 --- a/tests/test_forward_gemma3_gpu.c +++ b/tests/test_forward_gemma3_gpu.c @@ -4,6 +4,7 @@ #include "mlxbridge/mlxbridge.h" #include "model/model.h" #include "model/weights.h" +#include "gpu_test_util.h" #include #include @@ -14,26 +15,6 @@ static mlx_stream gpu; -static int is_finite_f32(mlx_array a, mlx_stream s) { - mlx_array f32 = mlx_array_new(); - if (!MLXB_CHECK(mlx_astype(&f32, a, MLX_FLOAT32, s))) { - mlx_array_free(f32); - return 0; - } - if (!MLXB_CHECK(mlx_array_eval(f32))) { - mlx_array_free(f32); - return 0; - } - size_t n = mlx_array_size(f32); - const float *d = mlx_array_data_float32(f32); - if (!d) { mlx_array_free(f32); return 0; } - for (size_t i = 0; i < n; i++) { - if (!isfinite(d[i])) { mlx_array_free(f32); return 0; } - } - mlx_array_free(f32); - return 1; -} - /* Load engine_model_t bypassing the support gate (gemma3 not yet whitelisted). TODO: replace with engine_model_load once gemma3 is in engine_model_check_supported (D1). */ static int load_gemma3(engine_model_t *em, const char *path) { diff --git a/tests/test_forward_gemma4_gpu.c b/tests/test_forward_gemma4_gpu.c index d8c1814..63ddfde 100644 --- a/tests/test_forward_gemma4_gpu.c +++ b/tests/test_forward_gemma4_gpu.c @@ -4,6 +4,7 @@ #include "mlxbridge/mlxbridge.h" #include "model/model.h" #include "model/weights.h" +#include "gpu_test_util.h" #include #include @@ -18,26 +19,6 @@ static mlx_stream gpu; -static int is_finite_f32(mlx_array a, mlx_stream s) { - mlx_array f32 = mlx_array_new(); - if (!MLXB_CHECK(mlx_astype(&f32, a, MLX_FLOAT32, s))) { - mlx_array_free(f32); - return 0; - } - if (!MLXB_CHECK(mlx_array_eval(f32))) { - mlx_array_free(f32); - return 0; - } - size_t n = mlx_array_size(f32); - const float *d = mlx_array_data_float32(f32); - if (!d) { mlx_array_free(f32); return 0; } - for (size_t i = 0; i < n; i++) { - if (!isfinite(d[i])) { mlx_array_free(f32); return 0; } - } - mlx_array_free(f32); - return 1; -} - static float max_abs_diff_arr(mlx_array a, mlx_array b, mlx_stream s) { mlx_array af = mlx_array_new(); mlx_array bf = mlx_array_new(); diff --git a/tests/test_forward_llama_gpu.c b/tests/test_forward_llama_gpu.c index aad7926..d581ce9 100644 --- a/tests/test_forward_llama_gpu.c +++ b/tests/test_forward_llama_gpu.c @@ -4,36 +4,18 @@ #include "mlxbridge/mlxbridge.h" #include "model/model.h" #include "model/weights.h" +#include "gpu_test_util.h" #include #include #include +#include #include #define FIXTURES MLXD_FIXTURES_DIR static mlx_stream gpu; -static int is_finite_f32(mlx_array a, mlx_stream s) { - mlx_array f32 = mlx_array_new(); - if (!MLXB_CHECK(mlx_astype(&f32, a, MLX_FLOAT32, s))) { - mlx_array_free(f32); - return 0; - } - if (!MLXB_CHECK(mlx_array_eval(f32))) { - mlx_array_free(f32); - return 0; - } - size_t n = mlx_array_size(f32); - const float *d = mlx_array_data_float32(f32); - if (!d) { mlx_array_free(f32); return 0; } - for (size_t i = 0; i < n; i++) { - if (!isfinite(d[i])) { mlx_array_free(f32); return 0; } - } - mlx_array_free(f32); - return 1; -} - /* ---- config flags ---- */ static void test_llama3_config_flags(engine_model_t *em) { @@ -253,7 +235,7 @@ static void run_suite(const char *label, const char *path, char err[256] = {0}; if (engine_model_load(&em, path, err, sizeof(err)) != 0) { fprintf(stderr, "failed to load %s: %s\n", path, err); - assert(0); + abort(); } config_test(&em); diff --git a/tests/test_forward_qwen3_5_gpu.c b/tests/test_forward_qwen3_5_gpu.c index b0d7c7e..21a6d09 100644 --- a/tests/test_forward_qwen3_5_gpu.c +++ b/tests/test_forward_qwen3_5_gpu.c @@ -4,36 +4,18 @@ #include "mlxbridge/mlxbridge.h" #include "model/model.h" #include "model/weights.h" +#include "gpu_test_util.h" #include #include #include +#include #include #define FIXTURES MLXD_FIXTURES_DIR static mlx_stream gpu; -static int is_finite_f32(mlx_array a, mlx_stream s) { - mlx_array f32 = mlx_array_new(); - if (!MLXB_CHECK(mlx_astype(&f32, a, MLX_FLOAT32, s))) { - mlx_array_free(f32); - return 0; - } - if (!MLXB_CHECK(mlx_array_eval(f32))) { - mlx_array_free(f32); - return 0; - } - size_t n = mlx_array_size(f32); - const float *d = mlx_array_data_float32(f32); - if (!d) { mlx_array_free(f32); return 0; } - for (size_t i = 0; i < n; i++) { - if (!isfinite(d[i])) { mlx_array_free(f32); return 0; } - } - mlx_array_free(f32); - return 1; -} - static void test_qwen3_5_config_flags(engine_model_t *em) { assert(em->cfg.family == MODEL_QWEN3_5); assert(em->cfg.attn_output_gate == true); @@ -157,6 +139,8 @@ static void test_qwen3_5_incremental_equals_full(engine_model_t *em) { } assert(argmax_a == argmax_b); + /* Compare: argmax match + max-abs-diff < 5e-2. bf16 prefill-vs-decode + accumulation drift; same tolerance as sibling GPU tests. */ float maxdiff = 0.0f; for (int i = 0; i < vocab; i++) { float d = fabsf(da[i] - db[i]); @@ -191,7 +175,7 @@ static void run_suite(const char *label, const char *path, char err[256] = {0}; if (engine_model_load(&em, path, err, sizeof(err)) != 0) { fprintf(stderr, "failed to load %s: %s\n", path, err); - assert(0); + abort(); } config_test(&em); diff --git a/tests/test_qwen3_5_goldens_gpu.c b/tests/test_qwen3_5_goldens_gpu.c index b291fef..a31f63a 100644 --- a/tests/test_qwen3_5_goldens_gpu.c +++ b/tests/test_qwen3_5_goldens_gpu.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #define FIXTURES MLXD_FIXTURES_DIR @@ -102,7 +103,7 @@ static void test_fixture_golden(const char *relpath, char err[256] = {0}; if (engine_model_load(&em, path, err, sizeof(err)) != 0) { fprintf(stderr, "failed to load %s: %s\n", path, err); - assert(0); + abort(); } assert(em.cfg.family == MODEL_QWEN3_5);