Built with mlx-optiq, the MLX-native toolkit to quantize, fine-tune, and serve LLMs locally on Apple Silicon, no PyTorch and no cloud. All OptiQ quants · Docs · LFM2.5 family
An OptiQ mixed-precision quant of LiquidAI/LFM2.5-24B-A2B, the largest model in the LFM2.5 family. It is 16.7 GB on disk, down from 47.9 GB at bf16, with a 128k context.
LFM2.5-24B-A2B is a sparse mixture of experts on Liquid's hybrid backbone. Convolutional blocks alternate with full attention, so only 10 of its 40 layers keep a KV cache. Each token is routed to 4 of 64 experts. OptiQ measures each layer's sensitivity and assigns its bit-width from that.
Most of the routed expert weights sit at 4-bit: 87 of the 114 fused expert projections. Attention, the routers and nearly all of the convolution blocks stay at 8-bit.
Six-metric mean, the standard OptiQ eval, run in reasoning mode because the model always thinks before it answers. The baseline is a uniform 4-bit quant of the same model, scored the same way.
Metric
OptiQ
Uniform 4-bit
MMLU (generative)
81.1%
80.3%
GSM8K
94.4%
93.2%
IFEval (strict)
88.0%
84.5%
BFCL-V3 simple (200 calls)
91.5%
89.5%
HumanEval (164 problems, pass@1)
91.5%
67.1%
HashHop (long-context retrieval)
1.0%
0.0%
Capability Score (mean of 6)
74.59
69.10
The OptiQ quant is ahead on every metric. The big gap is HumanEval: the uniform quant often writes a correct function and then keeps re-checking it until it runs out of tokens, even with a 16k reasoning budget. A reply that never finishes counts as a failure. HashHop is the weak spot for both, because the model copies the lookup table into its reasoning and runs out of budget before it answers.
That gives you an OpenAI and Anthropic compatible endpoint with mixed-precision KV cache (kv_config.json in this repo), tool calling, and prompt caching.
The model reasons before every answer, so give it a generous max_tokens. Liquid's recommended sampling (temperature 0.1, top_k 50, repetition_penalty 1.05) ships in generation_config.json, and optiq serve applies it automatically.
Or from Python:
from mlx_lm import load, generate
model, tokenizer = load("mlx-community/LFM2.5-24B-A2B-OptiQ-4bit")
prompt = tokenizer.apply_chat_template(
[{"role": "user", "content": "Summarise this contract clause in two sentences."}],
add_generation_prompt=True, tokenize=False,
)
print(generate(model, tokenizer, prompt=prompt, max_tokens=4096))
# custom terms: read the license before you download$ fw get mlx-community/LFM2.5-24B-A2B-OptiQ-4bit
# manifest sha256 f9fc16aa7972… · 16.7 GB · 15 files$ fw verify ./LFM2.5-24B-A2B-OptiQ-4bit mlx-community/LFM2.5-24B-A2B-OptiQ-4bit
Terms that come with these files. LFM 1.0: commercial use only for organisations under US$10M annual revenue. Keep a copy of the license with the files.
Custom license (custom).Read the license text first. Open this panel to show the commands once you accept its terms.
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
import os
os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com"
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("mlx-community/LFM2.5-24B-A2B-OptiQ-4bit", revision="b5552f7f7e597e2ca02653f89098dea86b8818af")
model = AutoModelForCausalLM.from_pretrained("mlx-community/LFM2.5-24B-A2B-OptiQ-4bit", revision="b5552f7f7e597e2ca02653f89098dea86b8818af", device_map="auto")