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

6.2 KiB
Raw Blame History

Принятые решения

Зафиксировано 21 августа 2026. Менять только явно.

Тема Решение
Аудитория Личный инструмент, репозиторий можно показать другим: MIT, без аккаунтных id и без имён локальных чекпоинтов
Сессия GPU живёт до stop или простоя (idle-killer на VM). Ноут можно закрыть — compute не обязан умереть
Модели Пустой ./Models → не грузим ничего. Появились веса + метадата → на up выгрузить эту пару. Civitai-seed отдельно. С сервера не удаляем
Civitai хост Дефолт API civitai.red (полный каталог). .com — SFW-витрина, NSFW с неё часто 404. Ссылки .com/.red/.green в манифесте принимаем. 404 → один retry на второй хост. Один токен на оба домена
Манифест моделей ~/.gpu-rent/models.yaml, типы: checkpoint / lora / vae / embedding / controlnet / upscaler. В git только models.example.yaml
Расширения ~/.gpu-rent/extensions.yaml: git-репы swarmuisrc/Extensions, comfy → DLNodes. Клон на первом bootstrap до старта UI. Пустой файл — стоковый SwarmUI
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. Сначала тикет в поддержку
Образ ОС 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 только облако, tunnel отдельно. Ctrl+C на туннеле не удаляет VM
Data-диск Старт 100 GB, рост через resize вверх (вниз Selectel не умеет)
SSH CLI генерирует ~/.gpu-rent/id_ed25519 без passphrase и сам регистрирует keypair
Локальный порт 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-ключ
Flavor fallback Список предпочтений (4090 → A5000 → …). Нет первого — предложить следующий с ценой, --yes берёт первый доступный из списка
Готово Windows toast + звук (и лог), когда backend Idle
Status Диск used/free, ₽/час, сколько до 24 ч preempt, состояние killer / hold
Boot snapshot После первого удачного bootstrap — один snapshot boot volume gpu-rent-boot-ok; следующие create могут идти с него
Open gpu-rent open / флаг после tunnel: браузер на 17801

Следствия, которые из этого вытекают и тоже считаются принятыми:

  1. Туннель ≠ жизнь GPU. stop и idle-killer не зависят от того, открыт ли SSH с ноутбука.
  2. Локальный SwarmUI на 7801 не трогаем. Туннель по умолчанию на 17801 (на VM по-прежнему 7801 на loopback).
  3. Ctrl+C на туннеле не удаляет VM. Иначе «закрыл ноут» невозможно. Чтобы убить GPU — gpu-rent stop или простой.
  4. Idle-killer на VM не может быть shutdown -h: у Selectel остановленная изнутри VM часто продолжает тарифицировать ресурсы. Нужен вызов OpenStack: удалить этот compute, диски оставить.
  5. Для этого на VM — OpenStack application credential с правом удалить/shelve сервер в проекте (не пароль владельца аккаунта). Компрометация SwarmUI в худшем случае сносит GPU-сессию, а не создаёт новые дорогие машины, если роль без compute:create.