gpu-rent now writes personas/<id>/ on the VM (not legacy personas.json), adds seed-personas/doctor checks, and shortens mid/high keep-alive now that Assistent parks the LLM before Generate. Co-authored-by: Cursor <cursoragent@cursor.com>
9.3 KiB
9.3 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) по compute URL. Сегменты ru-6a/b/c берём из Nova availability_zones, не отдельными пулами. Пресет размера FLAVOR_SIZE_PRESET (дефолт cheap = 1×GPU, min vCPU/RAM). Диск уже есть — AZ диска, не дешёвый чужой сегмент. Первый запуск — дешёвый SKU в сегменте, где есть карта из FLAVOR_PREFERENCE. .env автоматом не пишем |
| Манифест моделей | <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. Personas: assistent-personas.yaml → overlay Assistent/personas/<id>/ на up / seed-personas |
| 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-сессию, а не произвольные машины проекта.