Авторегрессия — старый медленный конвейер
Каждый, кто запускал LLM локально, знает эту боль. Ты ждешь генерацию токена за токеном, а модель пыхтит, как паровоз. И чем больше контекст, тем сильнее тормоза. Я сам с этим столкнулся, когда гонял GigaChat на своем ноутбуке — последние версии Ultra-Preview и Lightning, конечно, быстрее старых, но авторегрессия есть авторегрессия. Каждый новый токен зависит от предыдущего, и это создает узкое горлышко. Последовательная природа генерации — главный тормоз во всей индустрии.
Альтернатива — диффузионные языковые модели (dLLM), которые генерируют сразу весь ответ через многократный проход "зашумление-очистка". Звучит парадоксально: бежать несколько итераций, но каждая итерация параллельная. Именно на этом построен GFusion-10B.
Sber пошли ва-банк: взяли натренированный GigaChat (10B параметров) и с помощью knowledge distillation переобучили его на диффузионный лад. Результат — GFusion-10B. Генерация ускорилась на 70% при длине ответа 256 токенов. А качество просело всего на 2-4 процентных пункта по бенчмаркам (MMLU, RUSSE, SuperGLUE). Для production это приемлемый трейд-офф, если тебе нужна скорость, а не абсолютная точность.
Архитектура: как выглядит dLLM изнутри
В авторегрессии есть перекрёстная причинность — каждый токен видит только предыдущие. В диффузионной модели все токены видят друг друга сразу, но их представления зашумлены. Процесс генерации: берем случайный шум (нормальное распределение) и итеративно его очищаем, используя нейросеть. Это напоминает стабильный диффузионный генератор изображений, только вместо пикселей — эмбеддинги токенов.
Ключевой компонент — Masked Diffusion Transformer (MDT). Он учится предсказывать исходный чистый вектор токена, маскируя часть входных данных. Sber применили прием из области image diffusion: continuous-time denoising. На каждом шаге диффузии модель получает зашумленные эмбеддинги и шаг t, а выдает коррекцию шума. В итоге за 8-16 шагов шум превращается в осмысленный текст.
70% ускорения: как получили и где подвох
Цифра в 70% — это не сказка, а результат при длине генерации 256 токенов. На коротких ответах ускорение меньше. Почему? Потому что авторегрессия быстра, если генерировать 10-20 токенов — не нужно много шагов диффузии. Но на длинных ответах авторегрессия начинает тормозить из-за последовательного заполнения KV cache. У dLLM KV cache не растет с каждым шагом (на каждой итерации — фиксированный контекст).
Sber оптимизировали внимание ключей — внедрили FlashAttention-3 и PageAttention для SGLang. Если пропустили, советую почитать сравнение SGLang и vLLM — там детали того, как управление памятью может выжать лишние 20% скорости. В GFusion-10B используется paged attention не для KV cache (его нет в традиционном смысле), а для хранения промежуточных состояний на разных шагах диффузии.
Честно: 70% — это для batch size 1. Если делать батч побольше, авторегрессия начинает дышать в затылок, потому что диффузия требует нескольких проходов всей последовательности. На батче 16 разница может быть 20-30%. Всегда меряйте на своем сценарии.
Просадка качества: 2-4 пункта — это много или нет?
По синюшным бенчмаркам (MMLU, RUSSE, SuperGLUE) GFusion-10B теряет от 2 до 4 процентных пунктов по сравнению с оригинальным GigaChat. На практике это выглядит так: модель может ошибиться в фактах чуть чаще, хуже держит длинные инструкции с многими условиями. Но для большинства задач (чат-боты, суммаризация, генерация кода) разница незаметна.
Особенно критичны multi-turn диалоги. Каждый шаг диффузии работает на полном контексте, но ошибки накапливаются. Sber применили технику self-consistency: на последнем шаге усредняют несколько траекторий шума. Это добавило 1-2% качества ценой трехкратного замедления, но они выключили это из продакшена.
Интеграция в SGLang: как запустить и настроить
Датасеты и веса открыты, модель доступна на Hugging Face. Для запуска используйте SGLang версии >= 0.9. Если вы еще не знакомы с этим рантаймом, вот статья про ускорение Gemma — там много пересечений по настройке.
Основные шаги:
— скачать веса из репозитория sber/gfusion-10b;
— установить SGLang с поддержкой диффузионных моделей (флаг --enable-diffusion);
— запустить сервер с аргументом --architecture diff_dense;
— через /v1/chat/completions отправить запрос с параметром diffusion_steps=8 (можно менять от 4 до 32).
Типичная ошибка: не настроить page-size под длину контекста. SGLang по умолчанию использует 16 страниц, а для 8 шагов диффузии нужно 48-64 страницы. Иначе будет OOM при длинном контексте. Многие просто копируют конфиг для авторегрессионных моделей и получают падение.
Еще один нюанс: GFusion-10B ожидает нормализованные эмбеддинги. Если вы подаете на вход зашумленный вектор, не забудьте применить стандартное смещение. В SGLang это автоматически, но если гоняете через Python API вручную — легко пропустить.
Что дальше? Прогноз до конца 2026
Диффузионные LLM — это не просто хайп, а реальный путь к дешевому инференсу. Уже сейчас видно, как технологию подхватывают: Diffusion Gemma от Google сделал аналогичный трюк, но с потерей 5-7% качества. Sber выигрывают за счет того, что не тренировали с нуля, а дистиллировали существующую модель. Это копеечный по сравнению с полным обучением расход GPU.
Есть и технический предел — уменьшить число шагов диффузии ниже 4 пока нельзя без дикого падения качества. Но если подтянут continuous-time модели (как в SGM), можно будет генерировать за 1-2 шага. Тогда авторегрессия умрет окончательно. Я ставлю на то, что к концу 2027 года 80% новых LLM будут диффузионными, а остальные — гибридами.
Совет тем, кто хочет попробовать прямо сейчас: не ждите идеального качества. Используйте GFusion-10B для стриминговых чатов, где скорость важнее идеального фактчекинга. А для серьезных аналитических отчетов — оставьте GigaChat. Или поднимите связку через распределенный инференс с разделением prefill/decode — это тоже дает ускорение, но требует лишнего железа.
P.S. Если у вас остались вопросы по настройке, пишите в комментариях. Разберем конкретные конфиги.