# gpu-rent Прерываемый GPU в [Selectel](https://selectel.ru) + [SwarmUI](https://github.com/mcmonkeyprojects/SwarmUI) на `http://127.0.0.1:17801`. Модели и ComfyUI живут на сетевом диске. **GPU платится только пока жив compute** (`up`…`stop` или idle-killer). Диск — **всегда**, даже после `stop`. --- ## С нуля → первая картинка Делай по порядку. Подробности и скрины панели — в [docs/setup.md](docs/setup.md). | # | Шаг | Команда / действие | | --- | --- | --- | | 1 | Python 3.11+, клон репо | — | | 2 | Квота GPU в Selectel (> 0) или тикет | [setup §2](docs/setup.md#2-selectel-проект-и-квота-gpu) | | 3 | Сервисный пользователь + `.env` из RC | [setup §3](docs/setup.md#3-ключи-openstack-это-и-есть-api-key-для-gpu-rent) | | 4 | (Опц.) Civitai token + `models.yaml` | [setup §4](docs/setup.md#4-civitai-api-token-модели) | | 5 | Preflight | `.\gpu-rent.ps1 doctor` | | 6 | Поднять GPU + туннель | `.\gpu-rent.ps1 up --yes` | | 7 | Открыть UI | браузер сам / `.\gpu-rent.ps1 open` | | 8 | Закончить сессию | `.\gpu-rent.ps1 stop` | Unix: `./gpu-rent.sh …` (один раз `chmod +x gpu-rent.sh`). **Не начинай с `up`**, пока `doctor` не зелёный. Ключ панели `X-Token` для этого CLI **не подходит**. --- ## Обычный день ```powershell .\gpu-rent.ps1 up --yes # GPU + SwarmUI + туннель :17801 # работаешь в браузере… # Ctrl+C / Ctrl+D = stop GPU (диски остаются) .\gpu-rent.ps1 tunnel --open # снова UI, если GPU ещё жив .\gpu-rent.ps1 hold # отложить idle-killer .\gpu-rent.ps1 stop # погасить GPU, диски оставить ``` | Важно | | | --- | --- | | `Ctrl+C` / `Ctrl+D` на туннеле | **stop** GPU, диски остаются | | Простой ~30 мин | idle-killer сам удалит compute | | Preemptible | ~24 ч → `EXPIRED`; `tunnel` / `up` поднимут снова | | Двойной клик лаунчера | задай `GPU_RENT_DEFAULT_ARGS=up --yes` в `gpu-rent.vars` | --- ## Команды (кратко) | Команда | Смысл | | --- | --- | | `setup` | Wizard: `.env`, LLM, watchdog | | `doctor` | Preflight без create | | `flavors` / `dry-run` | Что выберет / план без денег | | `up` / `up --yes` | GPU + seed + туннель; без `--yes` — меню Selectel/LLM | | `up --ollama` | + Ollama (см. [docs/llm.md](docs/llm.md)) | | `up --llm-only --ollama` | только Ollama, без SwarmUI | | `tunnel` / `open` | Снова UI / браузер | | `hold` / `status` | Пауза killer / состояние | | `stop` / `destroy --i-understand-data-loss` | Стоп GPU / + диски | | `push` / `pull-output` / `seed-*` / `capture` | Файлы ↔ VM; capture = ссылки в yaml | Полный список: [docs/cli.md](docs/cli.md). --- ## Конфиг в корне репо | Файл | Что | | --- | --- | | `.env` | из `env.example` — `OS_*`, Civitai (не в git) | | `gpu-rent.vars` | из example — несекретные дефолты, лаунчер | | `models.yaml` / `extensions.yaml` | манифесты (из `*.example.yaml`) | | `ollama-models.yaml` | Ollama-модели (из example; gitignore) | | `Models/` … | локальный push на `up` | | `.gpu-rent/` | state, SSH-ключ (gitignore) | Лаунчер сам создаёт `.venv` и ставит пакет. --- ## Документация | Док | Зачем | | --- | --- | | [docs/setup.md](docs/setup.md) | **Пошаговая подготовка** до первого `up` | | [docs/cli.md](docs/cli.md) | Все команды и переменные | | [docs/llm.md](docs/llm.md) | Ollama (opt-in LLM) | | [docs/models.md](docs/models.md) | Civitai + папка `Models/` | | [docs/spike-notes.md](docs/spike-notes.md) | Чеклист первого живого прогона | | [docs/README.md](docs/README.md) | Оглавление всего `docs/` | MIT. Секреты и веса в git не коммитить.