Все статьи
Артемий Мазаев·· 7 мин чтения

Diffusion LLM: как генерировать текст не слева-направо 🌫️⚡

Неавторегрессионная генерация текста через итеративный denoising — механика masked-diffusion (LLaDA), почему это ломает KV-кэш и чем отличается от спекулятивного декодинга, игроки (Mercury 2, NVIDIA Nemotron TwoTower) и разбор Celeris-1: заявлено vs независимо измерено.

Diffusion LLM: как генерировать текст не слева-направо 🌫️⚡

Ну чё, малютки, весь этот блог про инференс молча держал одно допущение: текст генерируется слева направо, по одному токену за проход. Авторегрессия — в KV-кэше, в спекулятивном декодинге, в любой модели, которую вы гоняли. Diffusion LLM выбрасывают это допущение целиком: последовательность рождается вся сразу, из шума, за несколько параллельных проходов — и в проде это уже 1000–2000 токенов в секунду. Разбираем механику, почему она ломает KV-кэш, и заодно проверяем на свежем релизе, что «быстро» и «diffusion в пресс-релизе» — не то же самое, что «хорошо» и «подтверждённый diffusion».

🔥Суть за 10 секунд

Авторегрессия выдаёт по одному токену за forward-проход, слева направо. Diffusion LLM (masked-denoising, как в LLaDA) стартует с полностью замаскированной последовательности и за N проходов раскрывает её — на каждом проходе предсказывая много токенов сразу, параллельно. Это даёт throughput, но ломает привычный KV-кэш: внимание двунаправленное, токены меняются между шагами, кэшировать «прошлое» нечего. В проде: Mercury 2 (Inception), NVIDIA Nemotron TwoTower. И сразу урок про доверие к цифрам: Celeris-1 заявляет 1664 ток/с — а независимый Artificial Analysis намерил даже больше (2053), но с Intelligence Index 12 из нижней трети рейтинга.


Часть 1: Как работает denoising-декодинг

Авторегрессионная модель строит текст как цепочку условных вероятностей: каждый следующий токен — функция всех предыдущих, строго слева направо, один за проход. Diffusion заходит иначе. Идея пришла из генерации картинок (там из шума «проявляют» изображение), но для текста берут дискретный вариант — masked diffusion.

Работает так (формулировка — из пейпера LLaDA, arXiv:2502.09992): последовательность стартует полностью замаскированной, все позиции — спецтокен [MASK]. Дальше идёт обратный процесс из нескольких шагов: на каждом шаге модель смотрит на текущее (частично раскрытое) состояние и предсказывает все замаскированные токены сразу, параллельно. Часть предсказанных токенов фиксируется, часть снова маскируется по расписанию — и так, пока не раскрыта вся последовательность.

Обучают это простым объективом — кросс-энтропией только по замаскированным позициям, взвешенной на долю маскирования (LLaDA, уравнение 3):

L(θ)Et,x0,xt[1ti=1L1[xti=M]logpθ(x0ixt)]\mathcal{L}(\theta) \triangleq -\,\mathbb{E}_{t,\,x_0,\,x_t}\left[\frac{1}{t}\sum_{i=1}^{L} \mathbf{1}[x_t^i = M]\cdot \log p_\theta(x_0^i \mid x_t)\right]

Индикатор 1[xti=M]\mathbf{1}[x_t^i = M] включает потерю только на замаскированных токенах, 1t\frac{1}{t} нормирует на долю маскирования, а logpθ\log p_\theta — обычная кросс-энтропия предсказания против чистого токена. Обобщённая непрерывная форма (Shi et al., arXiv:2406.04329) — «взвешенный интеграл кросс-энтропий», та же по форме вещь.

🌫️ Denoising vs авторегрессия по проходам
Один «проход» — один forward модели. Diffusion раскрывает несколько токенов за проход (и не слева направо), авторегрессия — строго по одному слева направо. Жми «шаг» или «играть».
Diffusion (параллельно)проходов: 0 / 4
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
Авторегрессия (по одному)проходов: 0 / 8
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
К 4-му проходу diffusion уже собрал всю фразу, авторегрессии нужно 8. Именно параллельная выдача токенов за проход даёт diffusion-моделям throughput — ценой того, что каждый проход тяжелее (нужно двунаправленное внимание по всей длине). Схема расписания здесь иллюстративная, у реальных моделей раскрытие идёт по уверенности предсказаний.

Ключевой параметр — число шагов сэмплинга. Оно же — ручка компромисса: больше шагов → выше качество, ниже скорость; меньше шагов → быстрее, но грубее (LLaDA прямо называет это «trade-off between efficiency and sample quality»). А порядок раскрытия — не слева направо: LLaDA использует low-confidence remasking (сначала фиксируют токены, в которых модель уверена, остальные перепредсказывают) и semi-autoregressive вариант по блокам.

