Инструменты пользователя

Инструменты сайта


truenas:application:strata_qwen_server

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
truenas:application:strata_qwen_server [2026/11/12 17:25]
werwolf Qwen3.8-Flash-Next на Strata: установка, кванты, Goose, сервер и клиенты по IP
truenas:application:strata_qwen_server [2026/11/12 18:15] (текущий)
werwolf llama.cpp: MoE-модели с NVMe + RAM на TrueNAS (Custom App)
Строка 1: Строка 1:
-====== Strata + Qwen3.8-Flash-Next на сервере и подключение клиентов по IP ======+====== Strata + Qwen3.8-Flash-Next на сервере ​TrueNAS (Docker, Custom App) и подключение клиентов по IP ======
  
 ===== Введение ===== ===== Введение =====
  
-Инструкция описывает,​ как развернуть движок **Strata** с моделью **Qwen3.8-Flash-Next** на отдельном Linux-сервере ​с видеокартой и подключаться к нему по сети с других компьютеров:​ из Goose Desktop, OpenCode, Open WebUI, Claude Code или любого OpenAI-совместимого клиента.+Инструкция описывает,​ как развернуть движок **Strata** с моделью **Qwen3.8-Flash-Next** на домашнем ​сервере ​**TrueNAS SCALE** ​в Docker — как приложение (Custom App) через веб-интерфейс TrueNAS — и подключаться к нему по сети с других компьютеров:​ из Goose Desktop, OpenCode, Open WebUI, Claude Code или любого OpenAI-совместимого клиента.
  
-Локальная установка на Windows-ПК (проверенная пошагово,​ с замерами скорости и разбором ошибок) — на странице [[:​truenas:​application:​strata_qwen_goose|Qwen3.8-Flash-Next на Strata + Goose Desktop (Windows)]]. Здесь используются те же команды Strata, но с доступом из сети.+Локальная установка на Windows-ПК (проверенная пошагово,​ с замерами скорости и таблицей ​моделей) — на странице [[:​truenas:​application:​strata_qwen_goose|Qwen3.8-Flash-Next на Strata + Goose Desktop (Windows)]].
  
-**Статус инструкции.** Команды и ключи взяты из Strata 0.1.59 (''​install.sh'',​ ''​strata launch --help'',​ ''​strata launch --plan''​). Серверный сценарий целиком на реальном сервере ​ещё не прогонялся — места, требующие проверки, помечены **(проверить)**.+**Без обновления ​TrueNAS:​** ​на текущем драйвере ​550 работает llama.cpp, который держит модель на NVMe и подгружает через RAM — см. [[:​truenas:​application:​llamacpp_moe_ssd|llama.cpp:​ большие MoE-модели с NVMe + RAM на TrueNAS]].
  
-===== Схема ​=====+**Статус инструкции.** ​Сервер обследован по SSH, совместимость образа Strata с текущим драйвером **проверена на сервере** (см. «Шаг 1»). Сама установка Custom App после обновления TrueNAS ещё не выполнялась — такие места помечены **(проверить)**.
  
-<​code>​ +===== Сервер ​=====
- ​┌──────────────────────────────┐ ​         LAN            ┌──────────────────────────┐ +
- │ Linux-сервер ​+ NVIDIA GPU    │  http://​IP:​8080/​v1 ​     │ Клиентский ПК            │ +
- ​│ ​ strata launch --access lan  │ ◄────────────────────── │  Goose / OpenCode /      │ +
- ​│ ​ API-ключ включён ​           │  Authorization:​ Bearer ​ │  Open WebUI / curl       │ +
- ​└──────────────────────────────┘ ​                        ​└──────────────────────────┘ +
-</​code>​+
  
-===== Где запускать: TrueNAS или отдельная машина =====+Данные сняты по SSH (''​truenas_admin@192.168.1.135''​):
  
-Strata нужна видеокарта (NVIDIA ​RTX 20/30/40/50 или AMD), много RAM и быстрый диск. Варианты:+^ Параметр ^ Значение ^ 
 +| Система | TrueNAS SCALE **25.04.2.6** (Fangtooth),​ ядро 6.12.15 | 
 +| CPU | Intel Core i5-14500 (14 ядер / 20 потоков, AVX2, без AVX-512) | 
 +| RAM | 62 GB | 
 +| GPU | NVIDIA **RTX 2000 Ada Generation, 16 GB**, PCIe 4.0 x8 | 
 +| Драйвер ​NVIDIA ​| **550.142** — для Strata **слишком старый** | 
 +| Docker | 27.5, NVIDIA Container Runtime установлен (runtime по умолчанию — ''​nvidia''​) | 
 +| Быстрый ​пул | ''​appData''​ — 2 × Samsung 990 PRO 4 TB (NVMe), свободно ~3.3 TB, монтируется в ''/​mnt/​appData''​ | 
 +| Большой пул | ''​storage''​ — 5 × HDD 16 TB, ''/​mnt/​storage''​ | 
 +| Занятые порты | среди прочих 8080 (ai-anki), 8081 (youtrack) — для Strata берём **30080** |
  
-  ​* **Отдельный Linux-сервер / ПК** (Ubuntu 22.04 / 24.04) — самый простой и рекомендуемый вариант. +**Кто уже использует видеокарту и память** ​(на момент обследования):
-  * **Виртуальная машина на TrueNAS SCALE** (Virtualization → VM с Ubuntu) с **пробросом GPU (PCI passthrough)** в ВМ. Внутри ВМ — всё как на обычном сервере. Нужна поддержка IOMMU (VT-d / AMD-Vi) и вторая ​видеокарта или встроенная графика для самого TrueNAS. **(проверить)** +
-  * **Не рекомендуется** ставить Strata прямо в хостовую систему TrueNAS SCALE: это appliance, ​системный раздел перезаписывается при обновлениях, а ставить туда пакеты не предусмотрено.+
  
-Модели (84+ GB) лучше хранить на быстром SSD/​NVMe; ​на HDD-пуле загрузка модели будет очень долгой.+  * VRAM занято **11.8 ​из 16 GB**: Ollama, LibreTranslate,​ Whisper, XTTS / VoxCPM TTS. 
 +  * RAM: из 62 GB около 24 GB занимают приложения, ещё ~22 GB — кэш ZFS (ARC, отдаётся по требованию).
  
