mlx-community/LFM2.5-VL-3B-OptiQ-4bit

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

Liquid's on-device vision-language model, quantized for a Mac. This is an OptiQ mixed-precision quant of LiquidAI/LFM2.5-VL-3B-MLX-bf16. 2.8 GB on disk, down from 6.3 GB.

LFM2.5-VL pairs a SigLIP2 encoder with the LFM2.5 hybrid language tower: short convolutional blocks alternate with full-attention blocks, and only the attention blocks carry a KV cache, so memory grows slowly as context does. OptiQ quantizes the language tower to mixed 4/8-bit and keeps the vision tower at bf16 in a sidecar, so one checkpoint does text and images.

It reads images

Ran through this quantized model on Apple Silicon, MLX only:

Input Output
a blue square on white "A blue square."
a green triangle on white "Green triangle."
a red circle on white "A red circle."

What it is

Property Value
Base LiquidAI/LFM2.5-VL-3B-MLX-bf16 (SigLIP2 + LFM2.5, ~3B params)
Method OptiQ mixed-precision, sensitivity-driven (bf16 reference)
Language tower per-layer 4/8-bit: 88 layers at 4-bit, 78 at 8-bit
Vision tower bf16, kept in optiq/optiq_vision.safetensors (441 tensors)
On disk 1.98 GB language + 0.85 GB vision
Resolution native aspect ratio; position embeddings resampled per image

The vision tower runs natively in MLX with no PyTorch and no mlx-vlm at runtime. It was checked against the reference implementation across four patch grids and matches to bf16 round-off, so image answers are the base model's rather than an approximation.

Following llama.cpp's naming for mixed quants, the "4bit" label denotes the family, not the weighted average.

Capability Score

Six-metric mean (the standard OptiQ text eval).

Metric Score
MMLU (5-shot, 969 samples) 54.3%
GSM8K (1000 samples) 44.6%
IFEval (full set, strict) 77.4%
BFCL-V3 simple (200 calls) 0.0%
HumanEval (164 problems, pass@1) 40.2%
HashHop (long-context retrieval) 11.0%
Capability Score (mean of 6) 37.93

It does not initiate tool calls. The 0.0% is a real result, not a harness artifact: on BFCL's prompts this model works the answer out itself rather than calling the function. Asked "find the area of a triangle with base 10 and height 5" it derives the formula and answers 25, while its text-only sibling LFM2.5-1.2B-Instruct calls calculate_triangle_area and scores 45.0%. Both were run through the same harness with the same chat template logic.

It emits correct calls when told to use a tool — <|tool_call_start|>[get_weather(city="Paris")]<|tool_call_end|> parses cleanly — so the capability is there; the model just does not reach for it unprompted. If you need agentic tool use at this size, take the text 1.2B or 2.6B instead.

Long-context retrieval also falls off quickly: 40% at one hop, near zero beyond. That is what a hybrid with few attention layers predicts, and it is the trade that keeps its KV cache small.

Run it

pip install "mlx-optiq>=0.4.20"

For image input, serve it with an OpenAI + Anthropic-compatible endpoint:

optiq serve --model mlx-community/LFM2.5-VL-3B-OptiQ-4bit

Then send an image as image_url content. Text-only generation also loads directly:

import optiq  # registers the lfm2_vl arch + vision sidecar
from mlx_lm import load, generate

model, tok = load("mlx-community/LFM2.5-VL-3B-OptiQ-4bit")
msgs = [{"role": "user", "content": "Explain why the sky is blue."}]
prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
print(generate(model, tok, prompt=prompt, max_tokens=400))

Links

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

4-bit

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

Model tree for mlx-community/LFM2.5-VL-3B-OptiQ-4bit

Quantized
(1)
this model