Replace assistent-personas overlay seed with assistent-extensions SFTP and an assistent: section in extensions.yaml so personalities install like other extensions without private URLs in the public repo. Co-authored-by: Cursor <cursoragent@cursor.com>
157 lines
6.8 KiB
Markdown
157 lines
6.8 KiB
Markdown
# LLM рядом со SwarmUI (opt-in)
|
||
|
||
По умолчанию поднимается **только SwarmUI**. Ollama — отдельно (помощь с промптами, Assistent chat и т.п.). **llama.cpp снят** из продукта: `LLM_RUNTIME` только `none` \| `ollama` (leftover unit `gpu-rent-llamacpp` на `up` стопается).
|
||
|
||
Интерактивные вопросы — **нумерованные меню** (Enter = вариант со ←). Ключ словом (`recommended`, `keep`) тоже принимается.
|
||
|
||
Три стека на GPU:
|
||
|
||
| # | стек | смысл |
|
||
| --- | --- | --- |
|
||
| 1 | SwarmUI | только генерация картинок |
|
||
| 2 | SwarmUI + LLM | UI + Ollama на той же карте |
|
||
| 3 | только LLM | **без** SwarmUI — только Ollama |
|
||
|
||
Флаги: `up --yes --llm-only --ollama` / `--no-swarm --ollama`. Vars: `ENABLE_SWARMUI=false` или `WORKLOAD=llm`.
|
||
|
||
---
|
||
|
||
## Быстрый путь
|
||
|
||
### A — wizard
|
||
|
||
```text
|
||
gpu-rent setup
|
||
```
|
||
|
||
Меню: runtime → пресет моделей → опционально local-watchdog. Пишет `LLM_RUNTIME` в `gpu-rent.vars`.
|
||
|
||
### B — флаг на `up`
|
||
|
||
```text
|
||
gpu-rent up --yes --ollama
|
||
gpu-rent up --yes --llm ollama
|
||
gpu-rent up --yes --llm-only --ollama # без SwarmUI
|
||
```
|
||
|
||
С `--yes` пресеты не спрашивает (берёт существующий yaml / example).
|
||
|
||
### C — vars вручную
|
||
|
||
```env
|
||
LLM_RUNTIME=ollama
|
||
```
|
||
|
||
Потом `gpu-rent up --yes`.
|
||
|
||
Выключить: `LLM_RUNTIME=none` (на `up` старые LLM unit’ы на VM останавливаются). Journal: `gpu-rent logs -u ollama` (алиас → systemd `gpu-rent-ollama`).
|
||
|
||
Голый `gpu-rent` без args — **help**. Двойной клик: `GPU_RENT_DEFAULT_ARGS=up --yes`. Полный doctor на up: `up -v`.
|
||
|
||
---
|
||
|
||
## Порты (loopback + туннель)
|
||
|
||
| Сервис | На VM | На ноутбуке |
|
||
| --- | --- | --- |
|
||
| SwarmUI | 7801 | **17801** |
|
||
| Ollama | 11434 | **17811** |
|
||
|
||
```text
|
||
gpu-rent tunnel
|
||
gpu-rent open --llm
|
||
```
|
||
|
||
```powershell
|
||
$env:OLLAMA_HOST = "http://127.0.0.1:17811"
|
||
```
|
||
|
||
После `up`/`tunnel` — access-card с URL и MCP-сниппетом.
|
||
|
||
---
|
||
|
||
## Ollama
|
||
|
||
| Файл | Роль |
|
||
| --- | --- |
|
||
| `ollama-models.example.yaml` | шаблон в git |
|
||
| `ollama-models.yaml` | список тегов (gitignore); лаунчер копирует example при отсутствии |
|
||
|
||
На `up` — `ollama pull` по списку, сверка с **`/api/tags`**. Слой 100% без `status=success` не считается успехом (кэш ≠ модель в Assistent). Если тега всё ещё нет — warning, **GPU не гасим**. Лишнее на диске не удаляет.
|
||
|
||
После успешного тега — **warmup**: 1-token `POST /api/chat`, чтобы веса (~6 GB VL) легли в VRAM до первого сообщения в Assistent. То же при `gpu-rent tunnel`, если `/api/ps` пуст. Промах warmup — warning, GPU не гасим.
|
||
|
||
Qwen3-VL (`huihui_ai/qwen3-vl-abliterated:…`) требует **Ollama ≥ 0.12.7**. Тег `:8b-instruct` — чат Instruct; `:latest` у этой библиотеки — Thinking, не ставить дефолтом.
|
||
|
||
### Пресеты (меню)
|
||
|
||
| # | ключ | tag / смысл |
|
||
| --- | --- | --- |
|
||
| 1 | **recommended** | `huihui_ai/qwen3-vl-abliterated:8b-instruct` — RU + vision, ~6.1 GB; запасной `huihui_ai/qwen2.5-vl-abliterated:7b` |
|
||
| 2 | light | `…:3b` — то же, мало VRAM (~3 GB) |
|
||
| 3 | text | `huihui_ai/qwen2.5-abliterate:7b` — RU, без vision (~5 GB) |
|
||
| 4 | big | `huihui_ai/qwen2.5-vl-abliterated:32b` — RU + vision (~21 GB) |
|
||
| 5 | empty | только runtime |
|
||
| — | keep | не трогать yaml |
|
||
|
||
Рекомендуемый пресет — **abliterated Qwen3-VL Instruct**; light / text / big пока Qwen2.5. Официальные censored-теги (`qwen2.5vl:…`) в меню нет.
|
||
|
||
`default: true` в yaml — preferred в логе и в `Assistent/ollama-roles.json` → `default_chat` (Assistent UI + warmup); pull идёт по всему списку.
|
||
|
||
---
|
||
|
||
## Автотюнинг Ollama
|
||
|
||
Unit `gpu-rent-ollama` читает `/mnt/swarm_data/.gpu-rent-gpu.json`:
|
||
|
||
| Tier (VRAM) | Flash Attn | KEEP_ALIVE | KV cache | GPU_OVERHEAD | CONTEXT |
|
||
| --- | --- | --- | --- | --- | --- |
|
||
| low (<16 GiB) | off | 2m | q4_0 | 6 GiB | 8k |
|
||
| mid (16–23) | on* | 5m | q8_0 | 10 GiB | 16k |
|
||
| high (24–47) | on* | 5m | q8_0 | 14 GiB | 16k |
|
||
| ultra (≥48) | on* | 30m | q8_0 | 20 GiB | 32k |
|
||
|
||
\*Flash на Ampere+ (compute ≥ 8.0). `NUM_PARALLEL=2`, `MAX_LOADED_MODELS=2` (chat VL + memory embed). Memory models use `use: memory` and a CPU Modelfile (`num_gpu 0`) so embed does not steal VRAM from the chat model. Ollama default `num_ctx` is 4096; we set `OLLAMA_CONTEXT_LENGTH` so Assistent + vision fits. Mid/high keep-alive is **5m** because Assistent parks the chat model before Generate (`AssistentParkLlm`) and warms after. Env: `/mnt/swarm_data/.gpu-rent-ollama.env`.
|
||
|
||
Personas: bundled `neutral` / `aggressive` / `dreamer` in swarm-assistent; extra packs via `extensions.yaml` `assistent:` or laptop `assistent-extensions/` → `Assistent/extensions/` on `up` / `seed-personas` / `push` (+ `_base/assistant.json` with `default_persona` / `num_ctx`). See [extensions.md](extensions.md). Optional FTS examples: [datasets/README](../datasets/README.md) (`search.jsonl` → `Assistent/civitai-examples.jsonl`). Journal: `gpu-rent logs -u ollama`.
|
||
|
||
`ollama-models.yaml` entries:
|
||
|
||
```yaml
|
||
- name: huihui_ai/qwen3-vl-abliterated:8b-instruct
|
||
use: chat
|
||
default: true
|
||
- name: huihui_ai/qwen2.5-vl-abliterated:7b
|
||
use: chat
|
||
- name: nomic-embed-text
|
||
use: memory
|
||
```
|
||
|
||
Roles are written to `/mnt/swarm_data/Assistent/ollama-roles.json` for the Assistent extension (`chat` / `memory` lists + `default_chat` for UI default and warmup).
|
||
|
||
---
|
||
|
||
## Idle-killer и LLM
|
||
|
||
Busy (не гасить GPU):
|
||
|
||
- очередь / loading SwarmUI (Generate) — даже если Ollama `/api/ps` пуст после ParkLlm;
|
||
- `ollama pull` (маркер младше ~3 ч; refresh во время pull);
|
||
- загруженная модель в Ollama.
|
||
|
||
Ошибка установки LLM на `up` — **fail** (не тихий лог).
|
||
|
||
---
|
||
|
||
## Supply-chain (опциональный pin)
|
||
|
||
По умолчанию install тянет upstream без pin (`WARN` в логе). Жёстче:
|
||
|
||
```bash
|
||
# Pin must be ≥ 0.12.7 if you use Qwen3-VL (see above)
|
||
OLLAMA_VERSION=0.12.7
|
||
OLLAMA_SHA256=<sha256 of ollama-linux-amd64.tgz>
|
||
```
|
||
|
||
Готовые кейсы — в `gpu-rent.vars.example`.
|