Files
Leonid PershinandCursor b24c1b5d4b Sync remaining docs with CLI surface, Assistent, and Civitai dataset.
Align architecture/cli/decisions with modules and Debug API; cross-link seed overlays and scrape→FTS so user docs match 0.2.0.

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

70 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SwarmUI на GPU-сервере
Репозиторий: [mcmonkeyprojects/SwarmUI](https://github.com/mcmonkeyprojects/SwarmUI).
**Без Docker.** На VM процесс слушает **7801** на loopback (`launch-linux.sh`). На ноутбуке туннель — **17801**.
## Чего нет
- Docker, nvidia-container-toolkit, образа на Docker Hub.
- Порта 7860 (это Automatic1111).
- Зеркала **локального** SwarmUI. С ноутбука едут только деревья приложения: [local-folders.md](local-folders.md). Первый Civitai-seed — [models.md](models.md).
## Bootstrap (один раз на boot volume)
1. Образ Selectel **Ubuntu 24.04 LTS GPU Driver 580** (без Docker в имени, см. [selectel.md](selectel.md)).
2. Git clone SwarmUI в `/opt/swarmui`. .NET — `launchtools/linux-dotnet-install.sh` (SDK 8 и 10, как в доке SwarmUI).
3. Bind-mounts с data volume в дерево `/opt/swarmui` — таблица в [architecture.md](architecture.md).
4. Clone git-расширений из манифеста ([extensions.md](extensions.md)), если файл не пустой.
5. Word-list autocomplete в `Data/Autocompletions` и `DefaultUser.AutoComplete.Source` ([autocomplete.md](autocomplete.md)).
6. Если есть Civitai-токен и манифест моделей: seed весов **до** первого старта SwarmUI; иначе — дефолтная модель установщика.
7. Push непустых `Models/` / `Wildcards/` / `CustomWorkflows/`.
8. systemd unit `swarmui`: `./launch-linux.sh --launch_mode none --host 127.0.0.1 --port 7801`.
9. **GPU probe**`/mnt/swarm_data/.gpu-rent-gpu.json` (VRAM / compute cap / tier) — до старта UI; Ollama читает его при install.
10. Старт SwarmUI → **headless InstallConfirmWS** (ComfyUI в `dlbackend`, models=none — веса уже с Civitai) → seed LLM → idle-killer → **wait backend ready** (`running`; `empty`/`loading` ≠ ready; SwarmUI `idle` = бэкенды спят, не «готово»).
11. **Perf tune после Idle**`triton`+`sageattention` в Comfy venv и `--use-sage-attention` в `Data/Backends.fds` (маркер `.gpu-rent-perf-tuned`; повтор при смене GPU). Нужны `python3.12-dev`+gcc (ставим даже на light bootstrap); JIT прогревается на `up`, иначе флаг снимается — иначе первая генерация падает на `cuda_utils.c`.
12. Авторизация SwarmUI включена, токен в `Data` на диске.
13. Один snapshot boot volume `gpu-rent-boot-ok`, если ещё нет.
Рестарт UI: `systemctl restart swarmui`, не `docker restart`.
## Пустая вкладка Models
Веса лежат на data volume (`/mnt/swarm_data/Models`), SwarmUI смотрит в `/opt/swarmui/Models` через bind. Если bind отвалился, Generate всё ещё показывает последнюю модель (это JS), а сетка Models пустая.
Сначала кнопка refresh на вкладке Models и F5. Если пусто — файлы не удалились, нужен remount: `gpu-rent up --yes` (после фикса не используется `umount -l` на живом процессе).
## ComfyUI
Первый запуск качает backend в `/opt/swarmui/dlbackend` (это bind на data volume). Иначе каждый recreate потеряет часы.
**gpu-rent:** после `systemctl start swarmui` вызывается headless `InstallConfirmWS` (`backend=comfyui`, `models=none`), если `GetCurrentStatus` ещё `empty`. `IsInstalled: true` пишется только когда Comfy уже на диске; на первом старте (или если прошлый `up` оставил флаг без `dlbackend/ComfyUI`) флаг сбрасывается — иначе Swarm отвечает `Server is already installed!` и не клонирует Comfy. Без этого UI отвечает HTTP 200, а Comfy/torch так и не появляются — раньше `wait_backend_idle` ошибочно считал `empty` = Idle.
**Скорость без потери качества (gpu-rent):** после Idle backend, на GPU с compute capability ≥ 8.0 и ≥16GiB VRAM — SageAttention. `Performance.AllowGpuSpecificOptimizations` у Swarm по умолчанию уже включает `--fast` для 30xx+. Если venv ещё не появился — маркер без `pip_ok`, догонит на следующем `up`.
Пока CUDA/ComfyUI поднимаются, UI уже может отвечать. Для MCP и `/API/` — рано: `ready` после Idle backend.
## Доступ с ноутбука
Пока запущен `gpu-rent tunnel`:
| Что | URL |
| --- | --- |
| UI | `http://127.0.0.1:17801` |
| HTTP API | `http://127.0.0.1:17801/API/` |
| MCP | `http://127.0.0.1:17801/mcp` |
Локальный инстанс на 7801 продолжает жить. В Cursor MCP на время сессии переключают на 17801 (вручную по сниппету CLI).
Без туннеля API с ноутбука недоступен: 7801 на VM не опубликован в интернет.
**Assistent** (если `requires: ollama` и runtime включён) грузится как SwarmUI extension с data volume. Глубокая отладка — не через публичный 7801, а через Debug sidecar `:17821` / `gpu-rent debug` ([cli.md](cli.md)). Personas / FTS: [extensions.md](extensions.md), [datasets/README](../datasets/README.md).
## Чего не делать
- `chmod -R 777` на Models.
- Слушать 7801 на `0.0.0.0`.
- Ставить Docker «на всякий случай».
- Считать Nova `ACTIVE` = можно генерировать.
- `apt upgrade` ядра (ломает nvidia-smi).