--- license: other license_name: lfm1.0 license_link: https://huggingface.co/LiquidAI/LFM2.5-VL-3B/blob/main/LICENSE base_model: LiquidAI/LFM2.5-VL-3B base_model_relation: quantized library_name: mlx pipeline_tag: image-text-to-text tags: - mlx - vmlx-swift - osaurus - jang - liquid - lfm2.5 - vision-language - multimodal language: - en - zh - ar ---
# OsaurusAI/LFM2.5-VL-3B-MXFP8 MX FP8 (`mx.quantize(mode="mxfp8")`, group size 32). Highest-fidelity bundle; use as the quality reference. MX FP8 (group size 32) conversion of [`LiquidAI/LFM2.5-VL-3B`](https://huggingface.co/LiquidAI/LFM2.5-VL-3B) for Apple silicon (MLX). LFM2.5-VL-3B is a **vision-language** model: a hybrid short-convolution + attention `lfm2` text backbone (30 layers, 22 conv / 8 full-attention) paired with a **SigLIP2** `so400m-patch16-naflex` vision tower and a 2-layer projector. Images are tiled (up to 10 tiles at 512px) into 64–256 image tokens. ## Bundles in this series | Bundle | Avg bits | Size | Notes | |---|---|---|---| | [`LFM2.5-VL-3B-JANG_2L`](https://huggingface.co/OsaurusAI/LFM2.5-VL-3B-JANG_2L) | 3.14 | 1.9 GB | smallest | | [`LFM2.5-VL-3B-JANG_4M`](https://huggingface.co/OsaurusAI/LFM2.5-VL-3B-JANG_4M) | 4.12 | 2.2 GB | **recommended** | | [`LFM2.5-VL-3B-JANG_6M`](https://huggingface.co/OsaurusAI/LFM2.5-VL-3B-JANG_6M) | 6.06 | 2.9 GB | near-lossless | | [`LFM2.5-VL-3B-MXFP8`](https://huggingface.co/OsaurusAI/LFM2.5-VL-3B-MXFP8) | 9.31 | 3.4 GB | MX FP8 reference | ## The vision tower is not quantized All four bundles keep the 437 SigLIP2 vision tensors at **source precision**. Quantizing a vision tower aggressively is what breaks image understanding, so the bits are spent on the language model instead. This is why image quality holds up even in the smallest bundle — and why the small profiles are dominated by the tower rather than the LM. ## Verified Loaded and generated on an M5 Max on 2026-08-12, through this bundle's own `chat_template.jinja` and `processor_config.json`: - **Vision** — correctly named both shapes, both colors and their positions on a synthetic probe image - **Multi-turn** — carried image context across three turns, including a follow-up comparison ("which is larger, and where") and a format constraint - **Tool calling** — parsed `<|tool_call_start|>[get_weather(city='...')]<|tool_call_end|>` into `{'name': 'get_weather', 'arguments': {'city': 'Santa Clara'}}` ## Sampling LiquidAI's documented settings, stamped into **both** `generation_config.json` and `jang_config.json`: | Parameter | Value | |---|---| | `temperature` | 0.2 | | `top_k` | 50 | | `top_p` | 1.0 (disabled) | | `repetition_penalty` | 1.0 | | `eos_token_id` | `[124900]` | `top_p` is not specified upstream, so it is stamped as disabled rather than invented. ## Reasoning **This model does not reason — it answers directly.** There is no thinking rail: the chat template emits a bare `<|im_start|>assistant\n` generation prompt with no `