Sooner inference: as much as 3.18 throughput enchancment on a GPU and as much as 2.87x on-device.
Towards on-device agentic inference: cuts function-calling latency by 57% on common for LFM2.5-2.6B
Day-one assist for llama.cpp and SGLang: LFM-compatible DSpark integration is open-sourced upstream
How does DSpark work
The decode section in LLM inference is historically memory-bound. Most latency comes from streaming weights from DRAM into SRAM, not from intense computation. Speculative decoding addresses this by utilizing a light-weight draft mannequin to provide candidate tokens, then having the goal mannequin confirm all of them in a single ahead go, sharing the price of loading the weights throughout all tokens we confirm.
Through the years, a number of approaches of hypothesis have been proposed, with probably the most distinguished being EAGLE-3, DFlash, and, most lately, DSpark, which mixes three parts:
DFlash-style parallel spine conditioned on the goal mannequin’s context options, producing hidden states for all draft tokens in a single ahead go.
A light-weight sequential head, modeled as a Markov chain between neighboring tokens, that provides inter-token dependency, elevating the acceptance charge at later positions.
A confidence-scheduled verifier that predicts every token’s survival chance and prunes low-confidence suffixes when verification would value greater than it saves.

Coaching and Structure
We observe the DSpark recipe with a bigger and extra various information combine masking SFT, chat, code, and function-calling information. Based mostly on our ablations, the primary variations of the draft fashions are simplified attention-only draft fashions, with 5 layers and a block of 9. For every draft mannequin, we ran 15 epochs on the whole dataset and chosen the epoch with the best acceptance charge somewhat than the bottom loss.
The ensuing draft fashions are comparatively small, with every round ~300M parameters.
Part
LFM2.5-1.2B-Instruct
LFM2.5-8B-A1B
LFM2.5-2.6B
Decoder stack (5 layers)
241.2M
241.2M
241.2M
Hidden-state projection
21.0M
21.0M
21.0M
Markov head
33.6M
65.5M
65.5M
Norms + confidence head
27.5k
27.5k
27.5k
Whole
295.7M
327.7M
327.7M
High quality parity
Beneath grasping decoding, a draft token is just accepted if it matches the goal mannequin’s distribution. On rejection, the goal mannequin’s personal token takes its place. The emitted sequence is due to this fact similar to baseline grasping by development, so benchmark accuracy (go@1 or actual match) is unchanged.
Inference Velocity Up on CPU and GPU
Our DSpark draft fashions for LFM2.5 ship with day-one assist for llama.cpp (implementation builds on prime of the official codebase, which we run with experimental steel kernels) and **SGLang (**implementation builds on the official SGLang implementation of DSpark).
We measure on-device throughput with llama.cpp and Metallic on an M4 Max MacBook Professional utilizing FP16 GGUF weights and as much as 256 output tokens. We measure GPU throughput with SGLang on a single H100 80 GB in BF16. Each configurations use a DSpark block measurement of 9, a batch measurement of 1, and a temperature of 0. We consider them on 5 benchmark datasets.
All three drafter fashions ship noticeable throughput enhancements on each the large-scale accelerator (H100) and the sting deployment (M4 Max MacBook).
For LFM2.5-2.6B, speedup on the MacBook is particularly noticeable, because it pushes the interactivity stage a person can take pleasure in far past the throughput supplied by most proprietary cloud fashions (round ~140 tok/s, relying on the dataset).
Dataset
Acceptance (of 10)
Speedup on H100
Speedup on M4 Max
MATH500
5.42
3.06x 326 → 1000 tok/s
2.25x 61 → 137 tok/s
HumanEval
4.54
2.56x 326 → 835 tok/s
2.63x 61 → 161 tok/s
MBPP
4.71
2.64x 326 → 861 tok/s
2.11x 62 → 132 tok/s
GSM8K
4.32
2.22x 312 → 693 tok/s
2.36x 60 → 143 tok/s
MT-Bench
5.07
2.87x 325 → 933 tok/s
1.99x 62 → 123 tok/s
Imply
4.81
2.67x 323 → 864 tok/s
2.27x 61 → 139 tok/s
Throughout numerous multi-tool situations, DSpark reduces the latency by 57% on common for LFM2.5-2.6B.

