До 3,2 раза швидший інференс із LFM2.5-DSpark
- Швидший інференс: до 3,18-кратного підвищення пропускної здатності на GPU і до 2,87 раза на пристрої.
- На шляху до агентного інференсу на пристрої: у середньому скорочує затримку виклику функцій на 57% для LFM2.5-2.6B
- Підтримка llama.cpp і SGLang із першого дня: інтеграцію DSpark, сумісну з LFM, опубліковано у відкритому коді
Як працює DSpark
Фаза декодування в інференсі LLM традиційно обмежена пропускною здатністю пам’яті. Більша частина затримки виникає через передавання ваг із DRAM до SRAM, а не через інтенсивні обчислення. Спекулятивне декодування розв’язує цю проблему, використовуючи легку чернеткову модель для створення кандидатів токенів, після чого цільова модель перевіряє їх усі за один прямий прохід, розподіляючи витрати на завантаження ваг між усіма токенами, які ми перевіряємо.
Протягом років було запропоновано кілька підходів до спекулятивного декодування. Найвідомішими є EAGLE-3, DFlash і, найновіший, DSpark, який поєднує три компоненти:
- Паралельний базовий модуль у стилі DFlash, обумовлений контекстними ознаками цільової моделі, що створює приховані стани для всіх чернеткових токенів за один прямий прохід.
- Легка послідовна головка, змодельована як ланцюг Маркова між сусідніми токенами, яка додає залежність між токенами, підвищуючи коефіцієнт прийняття на пізніших позиціях.
- Верифікатор із плануванням за рівнем упевненості, який прогнозує ймовірність збереження кожного токена та відсікає суфікси з низькою впевненістю, коли їх перевірка коштувала б більше, ніж заощадила.
Навчання та архітектура
Ми дотримуємося рецепта DSpark із більшим і різноманітнішим набором даних, що охоплює дані SFT, чатів, коду та викликів функцій. Згідно з нашими абляційними дослідженнями, перші версії чернеткових моделей є спрощеними чернетковими моделями лише з механізмом уваги, із 5 шарами та блоком із 9. Для кожної чернеткової моделі ми виконали 15 епох на всьому наборі даних і вибрали епоху з найвищим коефіцієнтом прийняття, а не з найнижчою втратою.
Отримані чернеткові моделі є відносно малими: кожна має близько ~300 млн параметрів.
| Компонент | LFM2.5-1.2B-Instruct | LFM2.5-8B-A1B | LFM2.5-2.6B |
|---|---|---|---|
| Стек декодера (5 шарів) | 241.2M | 241.2M | 241.2M |
| Проєкція прихованого стану | 21.0M | 21.0M | 21.0M |
| Головка Маркова | 33.6M | 65.5M | 65.5M |
| Нормалізація + головка впевненості | 27.5k | 27.5k | 27.5k |
| Усього | 295.7M | 327.7M | 327.7M |
Паритет якості
За жадібного декодування чернетковий токен приймається лише в тому разі, якщо він відповідає розподілу цільової моделі. У разі відхилення його замінює власний токен цільової моделі. Тому послідовність, що виводиться, за конструкцією є ідентичною базовому жадібному виводу, тож точність на бенчмарках (pass@1 або точний збіг) не змінюється.
Прискорення інференсу на CPU та GPU
Наші чернеткові моделі DSpark для LFM2.5 із першого дня підтримують llama.cpp (реалізація базується на офіальному коді, який ми запускаємо з експериментальними Metal-ядрами) і **SGLang (**реалізація базується на офіційній реалізації DSpark у SGLang).
Ми вимірюємо пропускну здатність на пристрої за допомогою llama.cpp і Metal на MacBook Pro з M4 Max, використовуючи ваги FP16 GGUF і до 256 вихідних токенів. Пропускну здатність GPU вимірюємо за допомогою SGLang на одному H100 80 ГБ у BF16. В обох конфігураціях використовуються розмір блоку DSpark 9, розмір пакета 1 і температура 0. Ми оцінюємо їх на п’яти наборах даних для бенчмаркінгу.
Усі три моделі-драфтери забезпечують помітне підвищення пропускної здатності як на великомасштабному прискорювачі (H100), так і на периферійному пристрої (MacBook із M4 Max).
Для LFM2.5-2.6B прискорення на MacBook особливо помітне, оскільки воно виводить рівень інтерактивності, доступний користувачеві, далеко за межі пропускної здатності більшості закритих хмарних моделей (близько ~140 ток/с, залежно від набору даних).
| Набір даних | Прийняття (з 10) | Прискорення на H100 | Прискорення на M4 Max |
|---|---|---|---|
| MATH500 | 5.42 | 3.06x 326 → 1000 ток/с | 2.25x 61 → 137 ток/с |
| HumanEval | 4.54 | 2.56x 326 → 835 ток/с | 2.63x 61 → 161 ток/с |
| MBPP | 4.71 | 2.64x 326 → 861 ток/с | 2.11x 62 → 132 ток/с |
| GSM8K | 4.32 | 2.22x 312 → 693 ток/с | 2.36x 60 → 143 ток/с |
| MT-Bench | 5.07 | 2.87x 325 → 933 ток/с | 1.99x 62 → 123 ток/с |
| Середнє | 4.81 | 2.67x 323 → 864 ток/с | 2.27x 61 → 139 ток/с |
У різних сценаріях із кількома інструментами DSpark у середньому зменшує затримку на 57% для LFM2.5-2.6B.
Для LFM2.5-1.2B-Instruct ми спостерігаємо значно більшу варіативність коефіцієнтів прийняття залежно від набору даних, тому прискорення може відрізнятися на 52% залежно від розподілу тексту.
| Набір даних | Прийняття (з 10) | Прискорення на H100 | Прискорення на M4 Max |
|---|---|---|---|
| MATH500 | 6.02 | 2.56x 668 → 1712 ток/с | 2.62x 140 → 366 ток/с |
| HumanEval | 5.31 | 2.26x 664 → 1499 ток/с | 2.87x 136 → 389 ток/с |
| MBPP | 5.52 | 2.37x 667 → 1578 ток/с | 2.74x 137 → 375 ток/с |
| GSM8K | 4.34 | 1.67x 624 → 1041 ток/с | 2.73x 140 → 381 ток/с |
| MT-Bench | 3.90 | 1.66x 657 → 1091 ток/с | 1.72x 137 → 237 ток/с |
| Середнє | 5.02 | 2.10x 656 → 1384 ток/с | 2.54x 138 → 350 ток/с |
Для LFM2.5-8B-A1B коефіцієнт прийняття зростає порівняно із двома щільними моделями, однак на пристрої ми отримуємо в середньому лише 18% покращення. Ця різниця зумовлена поточною реалізацією MoE у бекенді Metal для llama.cpp, а також тим, що перевірка k токенів активує більше експертів і, відповідно, спричиняє більший трафік ваг, ніж один крок декодування.
| Набір даних | Прийняття (з 10) | Прискорення на H100 | Прискорення на M4 Max |
|---|---|---|---|
| MATH500 | 8.27 | 3.18x 428 → 1362 ток/с | 1.21x 93 → 112 ток/с |
| HumanEval | 7.02 | 2.58x 426 → 1100 ток/с | 1.12x 91 → 101 ток/с |
| MBPP | 6.93 | 2.64x 426 → 1122 ток/с | 1.09x 89 → 97 ток/с |
| GSM8K | 4.02 | 1.29x 385 → 496 ток/с | 1.44x 90 → 129 ток/с |
| MT-Bench | 8.52 | 3.02x 426 → 1288 ток/с | 1.04x 87 → 90 ток/с |
| Середнє | 6.95 | 2.54x 418 → 1074 ток/с | 1.18x 90 → 106 ток/с |
Як використовувати LFM2.5-DSpark
Для запуску чернеткових моделей DSpark із SGLang потрібна збірка SGLang із підтримкою DSpark для цілей LFM2 (PR №31041). Запустіть цільову модель із підключеною чернетковою:
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
Потім надсилайте запити до сумісної з OpenAI кінцевої точки за адресою http://localhost:30000/v1. Розмір блоку зчитується з config.json чернеткової моделі; базова конфігурація використовує ту саму команду без трьох прапорців --speculative-*.
Для запуску з llama.cpp потрібна відповідна збірка llama.cpp (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
Розмір блоку зчитується з метаданих супровідного файлу (n-max обмежується цим значенням). Спекулятивне декодування є точним: цільова модель перевіряє кожен запропонований токен, тому жадібний результат відповідає результату самої цільової моделі; timings для кожної відповіді містить draft_n / draft_n_accepted.
Початок роботи
Контрольні точки чернеткових моделей DSpark доступні на Hugging Face у форматі Safetensors і GGUF:
- Safetensors: LFM2.5-2.6B-DSpark, LFM2.5-1.2B-Instruct-DSpark і LFM2.5-8B-A1B-DSpark
- GGUF: LFM2.5-2.6B-DSpark-GGUF, LFM2.5-1.2B-Instruct-DSpark-GGUF, LFM2.5-8B-A1B-DSpark-GGUF
Ми з нетерпінням чекаємо, що ви створите.
Цитування
Для цитування використовуйте наведене нижче посилання або BibTeX:
Liquid AI, «LFM2.5-DSpark: до 3,2 раза швидший інференс від H100 до MacBook», блог Liquid AI, серпень 2026 року.
@article{liquidAI2026dspark,
author = {Liquid AI},
title = {LFM2.5-DSpark: Up to 3.2x Faster Inference from H100 to MacBook},
journal = {Liquid AI Blog},
year = {2026},
note = {www.liquid.ai/blog/lfm2.5-dspark},
}
Моделі, згадані в цій статті 6
Статті, згадані в цій статті 3
Спільнота
· Зареєструйтеся або увійдіть, щоб коментувати
Моделі, згадані в цій статті 6
Статті, згадані в цій статті 3
Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.



