Диффузионные языковые модели: как устроены, что в них работает, а что вызывает вопросы. dllm.. dllm. llm.. dllm. llm. Natural Language Processing.. dllm. llm. Natural Language Processing. Блог компании AIRI.. dllm. llm. Natural Language Processing. Блог компании AIRI. диффузионные языковые модели.. dllm. llm. Natural Language Processing. Блог компании AIRI. диффузионные языковые модели. искусственный интеллект.. dllm. llm. Natural Language Processing. Блог компании AIRI. диффузионные языковые модели. искусственный интеллект. Машинное обучение.

На связи команды «Интерпретируемый ИИ» и «Основы генеративного ИИ» AIRI и «Генеративная поэзия» SberAI. Мы занимаемся альтернативными архитектурами языковых моделей — тем, что могло бы работать вместо привычной генерации токен за токеном слева направо.

Одно из таких направлений — диффузионные языковые модели (dLLM). Диффузионные языковые модели, в отличие от обычных LLM, генерируют текст параллельно, несколько токенов за раз. Теоретически это даёт кратное ускорение. Также они не ограничены генерацией справа от контекста и могут заполнять произвольные пропуски в поданном на вход тексте.

Мы много работали с dLLM, перепробовали кучу моделей, набив на них шишек, и даже предложили свои. В результате накопилось большое понимания того, какие подходы действительно работают, а какие вызывают много вопросов касательно их воспроизводимости. Обо всём об этом рассказываем в обзоре ниже.

Содержание

Параллельная генерация токенов

Для начала разберём основной принцип работы dLLM.

Большие языковые модели порождают текст строго по одному токену слева направо. Из‑за того, что в них результат предшествующего шага генерации явно подается на вход в виде накапливающегося контекста, такой подход называют авторегрессионным (autoregressive, AR). На каждом очередном шаге генерации модель предсказывает вероятность следующего токена. Тогда, в вероятность получить заданную последовательность токенов x_1,ldots,x_T определяется цепочным разложением совместной вероятности:

P(x_1,ldots,x_T)=prod_{t=1}^{T}P(x_tmid x_1,ldots,x_{t-1}).

Диффузионные модели работают и обучаются иначе. Они не генерируют текст авторегрессионно, а восстанавливают замаскированные токены — причём эти токены могут находиться в любом месте текста, а не только в конце. Модель видит последовательность целиком и на каждом шаге раскрывает какую‑то часть пропусков.

Схема восстановления замаскированных токенов с помощью диффузии

Схема восстановления замаскированных токенов с помощью диффузии

Чтобы этому научиться, используются два процесса. Прямой диффузионный процесс зашумляет текст: часть токенов правильного ответа заменяется на специальный токен MASK. Именно это и есть «шум» в текстовом варианте диффузии — не гауссова добавка, как в картинках, а замена токена на заглушку. Обратный диффузионный процесс восстанавливает текст: модель получает зашумленную последовательность и предсказывает, что стояло на замаскированных позициях. Во время обучения каждый обучающий пример зашумляется, и на позициях с токенами MASK считается функция потерь (фактически, максимизируется вероятность восстановить оригинальный токен из MASK). На инференсе прямой процесс не нужен: в случае с безусловной генерацией мы начинаем с полностью замаскированной последовательности и за один проход расшумляем несколько токенов. Делаем это до тех пор, пока не останется ни одной маски.

Такой класс моделей называют маскирующими диффузионными моделями (masked diffusion models, MDM). Если вам показалось, что описание подозрительно похоже на BERT — вам не показалось. В 2021 году в работе про D3PM показали, что дискретная диффузия является обобщением как BERT, так и авторегрессионных LLM.

Есть и вторая ветка: перенести текст в непрерывное пространство и работать там привычными для картиночных диффузий инструментами — по эмбеддингам (Diffusion‑LM, Plaid), по симплексу вероятностей или прямо по логитам (TESS, SSD‑LM). 

В 2026 году непрерывная генерация текста вновь стала популярной темой. Многие новые академические работы используют flow matching, где модель учит векторное поле, переносящее одно распределение в другое. FLM/FMLM и Categorical Flow Maps работают с непрерывными представлениями токенов, ELF — с пространством эмбеддингов, а наши коллеги развивают Logit‑KL Flow Matching (ICLR 2026). К этой же непрерывной ветке относится наша LDLM, в которой латентное пространство обучается совместно с диффузионной моделью и декодером. Но так как эти подходы не были проверены на масштабируемость, основным практическим направлением больших dLLM остаётся дискретная маскирующая диффузия.

Дальше речь пойдёт именно о маскирующих dLLM.

Преимущества dLLM перед LLM

Параллельная генерация. Как мы описали выше, одно из главных преимуществ это возможность генерации нескольких токенов за один forward модели.