-===== Требования к серверу ​=====+Strata нужна почти ​вся видеопамять ​и десятки GB RAM, поэтому на время работы Strata GPU-приложения нужно останавливать (см. «Шаг 3»).
  
-^ Ресурс ^ Минимум ^ Комментарий ^ +===== Шаг 1: Обновить ​TrueNAS ​до 25.10.7 или новее (драйвер NVIDIA ​580) =====
-| GPU | NVIDIA с 16 GB VRAM | 24 GB и больше — быстрее; ​несколько карт поддерживаются (''​--gpu 0,​1''​) | +
-| Драйвер | актуальный ​драйвер NVIDIA, ''​nvidia-smi''​ работает | для AMD — ROCm | +
-| RAM | зависит ​от кванта, см. таблицу ниже | для IQ3_S — 64 GB | +
-| Диск | размер модели + ~3 GB | SSD/NVMe | +
-| ОС | Linux x86_64 | ARM64 — только ​NVIDIA ​DGX Spark | +
-| Пакеты | ''​curl''​ или ''​wget'',​ ''​tar'',​ ''​sha256sum''​ | |+
  
-===== Шаг 1: Подготовка сервера =====+==== Почему ====
  
-Проверьте видеокарту и драйвер:+Образы Strata ​требуют ​драйвер NVIDIA: ''​cuda13''​ — **580+**, ''​cuda12''​ — **575+**. Проверка на этом сервере образом ''​ghcr.io/​niko1221/​strata:​0.2.13-cuda12''​:
  
-<​code ​bash> +<​code>​ 
-nvidia-smi +$ docker run --rm --gpus all ghcr.io/​niko1221/​strata:​0.2.13-cuda12 strata components engine 
-free -g +this PC           ​linux-x86_64,​ cuda (nvidia-smi) 
-df -h ~+  ​installed ​      ​0.1.59 linux-x86_64-cuda  /​opt/​strata/​components/​engine/​0.1.59-linux-x86_64-cuda-cuda12 
 +Your NVIDIA graphics driver (550.142) is too old for Strata. Install driver 575 or newer ...
 </​code>​ </​code>​
  
-Если ''​nvidia-smi'' ​не найден — установите ​драйвер (Ubuntu):+На TrueNAS драйвер ​не обновляется отдельно — он приходит с версией системы:
  
-<code bash> +^ Версия TrueNAS ^ Драйвер NVIDIA ^ Strata ^ 
-sudo ubuntu-drivers install +| 25.04 Fangtooth (сейчас) | 550.142 | **не работает** | 
-sudo reboot +| 25.10.0 – 25.10.6 Goldeye | 570.172.08 (open kernel modules) | не работает (нужно 575+) | 
-</​code>​+| **25.10.7 Goldeye и новее** | **580.173.02** (LTS-ветка) | работает образ ''​cuda13''​ |
  
-Рекомендуется завести отдельного пользователя под ​сервис:+Источники: release notes TrueNAS 25.10 (переход на open kernel modules ​с 570.172.08) и заметки к 25.10.7 (обновление на 580.173.02). RTX 2000 Ada (архитектура Ada) открытыми модулями поддерживается.
  
-<code bash> +==== Как обновить ====
-sudo adduser --disabled-password --gecos ""​ strata +
-sudo usermod -aG video,​render strata +
-sudo -iu strata +
-</​code>​+
  
-===== Шаг 2: Установка ​Strata =====+  - **System → General Settings → Manage Configuration → Download File** — сохранить конфигурацию (с ключом шифрования). 
 +  - **System → Update**: в выпадающем ​списке **Train** выбрать **TrueNAS-SCALE-Goldeye** (сервер его уже видит),​ дождаться списка обновлений, убедиться,​ что предлагается **25.10.7 или новее**,​ нажать **Download / Apply**, перезагрузить. 
 +  - После перезагрузки проверить драйвер: **System → Shell** (или SSH):<​code bash> 
 +nvidia-smi --query-gpu=name,​driver_version --format=csv 
 +</​code>​Ожидается ''​NVIDIA RTX 2000 Ada Generation, 580.x''​. 
 +  - Проверить,​ что GPU-приложения (Ollama, Whisper, LibreTranslate и др.) запустились и видят карту. **(проверить после обновления)**
  
-От пользователя ''​strata'':​+**Важно:​** ​переход 25.04 → 25.10 — смена основной версии. Перед обновлением почитайте release notes 25.10 (раздел о breaking changes) и убедитесь, что есть резервная копия ​важных данных. Откат возможен выбором предыдущего boot environment (**System → Boot**).
  
-<code bash> +===== Шаг 2: Выбор модели под этот сервер =====
-curl -fsSL https://​github.com/​Niko1221/​Strata/​releases/​latest/​download/​install.sh -o install.sh +
-less install.sh ​         # прочитать, что делает скрипт +
-sh install.sh +
-</​code>​+
  
-Что делает ​установщик: +Ресурсы сервера: 62 GB RAM + 16 GB VRAM = **78 GB**, но часть занята другими приложениями. ​Strata ​планирует память ​по **всему** объёму RAM сервера и не знает о других контейнерах, поэтому модель надо выбирать с запасом.
-  - скачивает Strata ​Terminal ​и сверяет SHA-256; +
-  - распаковывает в ''​~/​.local/​share/​strata/​terminal/<​версия>''​ (без root, ничего вне ​домашней ​папки); +
-  - проверяет подпись релиза; +
-  - создаёт ссылку ''​~/​.local/​bin/​strata''​.+
  
-Если ''​~/​.local/​bin'' ​нет в PATH:+Столбец «Нужно RAM+VRAM» — оценка Strata (та же, что ​в таблице на странице Windows-ПК).
  
