KRT Studio
Единая self-hosted AI-студия: генерация и редактирование изображений, видео и аудио на собственных GPU, в одном интерфейсе.
- 40+ моделей
- image · video · audio · TTS
- 12 инструментов редактора
- VRAM-aware runtime
Что это
Одна студия, которая работает с открытыми моделями на собственных GPU: генерация и редактирование изображений, генерация видео, музыка, TTS и звуковые эффекты. Не обёртка над одним API и не набор разрозненных веб-интерфейсов, а рабочее место с общими сессиями, историей и переносом результата между сценариями.
Почему появился
Каждая новая открытая модель приходит со своим запуском, своим набором параметров и своим интерфейсом. Через месяц у инженера пять разных UI, пять папок с результатами и ни одной общей истории. Мотив KRT Studio простой: новая модель должна добавляться в существующую студию, а не поднимать очередной отдельный интерфейс.
Архитектура
Путь запроса: UI → API → workers → model runtime → S3.
- UI — React-приложение: сессии, проекты, рабочая область, сравнение, встроенный редактор.
- API — FastAPI: роутеры по модальностям, сервисы генерации, батчей и сравнения, прогресс через SSE.
- workers — собственный протокол, сериализация и супервизор. Готовой очереди вроде Celery в проекте нет.
- model runtime — драйверы моделей и реестр спецификаций, загрузка и выгрузка с учётом свободной VRAM.
- storage — S3, MinIO или локальный диск; PostgreSQL или SQLite. Выбор делается конфигом.
Реестр моделей вместо фиксированной формы
Каждая модель объявляет собственные возможности и границы: диапазоны шагов и guidance, поддерживаемые разрешения, допустимое число LoRA и их вес, модель-специфичные параметры. Интерфейс показывает только те контролы, которые применимы к выбранной модели, и подставляет её дефолты.
Поэтому одна модель отдаёт слайдер guidance от 0 до 15, другая — фиксированное значение, третья не принимает guidance вообще, а четвёртая работает только на семи предопределённых разрешениях. Форма не сводится к общему знаменателю.
Загрузка и выгрузка — явные операции, и рядом с каждой моделью написано, сколько она займёт в VRAM. Загружено 32,4 GB; чтобы поставить следующую, предыдущую нужно выгрузить. Это не ограничение интерфейса, а честное отражение того, как работает GPU: две модели по 32 GB в одну карту не помещаются, и лучше показать это заранее, чем упасть на середине генерации.
Сейчас подключено больше сорока открытых моделей. Выборочно:
- Видео — Wan 2.2, LTX 2.3, MiniMax H3, Kandinsky 5.0, LongCat Video
- Изображения и редактирование — FLUX.2, Qwen Image, GLM Image, Z-Image, HiDream, Krea 2, LongCat Image, Mage-Flow
- Аудио — ACE-Step, Qwen3-TTS, Stable Audio, VoxCPM, HeartMuLa, MOSS SoundEffect
Рядом с каждой моделью — сколько она займёт в VRAM. От 27 GB у Wan 2.2 I2V до 80 GB у MiniMax-H3, поэтому решение «что загрузить» принимается до нажатия, а не после нехватки памяти.
Три модальности в одном интерфейсе
Image, Video и Audio — не отдельные приложения, а вкладки одной студии с общими сессиями и общей историей результатов.
Видео: image-to-video и text-to-video, длительность и частота кадров, свои параметры guidance для каждой модели, плеер с историей рядом.
Аудио: музыка, TTS и звуковые эффекты. Три режима работы с треком — генерация, ремикс и перерисовка фрагмента; референс стиля можно загрузить файлом, записать с микрофона или взять из текущей сессии. Панель расширенных параметров здесь самая плотная во всей студии: от BPM, тональности и размера до сэмплера, нормализации и настроек chain-of-thought у языковой модели. Это ровно тот случай, где реестр возможностей себя оправдывает — сводить такое к общей форме бессмысленно.
AI Director
Короткий запрос разворачивается в подробный промпт локальной моделью: «Pomeranian with glasses» превращается в описание с материалом оправы, освещением, фоном и настроением. Есть и обратный режим — описать уже готовое изображение.
Здесь же виден весь рабочий цикл целиком: слева сессии, справа развёрнутый промпт и параметры, в центре — что получилось у четырёх моделей на один и тот же запрос.
Модель подключается через любой OpenAI-совместимый endpoint: свой сервер инференса, локальный runtime или облако — по решению того, кто разворачивает студию. На скриншоте главного экрана это Qwen3.5-4B.
Смысл не в том, чтобы «добавить AI в интерфейс». Качество генерации у большинства image-моделей сильно зависит от длины и структуры промпта, а писать такие описания руками на каждый запрос никто не будет. Поэтому расширение промпта — часть рабочего цикла, а не отдельный чат в стороне.
Batch-генерация
Массовая генерация — не отдельный скрипт, а часть студии: задание идёт в фоне, окно можно закрыть, прогресс виден по каждой модели и каждому промпту, состояние переживает перезапуск.
Первый большой прогон дал 6 600 изображений на одиннадцати моделях. Затем набор расширился до семнадцати, и итоговый массив составил 10 200 изображений — около 72 часов генерации суммарно. Длительные задания прошли без перезапуска процесса: за это отвечают блокировка батча, реестр статусов и сверка состояния на стороне API.
Прогресс виден на двух уровнях: по моделям — сколько промптов пройдено у каждой, и по группам промптов — сколько кадров готово внутри группы. Внизу окна написано главное: задание идёт в фоне, окно можно закрыть.
Результат опубликован: открытый датасет и интерактивное сравнение, где можно выбрать промпт и поставить модели рядом.
Сравнение результатов
Сравнение работает в двух режимах. Сеткой — результаты разных моделей на один запрос стоят рядом, каждый кадр подписан именем модели. Шторкой A/B — два варианта под одним разделителем, который можно двигать.
Второй режим нужен, когда разница между вариантами в деталях, а не в композиции: на сетке два похожих кадра рядом выглядят одинаково, а под шторкой видно, что именно изменилось.
Встроенный редактор
Двенадцать инструментов: трансформации, кроп, поворот, отражение, масштаб, коррекция, кисть, текст, слои, фильтры, расширение кадра и экспорт. Кривые, привязки, линейки, навигатор и режим до/после — собственные реализации, а не подключённая библиотека.
Отдельный слой — препроцессинг: удаление фона, карта глубины, определение позы, детекция краёв Canny с тремя пресетами, MLSD для линий и структуры, апскейл на RealESRGAN, GFPGAN или CodeFormer в ×2 и ×4. Это то, что обычно живёт в отдельном приложении и переносится между ними файлами; здесь результат остаётся в той же сессии.
Что сделал
Весь проект целиком, самостоятельно: продуктовая архитектура, backend, протокол воркеров, model runtime, фронтенд, редактор и batch-пайплайн.