🧠NAS как ИИ-сервер

Это исходный отчёт фазы как есть — со всеми таблицами и методикой. Живая версия: 💬 Языковые модели.

Фаза 5: LLM — typed output, вызов инструментов и качество на русском

Прогон: 19–20 октября 2026
Хост: UGREEN DXP4800 Pro, i3-1315U, 32 GB, iGPU Intel RPL-U (Xe-LP, 64 EU)
Что меряли: насколько надёжно локальные LLM возвращают JSON заданной структуры, вызывают команды Home Assistant и справляются с русским текстом. Отдельно проверено, дают ли модели Вихря выигрыш против своих базовых моделей.

Коротко

Как мерили

Typed output: извлечение в JSON

24 синтетических русских документа (счета, заявки, письма о встречах, рецепты, объявления, отзывы) с известным правильным JSON. A — схема только в промпте, B — response_format: json_schema (грамматика llama.cpp), C — то же, но в pattern вместо \d написано [0-9] (грамматика llama.cpp \d молча пропускает). «Валидно» — ответ разобран и проходит JSON Schema; «поля» — доля верных полей (числа ±0.01, даты, enum и телефоны точно, имена нечётко); «документ» — доля документов без единой ошибки; «выдумано» — сколько из 11 полей, которых в тексте нет, модель заполнила вместо null (режим C).

Модель Валидно A / B / C, % Поля A / B / C, % Документ A / B / C, % Выдумано C tok/s симв/с Ответ, с
Qwen3-1.7B 71 / 75 / 100 93.7 / 94.1 / 95.5 54 / 58 / 67 2 из 11 20.2 46 5.6
QVikhr-3-1.7B (Вихрь) 71 / 75 / 100 90.4 / 90.7 / 92.2 46 / 50 / 54 1 из 11 20.2 46 5.3
Qwen3-4B 100 / 100 / 100 96.3 / 96.3 / 96.3 67 / 67 / 67 4 из 11 11.0 25 10.9
QVikhr-3-4B (Вихрь) 96 / 96 / 100 94.8 / 94.8 / 94.8 62 / 62 / 62 4 из 11 11.0 25 11.5
Qwen3-8B 96 / 96 / 100 98.9 / 98.9 / 99.3 88 / 88 / 92 1 из 11 6.7 15 18.4
QVikhr-3-8B (Вихрь) 96 / 96 / 100 97.0 / 97.0 / 97.4 83 / 83 / 88 1 из 11 6.7 15 16.9
Mistral-Small-3.2-24B 100 / 100 / 100 99.3 / 99.3 / 99.3 92 / 92 / 92 1 из 11 2.5 6 49.4
Vistral-24B (Вихрь) 100 / 100 / 100 99.3 / 99.3 / 99.3 92 / 92 / 92 1 из 11 2.5 6 49.4
Qwen3.5-4B 96 / 96 / 100 97.4 / 97.4 / 97.8 71 / 71 / 75 0 из 11 10.1 22 14.1
Ling 3.0 Tiny 83 / 92 / 100 97.0 / 97.4 / 98.1 75 / 79 / 79 0 из 11 23.0 52 5.9
LFM2.5-24B-A2B 83 / 83 / 100 94.9 / 95.6 / 95.6 71 / 75 / 75 0 из 11 14.9 38 9.2
gpt-oss-20b 100 / 100 / 100 99.3 / 99.3 / 99.3 92 / 92 / 92 0 из 11 9.3 13 19.2
Gemma 4 26B-A4B 100 / 100 / 100 98.5 / 98.5 / 98.5 96 / 96 / 96 0 из 11 7.8 16 21.5
Qwen3.6-35B-A3B 100 / 100 / 100 99.3 / 99.3 / 99.3 92 / 92 / 92 1 из 11 8.7 19 18.0

Вызов инструментов: команды Home Assistant

40 русских команд, 13 инструментов в формате HA LLM API (HassTurnOn, HassLightSet, HassClimateSetTemperature, ...). «Верно» — набор вызовов совпал с ожидаемым (инструмент, устройство или комната, параметры); «инструмент» — хотя бы выбран нужный инструмент; «лишние вызовы» — сколько из 4 фраз без команды (спасибо, как дела, несуществующий свет в ванной...) модель всё равно что-то вызвала. «Ответ» — медиана времени ответа на команду (обработка промпта ~2K токенов с описанием дома + генерация).

Модель Верно, % Инструмент, % Лишние вызовы Ответ, с
Qwen3-1.7B 72 80 1/4 2.6
QVikhr-3-1.7B (Вихрь) 62 75 1/4 2.5
Qwen3-4B 98 100 0/4 4.7
QVikhr-3-4B (Вихрь) 92 100 0/4 4.8
Qwen3-8B 98 100 0/4 7.5
QVikhr-3-8B (Вихрь) 98 100 0/4 7.6
Mistral-Small-3.2-24B 85 85 0/4 16.0
Vistral-24B (Вихрь) 10 10 0/4 7.8
Qwen3.5-4B 100 100 0/4 6.6
Ling 3.0 Tiny 90 90 1/4 2.6
LFM2.5-24B-A2B 92 98 0/4 5.3
gpt-oss-20b 92 92 0/4 9.9
Gemma 4 26B-A4B 98 98 0/4 30.1
Qwen3.6-35B-A3B 95 98 1/4 9.1

JSONSchemaBench: реальные схемы

12 схем (6 Glaiveai2K, 6 Github_medium), задача — сгенерировать валидный пример. B — с грамматикой; «не поддержано» — llama.cpp отказался превращать схему в грамматику.

