Files
gpu-rent/docs/roadmap.md
T
Leonid PershinandCursor 07bb521b70 Add Assistent reference books and remove training dataset output.
Introduce books/ with civitai-krea2 and HF fictext builders, sha-diff seed to VM, and drop train.jsonl from the civitai scrape pipeline.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 22:56:07 +03:00

6.0 KiB
Raw Blame History

Roadmap

Код v1 (§16) готов (включая opt-in LLM, local-watchdog, access-card). Дальше — твой облачный прогон.

Пользовательский путь: setup.mddoctorup. Чеклист живого GPU: spike-notes.md.

0.0 Квота GPU

  • Квота GPU в панели ≥ 1 (иначе тикет — текст в setup §2.3)
  • Тикет закрыт / не нужен
  • Сервисный пользователь member + .env заполнен
  • gpu-rent doctor exit 0

flavors / dry-run — по желанию перед первым 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; льгота IDLE_GRACE_MINUTES=45; hold-файл; очередь/loading = busy; затем IDLE_MINUTES=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 / Ctrl+D вызывают 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/
  • Opt-in LLM + setup; нумерованные меню; interactive Selectel plan (flavor/disk/spot)
  • Цветной CLI-лог; capture ссылок с VM
  • Local-watchdog; access-card

Уже в коде после v1

  • Debug API на 127.0.0.1:17821 (gpu-rent debug / sidecar на up/tunnel); Assistent session / chat-eval
  • civitai-datasetbooks/civitai-krea2/; gpu-rent books download fictext; seed-books на up / seed-personas (sha diff)
  • seed-personas, capture wanted, logs --unit swarm|ollama|killer|cloud-init
  • Balance notify (SELECTEL_API_TOKEN + watchdog)

Spike в §0 по-прежнему нужно закрыть на живом GPU.

Вне скоупа v1

  • generate в CLI, S3 как источник моделей
  • Автоправка Cursor mcp.json
  • Несколько GPU, публичный URL, Terraform как основной путь
  • Tailscale (туннеля достаточно; к сети с телефона не подключались)