Files
gpu-rent/docs/roadmap.md
T
Leonid Pershin 28019d1d09 Enhance GPU flavor scanning and update documentation
- 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.
2026-08-21 04:03:28 +03:00

5.3 KiB
Raw Blame History

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/Idle
  • tunnel → 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 / повторный up
  • seed-extensions + systemctl restart swarmui
  • destroy только с флагом

4. Bootstrap SwarmUI + idle-killer

  • Идемпотентный first-boot, маркер FS (/mnt/swarm_data/.gpu-rent-ready)
  • Bind-mounts data volume → /opt/swarmui, systemd swarmui (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 по SSH
  • ready по HTTP, затем backend Idle

5. Туннель

  • gpu-rent tunnel → 17801, Ctrl+C не делает stop
  • gpu-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 (туннеля достаточно; к сети с телефона не подключались)