Модель Валидно A, % Валидно B, % Не поддержано B
Qwen3-1.7B 83 92 0
QVikhr-3-1.7B (Вихрь) 83 92 0
Qwen3-4B 83 92 0
QVikhr-3-4B (Вихрь) 75 92 0
Qwen3-8B 83 92 0
QVikhr-3-8B (Вихрь) 83 92 0
Mistral-Small-3.2-24B 92 92 0
Vistral-24B (Вихрь) 100 100 0
Qwen3.5-4B 83 100 0
Ling 3.0 Tiny 92 92 0
LFM2.5-24B-A2B 58 100 0
gpt-oss-20b 92 100 0
Gemma 4 26B-A4B 100 100 0
Qwen3.6-35B-A3B 100 100 0

Качество на русском

Belebele — понимание прочитанного (100 вопросов, 4 варианта, случайный ответ = 25%), Global-MMLU — знания по школьным и вузовским предметам (100), MGSM — арифметические задачи с рассуждением (40). Для Belebele и MMLU два числа: с грамматикой, которая разрешает ответить только буквой (это знание), и свободный ответ на просьбу «одной буквой» (это ещё и послушность формату; ответ засчитывается, только если начинается с буквы или после «Ответ:»). н/п — сервер не принял грамматику для этой модели (LFM2.5: «Unexpected empty grammar», gpt-oss: ответ не совпал с грамматикой из-за формата рассуждения). Рассуждение выключено везде, где модель это позволяет. tok/s — генерация на MGSM, симв/с — видимого ответа; сравнивать удобнее символы, токенизаторы у моделей разные. RAM — пик за весь прогон.

Модель Формат Belebele, % (буква / свободно) MMLU, % (буква / свободно) MGSM, % tok/s симв/с RAM, GiB
Qwen3-1.7B Q4_K_M 66 / 67 34 / 21 50 20.9 42 3.0
QVikhr-3-1.7B (Вихрь) Q4_K_M, на базе Qwen3-1.7B 65 / 68 45 / 51 45 20.9 40 3.0
Qwen3-4B Q4_K_M 90 / 90 54 / 54 70 11.4 22 4.9
QVikhr-3-4B (Вихрь) Q4_K_M, на базе Qwen3-4B 91 / 90 61 / 61 68 11.4 24 5.0
Qwen3-8B Q4_K_M 74 / 77 66 / 67 82 6.8 14 6.8
QVikhr-3-8B (Вихрь) Q4_K_M, на базе Qwen3-8B 64 / 76 64 / 65 78 6.9 14 6.7
Mistral-Small-3.2-24B Q4_K_M, dense 92 / 92 80 / 80 82 2.5 5 15.6
Vistral-24B (Вихрь) Q4_K_M, dense, на базе Mistral-Small-3.2 92 / 92 81 / 81 88 2.5 5 15.6
Qwen3.5-4B Q4_K_M 82 / 82 74 / 74 82 10.2 26 4.7
Ling 3.0 Tiny Q4_K_M, MoE 88 / 88 70 / 70 75 23.7 44 5.3
LFM2.5-24B-A2B Q4_0, MoE н/п / 67 н/п / 61 70 15.1 38 13.9
gpt-oss-20b MXFP4, MoE, рассуждает всегда н/п / 88 н/п / 84 85 9.5 13 13.0
Gemma 4 26B-A4B IQ4_XS, MoE 94 / 94 85 / 84 85 8.0 20 17.3
Qwen3.6-35B-A3B IQ4_XS, MoE 94 / 94 89 / 89 90 8.7 22 17.8

Вихрь против базовой модели

Разница «Вихрь − база» в процентных пунктах на тех же задачах и в той же квантизации. Плюс — Вихрь лучше.

Пара Поля C HA верно Belebele (буква) MMLU (буква) MGSM симв/с
QVikhr-3-1.7B (Вихрь) vs Qwen3-1.7B -3.3 -10 -1 +11 -5 -2
QVikhr-3-4B (Вихрь) vs Qwen3-4B -1.5 -5 +1 +7 -2 +2
QVikhr-3-8B (Вихрь) vs Qwen3-8B -1.9 +0 -10 -2 -5 -0
Vistral-24B (Вихрь) vs Mistral-Small-3.2-24B +0.0 -75 +0 +1 +5 +0

Выводы и рекомендации

Что ставить

Задача Рекомендация Почему
Голосовые команды Home Assistant Qwen3.5-4B 40 из 40 команд, 6.6 с на ответ, 4.7 GiB. Запасной вариант — Qwen3-4B (39 из 40, 4.7 с)
Разбор документов в JSON Qwen3.6-35B-A3B или gpt-oss-20b, json_schema + [0-9] 99.3% полей, 92% документов без ошибок, 100% валидного JSON; ~18–19 с на документ. Gemma 4 точнее (96% документов), но только с --swa-full и без кэша промпта
То же, но быстро Ling 3.0 Tiny 98.1% полей за 6 с, 23 tok/s. Для команд опаснее: путает «погаси» и «включи»
Ответы на вопросы, тексты на русском Qwen3.6-35B-A3B лучший по Belebele, MMLU и MGSM при 8.7 tok/s; Gemma 4 рядом (94 / 85 / 85)
Не брать 1.7B-модели, Vistral для инструментов, плотные 24B 62–72% команд; Vistral не вызывает инструменты; 2.5 tok/s и 49 с на документ

Что видно в цифрах

Вихрь против базовых моделей

Ограничения

Заметки для фреймворка