Ты сгенерировал идеальную обложку, показал команде, все довольны. Через месяц дизайнер открывает тот же контур, вводит тот же промпт и получает картинку, которая похожа, но уже не из той же серии. Оттенок сместился, композиция поехала, узнаваемость пропала. Формально ничего не сломалось. Фактически брендовый стиль перестал быть стилем и стал случайностью.
Для коммерческой команды важен не один красивый кадр, а способность получить узнаваемую серию через месяц. Единичная генерация проверяет, что модель в принципе умеет рисовать в нужную сторону. Повторяемость проверяет другое: что ты можешь зафиксировать этот результат и вернуться к нему после смены версии, машины или настройки. Это разные свойства, и второе не следует из первого.
Дальше - предложенный способ проверки, а не отчёт о проведённом эксперименте. Идея простая: собрать малый утверждённый style-набор из промптов, параметров и критериев, прогнать через каждый контур и вести журнал повторяемости. По этому журналу строится карта стабильности сценариев, и уже она, а не отдельный удачный рендер, решает, какой контур подходит для брендового потока. Если ты сравниваешь облако с локальным запуском вообще - ты споришь о вкусах. Если ты сравниваешь повторяемость на одинаковых критериях - ты принимаешь измеримое решение.
Маршрутов в таком тесте может быть больше двух. provod.ai — российский аналог OpenRouter поддерживает генерацию и редактирование изображений через доступные в нём модели, так что его можно завести в журнал третьей строкой и оценить по тем же критериям. Совпадения кадров с локальной сборкой сервис при этом не обещает.
Платите в рублях за AI-модели без наценки на токены через provod.ai
Почему один красивый кадр обманывает?
Распространённое допущение звучит так: если хотя бы раз получилось красиво, контур подходит. Для дизайн-концепта это верно. Для брендового потока - нет, потому что бренд живёт сериями, а не отдельными артефактами.
Диффузия - процесс с элементом случайности. Гайд Hugging Face по воспроизводимости прямо называет её "random process that generates a different output every time" (случайный процесс, который каждый раз выдаёт другой результат). То есть по умолчанию два запуска с одним промптом дают разные картинки, и это заложено в саму механику, а не является багом.
Отсюда практический вывод. Выбирать image-контур по одному кадру - значит выбирать по свойству, которое контур в принципе не обязан удерживать. Удачный рендер доказывает, что модель попадает в стиль иногда. Решение о брендовом потоке требует знать, попадает ли она в него повторно.
Что положить в контрольный style-набор?
Style-набор - это не галерея красивых картинок. Это фиксированная таблица из четырёх колонок: промпт, параметры, критерий и повторяемость. Каждая строка - один сценарий, который должен воспроизводиться.
Промпт фиксируется дословно, включая порядок слов и негативные подсказки. Параметры - это конкретные значения генерации, которые контур принимает как вход. Критерий - утверждённое заранее правило, по которому человек или скрипт решает, попал результат в стиль или нет: допустимая палитра, тип композиции, наличие или отсутствие текста, узнаваемый ракурс. Повторяемость - результат повторных прогонов по этому критерию, записанный в журнал.
Смысл малого набора в том, что его дёшево готовить и легко повторно оценивать. Пяти-восьми сценариев хватает, чтобы увидеть, где стиль держится, а где плывёт. Большой набор откладывает решение и размывает критерии. Причина, по которой набор вообще нужен, приземлённая: без зафиксированных параметров и утверждённых критериев результат нельзя оценить повторно, а значит, нельзя и сравнить контуры честно.