Заполнение пропусков.  Вторым преимуществом является возможность генерации не только строго после контекста, но и заполнения (text/code infilling) внутри пропусков в промпте. Задача восстановления пропуска в середине текста является «родной» для dLLM — она ровно этому и обучалась. Это полезно для локального редактирования, дополнения кода и генерации по заданному каркасу. Например, Template Infilling распределяет опорные фрагменты по будущему ответу и заполняет промежутки между ними, улучшая результаты в математике, коде и планировании.

Обратный порядок. У авторегрессионных LLM есть известная проблема: выучив зависимость «A есть B», модель плохо отвечает на вопрос про «B есть A». Авторы LLaDA (представитель dLLM) проверили это на парах строк из китайских стихов: у GPT-4o разрыв между прямым и обратным направлением более чем двукратный, у LLaDA 8B Instruct обратное направление почти не проседает. Теоретический анализ связывает меньший разрыв на этой задаче у маскирующих dLLM с общими параметрами трансформера: знания, полученные при восстановлении одной стороны зависимости, частично переносятся на обратный запрос. Однако полной симметрии это не гарантирует. 

Ограниченные данные. В режиме нехватки данных наращивание обучающих FLOPs позволяет диффузии обойти авторегрессию — модель можно обучать на одних и тех же данных больше эпох, и с каждой новой эпохой прирост качества замедляется не так быстро, как у авторегрессионных моделей.

Недостатки dLLM

KV‑кэш не работает — главная проблема, из которой растёт большая часть остальных. В авторегрессионном трансформере генерация нового токена зависит только от тех токенов, которые находятся левее. Поэтому на каждом шаге не нужно пересчитывать представления всех предыдущих токенов: их хранят в кэше. Подробнее про KV‑cache можно почитать здесь. Именно поэтому генерация идёт быстро. В диффузии токены могут сгенерироваться в любой позиции. Генерация нового токена зависит от токенов как слева, так и справа, поэтому сохранённые ранее KV‑значения становятся невалидными — изменение в середине последовательности влияет на всё. Метод forward приходится звать на всём длинном окне столько раз, сколько токенов нужно раскрыть.

Получается парадокс: модель, задуманная как быстрая, на практике оказывается медленнее авторегрессионной сопоставимого размера. Заявленное ускорение приходится завоёвывать отдельно.

Токены считаются независимыми. Чтобы раскрыть несколько позиций за шаг, модель вынуждена считать их условно независимыми при данном контексте:

P(S_kmid tilde{x}^{(k-1)})=prod_{iin S_k}P(x_imid tilde{x}^{(k-1)}),

где S_k — множество токенов, раскрываемых на k‑м шаге, а tilde{x}^{(k-1)} — текущая частично раскрытая последовательность. Для соседних токенов это предположение регулярно ломается — отсюда несвязные куски в генерации.

Фиксированная длина. Классическая MDM генерирует последовательность заранее заданной длины, а переменная длина требует отдельных трюков, например таких как сделано в Edit Flows (NeurIPS 2025). Современные работы учат модель управлять длиной: DDOT восстанавливает одновременно токены и их позиции, FlexMDM добавляет маски по ходу генерации, а DreamOn вводит операции расширения и удаления. Есть и методы без дополнительного обучения: CAL подбирает длину вставки по уверенности модели.

Оценка диффузионных моделей

Важная часть исследований альтернативных архитектур языковых моделей — их быстрая и интерпретируемая оценка. Для академических команд эта задача особенно сложна: модели обычно невелики — порядка 170 млн параметров, обучаются на ограниченных объёмах данных и часто без инструктивного SFT из‑за нехватки вычислительных ресурсов или ограничений самой архитектуры. При этом для новых архитектур заранее неизвестны оптимальные гиперпараметры и режимы обучения, поэтому приходится сравнивать множество конфигураций между собой и с хорошо изученными базовыми моделями.

В исследованиях диффузионных языковых моделей для такого сравнения часто используют генеративную перплексию — GenPPL. Экспериментальная модель генерирует продолжения по заданному префиксу, после чего их перплексию оценивает внешняя языковая модель, обычно gpt2. Иногда аналогичную оценку проводят и для безусловной генерации.

Плюсы использования перплексии понятны: простота расчета, инструмент (gpt2 или другая предобученная LLM) доступен без подготовки, можно сравниться с результатами в других исследованиях. Чем ниже перплексия — тем лучше. Можно оценить перплексию gpt2 на текстах, написанных людьми, и получить понятный baseline.

К сожалению, у перплексии есть очень неприятное свойство: на текстах с зацикленной генерацией, которая проявляется как повтор слов, словосочетаний или целых предложений, перплексия начинает очень сильно падать. Возникает проблема: текст, сгенерированный нашей альтернативной моделью, явно дефектный, но полученная перплексия говорит об обратном.

