Диффузионные языковые модели создают текст, постепенно уточняя замаскированную последовательность, в то время как модели GPT генерируют токен за токеном. Эта техника, уже известная по генераторам изображений, привлекла внимание сообщества в 2025 году с LLaDA, Mercury и Gemini Diffusion, а затем в 2026 году с DiffusionGemma от Google, в частности, благодаря скорости вывода.
Два способа генерации текста
Модели GPT являются авторегрессионными: они предсказывают следующий токен на основе уже сгенерированных токенов. Во время обучения несколько позиций могут обрабатываться параллельно, но при выводе каждый токен должен ждать предыдущий, что создает проблему последовательной зависимости. Токен здесь обозначает единицу текста, часто фрагмент слова, с которой работает модель.
Модель с маскированной диффузией, напротив, начинает с полностью заполненной токенами последовательности, то есть с неизвестных позиций, и постепенно раскрывает слова. Она может выбирать несколько слов на каждом шаге, не обязательно следуя порядку слева направо. Для фразы « The cat sat down » авторегрессионная модель добавляет по одному слову за ход, в то время как диффузионная модель заполняет несколько позиций одновременно и уточняет последовательность до получения полной фразы. Оба подхода используют архитектуры трансформеров, но их цели и процедуры вывода различаются: первые продолжают последовательность, вторые её уточняют.
Как работают диффузионные модели
Для изображений диффузия основана на двух процессах. Прямой процесс ухудшает исходные данные, постепенно добавляя шум, в то время как обратный процесс обучает нейронную сеть устранять это ухудшение, обычно с помощью функции среднеквадратичной ошибки. При сэмплировании эта коррекция происходит за множество шагов.
Текст представляет сложность, поскольку токены являются дискретными идентификаторами, а не непрерывными значениями, как пиксели. Поэтому ухудшение производится путем замены токенов на , причём каждый токен маскируется с вероятностью, равной уровню искажения от 0 до 1. При выводе сэмплер инициализирует маскированные позиции, предсказывает распределение по словарю для каждой неразрешенной позиции, а затем решает, какие предсказания сохранить. Этот выбор обычно основан на мере уверенности. Процесс повторяется до заполнения всей последовательности. Некоторые сэмплеры также могут повторно маскировать уже подтвержденные токены — операция, называемая ревизией, которая не является общей для всех моделей.
Эти модели также используют двунаправленное внимание в рамках последовательности, которая проходит очистку от шума, тогда как GPT видит только предыдущие позиции. Таким образом, замаскированное слово может опираться как на предшествующий, так и на последующий контекст, что полезно для редактирования и структурированной генерации. По мнению автора, диффузия также может выигрывать в реальной задержке, когда GPU эффективно обрабатывают позиции параллельно, но качество остается определяющим фактором: авторегрессионные модели по-прежнему превосходят по некоторым тестам на рассуждение и код. Результаты DiffusionGemma 26B в сравнении с Gemma 26B приведены в карточке модели, а исходная статья о вероятностных диффузионных моделях с очисткой от шума является источником этого подхода.
Оставшиеся открытые проблемы
Зависимости между токенами представляют собой первое препятствие. Если две позиции сэмплируются параллельно, каждая может казаться правдоподобной изолированно, но быть несогласованной с другой, что может потребовать больше шагов очистки от шума или связанного сэмплирования. Бюджет сэмплирования ставит другой вопрос: сокращение числа шагов улучшает задержку, но рискует ухудшить качество, тогда как увеличение проходов может нивелировать преимущество в скорости.
Переменная длина ответов также не является естественной для фиксированной сетки с масками, хотя блочные или более гибкие подходы пытаются решить эту проблему. Наконец, кэш ключ-значение (KV), который ускоряет генерацию, запоминая уже выполненные вычисления, становится сложнее использовать, поскольку двунаправленное уточнение может изменять представления целого блока. Блочное декодирование, которое фиксирует завершенные блоки, помогает обойти эту проблему.