Что на самом деле фиксирует seed в Stable Diffusion API?
Заказчик формулирует задачу одинаково: «дайте картинки в нашем стиле». Инженер за этой фразой видит разные системы. Запрос stable diffusion api обычно означает облачный сервис с оплатой за вызовы. Формулировка api stable diffusion шире - под ней может скрываться и сторонний посредник, и своя обёртка над локально развёрнутыми весами. А stable diffusion diffusers - это уже прямой разговор про библиотеку и собственное железо. Механика повтора у этих маршрутов разная, поэтому спор о стабильности стоит начинать с приведения запроса к конкретному контуру.
Официальный облачный контур - Stability AI Platform API, он же stability ai api в поисковых формулировках. Генерация в нём построена на кредитах. По документации Stability AI на 2026-07-18 этот API выставляет seed, cfg_scale и steps как явные параметры генерации. Документация утверждает, что одинаковый seed вместе с неизменёнными остальными параметрами предназначен для получения того же изображения, и рекомендует seed=0, чтобы результат рандомизировался, а не фиксировался. То есть на стороне API у тебя есть управляемая ручка повтора - но только пока совпадают все прочие параметры.
Локальный контур на библиотеке Diffusers выглядит гибче, но требует аккуратности. По гайду Hugging Face точное воспроизведение требует передавать не сырое целое число, а объект torch.Generator с фиксированным manual_seed, потому что внутреннее состояние генератора меняется после каждого использования. Компактный пример из документированного поведения:
import torch from diffusers import DiffusionPipeline
# CPU-генератор ради воспроизводимости (рекомендация Diffusers) generator = torch.Generator(device="cpu").manual\_seed(33)
pipe = DiffusionPipeline.from\_pretrained("stabilityai/stable-diffusion-xl-base-1.0") image = pipe("brand key visual, flat editorial style", generator=generator).images[0]
Если в тот же тест ты добавляешь ещё один медиамаршрут через OpenAI-совместимый эндпоинт, он подключается сменой ключа и базового адреса, а критерии остаются прежними:
from openai import OpenAI
client = OpenAI(api\_key="ВАШ\_КЛЮЧ", base\_url="https://api.provod.ai/v1") # генерация изображения по тому же промпту и тому же критерию стиля
Здесь важно не перепутать уровни. API-параметры отвечают за то, что подаётся на вход. Совпадение выхода зависит ещё и от того, что происходит под капотом на конкретной машине - и вот тут облачный и локальный контуры расходятся сильнее всего.

Локальный Diffusers не гарантирует тот же кадр даже с правильным генератором
Даже с правильным torch.Generator локальная воспроизводимость упирается в железо. Тот же гайд Hugging Face отмечает, что GPU и CPU используют разные генераторы случайных чисел, и рекомендует для критичных к воспроизводимости задач всегда брать CPU-генератор, часто с пренебрежимо малой потерей производительности. Гайд ссылается на собственные заметки PyTorch о воспроизводимости, где сказано прямо: результаты "not guaranteed even with an identical seed" (не гарантируются даже при одинаковом seed).
Полная детерминированность в Diffusers достигается функцией enable_full_determinism(), и она честно платит производительностью за повтор. По документации она отключает бенчмаркинг cuDNN (torch.backends.cudnn.benchmark=False), отключает TF32 и закрепляет CUBLAS_WORKSPACE_CONFIG=:16:8. Иными словами, детерминированный локальный запуск требует осознанно выключить оптимизации, которые по умолчанию включены ради скорости.
Практический смысл для брендового потока такой. Локальный контур может дать высокую повторяемость, но эта повторяемость - не бесплатное свойство «из коробки», а режим, который ты включаешь и удерживаешь. Как только кто-то в команде вернёт оптимизации ради скорости, стиль тихо поедет, и обнаружится это на следующей серии.
Локальная сборка ломает стиль по причинам, которых нет в промпте
Сообщество вокруг AUTOMATIC1111/stable-diffusion-webui собрало отдельный список причин, по которым идентичный seed даёт разный кадр. В обсуждении воспроизводимости от мейнтейнеров сказано, что точное воспроизведение требует совпадения seed, сэмплера, всех параметров генерации, железа и версии WebUI с зависимостями.
Отдельно там названы ловушки, которые легко пропустить. Библиотека xformers прямо описана как "not deterministic" (недетерминированная), особенно с бэкендом CUTLASS. Разные архитектуры GPU - например Pascal против Turing - способны молча изменить результат при одном и том же seed. Даже смена числа задействованных ядер CPU может сдвинуть выход. Ни одна из этих причин не видна в промпте, и потому они опаснее всего: параметры на экране те же, а серия уже другая.
Это и есть таксономия отказов локального повтора. Она объясняет, почему брендовый дрейф обнаруживается поздно - обычно после апгрейда драйвера, переезда на другую видеокарту или обновления окружения, когда старый seed уже считается «проверенным».