-<code bash> +^ ''​FAMILY''​ / ''​MODEL''​ ^ Скачать ^ Нужно RAM+VRAM ^ На этом сервере ^ 
-echo 'export PATH="​$HOME/.local/bin:​$PATH"​' ​>> ​~/.bashrc +| ''​gyro'​' / ''​Gyro-M''​ | — | ~35 GB | да | 
-source ​~/.bashrc +| ''​qwen'' ​/ ''​Q2_0''​ | 66 GB | ~38 GB | **да, рекомендуется для начала** | 
-strata --version +| ''​unsloth'' ​/ ''​UD-IQ1_M''​ | 68 GB | ~39 GB | да | 
-</​code>​+| ''​unsloth''​ / ''​UD-Q2_K_XL''​ | 80 GB | ~51 GB | только если остановить другие тяжёлые приложения (Nextcloud, PhotoPrism, Jellyfin…) | 
 +| ''​unsloth'' ​/ ''​UD-IQ3_XXS''​ | 84 GB | ~55 GB | то же, впритык | 
 +| ''​qwen''​ / ''​IQ3_XXS'',​ ''​IQ3_S''​ | 76 / 84 GB | ~76 / ~84 GB | **только в режиме «только Strata»** — см. ниже «Вариант:​ IQ3_S» | 
 +| unsloth ''​UD-Q4_K_XL''​ и крупнее | 111+ GB | 82+ GB | нет — не хватит RAM | 
 +| ''​qwen36''​ (Qwen3.6-35B-A3B) | меньше | меньше | да; меньшая модель,​ умеет несколько запросов одновременно — **(проверить размер ''​--plan''​)** |
  
-Хранить модели на другом ​диске (например, на NVMe-датасете):+Скорость здесь будет **ниже**, чем ​на ПК с RTX 4080: у RTX 2000 Ada примерно в 3 раза меньше пропускная способность видеопамяти и шина PCIe x8. Замеров нет. **(проверить)**
  
-<code bash> +==== Вариант: IQ3_S в режиме «только Strata» ====
-export STRATA_DATA_DIR=/​mnt/​fast/​strata ​     # до установки +
-# или для уже установленной Strata — ключ запуска:​ +
-strata launch ... --data-dir /​mnt/​fast/​strata-models +
-</​code>​+
  
-===== Шаг 3: Выбор типа квантования ​=====+Если на время работы Strata остановить все остальные приложения,​ сервер по памяти почти равен Windows-ПК,​ на котором IQ3_S проверен (64 GB RAM + 16 GB VRAM, реально занято ~50 GB RAM + 15.7 GB VRAM, ~21.5 ток/с на RTX 4080). На сервере 62 GB RAM — запас меньше, а генерация будет медленнее (видеопамять RTX 2000 Ada примерно в 3 раза медленнее,​ чем у RTX 4080). **(проверить на сервере)**
  
-Квант задаётся ​ключом ''​--model'', ​семейство — ''​--family''​. ​Меньше бит → меньше памяти и быстрее, но ниже качество.+Что ​нужно: 
 +  - **Остановить приложения** (Apps → Installed → Stop): все GPU-приложения (''​ollama'',​ ''​whisper'',​ ''​libretranslate'',​ ''​xtts'',​ ''​voxcpmtts''​) и тяжёлые по памяти (''​nextcloud'',​ ''​photoprism'',​ ''​jellyfin'',​ ''​open-webui'',​ ''​anki'',​ ''​pdf-ocr'', ​''​youtrack''​…). Проверка ​свободной памяти: ​''​free -g'' ​— в ''​available''​ должно быть 55+ GB. 
 +  - **Ограничить кэш ZFS (ARC).** По умолчанию он может занять почти всю RAM и отдаёт ​её постепенно, ​а Strata при загрузке сразу закрепляет десятки GB. **System → Advanced Settings → Init/​Shutdown Scripts → Add**: 
 +    * Type: **Command** 
 +    * Command: ''​echo 8589934592 > /​sys/​module/​zfs/​parameters/​zfs_arc_max''​ (8 GB) 
 +    * When: **Post Init** 
 +    * Сохранить и, чтобы применить ​сразу, выполнить ту же команду в **System → Shell** под root (''​sudo -i''​). Проверка: ''​awk '/​^size/​ {print $3/2^30 " GB"​}'​ /​proc/​spl/​kstat/​zfs/​arcstats''​. **(проверить)** 
 +    * Минус: меньше кэша для файлов на дисках — сетевые шары и приложения могут работать чуть медленнее. 
 +  - В YAML («Шаг 6») поставить ''​MODEL:​ IQ3_S''​ (скачивание ~85 GB) и **''​restart:​ "​no"''​** — чтобы после перезагрузки сервера Strata не стартовала автоматически рядом с остальными приложениями и не вызвала нехватку памяти.
  
-==== Официальные кванты Qwen3.8-Flash-Next (--family qwen, по умолчанию) ====+Порядок работы: остановить приложения → **Start** ​у ''​strata''​ → дождаться ''​healthy''​ → работать → **Stop** у ''​strata''​ → запустить приложения обратно.
  
-Цифры RAM — оценка установщика ​Strata для машины с 16 GB VRAM; при большей VRAM RAM нужно меньше.+Если при загрузке контейнер падает или в логах ошибки памяти — вернуться к ''​Q2_0''​ / ''​UD-Q2_K_XL''​ либо ​добавить RAM в сервер (i5-14500 поддерживает до 192 GB; с 128 GB IQ3_S работает рядом со всеми приложениями).
  
