# 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= LLAMACPP_TAG=b4690 # или LLAMACPP_ASSET_URL=... + LLAMACPP_SHA256=... ```