Сколько стоит «бесплатно»: лицензии и кредиты
Локальный запуск обычно выбирают как дешёвый: веса скачаны, счёт за вызовы не капает. Но у слова «бесплатно» здесь две цены. Первая - нестабильный результат между версиями и настройками, о ней выше. Вторая - юридическая, и она бьёт именно по коммерческому потоку.
Community License от Stability AI, покрывающая набор SD 3.5 и другие «Core Models», разрешает бесплатное коммерческое использование только пока годовая выручка пользователя или его аффилиатов остаётся ниже 1 000 000 долларов США - причём независимо от того, приходит эта выручка прямо или косвенно от модели. Выше порога нужна платная Enterprise License. По условиям той же лицензии при распространении результатов и производных работ нужно прикладывать копию лицензии, указывать атрибуцию "licensed under the Stability AI Community License" и уведомление "Powered by Stability AI", а обучать на выходах конкурирующие базовые модели запрещено.
Старые чекпойнты живут по другому праву. SDXL Base 1.0 лицензирован под CreativeML Open RAIL++-M License от 26 июля 2023 года - она безвозмездна и без заявленного порога по выручке, но со своим списком ограничений использования. Это материально другая правовая основа, чем у новой Community License для SD 3.5, и смешивать их в одном потоке нельзя. Отдельно учти механику оплаты: API Stability работает на предоплаченных кредитах, и Stability AI публично анонсировала как минимум одно изменение тарифов (пересчёт кредитов за апскейлеры и инструменты правки), то есть цена за вызов не зафиксирована навсегда.
Свести это в одну таблицу проще, чем держать в голове. Полного TCO в ней нет - только свойства, которые влияют на повторяемый брендовый результат.
| Критерий | Stable Diffusion API (облако) | Локальная модель (Diffusers/WebUI) |
|---|---|---|
| Механика повтора | seed + неизменные параметры предназначены воспроизвести кадр (докум. Stability AI) | Нужен torch.Generator, CPU-генератор, отключённые оптимизации |
| Что молча ломает стиль | Смена версии сервиса, пересчёт кредитов | xformers, архитектура GPU, число ядер CPU, версия окружения |
| Юр. основа | Условия провайдера поверх лицензии модели | Community License (порог $1M) или RAIL++-M для SDXL |
| Оплата | Предоплаченные кредиты, тариф менялся | Своё железо и его обслуживание |
| Инфраструктура | Не требуется своя | Требуется и должна фиксироваться |
У российской команды к этой таблице добавляется строка, которой в англоязычных сравнениях нет: чем оплачивать прогоны. Он встаёт до всякого style-теста и решается отдельно от техники. provod.ai как медиамаршрут закрывает именно его: оплата идёт в рублях российской картой, через СБП или по счёту, без VPN и иностранных карт, а доступ к моделям даётся по официальным ценам провайдеров без наценки самого сервиса. На повторяемость стиля это не влияет никак. Зато третий маршрут в журнале перестаёт упираться в поиск карты, которой можно оплатить зарубежный сервис.
Как прогнать style-тест по шагам
Метод рассчитан на малый утверждённый набор и один общий журнал. Он не требует большой инфраструктуры и специально сделан дешёвым в подготовке.
- Утверди критерии стиля до генерации. Пока критерий не согласован, повтор нечем измерять - это условие отказа, а не формальность.
- Зафиксируй промпты и параметры дословно для каждого сценария и запиши версии всего, что участвует: модель, библиотека, драйвер, тариф.
- Для облачного контура задай явный
seed(не0), фиксированныеcfg_scaleиsteps. Для локального -torch.Generatorна CPU и, при необходимости,enable_full_determinism(). - Прогони каждый сценарий несколько раз с интервалом - в идеале после перезапуска окружения, чтобы поймать дрейф от версии и железа, а не только от seed.
- Оцени каждый прогон по утверждённому критерию и запиши результат в журнал повторяемости.
- Собери карту стабильности: какие сценарии держатся в каждом контуре, какие плывут. Дальше выбирай контур под конкретный брендовый сценарий по этой карте.
Ключевое условие корректности - шаг 2. Если версии не зафиксированы, результат контура невозможно отделить от смены версии, и весь журнал превращается в набор красивых картинок с датами.

