Files
gpu-rent/docs/concept.md
T
Leonid Pershin 7ed6a99df2 Enhance LLM and SwarmUI integration with improved configuration options
- Updated `env.example` and `gpu-rent.vars.example` to include new variables for LLM runtime and SwarmUI options.
- Refactored CLI commands to support interactive selection of LLM runtime and workload type (SwarmUI, LLM, or both).
- Improved access link generation to handle cases where SwarmUI is disabled, providing clearer user feedback.
- Enhanced provisioning logic to conditionally bootstrap SwarmUI based on user configuration, allowing for LLM-only setups.
- Updated documentation across multiple files to reflect changes in LLM integration, CLI usage, and configuration management.
2026-08-21 06:44:50 +03:00

5.9 KiB
Raw Blame History

Концепция

Проблема

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; интерактивный выбор flavor/диска; hold; toast Idle; open на 17801.
  • Opt-in LLM (Ollama / llama.cpp) через setup / флаги / LLM_RUNTIME; capture ссылок с VM.
  • status: диск, окно preempt 24 ч, killer / LLM.
  • 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.