- Added support for `llamacpp-models.yaml` in `.gitignore` and implemented logic to copy it in `gpu-rent.ps1` and `gpu-rent.sh`. - Enhanced CLI to prompt for llama.cpp model presets during setup and execution, improving user experience. - Updated configuration handling to include `llamacpp_models_manifest` and related functions for managing llama.cpp models. - Improved documentation in `cli.md` and `llm.md` to reflect changes in llama.cpp integration and model management. - Refactored provisioning logic to handle llama.cpp model downloads and configurations effectively.
153 lines
5.3 KiB
Markdown
153 lines
5.3 KiB
Markdown
# LLM рядом со SwarmUI (opt-in)
|
||
|
||
По умолчанию поднимается **только SwarmUI**. Ollama или llama.cpp — отдельно, когда нужны (помощь с промптами и т.п.).
|
||
|
||
---
|
||
|
||
## Быстрый путь
|
||
|
||
### Вариант A — wizard
|
||
|
||
```text
|
||
gpu-rent setup
|
||
```
|
||
|
||
Выбери `ollama` или `llamacpp`. Для **обоих** спросит пресет моделей. Значение пишется в `gpu-rent.vars` (`LLM_RUNTIME=…`).
|
||
|
||
### Вариант B — флаг на `up`
|
||
|
||
```text
|
||
gpu-rent up --yes --ollama
|
||
gpu-rent up --yes --llm llamacpp
|
||
```
|
||
|
||
### Вариант C — вручную в vars
|
||
|
||
```env
|
||
LLM_RUNTIME=ollama
|
||
```
|
||
|
||
Потом обычный `gpu-rent up --yes`.
|
||
|
||
Чтобы **выключить** LLM на следующих сессиях: `LLM_RUNTIME=none` (на `up` старые unit’ы `gpu-rent-ollama` / `gpu-rent-llamacpp` останавливаются).
|
||
|
||
Голый `gpu-rent` без args — help, не `up`. Двойной клик: `GPU_RENT_DEFAULT_ARGS=up --yes` в `gpu-rent.vars`. Полный doctor на up: `up -v`.
|
||
|
||
---
|
||
|
||
## Порты (loopback + туннель)
|
||
|
||
| Сервис | На VM | На ноутбуке |
|
||
| --- | --- | --- |
|
||
| SwarmUI | 7801 | **17801** |
|
||
| Ollama | 11434 | **17811** |
|
||
| llama.cpp | 8080 | **17812** |
|
||
|
||
```text
|
||
gpu-rent tunnel
|
||
gpu-rent open --llm
|
||
```
|
||
|
||
Клиент Ollama:
|
||
|
||
```text
|
||
# Windows PowerShell
|
||
$env:OLLAMA_HOST = "http://127.0.0.1:17811"
|
||
```
|
||
|
||
После успешного `up`/`tunnel` CLI печатает access-card со всеми URL и MCP-сниппетом.
|
||
|
||
---
|
||
|
||
## Ollama: модели
|
||
|
||
| Файл | Роль |
|
||
| --- | --- |
|
||
| `ollama-models.example.yaml` | шаблон в git |
|
||
| `ollama-models.yaml` | твой список (gitignore) |
|
||
|
||
На `up` при `LLM_RUNTIME=ollama` CLI делает `ollama pull` по списку. Уже скачанные теги **точно** не трогает (`foo:3b` ≠ `foo:7b`). Лишние модели на диске не удаляет.
|
||
|
||
### Пресеты `setup`
|
||
|
||
| preset | tag | зачем |
|
||
| --- | --- | --- |
|
||
| **recommended** | `huihui_ai/qwen2.5-abliterate:7b` | RU/EN, ~5 GB, меньше отказов |
|
||
| light | `qwen2.5:3b` | быстрее, слабее |
|
||
| stock | `qwen2.5:7b` | официальный |
|
||
| alt | `richardyoung/qwen2.5-7b-instruct-abliterated` | другой abliterate |
|
||
| empty | `[]` | только runtime, pull руками |
|
||
|
||
Community abliterate-модели без гарантий безопасности — для личного prompt-help рядом со SwarmUI.
|
||
|
||
Поле `default: true` в yaml — preferred модель (лог / подсказка); pull идёт по всему списку.
|
||
|
||
---
|
||
|
||
## Автотюнинг Ollama под GPU
|
||
|
||
На установке `gpu-rent-ollama` читает `/mnt/swarm_data/.gpu-rent-gpu.json` и пишет env в systemd unit (одна карта вместе со SwarmUI):
|
||
|
||
| Tier (VRAM) | Flash Attn | KEEP_ALIVE | KV cache | GPU_OVERHEAD (запас под Swarm/Krea) |
|
||
| --- | --- | --- | --- | --- |
|
||
| 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`.
|
||
|
||
Файл: `/mnt/swarm_data/.gpu-rent-ollama.env` (пересоздаётся на каждом install Ollama).
|
||
|
||
---
|
||
|
||
## llama.cpp
|
||
|
||
Манифест GGUF:
|
||
|
||
| Файл | Роль |
|
||
| --- | --- |
|
||
| `llamacpp-models.example.yaml` | шаблон в git |
|
||
| `llamacpp-models.yaml` | URL на `.gguf` (gitignore) |
|
||
|
||
На interactive `up` / `setup` после выбора `llamacpp` спрашивается пресет (как у Ollama). На `up` CLI скачивает GGUF в `/mnt/swarm_data/llamacpp/models`, затем ставит `llama-server` + systemd.
|
||
|
||
### Пресеты
|
||
|
||
| preset | что |
|
||
| --- | --- |
|
||
| **recommended** | Qwen2.5 7B abliterate Q4_K_M (~4.7 GB) |
|
||
| light | Qwen2.5 3B Instruct Q4_K_M |
|
||
| stock | официальный Qwen2.5 7B Instruct Q4_K_M |
|
||
| empty | только runtime |
|
||
|
||
Параметры `-ngl` / `-c` — по GPU probe. Опционально `HF_TOKEN` для gated HF. Вручную: положи GGUF в каталог models и `systemctl restart gpu-rent-llamacpp`.
|
||
|
||
---
|
||
|
||
## Idle-killer и LLM
|
||
|
||
Busy (не гасить GPU), если:
|
||
|
||
- идёт `ollama pull` (маркер младше ~45 мин; старше — сбрасывается);
|
||
- в Ollama есть загруженная модель;
|
||
- llama.cpp занимает слоты.
|
||
|
||
Ошибка установки LLM на `up` — **fail** (не тихий лог): почини или поставь `LLM_RUNTIME=none`.
|
||
|
||
---
|
||
|
||
## Supply-chain (опциональный pin)
|
||
|
||
По умолчанию install-скрипты тянут upstream **без pin** (Ollama: `curl|sh`; llama.cpp: GitHub `latest`) — риск подмены. В логе будет `WARN`.
|
||
|
||
Жёстче — задай env на VM / при bootstrap:
|
||
|
||
```bash
|
||
OLLAMA_VERSION=0.6.5
|
||
OLLAMA_SHA256=<sha256 of ollama-linux-amd64.tgz>
|
||
|
||
LLAMACPP_TAG=b4690
|
||
# или LLAMACPP_ASSET_URL=... + LLAMACPP_SHA256=...
|
||
```
|