У яблока на картинке идеальный характер. Красное, с упрямым листиком, лежит в нужном углу и, кажется, знает себе цену. Вы повторяете запрос — и на столе его троюродный брат. Тоже яблоко, но уже с намерением открыть консалтинговую фирму. Свет другой, листик другой, деревянный стол словно сменил хозяина.
Хочется вернуть именно удачное начало, а потом уже что-нибудь менять. Для этого в генерации изображений существует число seed. Сегодня разберём, что оно делает, почему повторное использование одного объекта может дать новый результат и какие сведения стоит сохранить с картинкой. Устанавливать библиотеку и запускать новую платную генерацию для этого разбора не нужно.
После потопа Девкалион и Пирра из книги Куна бросают камни за спину — так земля снова заселяется людьми. Каждый бросок приносит нового человека. У нас задача почти обратная: вернуть удачное яблоко на прежнее место. Для этого нужно разобраться, откуда начинается следующая попытка.
Сначала сохраним понравившуюся попытку
Если картинка уже есть, положите её в отдельную папку вместе с точным текстом запроса. Сохраните сведения о настройках из истории той попытки, если ваш сервис их показывает. Сегодняшний выбор модели и размеров мог отличаться от того, с которым получился удачный кадр.
Когда поле с названием Seed доступно, перепишите значение именно от нужной картинки. Пока не меняйте его и не подбирайте «красивое» число. Для сравнения важно вернуть тот же старт, а не найти число, которое эффектнее выглядит в записной книжке.
Если поля нет, так и отметьте: «seed не показан». Сервисы по-разному дают доступ к настройкам. Мы объясняем механизм на открытой библиотеке Diffusers, где он виден в коде; чужую кнопку наугад искать не потребуется.
В папке останутся картинка, её промпт и доступные параметры. Через неделю файл «финал_хороший_точно.png» не придётся допрашивать с лампой в лицо: при каких обстоятельствах он появился и кто ещё присутствовал при рождении яблока.
Число запускает последовательность
При такой генерации изображение начинается с шумовых значений. Модель постепенно превращает заготовку в картинку по запросу. Seed помогает задать начало работы генератора случайных чисел, который даёт эти значения. Более подробно сам путь от шума до изображения разобран в статье о диффузионных моделях.
Представьте ленту в маленьком заводном театре. Задали начальное число — поставили механизм к началу пьесы. Взяли значения для картинки — лента сдвинулась. Следующая порция лежит уже дальше. Чтобы снова поднять занавес в прежнем месте, придётся вернуть механизм назад.
В инструкции Diffusers о воспроизводимости для этого используется Generator. Это программный объект: он хранит текущее состояние генерации случайных значений. В изображение передают сам объект, который меняется по мере использования, а не просто число на бумажке.

Схема состояний: тот же объект продолжает последовательность после уже использованных значений.
Поэтому «я же не менял генератор» ещё не означает возврата к началу. Механизм тот же, лента сдвинулась. Имя переменной осталось на месте, а состояние внутри объекта уже другое.
Чтобы начать снова с того же места, генератор заново инициализируют тем же seed либо сбрасывают его к этому началу. В официальном примере начальное число равно нулю. Это обычное выбранное значение; особого таланта рисовать яблоки у нуля нет.
Две похожие команды означают разную работу
Первый вариант: создать генератор один раз, затем несколько раз подряд попросить картинку. Его состояние будет расходоваться. Второй: перед каждой попыткой заново задавать то же начальное число и сохранять остальные условия.
Это важно, когда вы меняете деталь запроса. Допустим, хотите добавить яблоку тень, а новая попытка одновременно переставила его в другой угол. Без сохранённого начала трудно разделить изменения условий. Если вернуться к прежнему старту и поменять только запрос, хотя бы одна причина различий останется под вашим управлением.
Второй путь позволяет сравнивать попытки от одного старта. Именно поэтому в повторяющемся примере Diffusers инициализация находится внутри цикла: перед каждым вызовом снова выполняется torch.manual_seed(0). Ниже — схема действий обычными словами, а не программа для запуска:
Продолжение:
задать начало → получить первую картинку → получить следующую
состояние уже изменилось
Повтор старта:
задать начало → получить картинку
задать то же начало заново → получить картинку при тех же условиях

