Files
gpu-rent/docs/roadmap.md
T
Leonid Pershin 343f741baa Refactor environment and configuration management
- Updated the project structure to store configuration files (.env, models.yaml, extensions.yaml) in the project root instead of the user's home directory.
- Enhanced the setup process to automatically copy example files to the project root on first run.
- Implemented a migration function to transfer legacy configuration files from the user's home directory to the new project structure.
- Revised documentation to reflect changes in file locations and setup instructions.
- Improved code readability and maintainability by refactoring path management functions.
2026-08-21 03:20:18 +03:00

5.7 KiB
Raw Blame History

Roadmap

Код не начинать, пока не закрыты 0.0 (квота) и 0 (spike). Без GPU в квоте остальное — театр.

0.0 Квота GPU

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

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

Пока квота 0, можно писать каркас CLI с dry-run и моками, но не считать этап 0 закрытым.

0. Ручной spike в панели

  • RC-файл, openstack token issue
  • Сегмент с GPU, flavor list / image list (GPU Driver 580, без Docker)
  • Сеть + SG :22 + FIP + keypair
  • Boot-from-volume, тег preemptible, API 2.72, второй диск в том же AZ
  • nvidia-smi на хосте; SwarmUI нативно launch-linux.sh
  • SwarmUI на 127.0.0.1:7801, туннель на 17801, UI + один вызов API
  • flavor list: какие 4090 / A5000 / A100 есть; disabled vs capacity
  • Скачать тестовую маленькую модель через Civitai API на VM (крошечный embedding) + sidecar json; убедиться, что установщик SwarmUI не качает свой SD
  • Время: ACTIVE / SSH / UI / backend Idle / seed; ₽/час
  • EXPIRED → unshelve → те же модели
  • Delete VM, диски живы → create from boot volume
  • Snapshot boot после первого Idle → create from snapshot
  • Прототип idle-killer: скрипт на VM с application credential удаляет этот сервер
  • JSON «качалка модели в UI» vs пустая очередь (или нет сигнала → только hold)

Заметки — docs/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 ещё NotReadyError
  • 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, ₽/час, 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-файл; качалка в UI = busy; затем 30 мин пустой очереди; не вооружать до конца seed
  • Один 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, --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 (туннеля достаточно; к сети с телефона не подключались)