Diffusion LLM
diffusion LLM — языковая модель, которая уточняет сразу блок текста, а не продолжает его строго слева направо
Diffusion LLM, или dLLM, генерирует текст через несколько раундов уточнения. Модель начинает с замаскированной последовательности, восстанавливает часть токенов и снова пересматривает неуверенные места. Такой подход допускает параллельную работу над разными позициями, но не гарантирует выигрыш в каждой задаче: качество и скорость зависят от архитектуры, расписания шагов и железа.
Коротко
Коротко. Обычная авторегрессионная LLM продолжает текст по одному токену слева направо. Диффузионная языковая модель может начать с последовательности масок и за несколько раундов восстановить весь блок. Она открывает уверенные токены, пересматривает сомнительные и постепенно собирает связный текст. Параллельность даёт интересные возможности для скорости и редактирования, но сама по себе не делает модель быстрее или точнее любой обычной LLM.
Что это такое
В генерации изображений диффузионная модель начинает с шума и шаг за шагом превращает его в картинку. Для текста прямой перенос пиксельного шума неудобен: токены дискретны. Поэтому многие текстовые dLLM используют маскирование.
Исходная строка может выглядеть так:
[MASK] [MASK] [MASK] [MASK] [MASK]
На первом раунде модель восстанавливает наиболее понятные позиции, а остальные оставляет скрытыми. На следующих раундах она использует уже открытые слова как контекст и уточняет пробелы. В итоге получается целая фраза.
Исследования дискретной диффузии и маскированной генерации появились задолго до первых коммерческих продуктов. Поэтому Diffusion LLM — название класса методов, а не одной модели или компании.
Как это работает
Обучение обычно состоит из двух связанных процессов.
Зашумление. В готовом тексте случайно скрывается часть токенов. Чем сильнее зашумление, тем меньше исходной фразы остаётся видимой.
Восстановление. Модель учится угадывать скрытые позиции по оставшемуся контексту и уровню шума. Во время генерации она начинает с большого числа масок и повторяет восстановление по выбранному расписанию.
Один из возможных циклов выглядит так:
- модель оценивает кандидатов для всех скрытых позиций;
- часть наиболее уверенных токенов остаётся открытой;
- неуверенные позиции сохраняются или снова маскируются;
- следующий раунд уточняет блок с учётом уже найденных слов;
- процесс заканчивается после заданного числа шагов или при достижении другого критерия остановки.
Разные реализации меняют способ зашумления, выбор токенов, длину блока и расписание уточнения. Поэтому две dLLM могут заметно отличаться по поведению, хотя обе называются диффузионными.
Откуда берётся параллельность
В авторегрессионной модели следующий токен зависит от всех предыдущих. Пока не выбран токен на позиции 49, нельзя окончательно перейти к позиции 50. KV-кэш ускоряет вычисления, но последовательная зависимость остаётся.
У dLLM несколько позиций могут уточняться за один раунд. Это сокращает число строго последовательных стадий и иногда увеличивает пропускную способность. Однако каждый раунд обрабатывает большой блок, а некоторые позиции приходится пересматривать несколько раз. Реальный итог зависит от длины ответа, размера batch, ускорителя, реализации ядра и числа шагов.
Где подход особенно интересен
- Редактирование внутри строки. Модель может заполнять середину, не продолжая текст только с конца.
- Код с известной структурой. Сигнатура, тесты и окружающие строки дают ограничения сразу для нескольких участков.
- Пакетная генерация. Параллельная обработка блоков может быть выгодна при большом потоке запросов.
- Управление длиной и формой. Заранее заданный блок удобен там, где результат должен поместиться в шаблон.
- Итеративное исправление. Неуверенные позиции можно пересматривать, не переписывая всё строго слева направо.
Это не означает, что dLLM автоматически выигрывает в длинном рассуждении, диалоге или творческом тексте. Такие свойства проверяются у конкретной модели, а не выводятся из одного способа генерации.
Пример
Допустим, модели нужно восстановить строку функции по тесту и заготовке:
def clamp(value, low, high):
return [MASK]([MASK](value, high), low)
Авторегрессионная модель продолжала бы текст от выбранной позиции. Маскированная dLLM видит обе дыры вместе и может учитывать их взаимную связь. После нескольких раундов получается один из согласованных вариантов:
def clamp(value, low, high):
return max(min(value, high), low)
Преимущество здесь не в «магическом понимании» кода, а в возможности совместно уточнять несколько мест с учётом общей структуры.
С чем часто путают
- dLLM и Stable Diffusion. Идея постепенного удаления шума похожа, но текст состоит из дискретных токенов, поэтому математическая реализация отличается.
- dLLM и masked language model. Модели вроде BERT тоже восстанавливают маски, но обычно не предназначены для полноценной итеративной генерации длинного ответа.
- Диффузия и трансформер. Эти понятия находятся на разных уровнях. Трансформер может быть нейросетевой архитектурой внутри диффузионного процесса.
- Параллельная генерация и мгновенный ответ. Меньше последовательных стадий не означает нулевую задержку: каждый раунд всё равно требует вычислений.
- Фиксированный блок и фиксированный продукт. Ограничения по длине зависят от реализации; они не одинаковы у всех dLLM.
Частые вопросы
Диффузионная LLM всегда быстрее авторегрессионной? Нет. Она может лучше использовать параллелизм, но обрабатывает много позиций на каждом шаге. Короткий ответ, маленький batch или большое число уточнений способны убрать выигрыш.
Она генерирует весь текст за один проход? Обычно нет. Позиции рассчитываются параллельно, но сам блок проходит несколько раундов уточнения.
Можно ли менять уже появившиеся слова? Некоторые алгоритмы повторно маскируют неуверенные токены и пересматривают их. Другие постепенно фиксируют результат. Это свойство конкретного декодера.
Почему обычные LLM не делают то же самое? Авторегрессионное обучение хорошо изучено, поддерживается зрелой инфраструктурой и естественно работает с ответами переменной длины. У диффузионного подхода другой набор компромиссов.
Заменят ли dLLM обычные модели? Скорее это ещё один способ генерации. В одних системах важнее низкая задержка, в других — поток запросов, длинное рассуждение, редактирование или совместимость с существующей инфраструктурой. Выбор определяется такой нагрузкой.
Главное
Diffusion LLM собирает текст через параллельное уточнение замаскированного блока. Этот механизм снимает часть зависимости «строго следующий токен после предыдущего» и открывает новые варианты декодирования. Его практическая ценность измеряется не громкой цифрой из демонстрации, а балансом качества, задержки, пропускной способности и стоимости на реальной задаче.