Liquid AI shipped DSpark draft checkpoints for three LFM2.5 models on August 20: the 1.2B-Instruct, 2.6B, and 8B-A1B. The speculative decoding technique hits 3.18x throughput on H100 and 2.87x on M4 Max, with no output quality degradation.
Speculative decoding runs a small draft model that proposes candidate tokens, then lets the target model verify the entire batch in one forward pass. DSpark adds three components: a parallel backbone that generates hidden states for all draft tokens in a single pass, a Markov head that models inter-token dependencies to raise acceptance rates, and a confidence-scheduled verifier that prunes low-confidence suffixes before verification overhead exceeds the speedup gain.
Each draft model is roughly 300M parameters: 295.7M for the 1.2B, 327.7M for the 2.6B and 8B-A1B. Training ran 15 epochs on SFT, chat, code, and function-calling data. The release checkpoint was selected for highest acceptance rate, not lowest loss.
| Target Model | Draft Params | Training Epochs | Training Data | Checkpoint Selection |
|---|---|---|---|---|
| LFM2.5-1.2B-Instruct | 295.7M | 15 | SFT, chat, code, function-calling | Highest acceptance rate |
| LFM2.5-2.6B | 327.7M | 15 | SFT, chat, code, function-calling | Highest acceptance rate |
| LFM2.5-8B-A1B | 327.7M | 15 | SFT, chat, code, function-calling | Highest acceptance rate |
On H100, the 8B-A1B shows the strongest gains: MATH500 reaches 3.18x (428 → 1362 tok/s, 8.27/10 acceptance), MT-Bench hits 3.02x (426 → 1288 tok/s), and the five-benchmark mean is 2.54x (418 → 1074 tok/s). The 2.6B averages 2.67x on H100 (323 → 864 tok/s). The 1.2B averages 2.10x (656 → 1384 tok/s absolute). Function-calling latency drops 57% on the 2.6B across multi-tool scenarios. Output is identical to unassisted greedy decoding by construction: rejected draft tokens are replaced by the target model's own token.
| Model | Benchmark | Baseline (tok/s) | DSpark (tok/s) | Speedup | Acceptance Rate |
|---|---|---|---|---|---|
| LFM2.5-8B-A1B | MATH500 | 428 | 1362 | 3.18× | 8.27/10 |
| LFM2.5-8B-A1B | MT-Bench | 426 | 1288 | 3.02× | — |
| LFM2.5-8B-A1B | 5-benchmark mean | 418 | 1074 | 2.54× | — |
| LFM2.5-2.6B | 5-benchmark mean | 323 | 864 | 2.67× | — |
| LFM2.5-1.2B-Instruct | 5-benchmark mean | 656 | 1384 | 2.10× | — |
On-device results are mixed. The 2.6B on M4 Max reaches 2.27x (61 → 139 tok/s), matching or exceeding most proprietary cloud APIs at the edge. The 1.2B on M4 Max averages 2.54x (138 → 350 tok/s mean across five benchmarks; MATH500 specifically reaches 140 → 366 tok/s, HumanEval 136 → 389 tok/s). The 8B-A1B, however, averages only 1.18x on M4 Max (90 → 106 tok/s) versus 2.54x on H100. The gap stems from llama.cpp's Metal backend MoE implementation: verifying a token block activates more experts per step, generating more weight traffic than baseline and eroding the speculative decoding gain.
| Model | Benchmark | Baseline (tok/s) | DSpark (tok/s) | Speedup | Note |
|---|---|---|---|---|---|
| LFM2.5-1.2B-Instruct | 5-benchmark mean | 138 | 350 | 2.54× | — |
| LFM2.5-1.2B-Instruct | MATH500 | 140 | 366 | 2.61× | — |
| LFM2.5-1.2B-Instruct | HumanEval | 136 | 389 | 2.86× | — |
| LFM2.5-2.6B | 5-benchmark mean | 61 | 139 | 2.27× | Matches/exceeds most cloud APIs at edge |
| LFM2.5-8B-A1B | 5-benchmark mean | 90 | 106 | 1.18× | MoE Metal backend erodes gain |
GSM8K acceptance for the 8B-A1B drops to 4.02/10—the lowest across all combinations—producing 1.29x speedup (385 → 496 tok/s) instead of 3.18x. Acceptance rate is the primary lever: draft-model overhead cancels savings when tokens are rejected. Teams evaluating DSpark should profile acceptance rates on their specific data before committing.
DSpark delivers material H100 gains across all three sizes with no accuracy regression, but MoE on Apple Silicon remains problematic. Defer 8B-A1B on-device until llama.cpp's Metal MoE path matures.