What changed
On August 20, Liquid AI released DSpark draft-model checkpoints for LFM2.5-1.2B-Instruct, LFM2.5-2.6B and LFM2.5-8B-A1B in Safetensors and GGUF form. Each draft model is roughly 296M–328M parameters and implements a DSpark-style parallel draft backbone with a lightweight sequential Markov head and confidence-based pruning. Liquid also published working paths for llama.cpp and SGLang. The target model verifies proposed tokens, so Liquid says greedy decoding preserves the target model's baseline output while reducing decoding work when enough draft tokens are accepted.
Why it matters
Speculative decoding is useful only when a builder can obtain a compatible draft model, run it in the serving stack they already use, and measure a real end-to-end speed gain. Liquid's release packages those pieces for three relatively small open LFM models instead of leaving teams to train their own drafter. That is particularly relevant to local and on-device inference where memory bandwidth, not arithmetic, often dominates token generation. The trade-off is workload sensitivity: Liquid's own results range from large gains to only an 18% average improvement for the 8B-A1B model on M4 Max, and community llama.cpp reports show that speculative paths still have integration and quantization edge cases that should be tested rather than assumed away.
Three small draft checkpoints sit beside the target models
Liquid released DSpark companions for LFM2.5-1.2B-Instruct, LFM2.5-2.6B and LFM2.5-8B-A1B. The draft models use five attention-only layers with a block size of nine plus a Markov head and confidence head, totaling about 296M parameters for the 1.2B target and about 328M for the two larger targets. Safetensors and GGUF artifacts are available, so builders do not need to reproduce the training recipe before evaluating the technique.
The speed gains are real claims, not a universal constant
Liquid measured batch-one greedy decoding on one H100 80 GB through SGLang and an M4 Max MacBook through llama.cpp/Metal. Its published results reach 3.18× on H100 and 2.87× on M4 Max for individual benchmark/model combinations. The 2.6B model averaged 2.67× on H100 and 2.27× on M4 Max across five datasets, while the 8B-A1B model averaged 2.54× on H100 but only 1.18× on M4 Max because of current MoE/Metal behavior. These are first-party measurements and acceptance rates vary with text distribution.
Greedy output should match because the target verifies proposals
The drafter proposes a block, but the target model remains the verifier. Liquid describes greedy output as identical to running the target alone because rejected proposals are replaced by the target's own token. That is an important property for adoption: the intended optimization changes how tokens are produced, not the target model's greedy decision rule. Builders should still regression-test their actual serving build; llama.cpp users have reported speculative-decoding divergence with some quantized targets, an issue not established as specific to Liquid's checkpoints.
llama.cpp and SGLang make this deployable now, with boundaries
Liquid documents `draft-dspark` usage in llama.cpp and the `DSPARK` speculative algorithm in SGLang. That makes local and server deployment accessible through familiar stacks. The integration is not equally mature for every embedding scenario: a recent llama.cpp issue notes that speculative decoding lives in the server/common layer and is not exposed through the core C API for in-process hosts, so language bindings that drive `llama_decode` directly may need their own orchestration.