Files
gpu-rent/docs/roadmap.md
T
Leonid Pershin a563ae06c4 Bump version to 0.2.0 and enhance documentation
- Updated version number in pyproject.toml and __init__.py to 0.2.0.
- Revised README.md to reflect the current state of the project, including usage instructions and setup steps.
- Improved CLI documentation in cli.md, adding details about new commands and their functionalities.
- Enhanced the quick start section in README.md for better clarity on initial setup.
- Updated local folder documentation to clarify file handling and commands.
- Added a new command for listing GPU flavors and improved error handling in the CLI.
- Implemented a watchdog feature in the tunnel to manage server states effectively.
2026-08-21 03:38:01 +03:00

5.4 KiB
Raw Blame History

Roadmap

Код v1 (§1–6) готов. Дальше блокирует только облако: 0.0 квота GPU и 0 spike в панели. Без GPU в квоте up не создать — это ожидаемо.

Чеклист прогона: spike-notes.md. Ключи: setup.md.

0.0 Квота GPU

Аккаунт есть, квота скорее 0.

  • В панели: Облачные серверы → квоты / создание сервера с GPU
  • Тикет в поддержку Selectel: 1× GPU (целевой: RTX 4090 24 GB или что дадут в пуле), проект gpu-rent
  • Сервисный пользователь с правом только на этот проект

Пока квота 0: doctor / dry-run / flavors работают; up откажется с текстом про поддержку.

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 (туннеля достаточно; к сети с телефона не подключались)