- Introduced GPU probing functionality to gather and store GPU specifications in `/mnt/swarm_data/.gpu-rent-gpu.json`, aiding in performance tuning. - Updated `install_ollama.sh` and `install_llamacpp.sh` to utilize GPU information for configuring optimal runtime parameters. - Enhanced `provision.py` to include GPU probing and performance tuning logic, ensuring better resource allocation for LLM operations. - Improved documentation in `decisions.md`, `llm.md`, and `swarmui.md` to reflect changes in GPU handling and performance tuning processes. - Added new tests to validate the GPU probing and model resolution logic, ensuring robustness in handling various GPU configurations.
8.6 KiB
8.6 KiB
Принятые решения
Зафиксировано 21 августа 2026. Менять только явно.
| Тема | Решение |
|---|---|
| Аудитория | Личный инструмент, репозиторий можно показать другим: MIT, без аккаунтных id и без имён локальных чекпоинтов |
| Сессия | GPU живёт до stop или простоя (idle-killer на VM). Ноут можно закрыть — compute не обязан умереть. Опционально: gpu-rent watchdog install — локальный тик на Windows/macOS/Linux; если туннель умер без Ctrl+C/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|llamacpp|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. Сначала тикет в поддержку |
| Образ ОС | 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 на туннеле GPU не гасит (stop отдельно). Команда tunnel остаётся для повторного входа |
| Git update | На каждом up по умолчанию: git pull SwarmUI + репы из extensions.yaml + уже установленные на data (Extensions/DLNodes). --no-update или UPDATE_GIT=false — не тянуть |
| LLM (opt-in) | none по умолчанию. ollama / llamacpp — флаг --ollama/--llamacpp/--llm, LLM_RUNTIME в vars, или вопрос в interactive up/setup. Ollama-модели из ollama-models.yaml. Порты: Ollama 17811, llama.cpp 17812. Назначение: помощь с промптами, не замена SwarmUI |
| Perf auto-tune | На up: probe GPU → tier. Swarm/Comfy: sageattention ExtraArgs на Ampere+ ≥16 GiB. Ollama: flash/KV/keep-alive + GPU_OVERHEAD чтобы оставить VRAM под Krea |
| 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на туннеле не удаляет VM. Иначе «закрыл ноут» невозможно. Чтобы убить GPU —gpu-rent stopили простой. При установленном local-watchdog Ctrl+C по-прежнему detach; убийство процесса/ребут без detach → 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-сессию, а не произвольные машины проекта.