- Added `ollama-models.yaml` to .gitignore and implemented logic to copy it in gpu-rent.ps1 and gpu-rent.sh. - Enhanced env.example to include new variables for LLM runtime options and local watchdog configuration. - Updated CLI commands to support LLM options during setup and execution, including new flags for Ollama and llama.cpp. - Improved documentation in cli.md and README.md to reflect changes in LLM integration and local watchdog functionality. - Adjusted architecture and decisions documentation to clarify the role of LLMs and local watchdog in the system.
58 lines
5.8 KiB
Markdown
58 lines
5.8 KiB
Markdown
# Концепция
|
|
|
|
## Проблема
|
|
|
|
GPU в облаке дорогой. Веса для генерации картинок — десятки гигабайт. Поднимать сервер и заново качать модели на каждый сеанс долго и бессмысленно. Держать GPU включённым «на всякий случай» ещё дороже.
|
|
|
|
## Решение
|
|
|
|
1. Арендовать **прерываемый** облачный сервер Selectel с GPU (~70% дешевле обычного, без SLA).
|
|
2. Хранить ОС, бинарники SwarmUI, модели, ComfyUI и результаты на **сетевых дисках**. Они переживают удаление и остановку VM.
|
|
3. Локальный CLI создаёт (или восстанавливает) сервер и отдельно, когда нужно, пробрасывает SwarmUI на `localhost:17801`.
|
|
4. 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.
|
|
- `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.
|