- Introduced SCAN_POOLS configuration to specify pools for GPU flavor scanning. - Updated the `flavors` command to scan specified pools and list available GPU flavors based on `FLAVOR_PREFERENCE`. - Revised CLI documentation to reflect changes in the `flavors` command behavior. - Enhanced decision documentation to include details about GPU pool scanning. - Updated setup instructions to guide users on selecting appropriate GPU pools.
5.3 KiB
5.3 KiB
Roadmap
Код v1 (§1–6) готов. Дальше блокирует только облако: 0.0 квота GPU и 0 spike в панели. Без GPU в квоте up не создать — это ожидаемо.
Чеклист прогона: spike-notes.md. Ключи: setup.md.
0.0 Квота GPU
- Квота GPU в аккаунте в порядке (подтверждено)
- Тикет в поддержку Selectel — не нужен, если лимит уже > 0
- Сервисный пользователь с правом
memberна проект +.envзаполнен
doctor / flavors / dry-run — дальше; up после зелёного doctor.
0. Ручной spike в панели
Заполняй spike-notes.md. В коде уже есть idle-killer, hold, snapshot, tunnel-watchdog — spike проверяет на живом GPU, не пишет заново.
- RC-файл,
doctorзелёный, квота > 0 flavors/ образ Driver 580 без Docker в пулеup --yes→ Idle backend + seed; время ACTIVE/SSH/Idletunnel→ UI :17801 + API;nvidia-smi- idle-killer timer +
hold; качалка UI → только hold - EXPIRED → tunnel unshelve или
up stop→ диски живы → второйup- Boot snapshot
gpu-rent-boot-ok→ следующий boot из него - ₽/час и ₽/мес диска из панели (в API нет)
Заметки — только в spike-notes.md, без секретов.
1. Каркас
pyproject.toml, пакетgpu_rent, MIT- config / state / Typer: doctor, dry-run, status, open, up, stop, destroy, ssh, logs, tunnel, hold, seed-*, push, pull-output, resize-data, flavors
- Windows:
gpu-rent.bat/gpu-rent.ps1; Unix:gpu-rent.sh; такжеpython -m gpu_rent - setup.md — квота, сервисный пользователь, RC, Civitai
2. OpenStack-клиент
- Token через openstacksdk (
authorize), inventory flavors/квота/volume type - Сеть find-or-create, SG, FIP, volumes, server, unshelve
- Preemptible tag 2.72, BDM boot+data,
delete_on_termination=false - Flavor fallback по
FLAVOR_PREFERENCE(ранжирование + выбор наup) doctor: Keystone, квота, flavor, диск, Civitai.red, манифесты- Тесты с моками / без облака
3. Сессия без туннеля
up/stop/status/ reconcile (compute+диски+SSH+bootstrap SwarmUI)status: диск used/free (SSH), TTL preempt 24 ч, killer/hold; ₽/час — «смотри панель»- Второй
upне создаёт второй GPU resize-dataвверх- Генерация
<repo>/.gpu-rent/id_ed25519+ keypair при первомup seed-modelsна живом диске (идемпотентно, SHA256)push/push-models:Models/,Wildcards/,CustomWorkflows/pull-outputиPULL_OUTPUTнаstop/ повторныйupseed-extensions+systemctl restart swarmuidestroyтолько с флагом
4. Bootstrap SwarmUI + idle-killer
- Идемпотентный first-boot, маркер FS (
/mnt/swarm_data/.gpu-rent-ready) - Bind-mounts data volume →
/opt/swarmui, systemdswarmui(auth SwarmUI ещё на spike) - Clone
extensions.yamlв Extensions / DLNodes до старта UI - Autocomplete: danbooru.csv + Settings.fds; на каждом up — GitHub sha
- Civitai seed по манифесту; без токена — дефолт SwarmUI
- systemd idle-killer + application credential; льгота 45 мин; hold-файл; очередь/loading = busy; затем 30 мин пустой очереди; вооружение после seed/start (качалка UI = hold)
- Один snapshot
gpu-rent-boot-okпосле первого backend Idle; следующие create — из snapshot если есть gpu-rent hold/hold --clearпо SSHreadyпо HTTP, затем backend Idle
5. Туннель
gpu-rent tunnel→ 17801, Ctrl+C не делаетstopgpu-rent open/tunnel --open- EXPIRED → unshelve + reconnect, пока туннель жив
- Сниппет MCP в stdout
6. UX
- Живой список flavors (
gpu-rent flavors/ dry-run / up),--no-spot, печать фоллбека - Оценка ₽ честно («смотри панель»), предупреждение про диск 24/7 и idle-killer
NOTIFY_READY: Windows toast + звук при backend Idle- Пользовательский README поверх
docs/
Вне скоупа v1
generateв CLI, S3 как источник моделей- Автоправка Cursor
mcp.json - Несколько GPU, публичный URL, Terraform как основной путь
- Tailscale (туннеля достаточно; к сети с телефона не подключались)