Чтобы обнаружить момент, когда перплексия начинает вводить в заблуждение из‑за падения на повторах, большинство исследователей используют вторую метрику — лексическое разнообразие (diversity) или энтропию (entropy). Достаточно посчитать, каково отношение числа уникальных лексических единиц к числу всех лексических единиц. Если это отношение сильно упало, значит в тексте стало слишком много повторов.

Работать с двумя оценками моделей очень неудобно. Нужно строить Парето границу, следить за тем, чтобы правильно выбирать ориентир разнообразия для целевого домена. И тут есть пространство для придумывания или поиска альтернативного способа оценки. Подробнее эта проблема разобрана в работе Hacking Generative Perplexity (ICML 2026 SPIGM workshop).

Адаптация: не учить с нуля, а переучить порядок

Теперь про то, как получить диффузионную модель, если у вас нет бюджета на претрейн с нуля. Ответ, ставший за последние полтора года стандартным: взять готовую авторегрессионную модель и переделать её в dLLM.

Идея опирается на простое наблюдение. Авторегрессионная модель уже потратила триллионы токенов на то, чтобы выучить язык. Порядок генерации — слева направо — это лишь способ раскладывать вероятность на множители, а не само знание о языке. Значит, менять надо только его: маску внимания заменить на двунаправленную, функцию потерь с предсказания следующего токена — на восстановление замаскированных, процедуру декодирования с дописывания — на итеративное расшумление. Веса берутся у авторегрессионной модели как есть.

Параметров, от которых реально зависит результат, несколько.

  • Learning rate — самый недооценённый. Команда Dream прямо пишет: если поставить его слишком высоким, он быстро смывает знание о порядке слева направо, заложенное в исходных весах. Вы платите за претрейн дважды и получаете модель, обученную с нуля, только дороже.

  • Сдвиг предсказания. DiffuGPT, DiffuLLaMA и Dream используют shift‑операцию: скрытое представление позиции i предсказывает токен i+1, ровно как в авторегрессионной модели. LLaDA обходится без сдвига.

  • Scheduling маски внимания. Идея плавно переходить от стандартной для LLM маски внимания к полной маске звучит разумно, но не всегда дает преимущество.

    Диффузионные языковые модели: как устроены, что в них работает, а что вызывает вопросы - 10
  • Бюджет токенов — единицы процентов от исходного претрейна. DiffuGPT и DiffuLLaMA укладываются менее чем в 200 миллиардов токенов на всё семейство от 127M до 7B, Dream 7B потратил 580 миллиардов.

В конце 2025 года Ant Group выложила LLaDA 2.0 — MoE‑диффузию на 16 и 100 миллиардов параметров, первую в своём классе, доведённую до такого масштаба. И получена она не с нуля, а продолженным предобучением поверх авторегрессионной серии Ling 2.0 — около 20 триллионов токенов поверх готовых AR‑весов. То есть адаптация сегодня — не столько способ сэкономить в песочнице, сколько магистральный путь получения больших диффузионных моделей в принципе.


Адаптации, которые мы пробовали

Дальше — практическая часть. Мы прогнали через себя несколько рецептов адаптации: по каждому ниже короткое описание идеи и отдельный блок с тем, что получилось у нас. Спойлер: с первого запуска не заработало почти ничего.

DiffuGPT и DiffuLLaMA

Идея. Первый систематический рецепт адаптации, Scaling Diffusion Language Models via Adaptation from Autoregressive Models (ICLR 2025). Два ключевых приёма: shift‑операция, согласующая архитектуру с авторегрессионной инициализацией, и плавный переход от causal‑маски внимания к полной. Авторы сконвертировали GPT-2 (127M и 355M) и LLaMA2 7B, уложившись менее чем в 200 миллиардов токенов на всё семейство. Именно с этой работы мы и начинали.

Наш опыт. Мы запускались на движке diffugpt из авторского репозитория и наткнулись там на две проблемы разного калибра.

Первая — техническая: обучение просто не стартует. Чтобы обучить диффузию, нужно разрешить токенам смотреть друг на друга в обе стороны, а не только назад, как в авторегрессии. Кто на кого смотрит, задаётся маской внимания. Авторы формируют её сами и передают модели в готовом виде — но библиотека transformers ожидает маску попроще, той формы, которой обычно отмечают паддинг. Получив нестандартную маску, она пытается привести её к привычному виду, портит и отдаёт дальше уже сломанной. Обучение падает на несовпадении размерностей.

Чинится это патчем модели, который просит библиотеку не трогать маску и пропустить её как есть. В коробке такого патча нет — то есть базовый сценарий из README на GPT-2 не заводится без правок.