-^ ''​--model''​ ^ Тип ^ Скачивание ^ RAM (примерно) ^ Для чего ^ +Посмотреть ​план без запуска (после обновления ​TrueNAS, ​образ скачается ​~0.7 GB):
-| ''​q2_0''​ | 2 бита | 66 GB | ~34 GB | самый быстрый, качество ниже; сервер с 48 GB RAM | +
-| ''​iq2_xs''​ | 2-битный i-quant | 68 GB | ~36 GB | чуть лучше качество, скорость близка к Q2_0 | +
-| ''​iq3_xxs''​ | 3-битный i-quant | 76 GB | ~43 GB | компромисс качество/​скорость | +
-| ''​iq3_s''​ | 3.5-битный i-quant | 84 GB | ~50 GB | **рекомендуется**: лучшее ​качество среди официальных;​ 64 GB RAM | +
- +
-==== Кванты Unsloth ​(--family unsloth) — для мощных ​серверов ==== +
- +
-^ ''​--model''​ ^ Скачивание ^ Для чего ^ +
-| ''​ud-iq4_xs''​ | 94 GB | 4 бита, 96+ GB RAM или ​несколько GPU | +
-| ''​ud-q4_k_xl''​ | 111 GB | 4 бита K-quant | +
-| ''​ud-q5_k_xl''​ | 158 GB | 5 бит, почти без потерь | +
-| ''​ud-q6_k_xl''​ | 169 GB | 6 бит | +
-| ''​q8_0''​ | 188 GB | 8 бит, практически полное качество | +
- +
-Для ''​ud-iq4_xs''​ / ''​ud-q4_k_xl''​ можно ограничить объём экспертов в RAM: ''​--set resident_budget_gib=N''​ **(проверить имя параметра;​ у установщика это ''​--resident-budget-gib N''​)**. +
- +
-==== Другие семейства ==== +
- +
-  * ''​--family swift''​ — Swift 1.5 (дообученная Qwen3.8-Flash-Next). +
-  * ''​--family coder''​ — вариант для кода. +
-  * ''​--family qwen36''​ — Qwen3.6-35B-A3B:​ компактнее,​ умеет картинки и **несколько запросов одновременно** (''​--parallel N''​) — удобно,​ если к серверу подключается ​несколько человек. +
-  * ''​--family deepseek41''​ — DeepSeek-V4.1-Flash: 1.75 / 2.00 / 2.25 bpw = 239 / 257 / 274 GB, только для больших серверов. +
- +
-==== Как сравнить варианты,​ ничего не меняя ====+
  
 <code bash> <code bash>
-strata launch ​--model iq3_s    ​--access lan --port 8080 --no-tui --plan +docker run --rm --gpus all ghcr.io/​niko1221/​strata:​0.2.13-cuda13 ​strata launch --plan --family ​qwen --model ​q2_0 --vision off --no-tui
-strata launch ​--model q2_0     ​--access lan --port 8080 --no-tui ​--plan +
-strata launch ​--family ​unsloth ​--model ​ud-q4_k_xl ​--access lan --port 8080 --no-tui ​--plan+
 </​code>​ </​code>​
  
-Пример вывода:+===== Шаг 3: Освободить видеокарту =====
  
-<​code>​ +На время работы Strata остановите приложения, которые держат видеопамять:​ **Apps → Installed → (приложение) → Stop**:
-Plan for 'IQ3_S 128K':​ +
-  model     ​Qwen3.8-Flash-Next IQ3_S, 84 GB +
-  context ​  ​128K ​   pictures off    parallel fit to your card +
-  drafting ​ DFlash2 ​(its drafter is downloaded first) +
-  tuning ​   skip    access My local network, port 8080    API key on +
-Nothing was changed. +
-</​code>​+
  
-===== Шаг 4: Запуск с доступом из локальной сети =====+  * ''​ollama''​ (держит загруженные ​модели в VRAM), 
 +  * ''​whisper'',​ ''​libretranslate'',​ ''​xtts'',​ ''​voxcpmtts''​. 
 + 
 +Проверка, что VRAM свободна:​
  
 <code bash> <code bash>
-strata launch ​--model iq3_s --context 128k --vision off --tune quick \ +nvidia-smi --query-gpu=memory.used,​memory.total ​--format=csv 
-  ​--access lan --port 8080 --no-tui --yes --save-preset "​Server IQ3_S"+nvidia-smi --query-compute-apps=pid,​process_name,​used_memory ​--format=csv
 </​code>​ </​code>​
  
-Ключи, отличающиеся от локальной установки: +Если Strata нужна постоянно — у этих приложений стоит выключить автозапуск ​или перенести их на CPU.
-  * ''​--access lan'' ​— слушать сетевой ​интерфейс, доступ ​из локальной сети. **API-ключ ​включается автоматически.** +
-  * ''​--port 8080''​ — на сервере порт обычно свободен;​ при конфликте выберите другой. +
-  * ''​--tune quick''​ — при первом ​запуске подобрать самые быстрые настройки под это железо (результат сохраняется). +
-  * ''​--parallel N''​ — сколько запросов обрабатывать одновременно (1–8). **Внимание:​** с drafter DFlash2 Strata принудительно ставит 1 запрос. Если к серверу подключается несколько человек одновременно — добавьте ''​--drafting mtp''​ (MTP поддерживает параллельность) и ''​--parallel 2..4''​.+
  
-Другие режимы доступа:+===== Шаг 4: Датасет для данных Strata =====
  
-^ ''​--access''​ ^ Кто может подключиться ​^ +Модель ​(десятки GB), подготовленные файлы, пресеты и API-ключ хранятся в ''​/data'' ​контейнера. Кладём их на быстрый ​NVMe-пул:
-| ''​local''​ | только сам сервер (127.0.0.1) | +
-| ''​lan''​ | компьютеры локальной ​сети ​| +
-| ''​tailscale'' ​| устройства вашей сети Tailscale (доступ ​извне без проброса портов) | +
-| ''​cloudflare''​ | быстрый ​туннель Cloudflare (публичный адрес; обязательно с ключом) |+
  
-Своё значение ключа: ​''​--api-key КЛЮЧ'' ​или ​''​--api-key-env ИМЯ_ПЕРЕМЕННОЙ''​; новый ключ — ''​--new-key''​. Без ключа — ''​--no-api-key''​ (не рекомендуется).+**Datasets** → выбрать ''​appData'' ​→ **Add Dataset**:​ 
 +  * Name: ''​strata''​ 
 +  * Dataset Preset: **Apps** 
 +  * Save.
  
-==== Узнать API-ключ ====+Путь получится ''/​mnt/​appData/​strata''​. Нужно свободное место: размер модели + ~10 GB (для ''​Q2_0''​ — ~80 GB).
  
-<code bash> +===== Шаг 5: API-ключ =====
-strata launch ​--show-key --preset "​Server IQ3_S"​ +
-</​code>​+
  
