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.
This commit is contained in:
+29
-30
@@ -1,6 +1,8 @@
|
||||
# Roadmap
|
||||
|
||||
Код не начинать, пока не закрыты **0.0** (квота) и **0** (spike). Без GPU в квоте остальное — театр.
|
||||
**Код v1 (§1–6) готов.** Дальше блокирует только облако: **0.0 квота GPU** и **0 spike** в панели. Без GPU в квоте `up` не создать — это ожидаемо.
|
||||
|
||||
Чеклист прогона: [spike-notes.md](spike-notes.md). Ключи: [setup.md](setup.md).
|
||||
|
||||
## 0.0 Квота GPU
|
||||
|
||||
@@ -10,31 +12,28 @@
|
||||
- [ ] Тикет в поддержку Selectel: 1× GPU (целевой: RTX 4090 24 GB или что дадут в пуле), проект gpu-rent
|
||||
- [ ] Сервисный пользователь с правом только на этот проект
|
||||
|
||||
Пока квота 0, можно писать каркас CLI с dry-run и моками, но не считать этап 0 закрытым.
|
||||
Пока квота 0: `doctor` / `dry-run` / `flavors` работают; `up` откажется с текстом про поддержку.
|
||||
|
||||
## 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`)
|
||||
Заполняй [spike-notes.md](spike-notes.md). В коде уже есть idle-killer, hold, snapshot, tunnel-watchdog — spike **проверяет** на живом GPU, не пишет заново.
|
||||
|
||||
Заметки — `docs/spike-notes.md`, без секретов и личных имён файлов моделей.
|
||||
- [ ] 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. Каркас
|
||||
|
||||
- [x] `pyproject.toml`, пакет `gpu_rent`, MIT
|
||||
- [x] config / state / Typer: `doctor` / `dry-run` / `status` / `open` / `up` / `stop` / `destroy` / `ssh` / `logs`; `tunnel` / `hold` / seed ещё `NotReadyError`
|
||||
- [x] config / state / Typer: doctor, dry-run, status, open, up, stop, destroy, ssh, logs, tunnel, hold, seed-*, push, pull-output, resize-data, flavors
|
||||
- [x] Windows: `gpu-rent.bat` / `gpu-rent.ps1`; Unix: `gpu-rent.sh`; также `python -m gpu_rent`
|
||||
- [x] [setup.md](setup.md) — квота, сервисный пользователь, RC, Civitai
|
||||
|
||||
@@ -50,9 +49,9 @@
|
||||
## 3. Сессия без туннеля
|
||||
|
||||
- [x] `up` / `stop` / `status` / reconcile (compute+диски+SSH+bootstrap SwarmUI)
|
||||
- [ ] `status`: диск used/free, ₽/час, TTL preempt 24 ч, killer/hold
|
||||
- [x] `status`: диск used/free (SSH), TTL preempt 24 ч, killer/hold; ₽/час — «смотри панель»
|
||||
- [x] Второй `up` не создаёт второй GPU
|
||||
- [ ] `resize-data` вверх
|
||||
- [x] `resize-data` вверх
|
||||
- [x] Генерация `<repo>/.gpu-rent/id_ed25519` + keypair при первом `up`
|
||||
- [x] `seed-models` на живом диске (идемпотентно, SHA256)
|
||||
- [x] `push` / `push-models`: `Models/`, `Wildcards/`, `CustomWorkflows/`
|
||||
@@ -67,24 +66,24 @@
|
||||
- [x] Clone `extensions.yaml` в Extensions / DLNodes до старта UI
|
||||
- [x] Autocomplete: danbooru.csv + Settings.fds; на каждом up — GitHub sha
|
||||
- [x] 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
|
||||
- [x] systemd idle-killer + application credential; льгота 45 мин; hold-файл; очередь/loading = busy; затем 30 мин пустой очереди; вооружение после seed/start (качалка UI = hold)
|
||||
- [x] Один snapshot `gpu-rent-boot-ok` после первого backend Idle; следующие create — из snapshot если есть
|
||||
- [x] `gpu-rent hold` / `hold --clear` по SSH
|
||||
- [x] `ready` по HTTP, затем backend Idle
|
||||
|
||||
## 5. Туннель
|
||||
|
||||
- [x] `gpu-rent tunnel` → 17801, Ctrl+C не делает `stop`
|
||||
- [x] `gpu-rent open` / `tunnel --open`
|
||||
- [ ] EXPIRED → unshelve + reconnect, пока туннель жив
|
||||
- [ ] Сниппет MCP в stdout
|
||||
- [x] EXPIRED → unshelve + reconnect, пока туннель жив
|
||||
- [x] Сниппет MCP в stdout
|
||||
|
||||
## 6. UX
|
||||
|
||||
- [ ] Живой список flavors, `--no-spot`, печать фоллбека и цены
|
||||
- [ ] Оценка ₽, предупреждение про диск 24/7 и про idle-killer
|
||||
- [ ] `NOTIFY_READY`: Windows toast + звук при backend Idle
|
||||
- [ ] Пользовательский README поверх `docs/`
|
||||
- [x] Живой список flavors (`gpu-rent flavors` / dry-run / up), `--no-spot`, печать фоллбека
|
||||
- [x] Оценка ₽ честно («смотри панель»), предупреждение про диск 24/7 и idle-killer
|
||||
- [x] `NOTIFY_READY`: Windows toast + звук при backend Idle
|
||||
- [x] Пользовательский README поверх `docs/`
|
||||
|
||||
## Вне скоупа v1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user