И главное для следующей части: чтобы предсказывать всё сразу, diffusion-модель не использует каузальную маску. Дословно из LLaDA: «LLaDA does not use a causal mask, as its formulation allows it to see the entire input for predictions». Каждый токен видит всю последовательность — и в обе стороны.


Часть 2: Почему это ломает KV-кэш и чем отличается от спекулятивного декодинга

В статье про KV-кэш вся экономия держалась на двух вещах: каузальной маске (токен видит только прошлое) и том, что посчитанные K и V прошлых токенов заморожены — их кладут в кэш и переиспользуют, дописывая по одному столбцу на каждый новый токен. Diffusion выбивает обе опоры.

🧱 Почему diffusion ломает KV-кэш
Матрица внимания: строка — токен-запрос, столбец — токен-ключ. Закрашено = запрос видит ключ. Переключи режим.
↓ запрос · → ключ
Каузальная маска: токен видит только прошлое (нижний треугольник). K и V прошлых токенов уже посчитаны и заморожены — их кладут в KV-кэш и переиспользуют на каждом следующем шаге, не пересчитывая.
Кэш работает: прошлое неизменно, дописываем по одному столбцу.

Внимание двунаправленное — никакого треугольника, полный квадрат. И токены меняются между шагами denoising: то, что было замаскировано, раскрывается и переписывает контекст для соседей. «Прошлого» в привычном авторегрессионном смысле просто нет, замораживать и переиспользовать нечего — на каждом шаге K/V пересчитываются. Поэтому наивный инкрементальный KV-кэш к diffusion неприменим; нужны отдельные приближения, вроде block-wise-кэша из Fast-dLLM (arXiv:2505.22618, коллаборация с участием NVIDIA-команды), который ценой аккуратных допущений возвращает часть экономии — и заявляет до 27.6× ускорения.

Тут важно не спутать diffusion со спекулятивным декодингом. Оба про «сделать генерацию быстрее», но это разные вещи. Спекулятивный декодинг остаётся авторегрессией: черновая модель угадывает несколько токенов вперёд, основная их верифицирует, и результат бит-в-бит совпадает с обычной авторегрессией — это ускорение без смены распределения. Diffusion меняет сам процесс генерации: это не «та же авторегрессия, но быстрее», а другой способ порождать текст.


Часть 3: Игроки

Diffusion-текст перестал быть академической игрушкой — на нём уже строят коммерческий инференс.

Mercury 2 от Inception Labs — линейка diffusion LLM с контекстом 128K и ценой $0.25 / $0.75 за 1M токенов (вход/выход, кэшированный вход — $0.025). На сайте Inception скорость подаётся как «1000+ токенов/с» на коммерческих GPU NVIDIA — это маркетинговый пол, не привязанный к конкретному железу. Твёрдые же, привязанные к H100 числа есть в пейпере исходного Mercury (arXiv:2506.17298): 1109 ток/с у Mini и 737 ток/с у Small, «до 10×» быстрее скоростных фронтир-моделей при сопоставимом качестве. Точную дату релиза Mercury 2 Inception внятно не назвала — это лето 2026.

128K / $0.25 / $0.75Mercury 2, Inception

Контекст 128K, цена входа/выхода $0.25 / $0.75 за 1M. Скорость «1000+ ток/с» — маркетинговый пол по всем NVIDIA GPU; hard-число 1109 ток/с на H100 — из пейпера исходного Mercury.

NVIDIA Nemotron TwoTower (arXiv:2606.26493, 1 июля 2026) — не diffusion с нуля, а diffusion поверх авторегрессионного бэкбона. Архитектура из двух башен: замороженная AR-башня каузально обрабатывает чистые токены, обучаемая diffusion-башня денойзит. Построено на бэкбоне Nemotron-3-Nano-30B, обучали только денойзер (~2.1 триллиона токенов). По разбору MarkTechPost — 2.42× throughput при сохранении 98.7% качества AR-бейзлайна (эти множители вторичны, у самой NVIDIA в PDF стоит перепроверить). Смысл подхода: не выкидывать годы обучения авторегрессионных моделей, а прикрутить diffusion-декодер сверху.

⚡ Throughput: авторегрессия vs diffusion
Output-скорость, токенов/с (одиночный поток). Порядок величины, не контролируемый бенчмарк — сетапы разные.
gpt-oss-120b (AR)193,5 ток/с
Artificial Analysis, измеренная output speed
Mercury Mini (diffusion)1 109 ток/с
пейпер Mercury, arXiv:2506.17298, H100
Celeris-1 (заявлена diffusion)2 053 ток/с
Artificial Analysis, измеренная output speed
Числа с разного железа и сетапов (H100 vs облачные замеры Artificial Analysis), при разном размере модели и батче — прямое сравнение некорректно, это иллюстрация порядка: AR-фронтир держится в районе 100–200 ток/с на поток, diffusion выходит на 1000–2000. И да, Celeris по скорости реальна — вопросы к ней по качеству, не к throughput (см. ниже).