Вторая интереснее: метод учится не тому. Чтобы не тратить вычисления впустую, в обучающую последовательность обычно набивают несколько коротких текстов подряд — этот приём называется packing. Если длина окна 1024 токена, а тексты по 256, в одну строку упакуются четыре независимых документа, разделённых служебным токеном.

И вот здесь всплывает проблема: маска внимания в этом коде строится, зная только длину окна и размер батча. О том, что внутри окна лежат четыре разных текста, она не знает ничего. В итоге модель восстанавливает пропуски в одном документе, свободно подглядывая в три чужих.

Смысл задачи от этого меняется. Мы хотим научить модель восстанавливать текст по его собственному контексту, а вместо этого учим её опираться на случайные соседние тексты, никак с ним не связанные.

Для обычных языковых моделей такое соседство тоже вредно, но там оно ограничено: токен видит только то, что слева, и влияние чужого документа затухает. В диффузии внимание двунаправленное и ошибка считается сразу по всем замаскированным позициям всей упакованной строки — так что чужой контекст работает в полную силу и во все стороны. Правильно было бы разбить внимание на блоки: каждый документ смотрит только на себя.

По мелочи там тоже есть что посмотреть. Одна из двух функций генерации не запустится вообще — в ней обращаются к переменной, которую забыли создать. Две реализации подсчёта ошибки на валидации считают по‑разному, так что число зависит от того, какой из них вы воспользовались. А вес в функции потерь в отдельные моменты вырастает до тысячи, что заметно расшатывает обучение.

Чем закончилось. Ошибки мы у себя починили и попробовали воспроизвести метод на GPT-2, а затем обучить на Qwen и на GigaChat. Бенчмарки по ходу обучения росли, но до опубликованных чекпоинтов всё равно не дотягивали заметно, а качество генерации оставалось мусорным — на всех моделях и во всех режимах. Вывод у нас получился однозначный: выложенный код не позволяет воспроизвести метод.

Мы в этом не одиноки. На момент написания в репозитории висит 18 открытых issues и ни одного закрытого, причём значительная часть — ровно про это: расхождение метрик со статьёй, невоспроизводимость HumanEval‑infill, нефлюэнтные генерации с повторами, деградация модели, просьба уточнить гиперпараметры претрейна. Создание новых issues в репозитории на данный момент закрыто.

Это тот случай, когда перед началом работы стоит смотреть не только на статью, но и на историю коммитов с обсуждениями, — там часто лежит самое ценное.

ReFusion

Идея. ReFusion (ICLR 2026) (код) — работа Renmin University и Ant Group. Авторы заходят с другой стороны: проблема параллельного декодирования в том, что модель вынуждена считать одновременно раскрываемые токены независимыми, а соседние токены независимыми не бывают. Значит, не надо раскрывать соседние — надо раскрывать подотрезки.

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

Выигрыш двойной. KV‑кэш переиспользуется полностью, потому что все MASK токены находятся всегда справа. И резко падает сложность обучения: вместо неподъёмного пространства комбинаций токенов модель учится на пространстве перестановок слотов. Плюс обучение стартует с весов предобученной модели (авторы используют Qwen). Цифры авторы приводят внушительные: плюс 34% качества и более чем восемнадцатикратное ускорение относительно предыдущих маскированных диффузий, при этом разрыв с сильными авторегрессионными моделями закрывается при среднем ускорении в 2,33 раза.

Наш опыт. Из всех адаптаций эта дошла у нас дальше всего — до рабочего прототипа на своей модели.

Что получилось на GigaChat. Мы взяли претрейн‑чекпоинт GigaChat 3B и дообучили его в диффузионную модель по рецепту ReFusion. Отдельно отмечу: авторы показывали метод на Qwen, а исследуемый чекпоинт GigaChat использует MLA — то есть рецепт переносится и на другую схему внимания.

Данные — смесь из пяти инструктивных датасетов, около 4,25 млн примеров: MathInstruct (262k), OpenMathInstruct-2 (974k), OpenCoder (1,03M), SmolTalk (1,04M) и Tulu-3 (939k). Гиперпараметры оставили авторские: global batch 512, lr 2e-5 с косинусным расписанием без прогрева, bf16, длина последовательности 4096. Прошли три эпохи — 24 804 шага, около 12,7 млн обработанных примеров.

Качество решения GSM8K (математика) выросло более, чем в два раза при wall‑clock time ускорении генерации в 2,7 раза — не теоретическая оценка по числу forward‑проходов, мы буквально измерили время. Качество решения стандартных NLP‑бенчмарков, таких как ARC, TriviaQA, BoolQ и др., существенно не изменилось. Среднее число токенов, принимаемых за один проход, по нашим примерам генерации держится в диапазоне от 1,2 до 2,8 в зависимости от задачи и настроек слотов: на шаблонных вычислениях с повторяющейся структурой диффузионный декодинг забирает за проход заметно больше, на длинных связных объяснениях — меньше.

