Files
gpu-rent/docs/concept.md
T
Leonid Pershin 2005b00175 Update configuration and documentation for LLM support and local watchdog
- 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.
2026-08-21 05:29:23 +03:00

5.8 KiB

Концепция

Проблема

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 если нужна гарантия).
  • Автовосстановление после прерывания хостером (EXPIREDunshelve).
  • 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.