Диффузионные модели — класс генеративных нейросетей, которые создают изображения, видео и звук, последовательно убирая шум из случайного начального состояния. Практическая роль: это механика внутри Stable Diffusion, Midjourney и большинства современных генераторов картинок; понимание того, как она работает, превращает подбор параметров из ритуала в управляемый процесс.
Как модель учится расшумлять
Обучение — задача «угадай добавленный шум». Модель смотрит на миллионы изображений, к которым добавили шум известной силы, и учится предсказывать именно этот шум. Разметка с описаниями для этого не нужна — модель обучается на всём, что удалось собрать, поэтому базовые модели знают тысячи объектов и стилей. Текстовые описания подключаются отдельным механизмом и учат модель связывать слова с содержимым картинки.
Генерация — тот же процесс в обратную сторону. Модель получает чистый случайный шум и за несколько десятков проходов чуть-чуть убирает его, каждый раз отвечая на вопрос «какой шум здесь лишний?». Когда шаги заканчиваются, остаётся изображение. Главное следствие: генерация — это цикл из десятков прогонов сети, а не один проход, поэтому время получения картинки растёт почти линейно с числом шагов.
Сид фиксирует стартовый шум. Один и тот же промпт с одним сидом даёт воспроизводимый результат, с другим — новую реализацию той же задумки. При отладке пайплайна сид фиксируют, чтобы отличать влияние изменений промпта и параметров от обычной случайности.
Steps и guidance scale: что реально контролируют
Шаги (steps) — число итераций расшумления, а не «детализация». Рабочий диапазон — 20–40 шагов. После определённого порога качество выходит на плато: 80 шагов не дают вдвое лучшую картинку, а время генерации растёт. Сколько шагов нужно, зависит от сэмплера — численной схемы, которая ведёт процесс расшумления: одни сэмплеры сходятся за 15–25 шагов, другим требуется 40–50.
Guidance scale (CFG) — сила следования промпту. Типичные значения — 4–12, дефолт в большинстве интерфейсов — около 7. Низкие значения дают разнообразие, но модель хуже слушается текста; высокие усиливают соответствие промпту, но пересушивают цвета и выжигают контраст — изображение выглядит «пережаренным». За пределами 12–15 большинство моделей деградирует в артефакты, а не улучшается.
Параметры работают в паре. Мало шагов при высоком guidance — мутная, недосушенная картинка; много шагов при низком — лишнее время без прироста качества. Рабочую точку выбирают замером: фиксируют промпт и сид, прогоняют сетку из трёх-четырёх значений guidance и двух значений шагов, смотрят результат на своих задачах.
Латентная диффузия: почему это работает на домашних GPU
Расшумление идёт не в пикселях, а в сжатом пространстве. Энкодер переводит изображение, например 512×512, в компактное представление примерно 64×64 — в восемь раз меньше по каждой стороне. Все шаги диффузии происходят внутри этого латента, и только в конце декодер разворачивает результат обратно в полноценную картинку. Вычислений на порядки меньше, чем при работе с полными пикселями.
Именно сжатие сделало генерацию массовой. Диффузия в пиксельном пространстве требует серьёзных ускорителей; латентные модели начального поколения укладываются примерно в 4–6 ГБ видеопамяти, более крупные — в 8–12 ГБ. Это диапазон потребительских видеокарт, отсюда локальные инсталляции и большие сообщества вокруг открытых моделей.
У сжатия есть цена. Латент выбрасывает часть мелких деталей, поэтому мелкий текст, тонкие линии и фактуры модель воссоздаёт приблизительно. Отсюда стандартный пайплайн: генерация в нативном для модели разрешении, затем отдельный апскейл — а не попытка получить 4K сразу.
Текстовое условие и его слабые места
Промпт превращается в векторы текстовым энкодером. В большинстве открытых моделей эту роль играет CLIP: он переводит слова в векторы, а механизм внимания внутри сети связывает области латента с токенами. Контекст энкодера ограничен — порядка 75–77 токенов на фрагмент промпта, длинные описания обрезаются или режутся на части.
Порядок слов и связи объектов учитываются слабо. «Красный куб на синем ящике» и «синий ящик под красным кубом» для энкодера почти неразличимы; привязка признаков путается, когда объектов много. Пространственные отношения — «слева», «выше», «за» — самая частая жертва. Отрицания не работают: слово «без» лишь добавляет концепт в условие.
Руки, текст и мелкая механика — системные слабости, а не баги конкретной модели. Пальцы — мелкие суставчатые структуры, которые в обучающих данных встречаются в тысячах ракурсов, часто с артефактами; буквы — мелкая графика, которую латент сжимает вместе с фоном. Для читаемого текста на картинке обычно генерируют фон и накладывают надпись типографикой.
Композицию промптом надёжно задать нельзя. Раскладку объектов, позу и ракурс контролируют отдельными механизмами — ControlNet и IP-Adapter.
Где уместно, а где нет
Метод окупается, когда важна правдоподобность, а не точность. Концепты и итерации дизайна, иллюстрации и обложки, фоны и текстуры, стоковые подложки, серии вариаций одного мотива. Общее свойство: результат оценивает человек, а ошибка стоит дёшево — перегенерировать.
Без дополнений не годится там, где нужна фактичность. Точное изображение реального продукта, соответствие брендбуку, читаемый текст, стабильный персонаж — базовая модель этого не даёт: нужны дообучение или контроль структуры. Изображения с претензией на достоверность («как это выглядело на самом деле») — не область генерации в принципе.
Считайте стоимость итераций, а не одной картинки. Десятки генераций на один годный результат — норма; в оценку проекта закладывают полный цикл отбора. Локальный запуск на своей видеокарте почти бесплатен на инференсе, но требует покупки и обслуживания железа; API оплачивается по факту, без капитальных затрат.
Типичные ошибки
- «Больше шагов — лучше». После выхода на плато лишние шаги только удлиняют генерацию; если картинка не устраивает, проблема почти всегда в промпте, сиде или guidance, а не в числе шагов.
- Guidance 15 «для послушания». Модель действительно сильнее держится текста, но ценой пересушенных цветов и артефактов; обычно полезнее упростить промпт, чем задирать CFG.
- Промпт-простыня. Энкодер ограничен по токенам, а внимание распыляется: десять равнозначных требований выполняются хуже, чем три расставленных по приоритету.
- Генерация сразу в высоком разрешении. Модель, обученная на 512–1024, на 2048 выдаёт дублирующиеся объекты и артефакты; масштабируют после генерации апскейлом.
- Вывод по одному изображению. Единичная генерация — случайная точка распределения; сравнивать промпты и параметры нужно по нескольким сидам.
Частые вопросы
Сколько шагов ставить по умолчанию?
Начинайте с 25–30 с быстрым сэмплером и не поднимайте без причины. Если качество упирается — проверьте guidance и промпт; шаги влияют в первую очередь на время.
Почему картинка выглядит «пережаренной» и что делать?
Почти всегда это высокий guidance: снижайте на 1–2 за итерацию, пока цвета не вернутся к естественным. Иногда причина — дублирование условия, когда одно и то же требование повторяется в промпте несколько раз.
Почему модель путает «слева» и «справа», цвета объектов?
Текстовый энкодер слабо различает порядок и связи: признаки «прилипают» к ближайшим существительным случайно. Для точной раскладки нужен контроль структурой, промптом это не чинится.
Какая видеокарта нужна для локального запуска?
Модели начального поколения — от 4–6 ГБ видеопамяти, крупные — 8–12 ГБ; снижение точности весов (квантизация) уменьшает требования ценой небольшой деградации качества.
Можно ли сгенерировать сразу в 4K?
Нет: модели обучены на своих разрешениях, и выход за них ломает композицию. Правильный цикл — генерация в нативном разрешении, затем апскейл отдельным инструментом.
Как диффузия используется в видео?
Та же механика, но с дополнительной задачей согласованности кадров; классы задач и их зрелость разобраны в статье про генерацию видео.
Что почитать по теме
- ControlNet и IP-Adapter — управление композицией, позой и стилем;
- Апскейл и реставрация — увеличение разрешения после генерации;
- Генерация видео — диффузия во времени;
- LoRA — дообучение моделей на своих стилях и персонажах;
- Маркировка синтетического контента — обязательства при публикации.