LFM2.5-VL-450M-Extract-MLX-bf16
LFM2.5-VL-450M-Extract-MLX-bf16 is the unquantized bfloat16 baseline Apple Silicon MLX port of Liquid AI's LFM2.5-VL-450M-Extract. It extracts user-defined fields from images and returns them as strict JSON, running natively in full bfloat16 precision on Apple Silicon (M1/M2/M3/M4) devices via MLX and mlx-vlm.
⚙️ How it works
You specify what to extract as a YAML field list in the system prompt, and the model returns a JSON object with those fields.
- System prompt:
wood_color: The overall coloration of the wood surface
wood_texture: The tactile quality of the wood surface
wood_pattern: The pattern types visible on the wood surface
- Output:
{
"wood_color": "light to medium brown",
"wood_texture": "smooth with visible grain",
"wood_pattern": "parallel, irregular, wavy"
}
Our model also supports enum constrained definitions:
wood_color: The overall coloration of the wood surface, such as blue, red, or light tan
wood_texture: The tactile quality of the wood surface, select from smooth, rough, or grainy
wood_pattern: The pattern types visible on the wood surface, e.g., straight, wavy, or curly
📄 Model Details
| Property | Detail |
|---|---|
| Base Model | LiquidAI/LFM2.5-VL-450M-Extract |
| Parameters (LM only) | 350M |
| Vision Encoder | SigLIP2 (~100M, SigLIP-2 paper) |
| Precision | bfloat16 (unquantized baseline) |
| Weights Size | ~897 MB (model.safetensors) |
| Context Window | 128,000 tokens |
| Runtime / Library | Apple Silicon MLX (mlx_vlm) |
| License | LFM Open License v1.0 |
📊 Conversion Specs & Resource Usage
- Conversion Parameters:
python -m mlx_vlm.convert --hf-path LiquidAI/LFM2.5-VL-450M-Extract --dtype bfloat16 - Memory Footprint: ~900 MB active unified memory during inference.
| Model Variant | Precision | Group Size | Weight Size | Est. Unified RAM |
|---|---|---|---|---|
| LFM2.5-VL-450M-Extract-MLX-4bit | 4-bit (int4) | 64 | ~388 MB | ~400 MB |
| LFM2.5-VL-450M-Extract-MLX-8bit | 8-bit (int8) | 64 | ~565 MB | ~600 MB |
| LFM2.5-VL-450M-Extract-MLX-bf16 | bfloat16 | N/A | ~897 MB | ~900 MB |
🏃 How to run with MLX
1. Install dependencies
pip install mlx-vlm pillow
2. Run inference in Python
from mlx_vlm import load, generate
from mlx_vlm.prompt_utils import apply_chat_template
from mlx_vlm.utils import load_image
model_id = "LeoFortunato/LFM2.5-VL-450M-Extract-MLX-bf16"
model, processor = load(model_id)
image = load_image("https://huggingface.co/LiquidAI/LFM2.5-VL-450M-Extract/resolve/main/sample_image.png")
fields_yaml = """wood_color: The overall coloration of the wood surface
wood_texture: The tactile quality of the wood surface
wood_pattern: The pattern types visible on the wood surface"""
system_prompt = f"""Extract the following from the image:
{fields_yaml}
Respond with only a JSON object. Do not include any text outside the JSON."""
formatted_prompt = apply_chat_template(
processor,
processor.config,
system_prompt,
num_images=1
)
output = generate(
model,
processor,
formatted_prompt,
image=[image],
max_tokens=512,
temperature=0.0,
verbose=False
)
print(output)
📬 Citation & Contact
- Liquid AI Discord: Join Discord
- MLX Framework: MLX GitHub
@article{liquidai2025lfm2,
title={LFM2 Technical Report},
author={Liquid AI},
journal={arXiv preprint arXiv:2511.23404},
year={2025}
}