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, the sensitivity-aware quantization toolkit for Apple Silicon. Beats stock uniform 4-bit on the six-metric Capability Score, with a standout +9 points on long-context retrieval.
A 4-bit mixed-precision MLX quant of Devstral-Small-2-24B-Instruct-2512. 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. This is the first OptiQ quant of a Mistral-family model.
uniform-4-bit (24B does not fit bf16 in typical RAM)
We follow the same naming convention llama.cpp uses for Q4_K_M and similar mixed-precision quants: the "4-bit" label is for the predominant precision, not the weighted average. The mixed allocation puts more bits where the sensitivity pass says they matter, which is what lets this build win the Capability Score below.
from mlx_lm import load, generate
model, tokenizer = load("mlx-community/Devstral-Small-2-24B-Instruct-2512-OptiQ-4bit")
response = generate(
model, tokenizer,
prompt="Write a Python function that returns the nth Fibonacci number.",
max_tokens=200,
)
Devstral is a tool-calling, agentic coding model. For multi-step tool use, serve it with mlx-optiq (OpenAI + Anthropic-compatible server, mixed-precision KV-cache, sensitivity-aware LoRA):
optiq serve captures Mistral/Devstral tool calls correctly. They end on EOS with no closing marker, which stock servers drop after the first call, and it normalizes tool-call arguments before chat templating.
Every metric gets one equal vote. Disk size is reported next to the score as an honest second axis instead of being folded into the score. OptiQ wins 5 of 6 metrics; the win concentrates on HashHop (long-context multi-hop retrieval), exactly where uniform 4-bit degrades most. See the eval-framework writeup for methodology.
import os
os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com"
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("mlx-community/Devstral-Small-2-24B-Instruct-2512-OptiQ-4bit", revision="94c7ea45233b0f671b66479a49709856e77bb2ef")
model = AutoModelForCausalLM.from_pretrained("mlx-community/Devstral-Small-2-24B-Instruct-2512-OptiQ-4bit", revision="94c7ea45233b0f671b66479a49709856e77bb2ef", device_map="auto")