Повторный старт и продолжение последовательности — разные действия. Схема не изображает результаты проведённого нами испытания.
Если вы работаете в готовом интерфейсе, детали управления зависят от него: где-то значение вводится перед запуском, где-то можно повторить попытку из истории. Помощнику лучше назвать именно вашу программу и дать текст её справки. Тогда он сможет объяснить, какое действие соответствует возврату к прежнему началу.
Что ещё нужно оставить прежним
Одно начальное число работает внутри конкретного процесса. Если сменить модель, запрос или размер изображения, вы меняете этот процесс. В таком опыте можно сравнить новую версию с прежней, но нельзя считать, что все условия остались одинаковыми.
Ещё один предмет — scheduler, способ вести изображение по шагам преобразования. В интерфейсах рядом могут встречаться названия sampler и scheduler; для сохранения попытки перепишите показанные названия и связанные настройки. В документации Diffusers scheduler определяет, как обновлять промежуточный результат на очередном шаге. Другая настройка этого пути меняет условия опыта даже при знакомом начальном числе.
Сначала достаточно сохранить то, что видно в вашей истории. Подробности среды пригодятся, когда нужно повторить программный запуск: версии библиотек, устройство и способ вычислений. PyTorch отдельно описывает, почему результаты могут различаться между выпусками, платформами, CPU и GPU. Поэтому перенос рецепта на другой компьютер — уже отдельное сравнение.
Не требуется заранее выучить эти названия. Для первой картинки полезнее заметка «взял настройки из такой-то попытки», чем рассказ о внутренностях видеокарты по памяти. Если какой-то пункт неизвестен, оставьте его неизвестным и найдите в справке или сохранённой конфигурации позже.
Пример для тех, кто работает в Diffusers
Открыть техническую карточку из документации
Возьмём текущий пример Diffusers. В нём используется модель Qwen/Qwen-Image и запрос о красном яблоке на деревянном столе. Число шагов в этом конкретном примере — четыре. Оно показывает устройство примера, а не рекомендацию для любой модели и любой картинки.
Разбор можно записать в такую карточку. Она заполнена по опубликованному коду; результат запуска мы не измеряли.
| Что сохраняем | Что видно в примере | Что это даёт для повтора |
|---|---|---|
| Модель | Qwen/Qwen-Image | Понятно, какой набор модели указан |
| Точная ревизия модели и версии библиотек | В примере явно не закреплены | Для строгого повтора их надо сохранить при своём запуске |
| Промпт | a red apple on a wooden table | Сохраняем без пересказа |
| Начальное число | 0, заново перед каждым вызовом | Возвращаем Generator к началу |
| Размер | Явно не задан | При своей попытке записываем фактическую ширину и высоту |
| Scheduler | Берётся из конфигурации загруженного процесса | Сохраняем его класс и параметры из своей конфигурации |
| Число шагов | 4 | Сохраняем именно выбранное значение |
| Вычисления | bfloat16; в приведённой строке выбран cuda | Отмечаем устройство и точность отдельно от seed |
У карточки есть полезное свойство: она показывает и известное, и пропущенное. Модель с тем же названием могла загрузиться из обновлённой версии, а размер без явного указания зависит от настроек выбранного процесса. В собственной попытке эти сведения стоит сохранить вместе с результатом. По короткому опубликованному примеру их задним числом не восстановить.
Рядом с карточкой оставьте ссылку на сам пример и дату чтения. Документация меняется, поэтому текст «делал как на сайте» слишком быстро теряет адрес. Для собственной удачной попытки лучший адрес — её запись в истории и сохранённый файл с настройками. Если работаете с разработчиком, передайте ему эту запись: так он увидит исходные условия и сам уточнит недостающие пункты среды.
Пусть ИИ соберёт заметку из ваших сведений
Для этого можно открыть DeepSeek и передать текст настроек своей попытки. Если он пока незнаком, начните с названия генератора. Помощник будет спрашивать по одному пункту, который действительно требуется уточнить.
Помоги сохранить рецепт понравившейся картинки.
Я дам точный промпт и доступные настройки из истории генерации.
Сначала узнай, какой программой я пользуюсь.
Собери короткую карточку: модель и версия, промпт, размер,
sampler/scheduler, число шагов, seed и способ его повторного задания,
среда запуска и другие реально указанные настройки.
Ничего не подставляй по догадке. Неизвестное отметь словами.
Если непонятно, где посмотреть нужное значение, объясни один шаг:
что открыть, что скопировать и какой результат я должен увидеть.
Жди моего ответа. Если у тебя есть поиск, сверяй действия
с официальной справкой; иначе попроси дать нужный её фрагмент.
Не обещай, что можешь сам увидеть мой экран или историю.
Сверьте карточку с исходными настройками. Помощник не должен превращать «модель неизвестна» в уверенный популярный вариант. Уберите и новое прилагательное, которое он случайно вставил в сохранённый промпт: рецепт должен хранить тот текст, с которым вы работали.

Для повторной работы сохраняют картинку вместе с рецептом. Число seed — один из его пунктов.
Теперь можно выбрать следующий маленький опыт: сравнить две попытки при прежних условиях или поменять одну вещь, например текст запроса. Во втором случае seed оставляют тем же, чтобы удержать одну из частей опыта. Сохраните оба результата и напишите рядом, что изменили. Тогда папка превратится в понятную историю решений, а не в ряд яблок, которым вы больше не можете объяснить происхождение.
Частые вопросы
Есть ли удачное число, которое всегда рисует красивее?
Seed в нейросети задаёт стартовую последовательность, а красоту вы оцениваете по полученной картинке и своей задаче. Число от понравившегося варианта полезно сохранить как часть именно этого рецепта.
Почему я ввёл то же число, а яблоко всё равно другое?
Сначала сравните модель, её версию, точный промпт, размеры и параметры преобразования. Если это программный запуск, проверьте, вернули ли Generator к началу перед новой попыткой, и не изменилась ли среда. Так вопрос распадается на конкретные различия.
Можно этим числом сохранить лицо человека во всех сценах?
Одно начальное число не задаёт отдельное правило сохранения лица при разных запросах и условиях. Для задачи узнаваемого персонажа нужно выбирать подходящий способ работы с исходным изображением. Наш рецепт помогает повторять условия генерации и разбирать изменения между попытками.
Чем это отличается от температуры текстовой модели?
Здесь мы разбираем начальное состояние генератора случайных значений при создании картинки. Температура относится к другой настройке — выбору продолжения у текстовой модели. Два названия не заменяют друг друга.
Что делать, если мне нужен только один красивый результат?
Сохраните сам файл и запрос. Если хочется ещё поработать с идеей, пригодится способ описать задачу для ИИ: какой предмет нужен, что в текущем варианте нравится и что хотите поменять. Полный рецепт поможет, когда решите вернуться к условиям удачной попытки.
Положите заметку рядом с картинкой. У яблока появятся адрес в истории, текст запроса и известные условия появления. Вы сможете вернуться к исходной попытке, сравнить следующую и продолжить свою идею. А его троюродный брат пусть пока открывает фирму в другой папке.