- Revised README, architecture, CLI, and other documentation to specify that both `Ctrl+C` and `Ctrl+D` now stop the GPU while preserving disk data, correcting previous inaccuracies. - Enhanced access card and setup instructions to reflect the updated command behavior for better user understanding. - Updated tests to ensure the new command behaviors are validated and documented correctly, improving overall clarity in GPU management.
9.2 KiB
9.2 KiB
Принятые решения
Зафиксировано 21 августа 2026. Менять только явно.
| Тема | Решение |
|---|---|
| Аудитория | Личный инструмент, репозиторий можно показать другим: MIT, без аккаунтных id и без имён локальных чекпоинтов |
| Сессия | GPU живёт до stop / Ctrl+C или Ctrl+D на туннеле или простоя (idle-killer на VM). Выход из туннеля гасит compute (диски остаются). Опционально: gpu-rent watchdog install — локальный тик; если процесс умер без stop, после LOCAL_WATCHDOG_GRACE_MINUTES (дефолт 10) → stop |
| Модели | Пустой ./Models → не грузим ничего. Появились веса + метадата → на up выгрузить эту пару. Civitai-seed отдельно. С сервера не удаляем |
| Civitai хост | Дефолт API civitai.red (полный каталог). .com — SFW-витрина, NSFW с неё часто 404. Ссылки .com/.red/.green в манифесте принимаем. 404 → один retry на второй хост. Один токен на оба домена |
| Пул GPU | Перед up/flavors сканируем SCAN_POOLS (дефолт ru-6,ru-7). ru-6 — мультизональный: ходим на https://ru-6.cloud.api.selcloud.ru/compute/ тем же токеном (SDK-каталог часто знает только RC-пул). Собираем типы GPU из extra_specs и совпадения с FLAVOR_PREFERENCE. Автоматом .env не пишем — печатаем рекомендацию OS_REGION_NAME / GPU_RENT_AZ |
| Манифест моделей | <repo>/models.yaml, типы: checkpoint / lora / vae / embedding / controlnet / upscaler. В git только models.example.yaml |
| Расширения | <repo>/extensions.yaml: git-репы swarmui → src/Extensions, comfy → DLNodes. Поле requires: none|ollama|any-llm фильтрует по LLM_RUNTIME. Пример: swarm-assistent с requires: ollama |
| Autocomplete | До первого старта: скачать word-list в Data/Autocompletions, прописать DefaultUser.AutoComplete.Source. На каждом up сверить GitHub blob sha и обновить файл, если изменился. Дефолт: tags/danbooru.csv из a1111-sd-webui-tagcomplete (как в доке SwarmUI) |
| Доступ | Браузер на туннеле; MCP переключается на облако, пока оно живо; HTTP API SwarmUI через тот же туннель |
| Preemptible | По умолчанию всегда. Обычный сервер — только --no-spot |
| Selectel сейчас | Квота GPU часто 0 на новом аккаунте — сначала тикет (setup §2.3), потом doctor |
| Образ ОС | Ubuntu 24.04 LTS GPU Driver 580 (Selectel, без Docker). SwarmUI нативно: launch-linux.sh + systemd. Нет образа 580 — фоллбек 24.04 Driver 535 без Docker |
| Floating IP | KEEP_FLOATING_IP=false: выделить на up, удалить на stop |
| Idle-killer | 30 минут пустой очереди генерации. Открытый браузер не продлевает жизнь |
| Льгота после boot | Killer молчит во время clone/seed/push, hold, качалки в UI SwarmUI, пока backend не Idle, и 45 мин после ACTIVE/unshelve |
up / tunnel |
up по умолчанию после ready открывает туннель :17801, печатает URL и ждёт. --no-tunnel — только облако. Ctrl+C и Ctrl+D на туннеле — stop (диски остаются). Команда tunnel остаётся для повторного входа |
Interactive up |
Без --yes: нумерованные меню (LLM, пресет, flavor #, data GB, preemptible) → confirm. Изменения можно сохранить в gpu-rent.vars |
| Git update | На каждом up по умолчанию: git pull SwarmUI + репы из extensions.yaml + уже установленные на data (Extensions/DLNodes). --no-update или UPDATE_GIT=false — не тянуть |
| LLM (opt-in) | none по умолчанию. Флаги / LLM_RUNTIME / меню. Манифест: ollama-models.yaml. Порт 17811. Prompt-help, не замена SwarmUI |
| llm-only | ENABLE_SWARMUI=false / WORKLOAD=llm / --no-swarm/--llm-only: GPU + LLM без SwarmUI (bootstrap только data disk) |
| Capture | gpu-rent capture — инвентарь VM → merge ссылок в локальные yaml (веса не качать) |
| Perf auto-tune | На up: probe GPU → tier. Swarm/Comfy: sageattention ExtraArgs на Ampere+ ≥16 GiB. Ollama: flash/KV/keep-alive + GPU_OVERHEAD чтобы оставить VRAM под Krea |
| Баланс ₽ | SELECTEL_API_TOKEN (X-Token панели) + gpu-rent watchdog install. Baseline на up; тик watchdog уведомляет каждые BALANCE_NOTIFY_STEP_RUB (дефолт 200) списанных с baseline. Опционально BALANCE_NOTIFY_LOW_RUB |
| Data-диск | Старт 100 GB, рост через resize вверх (вниз Selectel не умеет) |
| SSH | CLI генерирует <repo>/.gpu-rent/id_ed25519 без passphrase и сам регистрирует keypair |
| Локальные файлы | Всё в корне репозитория: .env, models.yaml, extensions.yaml; runtime (state.json, lock, SSH) в <repo>/.gpu-rent/. Не %USERPROFILE%\.gpu-rent |
| Локальный порт | 17801 |
| MCP-конфиг Cursor | Только сниппет в stdout, файл не трогаем |
ready для API |
Ждать Idle backend, не только HTTP UI |
| Output | Pull в ./Output опционален (PULL_OUTPUT=false). Новые файлы с VM, с сервера не удаляем |
| Wildcards / workflows | Как Models: пустые папки не трогаем; появился файл — push на up |
| Idle hold | gpu-rent hold [--minutes N] сдвигает дедлайн killer. Качалка моделей в UI SwarmUI тоже считается занятостью (сигнал уточнить на spike) |
| Doctor | gpu-rent doctor без create: Keystone, квота GPU, flavor, диск, Civitai token+.red, манифесты, SSH-ключ |
| Bare CLI | Без аргументов — help. up только явно или через GPU_RENT_DEFAULT_ARGS у лаунчера |
| Flavor fallback | Список предпочтений (4090 → A5000 → …). Нет первого — предложить следующий с ценой, --yes берёт первый доступный из списка |
| Готово | Windows toast + звук (и лог), когда backend Idle; access-card с URL/MCP |
| Status | Диск used/free, ₽/час, сколько до 24 ч preempt, состояние killer / hold / LLM |
| Boot snapshot | После первого удачного bootstrap — один snapshot boot volume gpu-rent-boot-ok; следующие create могут идти с него |
| Open | gpu-rent open / open --llm / флаг после tunnel: браузер на 17801 / LLM-порт |
| App cred idle-killer | Только этот server_id; fail closed без unrestricted; revoke на stop |
Следствия, которые из этого вытекают и тоже считаются принятыми:
- Туннель ≠ жизнь GPU.
stopи idle-killer не зависят от того, открыт ли SSH с ноутбука. - Локальный SwarmUI на 7801 не трогаем. Туннель по умолчанию на 17801 (на VM по-прежнему 7801 на loopback).
Ctrl+CиCtrl+Dна туннеле вызываютstop(диски на месте). Убийство процесса/ребут без stop → idle-killer на VM; при local-watchdog — ещё и локальный stop после grace.- Idle-killer на VM не может быть
shutdown -h: у Selectel остановленная изнутри VM часто продолжает тарифицировать ресурсы. Нужен вызов OpenStack: удалить этот compute, диски оставить. - Для этого на VM — OpenStack application credential с правом DELETE/GET только этого compute (не
/servers/*, не unrestricted fallback). Наstop/destroycred отзывается. Компрометация SwarmUI в худшем случае сносит текущую GPU-сессию, а не произвольные машины проекта.