-Ключ понадобится на каждом клиенте. +Сервер ​будет доступен из сети, поэтому ключ обязателен (Strata без ключа в сеть не отдаёт). Сгенерировать (**System → Shell** или SSH):
- +
-==== Управление ====+
  
 <code bash> <code bash>
-strata launch ​--preset "​Server IQ3_S" --no-tui ​         # запуск +openssl rand -hex 24
-strata launch --stop --preset "​Server IQ3_S" ​           # остановка +
-strata launch --status ​                                 # что запущено +
-strata monitor --url http://​127.0.0.1:​8080 ​             # монитор +
-strata logs --url http://​127.0.0.1:​8080 --follow ​       # журнал запросов в реальном времени+
 </​code>​ </​code>​
  
-===== Шаг 5: Автозапуск через systemd =====+Сохраните ключ (например, в KeePass) — он нужен в YAML и на каждом клиенте. Ниже он обозначен ''<​КЛЮЧ>''​.
  
-''​strata launch --no-tui''​ запускает сервер в фоне и возвращает управление, поэтому используется тип ''​oneshot''​. **(проверить на сервере)**+===== Шаг 6: Установка Custom App через веб-интерфейс =====
  
-Файл ''/​etc/​systemd/​system/​strata.service'':​+**Apps → Discover Apps →** (меню **⋮** справа вверху) **→ Install via YAML**. **(проверить название пункта в 25.10)**
  
-<code ini> +  * **Name:** ''​strata''​ 
-[Unit] +  * **Custom Config** — вставить YAML:
-Description=Strata LLM server (Qwen3.8-Flash-Next) +
-After=network-online.target nvidia-persistenced.service +
-Wants=network-online.target+
  
-[Service] +<code yaml> 
-Type=oneshot +services: 
-RemainAfterExit=yes +  strata: 
-User=strata +    ​image:​ ghcr.io/niko1221/strata:​0.2.13-cuda13 
-Environment=HOME=/home/strata +    ​container_name: ​strata 
-ExecStart=/​home/​strata/​.local/​bin/​strata launch ​--preset ​"Server IQ3_S" ​--no-tui +    restart: unless-stopped 
-ExecStop=/home/strata/​.local/​bin/​strata ​launch --stop --preset "​Server IQ3_S" +    ports: 
-TimeoutStartSec=900 +      ​- "30080:8080" 
- +    ​environment:​ 
-[Install] +      FAMILY: qwen 
-WantedBy=multi-user.target+      MODEL: Q2_0 
 +      CONTEXT: 64k 
 +      VISION: "​off"​ 
 +      TUNE: skip 
 +      API_KEY: "<​КЛЮЧ>"​ 
 +    volumes: 
 +      - /mnt/appData/strata:/data 
 +    ​deploy:​ 
 +      ​resources:​ 
 +        ​reservations:​ 
 +          devices: 
 +            - driver: nvidia 
 +              count: 1 
 +              capabilities: ​[gpu] 
 +    ​ulimits:​ 
 +      memlock: 
 +        soft: -1 
 +        hard: -1 
 +    shm_size: 2gb 
 +    stop_grace_period:​ 2m
 </​code>​ </​code>​
  
-<code bash> +  * **Save** ​/ **Install**.
-sudo systemctl daemon-reload +
-sudo systemctl enable --now strata +
-systemctl status strata +
-</code>+
  
-===== Шаг ​6: Firewall =====+Пояснения:​ 
 +  * ''​image''​ — версия закреплена (''​0.2.13''​);​ ''​cuda13''​ — для драйвера 580+. Список версий:​ ''​ghcr.io/​niko1221/​strata''​ на GitHub. 
 +  * ''​ports:​ "​30080:​8080"''​ — снаружи порт **30080** (8080 и 8081 на сервере заняты),​ внутри контейнера 8080. Порт открыт для всей сети — поэтому ключ. 
 +  * ''​FAMILY''​ / ''​MODEL''​ — модель из таблицы «Шаг ​2»; ''​CONTEXT''​ — длина контекста (''​32k'',​ ''​64k'',​ ''​128k''​);​ больше контекст — больше памяти. 
 +  * ''​volumes''​ — всё скачанное и настройки живут в датасете,​ переживают обновление образа и пересоздание приложения. 
 +  * ''​deploy … nvidia''​ — доступ к GPU (так же настроены ваши ''​whisper''​ и ''​libretranslate''​). 
 +  * ''​memlock'',​ ''​shm_size''​ — движок закрепляет в RAM десятки GB; **не ставьте лимит памяти** контейнеру. 
 +  * ''​stop_grace_period: 2m''​ — время на выгрузку модели при остановке. 
 +  * ''​restart:​ unless-stopped''​ — после перезагрузки сервера Strata стартует сама, если не была остановлена вручную.
  
-Разрешите порт только из домашней ​сети (пример для ''​ufw'',​ сеть ''​192.168.1.0/​24''​):+Другие переменные (из документации Strata): ''​PARALLEL''​ (одновременных запросов 1–8), ''​KV''​ (''​int8''​ / ''​q4_0''​ — вдвое меньше памяти на контекст),​ ''​TUNE=quick''​ (один раз подобрать быстрые настройки), ''​STRATA_SET'' ​(расширенные настройки ​движка), ​''​MODEL_PATH'' ​(свои GGUF-файлы, смонтированные в контейнер).
  
-<code bash> +===== Шаг 7: Первый запуск =====
-sudo ufw allow from 192.168.1.0/​24 to any port 8080 proto tcp +
-sudo ufw status +
-</​code>​+
  
-**Не пробрасывайте порт 8080 на роутере в интернет.** Для доступа извне используйте ''​--access tailscale''​ или VPN.+Первый старт скачивает модель (для ''​Q2_0''​ ~68 GB) — это долго. Ход загрузки: **Apps → Installed → strata → Logs** (или ''​docker logs -f strata''​ по SSH). Прерванная загрузка продолжается с места ​остановки.
  
-===== Шаг 7: Проверка с другого ​компьютера ​=====+Состояние: пока качается и загружается — ''​starting'', ​когда ​модель загружена — ''​healthy''​ / **Running**.
  
