Mixed-precision quantization optimizer for LLMs on Apple Silicon (MLX)
Project description
mlx-optiq
Quantize, fine-tune and serve LLMs entirely on Apple Silicon.
Website: https://mlx-optiq.com | Docs: https://mlx-optiq.com/docs/ | Models: https://mlx-optiq.com/models | Blog: https://mlx-optiq.com/blog/ | HF org: https://huggingface.co/mlx-community
mlx-optiq is an optimizing compiler and runtime for MLX. It turns a full-precision model into the best version for a given memory and latency budget on your Mac, using per-layer sensitivity measurement instead of uniform 4-bit everywhere. The same signal drives weights, KV cache, LoRA fine-tuning, and runtime adapter swapping.
pip install mlx-optiq
What it does
- Mixed-precision weight quantization that beats uniform 4-bit at the same size.
optiq convertmeasures each layer's sensitivity and allocates bits per layer. Astaticmethod assigns bits by architecture for models too large to measure. Methods. - SSD expert streaming runs large MoE quants that don't fit in RAM. A 2-bit Qwen3.5-122B-A10B runs on a 36 GB Mac at ~12 GB resident, experts streamed off disk. How.
- Mixed-precision KV cache for longer context at lower memory.
optiq serveruns a per-layer KV quant pipeline. - One server, two protocols.
optiq servespeaks both the OpenAI and Anthropic APIs from one process. Point Claude Code or either SDK at the same local URL. - Speculative decoding via bundled MTP heads or paired drafters (
--mtp,--drafter). - Sensitivity-aware LoRA (SFT + DPO) and runtime hot-swap adapters.
- OptiQ Lab (
pip install "mlx-optiq[lab]"thenoptiq lab): a local web UI for chat, quantize, fine-tune, and dataset work.
Quickstart
Every mlx-optiq quant loads with stock mlx-lm:
from mlx_lm import load, generate
model, tok = load("mlx-community/Qwen3.5-9B-OptiQ-4bit")
print(generate(model, tok, prompt="Hello", max_tokens=50))
Installing mlx-optiq unlocks the rest. A few starting points:
# Serve with the OpenAI + Anthropic API and ~1.4x speculative decode
optiq serve --model mlx-community/Qwen3.5-9B-OptiQ-4bit --mtp
# Run a huge MoE that doesn't fit in RAM (experts stream off SSD)
optiq serve --model mlx-community/Qwen3.5-122B-A10B-OptiQ-2bit --stream-experts
# Quantize a fresh model (exact sensitivity, or fast structural rules for big bases)
optiq convert Qwen/Qwen3.5-9B --target-bpw 5.0 --candidate-bits 4,8
optiq convert <large-moe> --method static --candidate-bits 2,4 --target-bpw 2.5
# Fine-tune with sensitivity-aware LoRA
optiq lora train mlx-community/Qwen3.5-9B-OptiQ-4bit --data ./jsonl_dir --rank 8
Full guides for serving, KV-quant, LoRA, MTP and per-family setup are in the docs. The models page lists every quant with its Capability Score, and the blog has the deeper write-ups.
Requirements
- Apple Silicon (M1 or newer), macOS, Python 3.11+.
- The published quants load with stock
mlx-lm. Converting and some MoE / multimodal runtime features trackmlx-lmmain; install it from git when a model card asks for it.
License
MIT for the package. Quantized models follow their base model's license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mlx_optiq-0.2.7.tar.gz.
File metadata
- Download URL: mlx_optiq-0.2.7.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99bfcb536a392153e42aeb2fab455d42dba5517bd3f27cd04462325daec56581
|
|
| MD5 |
961c131251a4b9af6c0259d3987eab71
|
|
| BLAKE2b-256 |
23b8daf6eb9bafa5d60dcf9c8b64ec7567c561ae0b01b6fbfdf3f5cd9d6ca609
|
File details
Details for the file mlx_optiq-0.2.7-py3-none-any.whl.
File metadata
- Download URL: mlx_optiq-0.2.7-py3-none-any.whl
- Upload date:
- Size: 1.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
380fce4bb8b2ed20b3d51391ab9909b17744c48bd5eb2828de8ba86b817bc48c
|
|
| MD5 |
1e33882d84407109d1a9d5097c6c8587
|
|
| BLAKE2b-256 |
8329ff3c8af18a83aa0f9f2bb18151812529c1d24380c208f137a84d330985ad
|