LFM2.5-VL-3B-DSpark
LFM2.5-VL-3B-DSpark is an experimental speculative-decoding draft model that brings DSpark to
vision-language models. It allows LiquidAI/LFM2.5-VL-3B
to decode substantially faster without changing its output, for a minimal increase in memory footprint.
This is a drafter for LiquidAI/LFM2.5-VL-3B. In SGLang on a single H100, decoding runs up to 2.66Γ faster. On Apple silicon, it reaches up to 3.13Γ with MLX-VLM on an M5 Max and up to 2.14Γ with llama.cpp on an M3 Ultra.
Find more information about LFM2.5-VL-3B-DSpark in our blog post.
ποΈ Model Details
LFM2.5-VL-3B-DSpark is a DSpark speculative-decoding draft model with the following features:
- Target model:
LiquidAI/LFM2.5-VL-3B - Draft parameters: 279.5M (BF16)
- Backbone: 4 full attention layers,
hidden_size=2048,intermediate_size=6144with SiLU/SwiGLU, GQA withnum_attention_heads=32/num_key_value_heads=8,head_dim=64 - Extra heads: Markov head (rank 256) + confidence head
- Block size: 9 during training; 8 or 9 at inference, depending on hardware
- Vocabulary: 128,000
On Apple silicon the drafter is run at block size 8 rather than 9.
Use each drafter checkpoint with its corresponding target model:
| Drafter | Target |
|---|---|
| LFM2.5-VL-3B-DSpark | LFM2.5-VL-3B |
| LFM2.5-VL-3B-DSpark-GGUF | LFM2.5-VL-3B-GGUF |
π Performance
Benchmarks
Speculative decoding is exact under greedy decoding: the target verifies every proposed token, so the generated text is what the target would have produced on its own. Under matched sampling settings at non-zero temperatures, speculative decoding preserves the target model's output distribution. You get the speedup, not a different model.
See LiquidAI/LFM2.5-VL-3B for quality benchmarks.
Draft acceptance
This table reports the mean number of draft tokens accepted per target verification pass at batch size 1 and temperature 0. Higher acceptance generally enables greater acceleration, but the measured speedup also depends on hardware and runtime overhead.
Following MMSpec, the evaluation covers General VQA, Text VQA, Image Captioning, Chart VQA, Complex Reasoning, and Multi-turn Conversation.
| Benchmark | 1ΓH100 (SGLang, block 9) | Apple M5 Max (MLX-VLM, block 8) | Apple M3 Ultra (llama.cpp, block 8) |
|---|---|---|---|
| MMMU-Pro | 4.11 | 4.07 | 4.19 |
| Multi-turn | 3.46 | 3.24 | 3.31 |
| COCO | 4.57 | 4.21 | 4.50 |
| CharXiv | 4.11 | 4.34 | 4.04 |
| TextVQA | 3.74 | 4.08 | 3.58 |
| GQA | 4.14 | 3.77 | 3.93 |
Measured inference speedup
This table reports the resulting runtime performance relative to the same target model without DSpark. Each cell is formatted as decode / end-to-end.
| Dataset | 1ΓH100 (SGLang) | Apple M5 Max (MLX-VLM) | Apple M3 Ultra (llama.cpp) |
|---|---|---|---|
| MMMU-Pro | 2.43Γ / 1.97Γ | 2.93Γ / 2.62Γ | 2.03Γ / 1.74Γ |
| Multi-turn | 2.04Γ / 1.83Γ | 2.30Γ / 1.91Γ | 1.57Γ / 1.37Γ |
| COCO | 2.66Γ / 2.27Γ | 3.13Γ / 2.59Γ | 2.14Γ / 1.77Γ |
| CharXiv | 2.39Γ / 1.97Γ | 2.94Γ / 1.71Γ | 1.87Γ / 1.56Γ |
| TextVQA | 2.14Γ / 1.64Γ | 2.69Γ / 1.56Γ | 1.64Γ / 1.33Γ |
| GQA | 2.35Γ / 1.77Γ | 2.67Γ / 1.93Γ | 1.77Γ / 1.30Γ |
All measurements use 16-bit processing for both the vision encoder and language backbone. The H100 results use SGLang on one H100 80GB in BF16 at batch size 1, temperature 0, and block size 9. The Apple results use FP16 weights at batch size 1, temperature 0, block size 8, and up to 2,048 output tokens. Measurements were collected with Pipette.
π Inference
LFM2.5-VL-3B-DSpark is supported by SGLang for NVIDIA GPUs and MLX-VLM for Apple silicon. For llama.cpp, use the GGUF checkpoint.
SGLang
Requires SGLang v0.5.19 or newer. Launch the target with the draft attached:
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-cache --mem-fraction-static 0.8 --port 30000
Then query the OpenAI-compatible endpoint at http://localhost:30000/v1. The baseline is the same command without the --speculative-* flags.
MLX-VLM
On Apple silicon, use MLX-VLM v0.7.2 or newer. The drafter is detected automatically when passed with --draft-model:
python -m mlx_vlm.generate \
--model LiquidAI/LFM2.5-VL-3B \
--draft-model LiquidAI/LFM2.5-VL-3B-DSpark \
--draft-block-size 8 \
--image /path/to/image.jpg \
--prompt "Describe this image." \
--max-tokens 256 \
--temperature 0
DSpark decoding in MLX-VLM currently uses greedy sampling, so set --temperature 0.
π¬ Contact
- Got questions or want to connect? Join our Discord community
- If you are interested in custom solutions with edge deployment, please contact our sales team.
Citation
@article{liquidAI2026VL3B,
author = {Liquid AI},
title = {LFM2.5-VL-3B: A Better and Faster Vision-Language Model for the Edge},
journal = {Liquid AI Blog},
year = {2026},
note = {www.liquid.ai/blog/lfm2-5-vl-3b},
}
@article{liquidAI2026vldspark,
author = {Liquid AI},
title = {LFM2.5-VL-DSpark: Accelerating vision-language models on edge and beyond},
journal = {Liquid AI Blog},
year = {2026},
note = {www.liquid.ai/blog/lfm2-5-vl-dspark},
}
- Downloads last month
- 79
Model tree for LiquidAI/LFM2.5-VL-3B-DSpark
Base model
LiquidAI/LFM2.5-2.6B-Base