- Added a new configuration option `UP_STOP_ON_FAIL` to control whether the GPU should be stopped automatically if the `up` command fails, enhancing user control over resource management. - Updated the CLI to include a `--keep-on-fail` flag, allowing users to prevent GPU shutdown during installation errors. - Enhanced the installation scripts and documentation to reflect these changes, providing clearer guidance on the new behavior and configuration options. - Improved error handling in the CLI to ensure proper cleanup of resources in case of failure, preventing unexpected billing for unused GPU resources.
6.9 KiB
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
gpu-rent setup
Меню: runtime → пресет моделей → опционально local-watchdog. Пишет LLM_RUNTIME в gpu-rent.vars.
B — флаг на up
gpu-rent up --yes --ollama
gpu-rent up --yes --llm llamacpp
gpu-rent up --yes --llm-only --llamacpp # без SwarmUI
С --yes пресеты не спрашивает (берёт существующий yaml / example).
C — vars вручную
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 |
gpu-rent tunnel
gpu-rent open --llm
$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. Уже скачанные крупные файлы не трогает.
Бинарник: в GitHub Releases нет Linux CUDA — только Windows CUDA + Ubuntu CPU/Vulkan. Драйвер/CUDA runtime на VM ≠ готовый llama-server с CUDA: его нужно собрать (nvcc) или взять Vulkan prebuilt.
Порядок по умолчанию (LLAMACPP_BACKEND=auto):
- Если на VM уже есть
nvcc(часто после прошлогоup) → CUDA-сборка (тихо + heartbeat 5–15 мин). - Иначе → Ubuntu Vulkan prebuilt (~30 MB).
- Fallback на другой путь при ошибке.
Был только Vulkan-stamp, а nvcc появился — следующий up сам пересоберёт CUDA.
| Var | Зачем |
|---|---|
LLAMACPP_BACKEND=auto|cuda|vulkan |
выбор пути (default auto) |
LLAMACPP_TAG |
pin release (b10545) |
LLAMACPP_ASSET_URL + LLAMACPP_SHA256 |
свой архив |
LLAMACPP_BUILD_CUDA=1 |
форс CUDA; =0 — никогда не собирать |
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 в логе). Жёстче:
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