Здесь показаны различия между двумя версиями данной страницы.
| — |
truenas:application:ollama_qwen_server [2026/11/14 16:31] (текущий) werwolf Ollama на TrueNAS: какие модели Qwen можно развернуть (состояние сервера 14.11.2026) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Ollama на TrueNAS: какие модели Qwen можно развернуть на сервере ====== | ||
| + | |||
| + | ===== Введение ===== | ||
| + | |||
| + | Страница отвечает на вопрос: что из новых моделей Qwen (Qwen3.8, Qwen3.6, Qwen3.8-Flash-Next) можно запустить через **Ollama**, которая уже стоит на сервере TrueNAS, и что для этого сделать. | ||
| + | |||
| + | Состояние сервера снято 14.11.2026 по SSH (только чтение, без изменений). Наличие и размеры моделей — по библиотеке ollama.com на ту же дату. Скорость генерации на сервере **не замерялась** — где она важна, стоит пометка **(проверить)**. | ||
| + | |||
| + | Связанные страницы: | ||
| + | * [[:truenas:application:strata_qwen_server|Strata + Qwen на сервере]] — та же Qwen3.8-Flash-Next через движок Strata; | ||
| + | * [[:truenas:application:llamacpp_moe_ssd|llama.cpp: MoE с NVMe + RAM]] — большая MoE-модель с подкачкой с диска; | ||
| + | * [[:truenas:application:strata_qwen_goose|Qwen + Strata + Goose (Windows)]] — то же на домашнем ПК. | ||
| + | |||
| + | ===== Что сейчас на сервере ===== | ||
| + | |||
| + | ^ Параметр ^ Значение ^ | ||
| + | | TrueNAS | 25.04.2 (''/etc/version'': ''25.04.2.620'') | | ||
| + | | Драйвер NVIDIA | 550.142 | | ||
| + | | Видеокарта | RTX 2000 Ada, 16 GB VRAM — **занято 15 из 16 GB** | | ||
| + | | Процессор | Intel Core i5-14500 | | ||
| + | | RAM | 62 GB; доступно ~13 GB, кэш ZFS (ARC) — 25.8 GB (может вырасти до 66 GB) | | ||
| + | | Диски | 2× Samsung 990 PRO 4 TB (пул ''appData'', свободно 3.3 TB) + 5× HDD 16 TB | | ||
| + | | Ollama | приложение ''ollama'', образ ''ollama/ollama:0.40.15'', порт **30068** | | ||
| + | | Лимиты контейнера Ollama | **RAM 24 GiB**, 6 ядер процессора | | ||
| + | | Папка моделей | ''/mnt/appData/ollama-models'' → ''/root/.ollama'' (занято 70 GB, NVMe) | | ||
| + | | Open WebUI | ''open-webui:v0.13.0-ollama'', порт 31028 | | ||
| + | |||
| + | **Кто занимает видеопамять** (''nvidia-smi''): | ||
| + | |||
| + | ^ Контейнер ^ VRAM ^ | ||
| + | | ''xtts-server'' | 7.4 GB | | ||
| + | | ''ix-ollama-ollama-1'' (сейчас загружена ''qwen3-embedding:8b'') | 3.7 GB | | ||
| + | | ''voxcpmtts-server'' | 3.6 GB | | ||
| + | | ''pdf-ocr-server'' | 0.2 GB | | ||
| + | | ''whisper-server'' | 0.1 GB | | ||
| + | |||
| + | **Модели, которые уже скачаны в Ollama:** | ||
| + | |||
| + | ^ Модель ^ Размер ^ Квантование ^ | ||
| + | | ''qwen3.6:27b'' | 17.8 GB | Q4_K_M | | ||
| + | | ''qwen3-coder:30b'' | 18.6 GB | Q4_K_M | | ||
| + | | ''deepseek-coder:33b'' | 18.8 GB | Q4_0 | | ||
| + | | ''qwen3:8b'', ''my-qwen'', ''my-agent'', ''gemma4'' | 5–10 GB | Q4_K_M | | ||
| + | | ''qwen3-embedding:8b'' | 4.7 GB | Q4_K_M (для поиска по документам) | | ||
| + | |||
| + | Команды, которыми это снято, — в разделе «Шпаргалка». | ||
| + | |||
| + | ===== Что можно развернуть: итог ===== | ||
| + | |||
| + | ^ Модель Ollama ^ Размер ^ Тип ^ На этом сервере ^ Для чего ^ | ||
| + | | ''qwen3.6:35b-a3b-coding'' | 23–24 GB | MoE, на токен работает ~3B параметров | **да, рекомендую** | код, агенты (Goose, OpenCode) | | ||
| + | | ''qwen3.6:35b-a3b'' | 23 GB | MoE, ~3B на токен | да | общий чат, картинки | | ||
| + | | ''qwen3.6:35b-a3b-mtp-q4_K_M'' | 23 GB | то же + предсказание нескольких токенов (MTP) | да; ускорение на CUDA **(проверить)** | то же, быстрее | | ||
| + | | ''qwen3.8:27b'' | 18 GB | плотная (dense) **(проверить)** | да, но медленно | лучшее качество из того, что влезает | | ||
| + | | ''qwen3.6:35b-a3b-q8_0'' | 39 GB | MoE, 8 бит | только после увеличения лимита RAM контейнера | качество чуть выше Q4 | | ||
| + | | ''qwen3.8-flash-next:125b-a6b-q4_K_M'' | 120 GB | MoE 125B, ~6B на токен | **нет** | — | | ||
| + | |||
| + | Все модели в таблице — с контекстом до 256K, понимают картинки, умеют вызывать инструменты (tools) и «размышлять» (thinking). | ||
| + | |||
| + | ==== Почему Qwen3.8-Flash-Next в Ollama не подходит ==== | ||
| + | |||
| + | * Самый маленький вариант для видеокарт NVIDIA — ''q4_K_M'' на **120 GB**. На сервере RAM + VRAM = 62 + 16 = 78 GB, из них под модель реально можно отдать ~50 GB. | ||
| + | * Варианты ''nvfp4'' и ''mlx'' (105 GB) — для Mac (формат MLX), на Linux с NVIDIA не работают. | ||
| + | * Ollama не умеет держать на видеокарте кэш «горячих» экспертов и подкачивать остальное с NVMe так, как это делают Strata и сборка llama.cpp со страницы [[:truenas:application:llamacpp_moe_ssd|llama.cpp: MoE с NVMe + RAM]]. Модель больше памяти будет читаться с диска почти на каждом токене. | ||
| + | |||
| + | Если нужна именно Qwen3.8-Flash-Next на сервере — это вариант [[:truenas:application:strata_qwen_server|Strata]] (кванты от 58 GB) или [[:truenas:application:llamacpp_moe_ssd|llama.cpp]]. Для Strata сначала нужно обновить TrueNAS до версии с драйвером 580 (сейчас 550). | ||
| + | |||
| + | ==== Почему рекомендую qwen3.6:35b-a3b-coding ==== | ||
| + | |||
| + | * Это MoE: всего 35B параметров, но на каждый токен считаются только ~3B. Поэтому даже когда часть модели не помещается в видеокарту и считается процессором, скорость остаётся приемлемой. У плотной ''qwen3.8:27b'' на каждый токен работают все 27B, и всё, что не влезло в VRAM, сильно её тормозит. | ||
| + | * 24 GB укладываются в лимит контейнера (24 GiB) только впритык — см. Шаг 2. | ||
| + | * Вариант ''-coding'' обучен для кода и работы агентом — то, что нужно для Goose. | ||
| + | * Это та же модель, что Strata предлагает как ''--family qwen36''. | ||
| + | |||
| + | ===== Шаг 1: Обновить Ollama ===== | ||
| + | |||
| + | На сервере 0.40.15, последняя стабильная — **0.40.16** (09.11.2026). Минимальную версию для Qwen3.8 и Qwen3.6-MTP ollama.com не указывает; новые модели лучше качать на новой версии. | ||
| + | |||
| + | - TrueNAS → **Apps** → **Installed** → ''ollama''. | ||
| + | - Если доступно **Update** — обновить. Если версия образа задана вручную — **Edit** → тег образа ''0.40.16'' → **Save**. | ||
| + | - Проверить: | ||
| + | |||
| + | <code bash> | ||
| + | curl -s http://192.168.1.135:30068/api/version | ||
| + | </code> | ||
| + | |||
| + | Модели в ''/mnt/appData/ollama-models'' при обновлении сохраняются. | ||
| + | |||
| + | Ollama 0.40.15 сейчас работает на видеокарте с драйвером 550 — значит, отдельное обновление драйвера для Ollama не нужно. Для 0.40.16 **(проверить)**, что после обновления модель грузится на GPU (в ''/api/ps'' поле ''size_vram'' больше нуля). | ||
| + | |||
| + | ===== Шаг 2: Освободить место под модель ===== | ||
| + | |||
| + | ==== 2.1. Лимит памяти контейнера ==== | ||
| + | |||
| + | У приложения Ollama стоит лимит **24 GiB RAM**. Для модели на 24 GB этого впритык: часть модели уйдёт в VRAM, но нужен ещё запас на контекст (KV-кэш). Для ''q8_0'' (39 GB) лимита точно не хватит. | ||
| + | |||
| + | - **Apps** → ''ollama'' → **Edit** → раздел **Resources Configuration** → **Memory** — поставить **40960** MB (40 GB) → **Save**. | ||
| + | - Хватит ли свободной RAM: сейчас ''available'' ~13 GB, но кэш ZFS (25.8 GB) освобождается по требованию. Если система начнёт тормозить — ограничить ARC, как описано на странице [[:truenas:application:strata_qwen_server|Strata + Qwen на сервере]]. | ||
| + | |||
| + | ==== 2.2. Видеопамять ==== | ||
| + | |||
| + | Сейчас свободно ~1.3 GB VRAM. Ollama займёт только то, что свободно, остальное посчитает процессором — работать будет, но медленнее. | ||
| + | |||
| + | * Больше всего держит ''xtts-server'' (7.4 GB) и ''voxcpmtts-server'' (3.6 GB). Если озвучка не нужна постоянно — остановить их (**Apps** → **Installed** → **Stop**, для контейнеров вне каталога — ''docker stop''), и у Ollama будет ~12 GB VRAM. | ||
| + | * Ollama сама выгружает модели через 5 минут простоя. Модель ''qwen3-embedding:8b'' (3.7 GB) освободит VRAM, когда ею не пользуются. | ||
| + | |||
| + | ===== Шаг 3: Скачать модель ===== | ||
| + | |||
| + | Через **Open WebUI** (порт 31028): **Admin Panel** → **Settings** → **Models** → поле **Pull a model** → ''qwen3.6:35b-a3b-coding''. | ||
| + | |||
| + | Или по SSH на сервере (нужен доступ к Docker): | ||
| + | |||
| + | <code bash> | ||
| + | docker exec -it ix-ollama-ollama-1 ollama pull qwen3.6:35b-a3b-coding | ||
| + | docker exec -it ix-ollama-ollama-1 ollama list | ||
| + | </code> | ||
| + | |||
| + | Другие варианты — подставить имя из таблицы «Что можно развернуть: итог». Место не проблема: на пуле ''appData'' свободно 3.3 TB. | ||
| + | |||
| + | Старые модели, которые заменяются новыми (''qwen3.6:27b'' → ''qwen3.8:27b'', ''qwen3-coder:30b'' → ''qwen3.6:35b-a3b-coding''), можно удалить после проверки: ''ollama rm <имя>''. | ||
| + | |||
| + | ===== Шаг 4: Контекст ===== | ||
| + | |||
| + | Ollama по умолчанию выбирает небольшой контекст (у загруженной сейчас модели — 4096 токенов). Для агентов (Goose, OpenCode) этого мало: системная подсказка и описания инструментов занимают несколько тысяч токенов, и модель «забывает» начало задачи. | ||
| + | |||
| + | * Глобально: **Apps** → ''ollama'' → **Edit** → **Environment Variables** → ''OLLAMA_CONTEXT_LENGTH'' = ''32768'' → **Save**. | ||
| + | * Больший контекст (64K и выше) занимает больше памяти под KV-кэш — начинать с 32K и увеличивать, глядя на ''/api/ps'' **(проверить, сколько влезает)**. | ||
| + | * Можно задавать и в запросе: параметр ''num_ctx'' в ''options'' (API Ollama) или в настройках модели Open WebUI. | ||
| + | |||
| + | ===== Шаг 5: Проверка ===== | ||
| + | |||
| + | <code bash> | ||
| + | # модель отвечает | ||
| + | curl -s http://192.168.1.135:30068/api/generate -d '{"model":"qwen3.6:35b-a3b-coding","prompt":"Скажи привет","stream":false}' | ||
| + | |||
| + | # сколько модели на видеокарте и какой контекст | ||
| + | curl -s http://192.168.1.135:30068/api/ps | ||
| + | </code> | ||
| + | |||
| + | В ответе ''/api/ps'': ''size'' — сколько занимает модель всего, ''size_vram'' — сколько из этого на видеокарте, ''context_length'' — контекст. Чем ближе ''size_vram'' к ''size'', тем быстрее. | ||
| + | |||
| + | Скорость: в ответе ''/api/generate'' поля ''eval_count'' (токенов) и ''eval_duration'' (наносекунд) — скорость = ''eval_count / eval_duration × 10⁹'' ток/с. **(Замерить и вписать сюда.)** | ||
| + | |||
| + | ===== Шаг 6: Подключение клиентов ===== | ||
| + | |||
| + | Ollama доступна в сети по адресу ''http://192.168.1.135:30068'' — **без ключа доступа**. Не пробрасывайте этот порт в интернет; для доступа снаружи — через Nginx Proxy Manager с авторизацией. | ||
| + | |||
| + | ^ Клиент ^ Настройка ^ | ||
| + | | Open WebUI | уже подключён, модель появится в списке после загрузки | | ||
| + | | Goose Desktop | провайдер **Ollama**, Host ''http://192.168.1.135:30068'', модель ''qwen3.6:35b-a3b-coding'' | | ||
| + | | Любой OpenAI-совместимый клиент | Base URL ''http://192.168.1.135:30068/v1'', API-ключ — любая строка (например ''ollama'') | | ||
| + | |||
| + | ===== Проблемы и решения ===== | ||
| + | |||
| + | ==== Модель грузится, но отвечает очень медленно ==== | ||
| + | |||
| + | Смотреть ''/api/ps'': если ''size_vram'' намного меньше ''size'' — модель в основном считается процессором. Освободить VRAM (Шаг 2.2) или взять модель поменьше. | ||
| + | |||
| + | ==== Ошибка про память при загрузке модели ==== | ||
| + | |||
| + | Скорее всего упёрлись в лимит RAM контейнера (24 GiB). Поднять лимит (Шаг 2.1) или уменьшить контекст. | ||
| + | |||
| + | ==== Новая модель не скачивается или не загружается ==== | ||
| + | |||
| + | Обновить Ollama (Шаг 1). Модели новых архитектур не загружаются старыми версиями. | ||
| + | |||
| + | ==== Голосовые сервисы перестали работать ==== | ||
| + | |||
| + | Если для Ollama остановили ''xtts-server'' / ''voxcpmtts-server'' — запустить их обратно (**Start**). Если Ollama при этом держит модель в VRAM, озвучке может не хватить видеопамяти — подождать 5 минут (Ollama выгрузит модель) или выгрузить сразу: | ||
| + | |||
| + | <code bash> | ||
| + | curl -s http://192.168.1.135:30068/api/generate -d '{"model":"qwen3.6:35b-a3b-coding","keep_alive":0}' | ||
| + | </code> | ||
| + | |||
| + | ===== Шпаргалка ===== | ||
| + | |||
| + | <code bash> | ||
| + | # версия и модели Ollama | ||
| + | curl -s http://192.168.1.135:30068/api/version | ||
| + | curl -s http://192.168.1.135:30068/api/tags | ||
| + | curl -s http://192.168.1.135:30068/api/ps | ||
| + | |||
| + | # на сервере по SSH | ||
| + | nvidia-smi # занятость видеопамяти | ||
| + | nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv | ||
| + | free -g # RAM | ||
| + | awk '/^size|^c_max/ {print $1, $3/1e9 " GB"}' /proc/spl/kstat/zfs/arcstats # кэш ZFS | ||
| + | docker stats --no-stream ix-ollama-ollama-1 # память контейнера Ollama и её лимит | ||
| + | docker exec -it ix-ollama-ollama-1 ollama pull qwen3.6:35b-a3b-coding | ||
| + | docker exec -it ix-ollama-ollama-1 ollama rm <имя> | ||
| + | </code> | ||