Чего у нас не получилось. Несколько попыток сделать пост‑претрейн на FineWeb и DCLM результата не дали. Метод завёлся именно на инструктивных данных. Похоже, состав данных для таких адаптаций критичнее, чем кажется из статей.

Кстати, у коллег из GigaChat Pretrain есть своя диффузия с более простой схемой, без переупорядочивания, — подробный разбор в их посте.

Обучение с нуля: что мы воспроизводили

Адаптация — магистральный путь, но часть методических вопросов на ней не проверить: если модель стартует с чужих весов, непонятно, что в результате от рецепта, а что от инициализации. Поэтому несколько архитектур мы обучали с нуля.

MDLM

Идея. MDLM (NeurIPS 2024) — академическая формулировка дискретной маскированной диффузии и фундамент для множества других работ (справедливости ради, стоит отметить очень похожую работу с той же конференции, MD4). Ценна двумя вещами. Во‑первых, она полностью открыта: архитектура, протокол обучения и протокол замеров лежат в репозитории, веса — на HuggingFace. Во‑вторых, она предельно простая: только MASK токены и их восстановление. Поэтому на MDLM удобно быстро проверять методические гипотезы — почти всё, что вы придумаете, на ней можно прогнать за разумное время.

Из минусов у неё — шаг времени внутри архитектуры (многие подходы к декодированию с ним не дружат) и отсутствие KV‑кэша со всеми последствиями. Последнее, впрочем, породило целое семейство работ по починке — например, dKV‑Cache.

Наш опыт. Эта модель стала у нас полигоном для оценки влияния разных идей и влиянию параметров обучения. В частности, что подбор learning rate влияет больше, чем выбор и настройка оптимизатора, настройка eps и дропаутов.

Оценка чекпоинтов для разного объема претрейна DCLM (208B подвыборка), GenPPL Qwen3-8B:

Кол-во эпох

Токенов, млрд

Diversity1

GenPPL

1

208

0.48 ± 0.01

76 ± 4

1.3

270

0.45 ± 0.01

64 ± 4

2.5

520

0.46 ± 0.01

62 ± 3

5

1040

0.48 ± 0.01

60 ± 3

Аналогично для MDLM 170M при обучении на OWT (~9B токенов на эпоху):

Кол-во эпох

Токенов, млрд

Diversity1

GenPPL

12

108

0.55 ± 0.01

95 ± 4

30

270

0.53 ± 0.01

85 ± 4

60

540

0.54 ± 0.01

81 ± 4

Главная претензия — сомнительная масштабируемость: по ёмкости, по размеру контекста и по бюджету обучения. Как эталонная реализация и полигон для экспериментов MDLM прекрасен, как основа для чего‑то, что должно вырасти до практически применимых размеров, — нет.

Eso‑LM

Идея. Работа Cornell Univeristy, MBZUAI и NVIDIA, называется Esoteric Language Models (ICML 2026). Проблема знакомая: KV‑кэш несовместим с двунаправленным вниманием. Обычно из этого делают вывод, что надо жертвовать кэшем. Здесь сделали обратный — пожертвовали двунаправленностью. Если перемешать последовательность так, чтобы токены, которые будут раскрыты раньше, оказались левее, можно использовать обычное левостороннее внимание, и кэш снова работает.

Генерация идёт в две фазы: сначала диффузионная, где за шаг раскрывается одна или несколько, возможно несоседних, масок, потом последовательная, где остаток раскрывается слева направо. Обе используют единый кэш.

Цена — заметно более тяжёлое обучение: схема внимания унаследована от блочных диффузий BD3-LM (ICLR 2025, oral).

Авторская реализация имеет ряд особенностей. Длина контекста 1024. Sequential и diffusion лоссы обсчитываются на разных частях батча и потом суммируются. Формально, внутри одного крупного forward идут два разных forward внутреннего трансформера. Применяют разное маскирование/зашумление для sequential и diffusion фазы при тренировке. Для sequential фазы маска attention формируется в четыре раза больше (удвоение координат с каждой из сторон над конкатенированным состоянием немаскированной и замаскирвоанной последовательностей). В attention масках не учитывается батч, всегда одна соответствующая размерность. Не применяют сортировку к attention_mask (формально — применяют, но уже после forward) несмотря на заявления в статье (это не ломает обучение, если датасет формируется без паддингов). 