-Ниже ''​192.168.1.50''​ — IP сервера, ''<​КЛЮЧ>''​ — ключ из ''​--show-key''​. +Проверка на самом ​сервере:
- +
-Linux / macOS:+
  
 <code bash> <code bash>
-curl -s http://192.168.1.50:8080/v1/models -H "​Authorization:​ Bearer <​КЛЮЧ>"​+curl -s http://127.0.0.1:​30080/​health 
 +curl -s http://127.0.0.1:30080/v1/models -H "​Authorization:​ Bearer <​КЛЮЧ>"​
 </​code>​ </​code>​
 +
 +===== Шаг 8: Проверка с другого компьютера =====
  
 Windows (PowerShell):​ Windows (PowerShell):​
  
 <code powershell>​ <code powershell>​
-curl.exe -s http://​192.168.1.50:8080/v1/models -H "​Authorization:​ Bearer <​КЛЮЧ>"​+curl.exe -s http://​192.168.1.135:30080/v1/models -H "​Authorization:​ Bearer <​КЛЮЧ>"​
 </​code>​ </​code>​
  
-Должен вернуться JSON с ''"​id":​ "​qwen3.8-flash-next-iq3_s"''​ и ''"​status":​ {"​value":​ "​loaded"​}''​. +Linux / macOS:
- +
-Тестовый запрос:+
  
 <code bash> <code bash>
-curl -s http://​192.168.1.50:8080/​v1/​chat/​completions \+curl -s http://​192.168.1.135:30080/​v1/​chat/​completions \
   -H "​Authorization:​ Bearer <​КЛЮЧ>"​ -H "​Content-Type:​ application/​json"​ \   -H "​Authorization:​ Bearer <​КЛЮЧ>"​ -H "​Content-Type:​ application/​json"​ \
-  -d '​{"​model":"​qwen3.8-flash-next-iq3_s","​messages":​[{"​role":"​user","​content":"​Привет,​ ответь одним словом"​}],"​max_tokens":​200}'​+  -d '​{"​model":"​<имя из /​v1/​models>​","​messages":​[{"​role":"​user","​content":"​Привет,​ ответь одним словом"​}],"​max_tokens":​200}'​
 </​code>​ </​code>​
  
-Если не отвечает:​ +  ​* ''​Connection refused''​ / таймаут — приложение не запущено,​ неверный порт; 
-  ​* ''​Connection refused''​ / таймаут — сервер не запущен, не тот порт или блокирует firewall (''​sudo ufw status''​, ''​ss -ltnp | grep 8080'' ​на сервере); +  * ''​401''​ — неверный или не переданный ключ. 
-  * ''​401''​ / ''​403''​ — неверный или не переданный ключ.+ 
 +Имя модели берите **точно** из ответа ''/​v1/​models''​ (для Q2_0 — вида ''​qwen3.8-flash-next-q2_0''​).
  
-===== Шаг ​8: Подключение клиентов =====+===== Шаг ​9: Подключение клиентов =====
  
-Общие параметры ​для любого клиента:+Общие параметры:​
  
 ^ Параметр ^ Значение ^ ^ Параметр ^ Значение ^
 | Тип API | OpenAI Compatible (Chat Completions) | | Тип API | OpenAI Compatible (Chat Completions) |
-| Base URL | ''​http://​192.168.1.50:8080/​v1''​ | +| Base URL | ''​http://​192.168.1.135:30080/​v1''​ | 
-| Полный путь Chat Completions | ''​http://​192.168.1.50:8080/​v1/​chat/​completions''​ | +| Полный путь Chat Completions | ''​http://​192.168.1.135:30080/​v1/​chat/​completions''​ | 
-| API Key | ключ из ''​strata launch --show-key''​ | +| API Key | ''​<​КЛЮЧ>​''​ | 
-| Модель | ''​qwen3.8-flash-next-iq3_s''​ (точное ​имя ​— из ''/​v1/​models''​) | +| Модель | имя из ''/​v1/​models''​ | 
-| Контекст | 131072 ​| +| Anthropic-совместимый адрес | ''​http://​192.168.1.135:30080''​ (без ''/​v1''​) |
-| Anthropic-совместимый адрес | ''​http://​192.168.1.50:8080''​ (без ''/​v1''​) |+
  
 ==== Goose Desktop ==== ==== Goose Desktop ====
Строка 280: Строка 251:
 | Provider Type | **OpenAI Compatible** | | Provider Type | **OpenAI Compatible** |
 | Display Name | ''​Strata Server''​ | | Display Name | ''​Strata Server''​ |
-| API URL | ''​http://​192.168.1.50:8080/​v1/​chat/​completions''​ | +| API URL | ''​http://​192.168.1.135:30080/​v1/​chat/​completions''​ | 
-| API Key | ключ сервера ​| +| API Key | ''<​КЛЮЧ>'' ​| 
-| Available Models | ''​qwen3.8-flash-next-iq3_s''​ |+| Available Models | имя из ''​/v1/models''​ |
 | Streaming | включить | | Streaming | включить |
  
-Или файлом ''​%APPDATA%\Block\goose\config\custom_providers\custom_strata_server.json''​ (Windows; на Linux/macOS — ''​~/​.config/​goose/​custom_providers/''​):​+Или файлом ''​%APPDATA%\Block\goose\config\custom_providers\custom_strata_server.json''​ (Linux/​macOS — ''​~/​.config/​goose/​custom_providers/''​):​
  
 <code json> <code json>
Строка 292: Строка 263:
   "​engine":​ "​openai",​   "​engine":​ "​openai",​
   "​display_name":​ "​Strata Server",​   "​display_name":​ "​Strata Server",​
-  "​description":​ "​Strata on 192.168.1.50:8080",+  "​description":​ "​Strata on TrueNAS ​192.168.1.135:30080",
   "​api_key_env":​ "​CUSTOM_STRATA_SERVER_API_KEY",​   "​api_key_env":​ "​CUSTOM_STRATA_SERVER_API_KEY",​
