Идея SD Studio выросла из сугубо практической задачи: разработчику и его жене понадобились иллюстрации для текстовой фэнтези-игры, рисовать никто не умел, а платные сервисы вроде Midjourney оказались дорогими для хобби-проекта. Выбор пал на Stable Diffusion с локальным запуском — но быстро выяснилось, что подбор промптов, моделей, LoRA-файлов и параметров сэмплирования занимает больше времени, чем сама генерация.
Stable Diffusion — это семейство диффузионных моделей для генерации изображений по текстовому описанию, которые можно запускать локально на потребительских видеокартах. В отличие от облачных сервисов, пользователь сам контролирует модели и данные. LoRA (Low-Rank Adaptation) — лёгкие дополнения к базовой модели, которые добавляют ей новые стили или объекты без полного переобучения.
| Провайдер LLM | Особенности | Текущий статус у автора |
|---|---|---|
| LM Studio | Графический интерфейс, удобен для старта | Использовался на начальном этапе |
| Ollama | Работает как демон, меняет модели по API, удобный CLI | Используется сейчас |
| llama.cpp | Самый быстрый вариант | Не используется: не поддерживает смену модели через API |
Первая версия решения была встроена в административную панель на Symfony: один провайдер общался с локальной LLM, которая по описанию из файлов с лором игры составляла промпт для Stable Diffusion, второй отправлял этот промпт в SD с заранее заданными настройками. Схема работала, но была жёстко привязана к конкретному контексту. Когда понадобилось сменить модель или задачу, автор решил не переписывать код в очередной раз, а вынести логику в универсальный инструмент.
LLM-провайдеры поддерживают LM Studio, Ollama и llama.cpp; модели можно менять на лету через API.
Так появилась SD Studio. Стек выбирался из практических соображений: семья работает на трёх разных ОС (Linux, Windows, macOS), а LLM и Stable Diffusion крутятся на игровом ПК с Windows. Go обеспечил бэкенд, Vue — интерфейс, а фреймворк Wails связал их в единый исполняемый файл. По словам автора, в отличие от Electron бинарник получился компактным и быстрым.
Центральный элемент архитектуры — система пресетов. Пресет объединяет выбор модели Stable Diffusion, набор LoRA-файлов, параметры генерации и базовый промпт, на основе которого LLM дорабатывает пользовательское описание под нужный стиль: аниме, реализм, кино и т.д. Если пользователь не знает, какой пресет выбрать, встроенная LLM анализирует все доступные и рекомендует подходящий. Пресеты можно объединять в пайплайны: первая модель генерирует изображение, вторая его дорабатывает. Это позволяет совмещать сильные стороны разных моделей — например, богатую фантазию Pony с качеством рендера моделей, обученных на реалистичных портретах.
Отдельного внимания заслуживает функция Multi-Scene. Stable Diffusion плохо справляется со сценами, где нужно разместить несколько независимых персонажей: модель пытается уместить всё описание в одном образе и получает гибриды. SD Studio решает это иначе: LLM разбирает текстовое описание сцены на фон и отдельных персонажей, каждый элемент генерируется независимо, затем библиотека Rembg вырезает персонажей с фона, вставляет их на общий фон, а финальный пресет обрабатывает всю сцену целиком, чтобы убрать видимые швы.
Для работы с LLM поддерживаются три локальных провайдера: LM Studio, Ollama и llama.cpp. Автор остановился на Ollama — он работает как системный демон и умеет переключать модели по API-запросу, что нужно для двух разных задач: генерации промптов и анализа изображений. llama.cpp быстрее, но не поддерживает смену модели через API.
Среди прочих возможностей — Batch-генерация (запуск сразу нескольких вариантов, пока пользователь занимается другими делами), инструмент Compare для визуального сравнения результатов разных пресетов и пайплайнов, встроенный File Browser и система сессий с историей шагов обработки, позволяющая откатиться к любому промежуточному результату. Проект опубликован под лицензией AGPL v3, облачных зависимостей нет.



