
LFM2.5-VL-3B-DSpark (Liquid AI)
Liquid AI releases LFM2.5-VL-3B-DSpark, a 280M-parameter attention-only draft model (4 layers, block size 9, +8.9% parameters) for speculative decoding of the LFM2.5-VL-3B vision-language model. It reports decode speedups of 2.30–3.13x on MLX (M5 Max), 1.57–2.14x on llama.cpp (M3 Ultra) and up to 2.66x on H100, with end-to-end gains of 1.30–2.62x, evaluated on six MMSpec vision tasks. It explains why prefill and vision encoding limit end-to-end gains (Amdahl's law) and gives launch commands for SGLang, llama.cpp and MLX-VLM.
What it claims
This is a speculative-decoding draft model for the LFM2.5-VL-3B vision-language model, not a new VLM itself. The drafter adds 280M parameters (8.9% on top of the 3B target) and delivers decode speedups up to 3.13x on device and 2.66x on an H100, with end-to-end gains up to 2.62x (device) and 2.27x (H100). Because verification is exact, greedy output is identical to running the target alone. Note the existing catalog summary treats this as a standalone 3B VLM; it is actually a drafter you attach to LFM2.5-VL-3B.
How it works
The vision drafter reuses the text LFM2.5-DSpark architecture: it taps the target model's hidden states at a fixed set of layers and drafts a block of k candidate tokens the target then verifies. Image patches and text tokens are projected into a shared representation before the tapped layers, so the drafter sees hidden-state vectors of the same dimensionality regardless of modality — meaning the inference algorithm is unchanged from the text case. Training followed the DSpark recipe on a vision-language SFT mixture, 10 epochs. Ablations across 3/4/5 layers settled on an attention-only drafter, 4 layers, block size 9; recommended inference block size is 8–9.
Evidence
Measured on six vision tasks (general VQA, text VQA, captioning, chart VQA, complex reasoning, multi-turn) following the MMSpec benchmark, block size 8:
- MLX on M5 Max: decode 2.30x–3.13x, end-to-end 1.56x–2.62x.
- llama.cpp on M3 Ultra: decode 1.57x–2.14x, end-to-end 1.30x–1.77x.
- H100: decode up to 2.66x, end-to-end 1.64x–2.27x. (The page's "20.4x" lower bound appears to be a typo.)
How to use it
Open-weight, on Hugging Face in Safetensors and GGUF. SGLang (needs DSpark support for LFM2, PR #40651):
python -m sglang.launch_server \
--model-path LiquidAI/LFM2.5-VL-3B \
--speculative-algorithm DSPARK \
--speculative-draft-model-path LiquidAI/LFM2.5-VL-3B-DSpark \
--speculative-draft-attention-backend flashinfer \
--speculative-dspark-block-size 9 \
--disable-radix-cachellama.cpp (PR #29339):
llama-server -m models/LFM2.5-VL-3B-F16.gguf \
--mmproj models/mmproj-LFM2.5-VL-3B-F16.gguf \
-md LFM2.5-2.6B-DSpark-F16.gguf \
--spec-type draft-dspark --spec-draft-n-max 8 --spec-draft-n-min 0 \
-fa on -ngl 99 -c 8192MLX-VLM (PR #2280):
mlx_vlm.server --model LiquidAI/LFM2.5-VL-3B --draft-model LiquidAI/LFM2.5-VL-3B-DSparkLimits
Speculative decoding accelerates only decode, not vision encoding or prefill. On edge devices, prefill (vision encoder + hundreds of visual tokens) dominates wall time, so Amdahl's law caps end-to-end gains well below the decode speedup — this is why device end-to-end numbers trail the decode figures. Each backend requires a specific unmerged/PR build, so day-one support is gated on those PRs landing in your toolchain.
Organisations named here
- Liquid AI
- Hugging Face
- NVIDIA
- Apple
- DSpark
- MMSpec
- SGLang
Technologies named here
- llama.cpp
- LFM2.5-VL-3B
- LFM2.5-VL-3B-DSpark
- MLX-VLM
- SGLang
- LFM2.5-DSpark
- FlashInfer
- MLX
- Hugging Face
- GGUF
- Vision language model
- CUDA
- Metal
Techniques named here
- Speculative decoding for VLMs
- DSpark training recipe
- Amdahl's law limit on speculation
- DSpark speculative decoding
- Attention-only draft model architecture
Related in inference