-  "​base_url":​ "​http://​192.168.1.50:8080/​v1/​chat/​completions",​+  "​base_url":​ "​http://​192.168.1.135:30080/​v1/​chat/​completions",​
   "​models":​ [   "​models":​ [
-    { "​name":​ "​qwen3.8-flash-next-iq3_s", "​context_limit": ​131072 ​}+    { "​name":​ "​qwen3.8-flash-next-q2_0", "​context_limit": ​65536 }
   ],   ],
   "​headers":​ null,   "​headers":​ null,
Строка 305: Строка 276:
 </​code>​ </​code>​
  
-Ключ ​после этого ​ввести в Settings → Models у провайдера //Strata Server// или задать переменной окружения ''​CUSTOM_STRATA_SERVER_API_KEY''​ **(проверить)**. Русский язык, ''​.goosehints''​ и MCP (Developer, Playwright) — как на [[:​truenas:​application:​strata_qwen_goose|странице локальной установки]]: MCP-расширения работают на клиенте,​ сервер только отвечает моделью.+Ключ ​— ввести в Settings → Models у провайдера //Strata Server// или задать переменной окружения ''​CUSTOM_STRATA_SERVER_API_KEY''​ **(проверить)**. Русский язык, ''​.goosehints''​ и MCP (Developer, Playwright) ​настраиваются на клиенте ​— как на [[:​truenas:​application:​strata_qwen_goose|странице локальной установки]].
  
-==== OpenCode ​====+==== Open WebUI (уже стоит на этом же TrueNAS) ​====
  
-Strata умеет сама сгенерировать конфиг:+Admin Panel → Settings → Connections → OpenAI API → добавить: 
 +  * URL: ''​http://​192.168.1.135:​30080/​v1''​ 
 +  * Key: ''<​КЛЮЧ>''​
  
-<code bash> +Модель Strata появится в списке рядом с моделями Ollama.
-strata connect opencode ​         # показать конфиг (на сервере) +
-</​code>​+
  