Привязываются к конкретной реализации flash_attention_v2. Внутренний трансформер той же архитектуры DiT, что и в MDLM, но timestep эмбеддинги на обучении и инференсе зануляют. Также стоит отметить неудобное для экспериментов влияние некоторых параметров обучения, например, подкручиваешь alpha_0, влияющий на зашумление на обучении, и он же влияет на соотношение числа демаскируемых токенов на инференсе между фазами и число одновременно демаскируемых токенов на диффузионной фазе. Сложилось впечатление, что учить можно с alpha_0 повыше, а потом выискивать среди меньших значений число получше для инференса. 

Что мы попробовали обучить на этой основе. Данные — выдержка из датасета DCLM примерно на 200B токенов (ориентировались на прикидку из статьи авторов, что за обучение они показали модели примерно 262B токенов из датасета OpenWebText). Размер модели брали, как и у оригинала — 170M параметров. Учили по одной эпохе. Длину контекста сразу увеличили до 2048. 

Для сравнения брали задачу дополнения текста (prefix completion) 2000 знаков, 200 семплов (датасет rocstories, надо продолжить предложение), замеряли генеративную перплексию (меньше — лучше) моделью Qwen3-8B и лексическое разнообразие (diversity, чем выше, тем лучше). Сравнивались с результатами модели с оригинальными авторскими весами (обученными на OpenWebText) от авторов. 

На авторской реализации, но со сменой датасета обучения достичь аналогичных результатов по перплексии и разнообразию за одну эпоху обучения не вышло (авторские diversity 0.49, genPPL 40, наш подход — diversity 0.43, genPPL 52). Этот опыт нам положил результат в копилку, что важно не просто размер датасета, но и число раз, сколько семплы в нем были показаны модели, потому что каждый проход зашумление выбиралось случайно.

Но у нас много идей, и мы пошли в доработки подхода к работе и обучению модели:

  • sequential и diffusion лоссы обсчитываются теперь на полном батче и потом суммируются с управляемым коэффициентом пропорции смешивания;

  • маскирование одинаково для обеих фаз;

  • учет батча им масок attention, что можно учить на датасетах с паддингами;

  • как вариант: полностью убрать timestep эмбединг из архитектуры трансформера под капотом;

  • как вариант: для sequential фазы только causal маска на неземаскирвоанные токены;

  • как вариант: для sequential фазы вместо большой сложносоставной attention_mask несколько вызовов для случаев, когда маскированная последовательность смотрит на маскированную или на немаскированную, и комбинирование результатов по аналогии с cross attention подходом.

Неплохо (в тех же условиях оценки) себя показали варианты, когда последовательную фазу обучения отключили совсем (diversity 0.46, genPPL 61) или когда диффузионной фазе отвели 0.75 вклада в итоговый лосс и параметр alpha_0 сделали 0.75 вместо авторского 0.25 (diversity 0.42, genPPL 40, перплексия как у авторской модели, но разнообразие хуже).

Ни одна из наших проб (как и оригинальная модель) не показали хороших результатов (превосходящих случайный выбор ответов) на ходовых бенчмарках из комплекта lm‑eval (CoQA, GSM8k, BoolQ, MMLU).

Дальше мы стали пробовать использовать этот подход с переупорядочиванием токенов, но вместо обучения с нуля стали использовать предобученный авторегрессионый трансформер. Однако, это совсем другая история…


Чтомы предложили сами

Два сюжета, где мы не воспроизводили чужое, а делали своё: метод диффузионой дистилляции в короткие траектории и разбирательство с численной точностью при сэмплировании.

IDLM: дистилляция в короткие траектории

В обычной дистилляции большую модель‑учителя используют, чтобы обучить меньшую модель. В диффузионных моделях цель часто другая: сохранить качество учителя, но сократить число шагов генерации. Учитель может превращать шум в готовый объект за сотни или тысячи небольших шагов. Дистиллированный ученик должен пройти между теми же концами гораздо более крупными прыжками. При этом ученик необязательно меньше учителя по числу параметров. Выигрыш возникает потому, что одну и ту же нейросеть приходится вызывать не тысячу раз, а, например, шестнадцать. Подходов к этому накопилось прилично: SDTT, Duo‑DCD, Di4C, CDLM. Общая трудность у таких методов одна: чем больше шагов учителя заменяется одним шагом ученика, тем сложнее сохранить все зависимости между одновременно генерируемыми токенами.

Наш метод IDLM был представлен на конференции ICML 2026 (и был опубликован на arxiv за месяц до конкурирующей работы Google DeepMind D‑MMD). Идея в том, чтобы перенести в дискретную область технику обратной дистилляции, разработанную для непрерывных диффузий. Мы не учим ученика воспроизводить укороченные переходы по траектории учителя, как это делают consistency‑подходы вроде SDTT и Duo‑DCD. Вместо этого мы стараемся приблизить итоговое распределение генерируемых текстов. Ученик может идти по другой и гораздо более короткой траектории, но важно, чтобы в конце он приходил к тому же распределению.

