- Added support for a new extension, `swarm-assistent`, in `extensions.example.yaml` with a requirement for `ollama`. - Enhanced the README.md to clarify the setup process and provide a quick start guide for using extensions. - Updated documentation in `llm.md` to reflect the opt-in nature of LLM support and provide clearer instructions for enabling it. - Improved the `autocomplete.md` to detail the automatic setup of word lists during the initial launch. - Revised `cli.md` to include new commands and options related to LLM runtime handling and extension management. - Enhanced the `spike-notes.md` to guide users through the first live run with a focus on LLM integration.
5.9 KiB
Концепция
Проблема
GPU в облаке дорогой. Веса для генерации картинок — десятки гигабайт. Поднимать сервер и заново качать модели на каждый сеанс долго и бессмысленно. Держать GPU включённым «на всякий случай» ещё дороже.
Решение
- Арендовать прерываемый облачный сервер Selectel с GPU (~70% дешевле обычного, без SLA).
- Хранить ОС, бинарники SwarmUI, модели, ComfyUI и результаты на сетевых дисках. Они переживают удаление и остановку VM.
- Локальный CLI создаёт (или восстанавливает) сервер и отдельно, когда нужно, пробрасывает SwarmUI на
localhost:17801. - GPU гасится командой
stop, idle-killer на VM, или (опционально) local-watchdog при unclean exit. Диски остаются. Без watchdog ноут можно закрыть — compute не умирает.
Пользователь открывает браузер на http://127.0.0.1:17801, переключает Cursor MCP на этот URL или бьёт в HTTP API SwarmUI. Локальный SwarmUI на 7801 не трогаем.
Что входит в продукт
- Одна GPU-сессия на проект gpu-rent (тег), не «по экземпляру CLI».
- Интерактивный запуск и запуск с флагами. Preemptible по умолчанию (
--no-spotесли нужна гарантия). - Автовосстановление после прерывания хостером (
EXPIRED→unshelve). - Idle-killer на VM и
stopс любой машины, где есть.env— даже без туннеля. - Первый seed моделей с Civitai по манифесту (если есть API-токен); иначе дефолт SwarmUI.
- Push из
./Models,./Wildcards,./CustomWorkflows, если папки не пустые; optional pull./Output. - Первый clone git-реп расширений SwarmUI и ComfyUI nodes из
extensions.yaml. - Autocomplete: word-list в
Data/Autocompletionsдо старта UI, на каждомupпроверка новой версии. doctorдо create; фоллбек flavor;holdдля idle-killer; toast когда backend Idle;openна 17801.- Opt-in LLM (Ollama / llama.cpp) через
setup/--ollama/LLM_RUNTIME. status: диск, ₽/час, окно preempt 24 ч, состояние killer.- Snapshot boot-диска после первого удачного bootstrap.
Что не входит (пока)
- Несколько одновременных GPU из этого CLI.
- Мультипользовательский доступ и публичный URL SwarmUI.
- Зеркало локального SwarmUI целиком, S3 как источник правды, команда
generateв CLI. - Автопатч
mcp.jsonв Cursor (только печать сниппета). - Облачный биллинг-дашборд Selectel: оценка ₽/час перед create (цифры с spike / панели, не отдельный биллинг API).
Модель стоимости (как есть у Selectel)
| Ресурс | Пока VM работает | После прерывания / удаления compute |
|---|---|---|
| vCPU, RAM, GPU, локальные диски | тарифицируются | с следующего часа — нет |
| Сетевые диски | тарифицируются | тарифицируются всегда |
| Публичный IP / публичная подсеть | тарифицируются | тарифицируются, пока не удалены |
Прерываемый сервер живёт не больше 24 часов с момента создания или restore и может быть остановлен в любой момент. Это не AWS-spot с «может повезти неделями»: суточный потолок — часть контракта.
Сетевой диск тарифицируется всегда: даже 100 GB — постоянный месячный расход при нуле сессий. Перед первым запуском CLI должен сказать это вслух.
Ориентир публичных цен (не договор): облачный сервер с 2×RTX 4090 у Selectel начинается примерно от 210 ₽/час за обычный тариф; preemptible в среднем на ~70% ниже. Точную цифру для выбранного flavor считать в калькуляторе/панели на этапе spike.
Принципы
- Не оставлять GPU без хозяина. Падение CLI и сон ноутбука не гасят compute сами — это делает idle-killer на VM и команда
stop. State на диске + reconcile, если killer не сработал. - Не ставить стек с нуля каждый раз. Cloud-init «apt + dotnet + git clone SwarmUI» на каждый preempt съедает дешёвые часы. Первый bootstrap — на сетевой boot-диск, дальше
unshelveили create from volume. - Не форматировать диск дважды. Маркер файловой системы, никогда
mkfs«если blkid не ответил». - SwarmUI не торчит в интернет. На VM порт только на loopback, снаружи — SSH.