- Added new environment variables in `env.example` and `gpu-rent.vars.example` for fine-tuning LLM settings, including CUDA build options and model version pinning. - Updated `llm.md` documentation to include detailed descriptions of new configuration options and usage cases for LLM setups. - Enhanced the `provision.py` script to forward new environment variables during remote installations, improving the installation process for LLM components. - Modified the `install_llamacpp.sh` script to support conditional CUDA builds and asset URL overrides, ensuring better compatibility with various environments. - Improved logging in the installation scripts to provide clearer feedback during the setup process.
180 lines
6.7 KiB
Markdown
180 lines
6.7 KiB
Markdown
# LLM рядом со SwarmUI (opt-in)
|
||
|
||
По умолчанию поднимается **только SwarmUI**. Ollama или llama.cpp — отдельно (помощь с промптами и т.п.).
|
||
|
||
Интерактивные вопросы — **нумерованные меню** (Enter = вариант со ←). Ключ словом (`recommended`, `keep`) тоже принимается.
|
||
|
||
Три стека на GPU:
|
||
|
||
| # | стек | смысл |
|
||
| --- | --- | --- |
|
||
| 1 | SwarmUI | только генерация картинок |
|
||
| 2 | SwarmUI + LLM | UI + Ollama/llama.cpp на той же карте |
|
||
| 3 | только LLM | **без** SwarmUI — Ollama или llama.cpp |
|
||
|
||
Флаги: `up --yes --llm-only --llamacpp` / `--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 llamacpp
|
||
gpu-rent up --yes --llm-only --llamacpp # без SwarmUI
|
||
```
|
||
|
||
С `--yes` пресеты не спрашивает (берёт существующий yaml / example).
|
||
|
||
### C — vars вручную
|
||
|
||
```env
|
||
LLM_RUNTIME=ollama
|
||
```
|
||
|
||
Потом `gpu-rent up --yes`.
|
||
|
||
Выключить: `LLM_RUNTIME=none` (на `up` старые unit’ы `gpu-rent-ollama` / `gpu-rent-llamacpp` останавливаются).
|
||
|
||
Голый `gpu-rent` без args — **help**. Двойной клик: `GPU_RENT_DEFAULT_ARGS=up --yes`. Полный doctor на up: `up -v`.
|
||
|
||
---
|
||
|
||
## Порты (loopback + туннель)
|
||
|
||
| Сервис | На VM | На ноутбуке |
|
||
| --- | --- | --- |
|
||
| SwarmUI | 7801 | **17801** |
|
||
| Ollama | 11434 | **17811** |
|
||
| llama.cpp | 8080 | **17812** |
|
||
|
||
```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` по списку. Точные теги: уже есть `foo:7b` ≠ skip для `foo:3b`. Лишнее на диске не удаляет.
|
||
|
||
### Пресеты (меню)
|
||
|
||
| # | ключ | tag / смысл |
|
||
| --- | --- | --- |
|
||
| 1 | **recommended** | `huihui_ai/qwen2.5-vl-abliterated:7b` — vision+RU, ~6 GB |
|
||
| 2 | light | VL 3B abliterate (~3 GB) |
|
||
| 3 | text | text-only `qwen2.5-abliterate:7b` |
|
||
| 4 | stock | `qwen2.5:7b` |
|
||
| 5 | alt | другой text abliterate 7B |
|
||
| 6 | empty | только runtime |
|
||
| — | keep | не трогать yaml (если уже спросили повторно) |
|
||
|
||
`default: true` в yaml — preferred в логе; pull идёт по всему списку.
|
||
|
||
---
|
||
|
||
## Автотюнинг Ollama
|
||
|
||
Unit `gpu-rent-ollama` читает `/mnt/swarm_data/.gpu-rent-gpu.json`:
|
||
|
||
| Tier (VRAM) | Flash Attn | KEEP_ALIVE | KV cache | GPU_OVERHEAD |
|
||
| --- | --- | --- | --- | --- |
|
||
| low (<16 GiB) | off | 2m | q4_0 | 6 GiB |
|
||
| mid (16–23) | on* | 5m | q8_0 | 10 GiB |
|
||
| high (24–47) | on* | 15m | q8_0 | 14 GiB |
|
||
| ultra (≥48) | on* | 30m | q8_0 | 20 GiB |
|
||
|
||
\*Flash на Ampere+ (compute ≥ 8.0). `NUM_PARALLEL=1`, `MAX_LOADED_MODELS=1`. Env: `/mnt/swarm_data/.gpu-rent-ollama.env`.
|
||
|
||
---
|
||
|
||
## llama.cpp
|
||
|
||
| Файл | Роль |
|
||
| --- | --- |
|
||
| `llamacpp-models.example.yaml` | шаблон |
|
||
| `llamacpp-models.yaml` | HTTPS URL на `.gguf` (gitignore) |
|
||
|
||
На `up`: скачать GGUF → `/mnt/swarm_data/llamacpp/models` → `llama-server` + systemd. Уже скачанные крупные файлы не трогает.
|
||
|
||
**Бинарник (без compile по умолчанию):** официальные Releases **не** дают Linux CUDA — только Windows CUDA + Ubuntu CPU/Vulkan. `install_llamacpp.sh` берёт **Ubuntu Vulkan** prebuilt (~30 MB, GPU через Vulkan). CUDA-сборка из исходников — только крайний случай (prebuilt упал) или явно `LLAMACPP_BUILD_CUDA=1` (5–15 мин, тихий лог + heartbeat).
|
||
|
||
Переменные (`.env` или `gpu-rent.vars`, пробрасываются на VM при `up`):
|
||
|
||
| Var | Зачем |
|
||
| --- | --- |
|
||
| `LLAMACPP_TAG` | pin release (`b10545`) |
|
||
| `LLAMACPP_ASSET_URL` + `LLAMACPP_SHA256` | свой архив |
|
||
| `LLAMACPP_BUILD_CUDA=1` | сразу CUDA из исходников |
|
||
| `LLAMACPP_FORCE_REINSTALL=1` | снести бинарь и поставить заново |
|
||
| `LLAMACPP_NGL` / `LLAMACPP_CTX` | override GPU layers / context |
|
||
| `LLAMACPP_HOST` / `LLAMACPP_PORT` | bind (default `127.0.0.1:8080`) |
|
||
| `LLAMACPP_EXTRA_ARGS` | доп. флаги `llama-server` |
|
||
| `OLLAMA_VERSION` / `OLLAMA_SHA256` | pin Ollama |
|
||
|
||
Готовые кейсы A–H — в `gpu-rent.vars.example`.
|
||
|
||
### Пресеты (меню)
|
||
|
||
| # | ключ | что |
|
||
| --- | --- | --- |
|
||
| 1 | **recommended** | Qwen2.5-VL 7B abliterate + mmproj (~4.7+0.8 GB, картинки+RU) |
|
||
| 2 | light | Qwen2.5 3B Instruct text Q4_K_M |
|
||
| 3 | text | Qwen2.5 7B abliterate text-only |
|
||
| 4 | stock | официальный 7B Instruct Q4_K_M |
|
||
| 5 | empty | только runtime |
|
||
| — | keep | не трогать yaml |
|
||
|
||
`-ngl` / `-c` — по GPU probe. Для recommended abliterate GGUF нужен **`HF_TOKEN`** в `.env` (иначе 401). Вручную: положи GGUF в models и `systemctl restart gpu-rent-llamacpp`.
|
||
|
||
---
|
||
|
||
## Idle-killer и LLM
|
||
|
||
Busy (не гасить GPU):
|
||
|
||
- `ollama pull` (маркер младше ~45 мин; старше сбрасывается);
|
||
- загруженная модель в Ollama;
|
||
- llama.cpp: слоты заняты.
|
||
|
||
Ошибка установки LLM на `up` — **fail** (не тихий лог).
|
||
|
||
---
|
||
|
||
## Supply-chain (опциональный pin)
|
||
|
||
По умолчанию install тянет upstream без pin (`WARN` в логе). Жёстче:
|
||
|
||
```bash
|
||
OLLAMA_VERSION=0.6.5
|
||
OLLAMA_SHA256=<sha256 of ollama-linux-amd64.tgz>
|
||
LLAMACPP_TAG=b10545
|
||
# или LLAMACPP_ASSET_URL=... + LLAMACPP_SHA256=...
|
||
# CUDA из исходников (медленно): LLAMACPP_BUILD_CUDA=1
|
||
# Переустановка бинаря: LLAMACPP_FORCE_REINSTALL=1
|
||
# VRAM: LLAMACPP_NGL=40 LLAMACPP_CTX=4096 LLAMACPP_EXTRA_ARGS=--flash-attn on
|
||
```
|