В IDLM в обучении участвуют три модели. Первая представляет собой замороженного учителя, исходную диффузионную модель, обученную на настоящих данных. Вторая модель является учеником, который должен генерировать за небольшое число шагов. Третья представляет собой вспомогательную диффузионную модель, которую в статье мы называем fake model.

Сначала ученик генерирует собственные тексты. Затем fake model обучается на этих текстах с обычным диффузионным лоссом и подстраивается под текущее распределение ученика. После этого на тех же сэмплах сравниваются лоссы учителя и вспомогательной модели. Такое сравнение лоссов показывает, чем сэмплы ученика отличаются от данных, на которых обучался учитель и позволяет обновить ученика. Интуиция: ученик хорош, если для его выборки учитель остаётся оптимальной моделью.

Хотя в этой статье мы фокусируемся на маскирующей диффузии, сам IDLM не привязан к маскированию и может быть применен к любому типу диффузии для дискретных данных. Помимо MDLM, мы проверили метод на общем методе SEDD и на uniform диффузии в методе Duo.

В нашей работе IDLM было решено две проблемы, мешающие прямому переносу обратной дистилляции из области непрерывных диффузий в область дискретных.

Первая — теоретическая: у лосса обратной дистилляции в общем случае нет гарантии единственности минимума, то есть оптимизация может сойтись куда угодно. Мы доказываем, что для SEDD, MDLM и Duo предложенный IDLM‑лосс мажорирует KL‑дивергенцию между моделью‑учеником и целевым распределением данных и обнуляется тогда и только тогда, когда распределение ученика совпало с целевым.

Вторая — практическая: дискретность мешает считать градиенты. Выход генератора релаксируется с one‑hot векторов на вероятностный симплекс, что позволяет обойтись без нестабильного Gumbel‑Softmax.

Сначала мы проверили IDLM в стандартном для небольших диффузионных языковых моделей сетапе unconditional (без промпта) генерации на OpenWebText.

Вот результаты на моделях с 169 млн параметров, обученных на OpenWebText с помощью IDLM:

Дистиллируемая модель

Сокращение числа шагов

Было → стало

SEDD

×4

1024 → 256 шагов

MDLM

×64

1024 → 16 шагов

Duo + DCD

×128 … ×256

1024 → 8 или 4 шага

Примеры генерации OpenWebText:

Диффузионные языковые модели: как устроены, что в них работает, а что вызывает вопросы - 14

На OpenWebText качество обычно сравнивают по GenPPL и энтропии сэмплов. Как было сказано в секции про оценку моделей, такое сочетание метрик, вообще говоря, не гарантирует хорошей генерации. Поэтому мы дополнительно проверили, сохраняется ли способность модели решать условную задачу. Модели обучались на TinyGSM, а качество измерялось по exact‑match точности численного ответа на GSM8K.

Дистиллируемая модель

Учитель, 1024 шага

Ученик, 128 шагов

Ученик, 64 шага

MDLM

18.0%

19.86%

14.94%

Duo

17.2%

21.38%

19.03%

IDLM с MDLM учителем достигает уровня 1024-шагового учителя за 128 шагов, что даёт сокращение NFE в 8 раз. IDLM с Duo учителем достигает сопоставимой точности уже за 64 шага, что соответствует сокращению в 16 раз. Это более строгий результат, чем сравнение GenPPL и энтропии: здесь проверяется не только форма текста, но и правильность итогового ответа.

Примеры генерации TinyGSM:

Диффузионные языковые модели: как устроены, что в них работает, а что вызывает вопросы - 15

Честная оговорка: в экспериментах на TinyGSM/GSM8K мы использовали стандартный ancestral sampling, непосредственно следующий из теоретического обратного процесса. Перенос IDLM на более продвинутые сэмплеры, которые применяются в крупных диффузионных языковых моделях (таких как семплеры выбирающие токены по уверенности модели), остаётся предметом дальнейшей работы.

Численная точность при сэмплировании

Эта история стоила нам изрядного количества нервов, и её стоит знать всем, кто работает с дискретными диффузиями.

Чтобы выбрать токен из распределения, диффузионные модели обычно используют трюк Gumbel‑Softmax: к логитам добавляется специально распределённый шум, после чего берётся argmax. Математически это в точности эквивалентно честному сэмплированию из softmax‑распределения, а вычислительно — гораздо удобнее. Эквивалентно, правда, в бесконечной точности.

В работе, представленной на ICLR 2025, показали, что этот способ сэмплирования сильно зависит от точности вычислений. Побочный эффект — искусственное занижение температуры, из‑за которого метрики качества генерации выглядят лучше, а энтропия падает. То есть часть опубликованных результатов — артефакт численной арифметики, а не свойство моделей.