Часть 4: Заявлено vs независимо измерено

И тут — свежий повод вспомнить статью про бенчмарки. 27 июля 2026 вышел Celeris-1 с пресс-релизом, где заявлены 1664 ток/с, 158 мс latency, 75.9% MMLU-Pro и «24× быстрее GPT-5», позиционируется как diffusion.

🔍 Celeris-1: заявлено vs независимо измерено
Переключи вкладку. Соль не в том, что вендор наврал про скорость — она реальна. Соль в качестве и в самом ярлыке «diffusion».
Скорость1664 ток/с (заявлено)
Качество75.9% MMLU-Pro (заявлено)
Маркетинг«24× быстрее GPT-5», позиционируется как diffusion
Цифры пресс-релиза (75.9% MMLU-Pro, «24× быстрее GPT-5») независимо не подтверждены. Independent-скор Artificial Analysis: Intelligence Index 12 — при том, что скорость измерена даже выше заявленной. «Быстро» и «умно» — разные оси, и слово «diffusion» в пресс-релизе ≠ подтверждённый diffusion.

Соль — не в том, что вендор наврал про скорость. Наоборот: независимый Artificial Analysis намерил 2053 ток/с — даже выше заявленного. Проблема в другом. Intelligence Index у Celeris-1 — 12, это 46-е место из 72, нижняя треть; заявленные 75.9% MMLU-Pro независимо не подтверждаются (и плохо вяжутся с таким низким сводным индексом). Цена у AA — $2 / $6 за 1M, кратно дороже Mercury 2. И отдельно: у Artificial Analysis Celeris-1 не значится как diffusion-модель — тега diffusion на её странице нет (хотя и явного «это не diffusion» там тоже нет, так что аккуратно: это отсутствие подтверждения, а не опровержение).

Мораль ровно та же, что в статье про бенчмарки: «быстро» и «умно» — разные оси, и слово «diffusion» в пресс-релизе само по себе ничего не подтверждает. Скорость проверяется независимым замером, качество — независимым бенчмарком, архитектура — не маркетингом.


TL;DR

1Механика: masked-diffusion (LLaDA, arXiv:2502.09992) стартует с полностью замаскированной последовательности и за N проходов раскрывает её, предсказывая много токенов за проход параллельно — против одного-за-проход у авторегрессии
2Компромисс: число шагов сэмплинга — ручка «качество vs скорость»; порядок раскрытия не слева направо (low-confidence remasking)
3KV-кэш ломается: внимание двунаправленное (нет каузальной маски), токены меняются между шагами — наивный инкрементальный кэш неприменим, нужны приближения (Fast-dLLM, block-wise cache)
4Не спекулятивный декодинг: спек-декодинг остаётся авторегрессией с бит-в-бит тем же результатом; diffusion меняет сам процесс генерации
5Игроки: Mercury 2 (128K, $0.25/$0.75, «1000+ ток/с»; исходный Mercury — 1109 ток/с на H100), NVIDIA Nemotron TwoTower (diffusion-денойзер на замороженном AR-бэкбоне)
6Реальность цифр: Celeris-1 заявляет 1664 ток/с — AA намерил 2053 (быстрее!), но Intelligence Index 12 (#46/72), и как diffusion у AA не значится. Быстро ≠ умно, «diffusion» в пресс-релизе ≠ подтверждённый diffusion

Diffusion LLM — не «авторегрессия, но быстрее», а другой способ порождать текст: параллельно и из шума, ценой более тяжёлого прохода и сломанного KV-кэша. Пока качество лучших diffusion-моделей догоняет, а не обгоняет, авторегрессионный фронтир — но парадигма уже в проде, и throughput там честно на порядок выше. Смотреть стоит на независимые замеры, а не на пресс-релизы. 🫡


Источники

  1. LLaDA: Large Language Diffusion Models (arXiv:2502.09992)
  2. Simplified and Generalized Masked Diffusion for Discrete Data — Shi et al. (arXiv:2406.04329)
  3. Discrete Diffusion Modeling by Estimating the Ratios of the Data Distribution — SEDD, Lou et al. (arXiv:2310.16834)
  4. Fast-dLLM: Training-free Acceleration of Diffusion LLM via KV Cache and Parallel Decoding (arXiv:2505.22618)
  5. Mercury: Ultra-Fast Language Models Based on Diffusion — Inception Labs (arXiv:2506.17298)
  6. Inception Labs — Models (Mercury 2)
  7. Nemotron-Labs-TwoTower: Diffusion Language Modeling with Pretrained Autoregressive Context (arXiv:2606.26493)
  8. Celeris-1 — Artificial Analysis
  9. gpt-oss-120b — Artificial Analysis (AR baseline throughput)
  10. KV-кэш: почему LLM помнит без памяти и жрёт VRAM
  11. Спекулятивный декодинг: ускоряем LLM в 2–3 раза
  12. LLM-бенчмарки: как считают и как их обманывают