Files
gpu-rent/docs/concept.md
T
2026-08-21 02:42:48 +03:00

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 (пустая очередь). Диски остаются. Ноут можно закрыть — 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.