Built with mlx-optiq, the MLX-native toolkit to quantize, fine-tune, and serve LLMs locally on Apple Silicon, no PyTorch and no cloud. Try the Lab · All OptiQ quants · Docs
A 4-bit mixed-precision MLX quant produced by mlx-optiq, built on Google's quantization-aware-trained (QAT) Gemma-4 base. OptiQ's sensitivity-guided per-layer bit allocation is applied on top of weights that were trained to survive low-bit quantization, and it still beats a uniform 4-bit quant of the same QAT base by +1.37 Capability Score points.
This is a quant of google/gemma-4-12B-it-qat-q4_0-unquantized. Per-layer bit-widths come from a KL-divergence sensitivity pass on a six-domain calibration mix (prose, reasoning, code, agent, tool-call, constraint-bearing instructions). Sensitive layers go to 8-bit, robust ones stay at 4-bit.
Six-metric mean (MMLU, GSM8K, IFEval, BFCL, HumanEval, HashHop), scored against a uniform 4-bit quant of the same QAT base. That comparison isolates what the mixed-precision allocation adds, holding the base fixed.
Benchmark
This model (OptiQ, QAT base)
Uniform-4 (QAT base)
Delta
MMLU (5-shot, 1000)
52.5%
50.9%
+1.6
GSM8K (1000)
93.3%
93.1%
+0.2
IFEval (full, strict)
73.6%
72.3%
+1.3
BFCL-V3 simple (200)
72.0%
72.5%
-0.5
HumanEval (pass@1, 164)
91.5%
90.9%
+0.6
HashHop (long-context)
35.0%
30.0%
+5.0
Capability Score (mean)
69.64
68.27
+1.37
OptiQ adds +1.37 points over uniform 4-bit on this QAT base, consistent with the margin on the other QAT Gemma-4 sizes (E2B +2.09, E4B +1.19): the per-layer allocation keeps paying off even after QAT has made the weights more quantization-robust. The mixed quant is 5.25 bits-per-weight (about 8.3 GB on disk) versus 4.0 bits-per-weight (about 6.2 GB) for uniform 4-bit, with the extra budget spent on the layers that need it.
The 12B is the unified Gemma-4 (model_type: gemma4_unified), so it needs mlx-lm from main and import optiq (the unified text tower is not in the 0.31.3 PyPI release; the main build also reports 0.31.3, so install from git, not a version pin):
The language and image+text paths both run through optiq. The bf16 vision tower rides in optiq_vision.safetensors, which mlx-lm ignores (it globs model*.safetensors), so both paths work from one artifact.
Files
14 files · 9.04 GBWeights 9.00 GB (safetensors). Sizes and sha256 from the signed manifest.
import os
os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com"
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("mlx-community/gemma-4-12B-it-qat-OptiQ-4bit", revision="5fbb5d97b1219b5e12735cc0e865bae1dd8e8fce")
model = AutoModelForCausalLM.from_pretrained("mlx-community/gemma-4-12B-it-qat-OptiQ-4bit", revision="5fbb5d97b1219b5e12735cc0e865bae1dd8e8fce", device_map="auto")