Чего этот тест не решает
Честно про границы. Style-тест отвечает на один вопрос - воспроизводимость утверждённого стиля на фиксированных параметрах - и не претендует на большее.
Полный TCO остаётся за его границами: железо, электричество, обслуживание локальной сборки и совокупные расходы на кредиты за год считаются отдельно. Результат тоже не переносится сам собой: то, что стиль держится на брендовом key visual, ничего не говорит про иллюстрации, иконки или продуктовые фото - для них нужен свой набор сценариев. И юридическую проверку тест не заменяет: пороги выручки, атрибуцию и списки ограничений придётся читать по актуальным лицензиям на дату теста, а условия конкретного API-провайдера могут накладывать свои правила поверх лицензии модели.
Есть и ограничение по самой природе вывода. Стабильность в контрольном наборе относится к заданным промптам и параметрам; на все будущие изображения она не распространяется. Устойчивость будущих версий, лицензий и цен тест не предсказывает - все источники здесь описывают состояние на 2026-07-18 и подлежат переподтверждению. Карта стабильности живёт ровно столько, сколько живут условия, в которых её собрали.
FAQ
Достаточно ли одинакового seed, чтобы получить тот же кадр?
Нет. По документации Stability AI одинаковый seed с неизменными параметрами предназначен воспроизвести изображение в облаке, но заметки PyTorch прямо говорят, что результат не гарантируется даже при идентичном seed, а локально на повтор влияют генератор, оптимизации и железо.
Локальный запуск воспроизводимее облачного?
Это гипотеза для конкретного сценария, а не общий факт. Локально можно добиться высокой детерминированности через CPU-генератор и enable_full_determinism(), но ценой производительности и при условии, что версия окружения и архитектура GPU не менялись.
Можно ли коммерчески использовать SD 3.5 бесплатно?
По Community License - да, пока годовая выручка ниже 1 000 000 долларов США, с обязательной атрибуцией и уведомлением "Powered by Stability AI". Выше порога нужна Enterprise License. У SDXL Base 1.0 основа другая - RAIL++-M без порога выручки, но со своими ограничениями.
Зачем нормализовать поисковые формулировки вроде api stable diffusion?
Потому что одна и та же фраза скрывает три разных контура с разной механикой повтора. Приведение запроса к конкретному маршруту до генерации избавляет от спора о стабильности разных систем под одним именем.

provod.ai — единая точка для retrieval и генерации
Не разделяйте RAG-пайплайн между несовместимыми кабинетами: эмбеддинги, поиск и генерация ответа подключаются через общий контур, а модель можно менять без новой платёжной интеграции.
В одном каталоге — актуальные модели для текста и медиа: GPT от OpenAI, Claude от Anthropic, Gemini от Google, Grok от xAI, DeepSeek, Qwen, GLM, Kimi и MiniMax; для изображений — Nano Banana 2 Pro и GPT Image; для видео — последние версии Seedance, Kling, Veo и Google Omni. Также доступны модели для reasoning, поиска, документов, эмбеддингов, музыки и аудио.
Единая точка доступа не скрывает экономику компонентов: стоимость каждого вызова соответствует официальному тарифу 1:1, без маржи provod.ai.
Соберите RAG на едином балансе: форма регистрации · цены на модели · защита данных по 152-ФЗ · API и интеграции
Источники
- Stability AI, API reference (
seed,cfg_scale,steps,seed=0), доступ 2026-07-18 - https://platform.stability.ai/docs/api-reference - Hugging Face, Diffusers reproducibility guide (
torch.Generator, CPU vs GPU,enable_full_determinism()), доступ 2026-07-18 - https://huggingface.co/docs/diffusers/en/using-diffusers/reusing_seeds - AUTOMATIC1111/stable-diffusion-webui, обсуждение воспроизводимости (xformers, архитектуры GPU, ядра CPU), доступ 2026-07-18 - https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/7809
- Stability AI, Community License (порог $1,000,000, атрибуция), доступ 2026-07-18 - https://stability.ai/license и https://huggingface.co/stabilityai/stable-diffusion-3.5-large/blob/main/LICENSE.md
- Stability AI, SDXL Base 1.0 License (CreativeML Open RAIL++-M, 26.07.2023), доступ 2026-07-18 - https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/LICENSE.md
- Stability AI, обновление тарифов API (кредитная модель), доступ 2026-07-18 - https://stability.ai/api-pricing-update-25
