Diffusion Language Models
Диффузионные языковые модели генерируют текст, параллельно раскрывая множество токенов за несколько шагов устранения шума. Рассматриваются masked diffusion, LLaDA и Mercury.
Диффузионная языковая модель генерирует текст, начиная с полностью зашумлённой последовательности — обычно состоящей только из токенов маски, — и уточняя множество позиций параллельно в ходе нескольких шагов устранения шума. Обычная большая языковая модель (LLM) генерирует по одному токену за раз, слева направо. Такой подход переносит идею, лежащую в основе диффузионных моделей изображений, на дискретный текст: прямой процесс постепенно разрушает последовательность, а трансформер учится восстанавливать её. В 2025 году этот подход вышел на промышленный масштаб. LLaDA — диффузионная модель с 8 миллиардами параметров, обученная с нуля, — показала результаты на уровне LLaMA3 8B в обучении в контексте; модели Mercury Coder от Inception Labs в независимых тестах генерировали 1 109 и 737 токенов в секунду на GPU NVIDIA H100; а экспериментальная модель Gemini Diffusion от Google DeepMind указывает среднюю скорость генерации 1 479 токенов в секунду.
Как работает диффузия с маскированием#
LLaDA и большинство других новых моделей используют диффузию с маскированием, или диффузию с поглощающим состоянием. В прямом процессе выбирается уровень шума t от 0 до 1, и каждый токен заменяется символом маски с вероятностью t:
import torch
torch.manual_seed(6)
tokens = ["the", "cat", "sat", "on", "the", "warm", "mat", "by", "the", "door"]
# Forward process of a masked diffusion LM: at noise level t, each token is masked with probability t
for t in [0.25, 0.5, 0.75, 1.0]:
masked = torch.rand(len(tokens)) < t
noisy = ["[M]" if m else token for token, m in zip(tokens, masked)]
print(f"t={t:.2f}: {' '.join(noisy)}")При запуске выводится предложение, в котором замаскированы 2, 5, 8 и, наконец, все 10 слов. Во время обучения трансформер без причинно-следственной маски видит одну такую последовательность и одновременно предсказывает все замаскированные токены, используя функцию потерь на основе перекрёстной энтропии для замаскированных позиций; LLaDA взвешивает её значением 1/t. Эта цель обобщает маскированное языковое моделирование BERT, которое всегда предсказывает 15% токенов, для любого коэффициента маскирования, и ограничивает логарифмическое правдоподобие модели, благодаря чему получается полноценная генеративная модель.
Генерация выполняет процесс в обратном направлении, начиная с t = 1. На каждом шаге модель предсказывает все позиции маски, фиксирует наиболее уверенные предсказания, а остальные снова маскирует; LLaDA называет эту стратегию повторным маскированием предсказаний с низкой уверенностью. Длинные тексты часто создаются блок за блоком — подход, формализованный как блочная диффузия, — поэтому предыдущие блоки можно кэшировать, а длину результата не требуется задавать заранее:
От D3PM к производственным моделям#
В 2021 году D3PM от Google определила диффузию на дискретных состояниях, включая поглощающее состояние маски, которое сейчас используют большинство моделей. В 2022 году Diffusion-LM Стэнфордского университета применяла диффузию к непрерывным векторным представлениям слов, чтобы направлять сгенерированный текст в соответствии с синтаксическими и тематическими ограничениями. SEDD, созданная Аароном Лу, Чэнлином Мэном и Стефано Эрмоном и получившая награду ICML 2024 за лучшую статью, снизила перплексию предыдущих диффузионных моделей текста на 25–75% и превзошла GPT-2. Затем LLaDA показала, что этот подход масштабируется до миллиардов параметров и благодаря двунаправленной обработке контекста превосходит GPT-4o в задаче завершения перевёрнутого стихотворения, проверяющей эффект «проклятия реверсии» у моделей, генерирующих текст слева направо. Inception предоставляет Mercury через API Chat Completions, совместимый с OpenAI, поэтому интерфейс Ultralytics для LLM может обращаться к модели с помощью api="chat.completions" и base_url от Inception, например чтобы превращать обнаружения YOLO26 в текстовый отчёт.
Преимущества и компромиссы#
Параллельное снятие маски требует меньше прямых проходов, чем число токенов, — в этом и заключается источник скорости; при этом качество снижается, если на каждом шаге фиксировать больше токенов и выполнять меньше шагов. Токены, фиксируемые на одном шаге, выбираются независимо, поэтому одновременная фиксация многих токенов может приводить к несовместимым сочетаниям. На каждом шаге также учитывается весь блок в обоих направлениях, поэтому такой шаг дороже одного авторегрессионного шага с KV-кэшем. Двунаправленный контекст делает естественным заполнение пропусков и редактирование: модель может заполнить пробел в середине функции или документа, используя текст с обеих сторон, что полезно для автодополнения кода и инструментов агентного программирования, редактирующих существующие файлы.
Диффузионные LLM и связанные термины#
- Авторегрессионная генерация текста: Предсказывает каждый токен по токенам слева от него, выполняя один прямой проход на токен.
- Диффузия изображений: Stable Diffusion и другие модели латентной диффузии добавляют гауссовский шум к непрерывным пикселям или латентным представлениям, часто используя диффузионный трансформер (DiT) для устранения шума.
- Диффузионное форсирование: Задаёт каждому токену собственный уровень шума, сочетая предсказание следующего токена с диффузией всей последовательности; в основном применяется для видео и планирования.
- Спекулятивное декодирование: Ускоряет авторегрессионную модель: меньшая модель предварительно генерирует несколько токенов, а большая проверяет их за один проход, не меняя распределение её выходных данных.










