Qwen3.6 35B-A3B — Unsloth MXFP4/MXFP8 recipe for MLX

This is a weight-only MLX conversion of Qwen/Qwen3.6-35B-A3B using the tensor-class policy from unsloth/Qwen3.6-35B-A3B-NVFP4, translated for Apple MLX:

Tensor class Count Storage
Routed/shared expert FFNs in layers 0–31 192 MXFP4, 4-bit, group 32
Final-eight FFNs, attention, Gated DeltaNet qkv/z/out, and lm_head 179 MXFP8, 8-bit, group 32
Vision, MTP, routers, GDN a/b, embeddings, norms, and state tensors BF16

Update — re-converted 2026-09-01

The MXFP4 and MXFP8 weights are re-encoded. mlx-node now picks each MX block's shared E8M0 exponent itself instead of rounding log2(amax) to nearest: MXFP4 tries both candidate exponents and keeps the lower squared error, and MXFP8 takes the ceiling so a block can never saturate. Measured MXFP8 weight error across a checkpoint drops from 6.91% to 2.66%.

The imatrix / AWQ pre-scaling is removed. Under a float-scaled format it drove block scales to the zero code and annihilated whole blocks, so mlx-node now refuses --imatrix-path for these class maps. The reproduce command above is updated accordingly; the previous one fails on current mlx-node.

Weight bytes changed; the tensor-class map, shard layout and tensor counts are unchanged. Earlier revisions remain in this repository's history.

Provenance

  • Base weights: Qwen/Qwen3.6-35B-A3B revision 995ad96eacd98c81ed38be0c5b274b04031597b0
  • Tensor-class reference: unsloth/Qwen3.6-35B-A3B-NVFP4 revision 739af1e7aac320af1682ed1e0cce369af4c5265d
  • Converter: current mlx-node source

No imatrix or calibration dataset is used. The FP4 tensor-class maps are data-free, and AWQ pre-scaling is refused under a float-scaled format: dividing a weight column by an AWQ scale drives the block amax down until amax / 6 falls under E4M3's smallest normal value and the shared block scale rounds to the zero code, which decodes the whole block to zero.

Runtime semantics

This model uses MXFP4/MXFP8 weight storage with 16-bit activations. It does not claim numerical equivalence to upstream W4A4/W8A8 execution, global activation scales, or an FP8 KV cache. The tokenizer, processor, vision encoder, and inline MTP weights are retained; only text generation was smoke-tested for this upload.

Reproduce

yarn mlx convert \
  --input /path/to/qwen3.6-35b-a3b \
  --output ./Qwen3.6-35B-A3B-mxfp4-mlx \
  --model-type qwen3_5_moe \
  --dtype bfloat16 \
  --quantize \
  --q-recipe unsloth \
  --q-mxfp

Validation

  • 35,951,822,704 source parameters converted.
  • 1,457 serialized tensors across five SafeTensors shards.
  • Exact index/shard closure.
  • Exact per-layer map: 192 MXFP4 4/32 overrides and 179 MXFP8 8/32 overrides.
  • Quantization metadata is identical in quantization and quantization_config.
  • Text smoke test: loaded in 44.1 seconds and generated one deterministic token, OK.

This model belongs to the Unsloth NVFP4 Tensor-Class Recipe for MLX macOS/DGX collection.

Downloads last month
76
Safetensors
Model size
36B params
Tensor type
U32
·
BF16
·
MLX
Hardware compatibility
Log In to add your hardware

3-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Brooooooklyn/Qwen3.6-35B-A3B-mxfp4-mlx

Quantized
(805)
this model

Collection including Brooooooklyn/Qwen3.6-35B-A3B-mxfp4-mlx