For LFM2.5-1.2B-Instruct, we see far more variance in dataset acceptance charges, so speedup varies by as a lot as 52% relying on the underlying textual content distribution.
Dataset
Acceptance (of 10)
Speedup on H100
Speedup on M4 Max
MATH500
6.02
2.56x 668 → 1712 tok/s
2.62x 140 → 366 tok/s
HumanEval
5.31
2.26x 664 → 1499 tok/s
2.87x 136 → 389 tok/s
MBPP
5.52
2.37x 667 → 1578 tok/s
2.74x 137 → 375 tok/s
GSM8K
4.34
1.67x 624 → 1041 tok/s
2.73x 140 → 381 tok/s
MT-Bench
3.90
1.66x 657 → 1091 tok/s
1.72x 137 → 237 tok/s
Imply
5.02
2.10x 656 → 1384 tok/s
2.54x 138 → 350 tok/s
For LFM2.5-8B-A1B, the acceptance charge will increase in comparison with two dense fashions, but on-device we get solely an 18% enchancment on common. This hole is because of the present MoE implementation in llama.cpp’s Metallic backend, and to the truth that verifying ok tokens prompts extra specialists and thus extra weight site visitors than a single decode step.
Dataset
Acceptance (of 10)
Speedup on H100
Speedup on M4 Max
MATH500
8.27
3.18x 428 → 1362 tok/s
1.21x 93 → 112 tok/s
HumanEval
7.02
2.58x 426 → 1100 tok/s
1.12x 91 → 101 tok/s
MBPP
6.93
2.64x 426 → 1122 tok/s
1.09x 89 → 97 tok/s
GSM8K
4.02
1.29x 385 → 496 tok/s
1.44x 90 → 129 tok/s
MT-Bench
8.52
3.02x 426 → 1288 tok/s
1.04x 87 → 90 tok/s
Imply
6.95
2.54x 418 → 1074 tok/s
1.18x 90 → 106 tok/s
Learn how to use LFM2.5-DSpark
Working the DSpark draft fashions with SGLang requires an SGLang construct with DSpark assist for LFM2 targets (PR #31041). Launch the goal with the draft hooked up:
python -m sglang.launch_server
–model-path LiquidAI/LFM2.5-2.6B
–speculative-algorithm DSPARK
–speculative-draft-model-path LiquidAI/LFM2.5-2.6B-DSpark
–speculative-draft-attention-backend flashinfer
–disable-radix-cache –mem-fraction-static 0.75 –port 30000
Then question the OpenAI-compatible endpoint at http://localhost:30000/v1. The block measurement is learn from the draft’s config.json; the baseline is identical command with out the three –speculative-* flags.
Working them with llama.cpp requires the respective llama.cpp construct (PR#27383).
llama-server -m LFM2.5-2.6B-F16.gguf
-md LFM2.5-2.6B-DSpark-F16.gguf
–spec-type draft-dspark –spec-draft-n-max 10 –spec-draft-n-min 0
-fa on -ngl 99
The block measurement is learn from the sidecar metadata (n-max is clamped to it). Speculative decoding is actual: the goal verifies each proposed token, so grasping output equals the goal alone; per-response timings report draft_n / draft_n_accepted.
Get Began
The DSpark draft mannequin checkpoints can be found on Hugging Face as Safetensors and in GGUF format:
We will’t wait to see what you construct.
Quotation
For citations, please use the next reference or BibTeX:
Liquid AI, “LFM2.5-DSpark: As much as 3.2x Sooner Inference from H100 to MacBook”, Liquid AI Weblog, Aug 2026.
@article{liquidAI2026dspark,
creator = {Liquid AI},
title = {LFM2.5-DSpark: As much as 3.2x Sooner Inference from H100 to MacBook},
journal = {Liquid AI Weblog},
12 months = {2026},
word = {www.liquid.ai/weblog/lfm2.5-dspark},
}