Механизм такой: модель выдаёт логиты в одной точности (fp16, bf16 или fp32), к ним добавляется шум в такой же или повышенной, внутри преобразования шума прячется пара логарифмирований — и в итоге можно получить разные токены с одинаковыми логитами, а argmax просто выберет первый попавшийся индекс.

Практических выводов два. Сравнивая свои числа с опубликованными, выясняйте, в какой точности считали авторы и какой сэмплер использовали. Сравнительные замеры сэмплинга делайте с фиксацией точности и выяснением, как у вас внутри семплирование происходит. 


Чем ещё ускоряют dLLM

Мы разобрали два способа из трёх: дистилляцию в короткие траектории и архитектуры, возвращающие KV‑кэш (Eso‑LM, ReFusion, блочная диффузия). Для полноты картины — что есть помимо них.

Приближённые кэши без переобучения. Оказывается, влияние будущих токенов на ранние позиции быстро затухает по шагам расшумления. Значит, уже раскрытые «чистые» токены можно закэшировать с пренебрежимой потерей качества — приближённо, зато сразу и на готовой модели. На этой идее построены dKV‑Cache, Fast‑dLLM, Attention Is All You Need for KV Cache in Diffusion LLMs и ещё несколько работ.

Диффузия как ускоритель авторегрессии. Самый прагматичный вариант: не пытаться заменить AR‑модель, а приделать к ней диффузионную голову. Ровно это делает Orthrus (код). К замороженной авторегрессионной модели добавляется лёгкий обучаемый модуль, создающий параллельный диффузионный «взгляд» рядом со стандартным последовательным. Оба взгляда работают с одним и тем же KV‑кэшем, а выходное распределение строго совпадает с распределением базовой модели: всё предложенное диффузионной головой проверяется замороженной авторегрессионной. Заявленное ускорение — до 7,8 раза при обучении всего 16% параметров.

Для продакшена это самая привлекательная постановка: вы не меняете модель и не рискуете качеством. Цена — вы не получаете и уникальных свойств диффузии: ни заполнения пропусков, ни свободы порядка. Выход по построению идентичен авторегрессионному.

Вот краткая табличка по выбору модели в зависимости от вашей ситуации:

Ситуация

Куда смотреть

Есть готовая модель, переобучать нельзя

dKV‑Cache, Fast‑dLLM

Есть учитель и компьют на обучение ученика

IDLM, SDTT, Duo‑DCD

Обучаем или адаптируем сами, скорость критична

Eso‑LM, ReFusion, BD3-LM

Нужна скорость при гарантии качества

Orthrus

Нужны именно пропуски и свобода порядка

Repr‑Align, MDLM


Заключение

Если сжать всё до одной мысли: диффузионные языковые модели перестали быть академической экзотикой, но каждое их обещание требует инженерной работы, чтобы стать правдой.

  • Адаптация победила обучение с нуля. От DiffuGPT до стомиллиардной LLaDA 2.0 все свежие сильные модели стартуют с авторегрессионных весов. Обучать диффузию с чистого листа сегодня имеет смысл разве что для методических исследований — чем мы, собственно, и занимались.

  • Обещанное ускорение нужно завоёвывать. Параллельное декодирование в теории даёт кратный выигрыш, но отсутствие KV‑кэша съедает его целиком. Реальная скорость появляется только вместе с архитектурными компромиссами или дистилляцией в короткие траектории.

  • Точность вычислений — не деталь реализации. Часть опубликованных результатов объясняется поведением fp16 и bf16 в сэмплировании.

  • Инженерная зрелость кода отстаёт от уровня идей. Закладывайте на воспроизведение baseline не неделю, а недели и фиксируйте окружение жёстко: заметная часть расхождений в наших прогонах объяснялась версиями библиотек, а не идеями авторов.

  • Заведите собственный набор проверок, которому доверяете. Когда чужие числа не воспроизводятся, нужен независимый способ понять, стало ли лучше. Оценка маленьких диффузионных моделей — отдельная большая тема (отражённая, например, в Hacking Generative Perplexity), про неё мы расскажем в следующий раз.


Что почитать

Основы — D3PM как обобщающий фреймворк, MDLM как самая ясная формулировка и BD3-LM как мостик к авторегрессии.

Адаптация — DiffuLLaMA, Dream 7B, Repr‑Align, LLaDA 2.0.

Ускорение — Eso‑LM, ReFusion, Orthrus, IDLM.

Грабли — численная точность и The Flexibility Trap.

Авторы: Никита Драгунов, Никита Гущин, Александр Коротин, Леонид Синев, Илья Козиев.

Спасибо, что прочитали! Готовы поговорить с вами про dLLM в комментариях.

Автор: NikitaNLP

Источник