-На клиенте в ''​~/​.config/​opencode/​opencode.json'' ​замените адрес и ключ:+==== OpenCode ==== 
 + 
 +''​~/​.config/​opencode/​opencode.json'':​
  
 <code json> <code json>
 { {
   "​$schema":​ "​https://​opencode.ai/​config.json",​   "​$schema":​ "​https://​opencode.ai/​config.json",​
-  "​model":​ "​strata/​qwen3.8-flash-next-iq3_s",+  "​model":​ "​strata/​qwen3.8-flash-next-q2_0",
   "​provider":​ {   "​provider":​ {
     "​strata":​ {     "​strata":​ {
       "​npm":​ "​@ai-sdk/​openai-compatible",​       "​npm":​ "​@ai-sdk/​openai-compatible",​
-      "​name":​ "​Strata (server)",+      "​name":​ "​Strata (TrueNAS)",
       "​options":​ {       "​options":​ {
-        "​baseURL":​ "​http://​192.168.1.50:8080/v1",+        "​baseURL":​ "​http://​192.168.1.135:30080/v1",
         "​apiKey":​ "<​КЛЮЧ>"​         "​apiKey":​ "<​КЛЮЧ>"​
       },       },
       "​models":​ {       "​models":​ {
-        "​qwen3.8-flash-next-iq3_s": { +        "​qwen3.8-flash-next-q2_0": { 
-          "​name":​ "​Qwen3.8-Flash-Next",​+          "​name":​ "​Qwen3.8-Flash-Next ​Q2_0",
           "​tool_call":​ true,           "​tool_call":​ true,
           "​reasoning":​ true,           "​reasoning":​ true,
-          "​limit":​ { "​context": ​131072, "​output":​ 16384 }+          "​limit":​ { "​context": ​65536, "​output":​ 16384 }
         }         }
       }       }
Строка 342: Строка 315:
 </​code>​ </​code>​
  
-''​strata connect''​ без аргументов ​показывает все клиенты, для которых ​у Strata есть готовые ​настройки: opencode, codex, claude-code,​ omp, pi, hermes, openclaw. +Готовый файл с ключом ​и именем модели можно получить на сервере: ''​docker exec strata strata connect ​opencode'' ​(адрес ​в нём ​будет внутренний — замените на ''​http://​192.168.1.135:30080''​).
- +
-==== Open WebUI (чат в браузере) ==== +
- +
-Admin Panel → Settings → Connections → OpenAI API → добавить: +
-  * URL: ''​http://​192.168.1.50:8080/v1''​ +
-  * Key: ключ сервера +
- +
-Модель ''​qwen3.8-flash-next-iq3_s''​ появится в списке.+
  
 ==== Claude Code ==== ==== Claude Code ====
- 
-Strata отдаёт и Anthropic-совместимый API (без ''/​v1''​):​ 
  
 <code bash> <code bash>
-export ANTHROPIC_BASE_URL=http://​192.168.1.50:8080+export ANTHROPIC_BASE_URL=http://​192.168.1.135:30080
 export ANTHROPIC_AUTH_TOKEN=<​КЛЮЧ>​ export ANTHROPIC_AUTH_TOKEN=<​КЛЮЧ>​
 claude claude
 </​code>​ </​code>​
- 
-Готовые настройки:​ ''​strata connect claude-code''​. 
  
 ==== Python (openai SDK) ==== ==== Python (openai SDK) ====
Строка 369: Строка 330:
 from openai import OpenAI from openai import OpenAI
  
-client = OpenAI(base_url="​http://​192.168.1.50:8080/v1", api_key="<​КЛЮЧ>"​)+client = OpenAI(base_url="​http://​192.168.1.135:30080/v1", api_key="<​КЛЮЧ>"​)
 r = client.chat.completions.create( r = client.chat.completions.create(
-    model="​qwen3.8-flash-next-iq3_s",+    model="​qwen3.8-flash-next-q2_0",
     messages=[{"​role":​ "​user",​ "​content":​ "​Привет! Кратко:​ чем list отличается от tuple?"​}],​     messages=[{"​role":​ "​user",​ "​content":​ "​Привет! Кратко:​ чем list отличается от tuple?"​}],​
 ) )
Строка 377: Строка 338:
 </​code>​ </​code>​
  
-===== Особенности и ограничения =====+===== Управление ===== 
 + 
 +^ Действие ^ Как ^ 
 +| Остановить / запустить | **Apps → Installed → strata → Stop / Start** (остановка корректно выгружает модель и освобождает VRAM) | 
 +| Логи | **Apps → strata → Logs** или ''​docker logs -f strata''​ | 
 +| Монитор (скорость,​ память,​ запросы) | ''​docker exec -it strata strata monitor''​ (выход — ''​q'',​ сервер продолжает работать) | 
 +| Показать ключ | ''​docker exec strata strata launch --show-key --preset docker''​ | 
 +| Сменить модель | **Apps → strata → Edit** → поменять ''​MODEL''​ / ''​FAMILY''​ → Save. Новая модель ​скачается, старая останется в ''/​mnt/​appData/​strata''​ | 
 +| Обновить Strata | **Edit** → поменять версию в ''​image''​ (например ''​0.2.14-cuda13''​) → Save. Модели и настройки сохраняются. ''​strata update''​ внутри контейнера не используется | 
 +| Удалить старые модели | ''/​mnt/​appData/​strata/​Strata-data/​models/''​ и ''​packs/''​ | 
 + 
 +===== Безопасность ===== 
 + 
 +  * Порт 30080 доступен из всей домашней сети — поэтому ключ обязателен. **Не пробрасывайте 30080 на роутере в интернет.** 
 +  * Нужен доступ извне — через VPN (Tailscale/​WireGuard) или через ''​nginx-proxy-manager''​ (уже стоит на сервере) с HTTPS и ограничением доступа. 
 +  * Контейнер Strata работает от ''​root''​ (нужно для GPU и закрепления памяти) — не монтируйте в него лишние папки. 
 + 
 +===== Проблемы и решения ===== 
 + 
 +==== «Your NVIDIA graphics driver (550.142) is too old for Strata» ​====
  
-  * **Один запрос за раз с DFlash2.** Пока один клиент получает ​ответ, остальные ждут в очереди. Для нескольких пользователей — ''​--drafting mtp --parallel 2..4''​ (каждый слот съедает ​память под контекст) ​или ​семейство ​''​qwen36''​. +Драйвер ниже 575/580. Решение ​— «Шаг 1» (TrueNAS 25.10.7+). Образ ''​cuda12'' ​не поможет: ему нужен 575+. 
-  * **Первый запрос агента долгий.** Агенты (Goose, OpenCode) отправляют системный промпт с описанием инструментов на ~12 тыс. токенов; на RTX 4080 + 64 GB RAM это ~30 с, дальше ​работает кэш. + 
-  * **Скорость по сети** практически не теряется: трафик — это ​текст, ​узкое место — генерация на сервере. Ориентир (RTX 4080 16 GB, 64 GB RAM, IQ3_S): ~21 токен/с генерации. +==== CUDA out of memory / модель не помещается ==== 
-  * **Ответ содержит ''​reasoning_content''​** (рассуждения модели) — большинство клиентов его скрывают или показывают отдельно. + 
-  * Лог движка на сервере: ''​~/.local/share/strata/launch/<пресет>​.engine.log''​.+Видеокарту держат другие приложения — «Шаг 3». Либо выберите модель меньше, ''​CONTEXT:​ 32k'' ​или ''​KV: q4_0''​. 
 + 
 +==== Контейнер убит, сервер ​тормозит ==== 
 + 
 +Не хватает RAM: остановите другие тяжёлые приложения, возьмите модель меньше. У контейнера не должно быть лимита памяти. 
 + 
 +==== Порт занят ==== 
 + 
 +Выберите ​другой внешний порт в ''​ports''​ (например ''"​30081:​8080"''​) ​и поменяйте адрес ​у клиентов. 
 + 
 +==== Не скачивается модель ==== 
 + 
 +Смотрите **Logs**: прогресс выводится каждые несколько секунд. Нужно ​свободное ​место в ''/​mnt/​appData/​strata''​ (размер модели + ~10 GB). 
 + 
 +===== Приложение: обычный Linux-сервер ​(не TrueNAS) ===== 
 + 
 +На Ubuntu/​Debian с драйвером NVIDIA 580+ и NVIDIA Container Toolkit — тот же YAML через ​''​docker compose up -d''​. Без Docker — установщик Terminal: 
 + 
 +<code bash> 
 +curl -fsSL https://github.com/Niko1221/Strata/releases/latest/​download/​install.sh -o install.sh 
 +less install.sh && sh install.sh 
 +strata launch --family qwen --model q2_0 --vision off --access lan --port 8080 --no-tui --yes --save-preset "​Server Q2_0"​ 
 +strata launch --show-key --preset "​Server Q2_0"​ 
 +</code> 
 + 
 +''​--access lan''​ открывает доступ из сети и включает API-ключ.
  
 ===== Шпаргалка ===== ===== Шпаргалка =====
  
 <code bash> <code bash>
-# сервер +# сервер ​(SSH или System → Shell) 
-strata ​launch ​--preset "​Server IQ3_S" --no-tui +docker logs -f strata 
-strata ​launch --stop --preset "​Server IQ3_S" +docker exec -it strata ​strata monitor 
-strata launch --show-key --preset ​"​Server IQ3_S" +docker exec strata ​strata launch --show-key --preset ​docker 
-strata logs --url http://​127.0.0.1:​8080 --follow+nvidia-smi
  
 # клиент # клиент
-curl -s http://​192.168.1.50:8080/v1/models -H "​Authorization:​ Bearer <​КЛЮЧ>"​+curl -s http://​192.168.1.135:30080/v1/models -H "​Authorization:​ Bearer <​КЛЮЧ>"​
 </​code>​ </​code>​
 +
 +^ Что ^ Значение ^
 +| Адрес API | ''​http://​192.168.1.135:​30080/​v1''​ |
 +| Данные | ''/​mnt/​appData/​strata''​ |
 +| Образ | ''​ghcr.io/​niko1221/​strata:​0.2.13-cuda13''​ (нужен TrueNAS 25.10.7+) |
  
truenas/application/strata_qwen_server.1794504324.txt.gz · Последние изменения: 2026/11/12 17:25 — werwolf