Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Локальные LLM: как выбрать модель, посчитать железо и запустить

Linux и DevOps

Разбор имени файла, арифметика железа, настройки вывода. Всё, на чём обычно спотыкаются при переходе с облачных API на локальную инфраструктуру.

Материал закрывает три вопроса, ответы на которые не пишут в карточках моделей: что означает каждый сегмент имени файла, какую скорость даст конкретное железо и почему одна и та же модель у разных пользователей ведёт себя по-разному.

Имя Qwen3-30B-A3B-Instruct-2507-UD-Q4_K_XL.gguf кодирует шесть независимых характеристик. Их постоянно смешивают: обсуждают, «что лучше — GGUF или Q4», хотя это разные оси. Формат контейнера и метод квантизации не конкурируют между собой.

Содержание
  1. 1. Модальность: что модель принимает и выдаёт
  2. Текстовые (LLM)
  3. Со зрением (VLM)
  4. Речь
  5. Векторизаторы (эмбеддинги)
  6. Реранкеры
  7. Классификаторы и защитные
  8. Изображения и видео
  9. 2. Архитектура и размер
  10. Плотные и разреженные
  11. Шкала размеров
  12. Механизм внимания
  13. 3. Стадия обучения
  14. Базовая (Base, Pretrained)
  15. Инструктивная (Instruct, Chat, IT)
  16. Рассуждающая (Reasoning, Thinking)
  17. Дообученные под задачу
  18. Дистилляты (Distill)
  19. Слияния (Merge)
  20. Расцензуренные (Uncensored, Abliterated, Heretic)
  21. Псевдо-именованные
  22. 4. Формат весов
  23. 5. Квантизация
  24. Классические
  25. K-кванты
  26. I-кванты
  27. Матрица важности (imatrix)
  28. Шкала квантизации
  29. Квантизация кэша контекста
  30. 6. Служебные варианты
  31. Черновик (Draft)
  32. MTP / NoMTP
  33. Адаптеры (LoRA, QLoRA)
  34. Расширенный контекст
  35. 7. Лицензии
  36. 8. Как читать имя файла
  37. 9. Формула скорости
  38. 10. Почему MoE меняет расклад
  39. 11. Две скорости, которые путают
  40. 12. Смешанный режим
  41. 13. Сколько памяти нужно на самом деле
  42. 14. Ориентиры по железу
  43. 15. Чем запускать локальную модель
  44. Рабочая команда llama-server
  45. Подключение к n8n и прочей автоматизации
  46. 16. Параметры вывода
  47. Готовые наборы
  48. Диагностика по симптомам
  49. 17. Шаблон диалога и токены остановки
  50. 18. Контекст: объявленный и рабочий
  51. 19. Токенизация кириллицы
  52. 20. Квантизация и русский язык
  53. 21. Какие семейства реально держат русский
  54. 22. Числовые методы проверки качества
  55. Перплексия
  56. Расхождение с исходной моделью (KL divergence)
  57. Иголка в стоге сена
  58. 23. Свой набор задач
  59. 24. Доверие к сборщику
  60. 25. Ограничения подхода
  61. 26. Порядок действий
  62. Частые вопросы
  63. Что лучше — большая модель в Q4 или маленькая в Q8?
  64. Почему модель со зрением не видит изображения?
  65. Сколько оперативной памяти нужно для модели 30B?
  66. Почему на русском языке скорость ниже?
  67. Стоит ли брать расцензуренные сборки для работы?
  68. Ollama или llama-server?
  69. Как ускорить обработку длинного запроса на ноутбуке?
  70. Что даёт спекулятивное декодирование?
  71. Заключение

1. Модальность: что модель принимает и выдаёт

Текстовые (LLM)

Основной случай. Текст на входе, текст на выходе. Дальнейший материал посвящён преимущественно им.

Со зрением (VLM)

Qwen-VL, Llama Vision, MiniCPM-V, Pixtral, InternVL, Gemma Vision.

Модель со зрением в формате GGUF — это два файла. Основные веса плюс отдельный mmproj-*.gguf, проектор, превращающий изображение в токены. При загрузке только первого файла получается обычная текстовая модель, которая молча игнорирует картинки. Причина номер один вопросов «почему не видит изображение».

Речь

  • Распознавание (ASR): Whisper (в экосистеме ggml — whisper.cpp), Parakeet, Canary.
  • Синтез (TTS): Kokoro, XTTS, F5-TTS, Orpheus, Piper.
  • Речь-в-речь: Moshi, Qwen-Omni — принимают и выдают звук без промежуточного текста.

Обслуживаются отдельными движками, llama.cpp их в основном не запускает.

Векторизаторы (эмбеддинги)

Не генерируют текст вообще. Превращают фрагмент в вектор для семантического поиска: bge-m3, multilingual-e5, nomic-embed, jina-embeddings, GTE, mxbai.

Размер 100–600 млн параметров, на процессоре работают с минимальной latency. Для русского применяют bge-m3 или multilingual-e5-large — одноязычные английские векторизаторы на кириллице проседают катастрофически.

Реранкеры

Второй этап поиска. Векторизатор быстро достаёт сотню кандидатов, реранкер (bge-reranker-v2-m3, jina-reranker) медленно и точно переупорядочивает их по релевантности.

Реранкер даёт наибольший прирост качества поиска на единицу усилий — больше, чем замена основной модели на более крупную.

Классификаторы и защитные

Llama Guard, ShieldGemma, Prompt Guard — оценка текста на опасное содержание. Плюс определение языка, тональности, спама.

Изображения и видео

Stable Diffusion, Flux, SDXL, Wan, HunyuanVideo — диффузионные модели. Другая архитектура, другие движки (ComfyUI, stable-diffusion.cpp), другие форматы. К llama.cpp отношения не имеют.

2. Архитектура и размер

Плотные и разреженные

Плотные (dense). Обозначаются одним числом: 7B, 27B, 70B. На каждый токен работают все веса.

Разреженные, смесь экспертов (MoE). Запись 35B-A3B, 235B-A22B, 8x7B: всего 35 млрд параметров, активны на токен около 3 млрд. Маршрутизатор на каждом слое выбирает два-три эксперта из десятков.

MoE занимает память как большая модель, а считается как маленькая. Ключевой факт для расчёта производительности.

Опознание MoE, если в названии не указано явно:

  • буква A со вторым числом: 30B-A3B, 235B-A22B;
  • запись через x: Mixtral 8x7B;
  • никак — GLM-4.5-Air, gpt-oss-20b, DeepSeek-V3. Здесь помогает только карточка модели.

Надёжная проверка: в config.json у MoE присутствуют поля num_experts и num_experts_per_tok.

Шкала размеров

Диапазон Практическое применение
0,1–1 млрд Черновики, классификаторы, векторизаторы, автодополнение
1–4 млрд Телефон, слабый ноутбук. Извлечение данных, простая разметка
7–14 млрд Рабочая лошадка. 8–12 ГБ памяти в Q4
20–35 млрд Заметный скачок качества. 16–24 ГБ
70–120 млрд Две видеокарты либо очень много ОЗУ
200 млрд+ Только MoE, только серверная инфраструктура

Механизм внимания

Определяет, сколько памяти съедает контекст:

  • MHA — классика, кэш растёт быстро.
  • GQA (grouped-query) — стандарт с 2024 года, кэш в 4–8 раз меньше.
  • MLA (multi-head latent) — семейство DeepSeek, сжимает кэш ещё сильнее.
  • Скользящее окно — Mistral, Gemma: часть слоёв смотрит только на ближайшие 4096 токенов. Дёшево по памяти, хуже на очень длинном контексте.

3. Стадия обучения

Одна архитектура существует в нескольких состояниях.

Базовая (Base, Pretrained)

Умеет только предсказывать следующий токен. Диалог вести не может: на вопрос продолжит его вопросами. Нужна тем, кто дообучает самостоятельно.

Базовую модель для прикладных задач брать не следует. Классическая ошибка при первом знакомстве с каталогом.

Инструктивная (Instruct, Chat, IT)

Дообучена следовать указаниям, имеет шаблон диалога с ролями. Требуется в 95% сценариев.

Рассуждающая (Reasoning, Thinking)

Сначала рассуждает в блоке <think>, потом отвечает. Большой прирост в математике, логике и коде ценой в 3–10 раз большего числа токенов и соответствующей задержки.

Гибридные (Qwen3 и подобные) переключаются флагом или командой /no_think в запросе.

Дообученные под задачу

  • Coder (Qwen-Coder, DeepSeek-Coder, Codestral). Отдельный подвид FIM (fill-in-the-middle) обучен дописывать в середину файла — именно он нужен для автодополнения в редакторе, обычная чат-модель для этого не годится.
  • Math, медицинские, юридические — дообучение на отраслевых корпусах.
  • Роль и творчество (MythoMax, Magnum, Cydonia).
  • Function calling / tool use — натасканы на вызов внешних инструментов и строгий JSON. Критично для автоматизации.

Дистилляты (Distill)

Маленькая модель, обученная повторять большую. DeepSeek-R1-Distill-Qwen-7B — это Qwen 7B, обученная на рассуждениях R1. Это не R1, несмотря на название. Путаница здесь массовая.

Слияния (Merge)

Механическое смешивание весов без обучения (SLERP, TIES, DARE, task arithmetic). Названия вроде Fusion, Genesis, Nemotron-Mix, любые красивые собственные имена — почти всегда это.

Качество лотерейное. Иногда слияние лучше составляющих, чаще незаметно хуже, но с более выраженным «характером». Проверяемых замеров у авторов обычно нет.

Расцензуренные (Uncensored, Abliterated, Heretic)

  • Abliterated / orthogonalized — в пространстве активаций вычисляется направление, отвечающее за отказ, и вычитается из весов. Дообучения нет, вмешательство хирургическое.
  • Uncensored / dolphin-подобные — дообучение на выборке без отказов.

Обе процедуры повреждают модель. Вычитаемое направление участвует не только в отказах: падает точность следования указаниям, растёт число выдумок, ухудшается работа с инструментами, длинным контекстом и не-английскими языками. На открытых наборах задач просадка обычно в несколько процентов, на сложных сценариях больше.

Псевдо-именованные

Сборки вида Claude-…-Deckard, GPT-…-Distill — дообучение открытой модели на выходах закрытой. К соответствующим компаниям отношения не имеют, название маркетинговое.

4. Формат весов

Формат описывает упаковку файла, а не качество модели.

Формат Движок Особенности
safetensors Transformers, vLLM Исходные веса в 16 битах. Эталон, из которого делают остальное
GGUF llama.cpp, Ollama, LM Studio Один файл, метаданные внутри, работа на процессоре и смешанная
EXL2 / EXL3 ExLlamaV2/V3 Только видеокарта, высокая скорость, гибкая битность (возможны 3,5 бита)
AWQ vLLM, TensorRT 4 бита, ориентирован на пакетную обработку на сервере
GPTQ старый стандарт Вытесняется AWQ и EXL
MLX MLX Под единую память Apple Silicon
ONNX ONNX Runtime Кроссплатформенный вывод, встраиваемые устройства

Правило выбора: один пользователь на домашнем железе — GGUF (или MLX на Apple Silicon). Много одновременных запросов в production — vLLM с AWQ или FP8.

5. Квантизация

Исходные 16 бит сжимаются до 2–8.

Классические

Q4_0, Q4_1, Q5_0, Q8_0 — равномерное сжатие всех блоков. Устарели, кроме Q8_0 (потери неразличимы) и Q4_0 (совместимость и ускорение на некоторых процессорах).

K-кванты

Q3_K_S, Q4_K_M, Q5_K_M, Q6_K — разные слои сжимаются по-разному: внимание и важные матрицы бережнее, остальное сильнее. Суффиксы S / M / L — градация внутри разряда.

Q4_K_M — выбор по умолчанию. Оптимум по соотношению размера и качества, проверенный годами эксплуатации.

I-кванты

IQ2_M, IQ3_XXS, IQ4_XS — метод с кодовыми книгами. При равном размере файла качество выше, особенно на малых битностях. Плата: больше вычислений на распаковку. На видеокарте разница не видна, на слабом процессоре I-квант может оказаться медленнее K-кванта того же размера.

Матрица важности (imatrix)

Не тип квантизации, а способ подготовки: на калибровочном тексте измеряется, какие веса влияют на результат сильнее, и они сохраняются точнее. Сборки с пометкой imatrix или i1 при том же имени кванта заметно лучше — особенно ниже 4 бит.

При наличии выбора между обычной сборкой и сборкой с матрицей важности берётся вторая. Разница бесплатна: размер файла тот же.

Шкала квантизации

Q8_0     8 бит   потери неразличимы, файл вдвое больше нужного
Q6_K     6 бит   потери на уровне погрешности измерения
Q5_K_M   5 бит   отличный выбор, если память позволяет
Q4_K_M   4 бита  ЗОЛОТАЯ СЕРЕДИНА
IQ4_XS   4 бита  чуть меньше и лучше Q4_K_M, требовательнее к процессору
IQ3_M    3 бита  заметная деградация, оправдано ради большой модели
IQ2_M    2 бита  для очень крупных моделей работает, для мелких ломает

Главное правило: крупная модель в Q4 почти всегда лучше мелкой в Q8. 27B в Q4_K_M (17 ГБ) обыгрывает 9B в Q8_0 (9,5 ГБ) при сопоставимом расходе памяти.

Квантизация кэша контекста

Отдельная настройка, о которой забывают. Кэш ключей и значений при длинном контексте занимает гигабайты. Флаги --cache-type-k q8_0 --cache-type-v q8_0 уменьшают его вдвое почти без потерь. Ниже 8 бит для кэша опускаться не рекомендуется.

6. Служебные варианты

Черновик (Draft)

Маленькая модель (0,5–1,5 млрд) для спекулятивного декодирования: она быстро генерирует несколько токенов вперёд, большая проверяет их одним проходом. Ускорение в 1,5–2,5 раза без потери качества — результат математически идентичен обычной генерации.

Условие: общий словарь токенов с основной моделью, то есть одно семейство. Подключается параметром --model-draft, основную модель не заменяет.

Именно поэтому в каталоге под именем «27B» может лежать файл на 2,6 ГБ — это черновик к ней.

MTP / NoMTP

Multi-token prediction — дополнительная голова, предсказывающая несколько токенов сразу. Встроенное ускорение, но поддерживается не всеми версиями движков. Сборка NoMTP — без неё, компактнее и совместима шире.

Адаптеры (LoRA, QLoRA)

Не модель, а небольшой файл (десятки-сотни мегабайт) с поправкой к весам. Подключается поверх базовой модели или впечатывается насовсем. Основной способ дообучения на своих данных при ограниченном железе.

Расширенный контекст

128k, 1M, YaRN, RoPE-scaled — модель растянута на длинный контекст. Следует различать объявленный и рабочий объём: модель может принимать 128 тысяч токенов, но надёжно находить информацию только до 32 тысяч.

7. Лицензии

  • Apache 2.0 / MIT — полная свобода, включая коммерческое применение. Qwen, часть Mistral, DeepSeek.
  • Llama Community License — коммерция разрешена с ограничением по числу пользователей и требованием указывать происхождение.
  • Gemma Terms — собственные ограничения по допустимому применению.
  • CC-BY-NC, «только исследования» — коммерция запрещена.

У слияний лицензия наследуется от самой строгой из составляющих, и авторы сборок регулярно указывают её неверно. Для коммерческого продукта проверка ведётся по первоисточникам, а не по карточке сборки.

8. Как читать имя файла

Qwen3-30B-A3B-Instruct-2507-UD-Q4_K_XL.gguf
│    │  │    │        │    │  │
│    │  │    │        │    │  └─ квантизация
│    │  │    │        │    └──── сборщик и метод (UD = Unsloth Dynamic)
│    │  │    │        └───────── дата версии
│    │  │    └────────────────── стадия обучения
│    │  └─────────────────────── активных параметров (MoE)
│    └────────────────────────── всего параметров
└─────────────────────────────── семейство и поколение

Дополнительные маркеры: -00001-of-00003 (файл разбит на части, нужны все), -i1- (собрано с матрицей важности), -abliterated, -draft, mmproj- (проектор для зрения).

9. Формула скорости

Генерация упирается не в вычисления, а в пропускную способность памяти. Каждый токен требует прочитать все активные веса.

токенов/с ≈ пропускная способность памяти / объём активных весов

Практический коэффициент полезного действия — 60–75% от пиковой пропускной способности.

Память Пик Реально в llama.cpp
DDR4-3200, два канала 51 ГБ/с 25–35
DDR5-5600, два канала 90 ГБ/с 55–70
LPDDR5x-7467 (ноутбук) 120 ГБ/с 70–90
LPDDR5x-9600 (ноутбук 2026) 154 ГБ/с 95–115
Apple M-Pro 270 ГБ/с 200+
Apple M-Max 400–550 ГБ/с 350+
Серверный EPYC, 8–12 каналов 300–500 ГБ/с 250–400
RTX 3060 12 ГБ 360 ГБ/с 300+
RTX 4090 / 5090 1000–1800 ГБ/с несопоставимо выше

Масштаб очевиден: видеокарта быстрее ноутбучной памяти не в разы, а на порядок. Именно поэтому смешанный режим играет ключевую роль в домашней конфигурации.

10. Почему MoE меняет расклад

Расчёт для 70 ГБ/с — обычный настольный компьютер с DDR5:

Модель Активно на токен Скорость
4B dense Q4 ~2,5 ГБ 20–28 т/с
8B dense Q4 ~4,7 ГБ 12–15 т/с
14B dense Q4 ~8,5 ГБ 6–8 т/с
27B dense Q4 ~17 ГБ 3–4 т/с
70B dense Q4 ~40 ГБ 1,5 т/с
30B-A3B MoE Q4 ~1,8 ГБ 20–30 т/с
120B-A5B MoE Q4 ~3 ГБ 12–18 т/с

Перелом наступает на 8–14 млрд параметров: дальше плотная модель превращается в переписку с задержкой. MoE на 30 млрд читает на токен меньше, чем плотная 4B.

Три оговорки к таблице:

  1. Память нужна вся. 30B-A3B в Q4_K_M — это ~18 ГБ в ОЗУ плюс контекст. Экономится время, не место.
  2. Каналы важнее частоты. Одноканальный ноутбук с DDR4 даёт ~20 ГБ/с — значения таблицы делятся на три.
  3. Разбор входа считается отдельно. Разбирается в следующем разделе.

11. Две скорости, которые путают

Генерация (decode) — упор в память, рассмотрена выше.

Разбор входа (prefill) — упор в вычисления. Здесь видеокарта и даже встроенная графика обгоняют процессорные ядра в разы.

Железо Разбор входа Генерация
Процессор 100–600 т/с по формуле выше
Встроенная графика 500–2000 т/с почти как процессор
Дискретная видеокарта 3000–20000 т/с высокая

Документ на 20 тысяч токенов, обрабатываемый процессором, даёт полминуты-минуту молчания до первого слова. Встроенная графика сокращает паузу кратно, хотя на скорость генерации почти не влияет, поскольку использует ту же память.

Для ноутбуков с интегрированной графикой бэкенд Vulkan или SYCL включается обязательно, даже если прирост в токенах в секунду не виден. Оптимизируется не скорость печати, а latency до первого токена.

12. Смешанный режим

Самый практичный способ запустить большую модель на скромной видеокарте.

Для плотных моделей применяется выгрузка слоёв:

llama-server -m model-Q4_K_M.gguf -ngl 24 -c 8192

-ngl N кладёт на видеокарту первые N слоёв. Выигрыш пропорционален доле выгруженного: половина слоёв — примерно вдвое быстрее.

Для MoE применяется выгрузка экспертов, приём заметно эффективнее:

llama-server -m Qwen3-30B-A3B-Q4_K_M.gguf \
  -ngl 99 \
  --n-cpu-moe 99 \
  -c 16384 \
  --cache-type-k q8_0 --cache-type-v q8_0

-ngl 99 отправляет все слои на видеокарту, --n-cpu-moe 99 возвращает на процессор именно матрицы экспертов — самую объёмную и самую редко используемую часть. На карте с 8 ГБ так запускается модель на 30 млрд параметров со скоростью 15–25 т/с. Уменьшение числа в --n-cpu-moe переносит часть экспертов на карту, значение подбирается по остатку видеопамяти.

13. Сколько памяти нужно на самом деле

Память = вес файла + кэш контекста + служебное (0,5–1 ГБ)

Кэш контекста для модели среднего размера с GQA — примерно 0,5–2 ГБ на 8 тысяч токенов, при q8_0 вдвое меньше. Для моделей с MHA (старые поколения) — в разы больше.

Плюс операционная система: Windows с браузером занимает 6–9 ГБ.

На 32 ГБ ОЗУ реальный бюджет под модель составляет около 20 ГБ, а не 30. Расчёт по номинальному объёму памяти приводит к уходу в своп и падению скорости на порядок.

14. Ориентиры по железу

Железо Разумный выбор
8 ГБ видеопамяти 7–9B в Q4_K_M, контекст 8–16k
12 ГБ 12–14B в Q4_K_M
16 ГБ 24–27B в IQ4_XS либо 14B в Q6_K
24 ГБ 27–32B в Q5_K_M либо MoE 30B-A3B
32–48 ГБ 70B в Q4_K_M
Ноутбук, 32 ГБ ОЗУ, без дискретной карты до 14B dense либо MoE 30B-A3B
Ноутбук, 64 ГБ ОЗУ MoE до 35B свободно, 70B dense медленно, но работает
Процессор + 64 ГБ ОЗУ MoE — единственный вариант с приемлемой скоростью
Apple Silicon MLX-сборки, доступно ~75% общей памяти

Отдельно про тонкие ноутбуки: базовое потребление 25 Вт, турбо до 80 Вт, но долгий вывод упирается в теплоотвод. Устойчивая производительность оказывается ближе к 30–40 Вт. Замеры проводятся при подключённом питании и в режиме максимальной производительности, иначе результаты расходятся вдвое.

15. Чем запускать локальную модель

Инструмент Сценарий
llama-server Полный контроль над флагами. Интерфейс, совместимый с OpenAI, из коробки
Ollama Простота, автозагрузка моделей. Обёртка над llama.cpp, часть флагов недоступна
LM Studio Графический интерфейс, поиск моделей, подбор кванта под железо
vLLM Сервер с видеокартами, много одновременных запросов, пакетная обработка
ExLlamaV3 Максимальная скорость на одной видеокарте, если модель влезает целиком

Ollama и LM Studio внутри используют тот же llama.cpp. Установка Ollama — это установка обёртки над ним.

Рабочая команда llama-server

llama-server \
  -m /models/Qwen3-30B-A3B-Instruct-Q4_K_M.gguf \
  --host 0.0.0.0 --port 8080 \
  -c 16384 \
  -ngl 99 \
  --n-cpu-moe 99 \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  --flash-attn \
  --temp 0.7 --min-p 0.05 --top-p 1.0 --top-k 0 \
  --jinja \
  -t 8

Назначение флагов:

  • -c — размер контекста в токенах;
  • -ngl — слоёв на видеокарту (99 = все);
  • --n-cpu-moe — экспертов обратно на процессор;
  • --cache-type-k/v — сжатие кэша;
  • --flash-attn — экономит память и ускоряет длинный контекст;
  • --jinja — брать шаблон диалога из метаданных GGUF (без этого частая причина поломок);
  • -t — число потоков, ставится по числу производительных ядер, не по общему числу. На гибридных процессорах Intel добавление E-ядер часто замедляет вывод.

Со спекулятивным декодированием добавляются:

  --model-draft /models/Qwen3-0.6B-Q8_0.gguf \
  --draft-max 16 --draft-min 4

Подключение к n8n и прочей автоматизации

llama-server отдаёт /v1/chat/completions в формате OpenAI. В узле OpenAI достаточно подменить базовый адрес на http://<IP>:8080/v1, ключ поставить любой непустой. Код менять не нужно — внешний поставщик заменяется на локальный подстановкой адреса.

Совместимость с форматом OpenAI означает, что весь существующий контур автоматизации переключается на локальную инфраструктуру одной строкой конфигурации, без переписывания логики.

16. Параметры вывода

Раздел, который важнее выбора между Q4_K_M и Q5_K_M. Неверная температура портит ответ сильнее, чем лишний бит квантизации.

Параметр Что делает Разумное значение
temperature Разброс выбора. 0 — всегда самый вероятный токен 0,7 общее; 0,1–0,3 код и извлечение данных
min_p Отсекает токены с вероятностью ниже доли от лучшего. Современная замена top_p 0,05
top_p Ядро выборки: берутся токены до накопленной вероятности p 1,0 при использовании min_p
top_k Только k самых вероятных 0 (выключено) или 40
repeat_penalty Штраф за повтор токена 1,0–1,1. Выше 1,15 ломает связность
repeat_last_n Окно, в котором ищутся повторы 64–256
presence_penalty Штраф за само появление токена 0–0,5
DRY Умный штраф за повторы: гасит длинные повторяющиеся последовательности, не трогая обычные слова Хорошая замена repeat_penalty
XTC Иногда выбрасывает самый вероятный токен ради разнообразия Только для творческих задач
mirostat Автоподстройка температуры под целевую «неожиданность» Устарел, изредка полезен

Готовые наборы

Извлечение данных, JSON, классификация

temp 0.1, min_p 0.05, top_p 1.0, repeat_penalty 1.0

Повторы здесь не проблема — в JSON структура и должна повторяться, штраф её ломает.

Код

temp 0.2, min_p 0.05, repeat_penalty 1.0

Общий диалог

temp 0.7, min_p 0.05, top_p 1.0, top_k 0, repeat_penalty 1.05

Рассуждающие модели — почти всегда есть рекомендации автора в карточке, приоритет за ними. Типичный набор: temp 0.6, top_p 0.95, top_k 20, min_p 0. Штрафы за повторы для них не выставляются, они мешают цепочке рассуждений.

Творческий текст

temp 0.9–1.1, min_p 0.03, DRY 0.8

Диагностика по симптомам

Симптом Причина Действие
Зацикливается, повторяет фразу Штраф за повторы выключен, температура слишком низкая repeat_penalty 1.05–1.1 или включить DRY
Бессвязность, случайные слова Температура слишком высокая, нет отсечки Понизить temp, поставить min_p 0.05
Отвечает и продолжает за пользователя Неверный шаблон диалога или токены остановки См. следующий раздел
Обрывается на полуслове Достигнут n_predict или ложный токен остановки Увеличить лимит, проверить шаблон
Игнорирует инструкции Взята базовая модель вместо instruct, либо квант ниже 3 бит Сменить модель или квант
Ломается только на русском Слишком низкий квант Не опускаться ниже Q4_K_M
Забывает начало разговора Контекст переполнен, старое вытесняется Увеличить -c или сжимать историю

17. Шаблон диалога и токены остановки

Причина большинства сообщений «модель сломалась».

У каждого семейства свой формат разметки ролей: ChatML (<|im_start|>user), Llama-3 (<|start_header_id|>), Gemma (<start_of_turn>), Mistral ([INST]). GGUF хранит шаблон в метаданных, но в кустарных сборках, слияниях и расцензуренных вариантах он часто прописан неверно или потерян.

Симптомы неверного шаблона: модель отвечает и тут же пишет реплику за пользователя; бесконечно продолжает сама себя; обрывается после первого слова; игнорирует системное указание.

Порядок устранения:

  1. Запуск с --jinja — берётся шаблон из метаданных.
  2. Проверка содержимого: llama-server печатает шаблон в журнале при старте.
  3. Если пусто или неверно — подстановка вручную: --chat-template chatml (либо llama3, gemma, mistral).
  4. Проверка токенов остановки. При бесконечной генерации добавляется --reverse-prompt "<|im_end|>".

Ориентир: определяется семейство, на котором построена сборка, и берётся его шаблон. Слияние на основе Qwen — ChatML.

18. Контекст: объявленный и рабочий

Модель может заявлять 128 тысяч токенов и надёжно работать до 16–32 тысяч. Дальше начинается вымывание: детали из середины перестают учитываться.

Проверяется задачей «иголка в стоге сена»: в длинный текст помещается факт в разных позициях, затем задаётся вопрос о нём. Провал обычно приходится на середину контекста, не на конец.

Практические следствия:

  • Значение -c не выставляется в максимум «на всякий случай» — это расходует память впустую.
  • Для работы с документами надёжнее поиск по фрагментам (векторизатор плюс реранкер), чем загрузка всего документа в контекст.
  • Сжатие кэша до q8_0 на качество почти не влияет, до q4_0 — влияет заметно.

19. Токенизация кириллицы

Раздел, которого нет в англоязычных инструкциях, а он меняет все расчёты.

Кириллица кодируется хуже латиницы. Одно русское слово — часто 2–4 токена против 1–2 у английского аналога. Коэффициент по тексту в среднем 2–2,5 раза.

  • Контекст сжимается вдвое. Объявленные 32 тысячи токенов — это примерно 13–16 тысяч слов английского текста и 6–8 тысяч русского по объёму содержания.
  • Скорость падает вдвое. 15 токенов в секунду на русском воспринимаются как 7 на английском, поскольку на тот же объём смысла требуется вдвое больше токенов.
  • Стоимость выше при сравнении с облачными поставщиками.

Поколения токенизаторов различаются: у Qwen 3 и Llama 3 кириллица кодируется заметно экономнее, чем у Llama 2 и старых Mistral.

20. Квантизация и русский язык

Матрица важности почти всегда считается на английском калибровочном тексте. Веса, отвечающие за другие языки, при этом признаются менее важными и жмутся сильнее.

Практический эффект: русский деградирует раньше английского. Модель, которая в IQ3_M ещё уверенно отвечает по-английски, на русском уже путает падежи и вставляет английские слова.

Для русскоязычных задач квантизация ниже Q4_K_M не применяется. Экономия на кванте здесь обходится дороже, чем в англоязычных сценариях.

21. Какие семейства реально держат русский

Формально многоязычными называют себя почти все. Реально различаются:

  • Qwen — лучший баланс для русского среди открытых моделей, особенно от 14 млрд параметров.
  • Gemma — хороший русский, аккуратный стиль.
  • Mistral Large / Nemo — приемлемо.
  • Llama — заметно слабее в русском, чем в английском, при равном размере.
  • Модели с дообучением на русском корпусе — стоят проверки, но многие устарели относительно свежих Qwen.

Расцензуренные и слитые сборки теряют русский первыми. Абляция и слияние бьют по редким языкам сильнее, чем по основному. Ухудшение работы сборки на русском относительно исходной модели — воспроизводимый эффект, а не субъективное впечатление.

Проверка простая: запрос на пересказ абзаца по-русски и на письмо в деловом стиле. Английские вставки, кальки и сбитые падежи видны сразу.

22. Числовые методы проверки качества

Открытые рейтинги перенасыщены подгонкой под них. Проверка ведётся на собственных данных.

Перплексия

Показывает, насколько модель «удивляется» тексту:

llama-perplexity -m model-Q4_K_M.gguf -f test.txt -c 4096

Само число бессмысленно, сравнивать имеет смысл разные кванты одной модели на одном тексте. Рост перплексии на 2–3% относительно Q8_0 — норма, на 15% — квант выбран слишком низкий.

Для замера берётся собственный текст, в том числе русский. Результат на английской «Википедии» ничего не говорит о работе на рабочих документах.

Расхождение с исходной моделью (KL divergence)

Более чувствительный показатель, чем перплексия: показывает, насколько распределение вероятностей квантованной модели разошлось с исходной. llama.cpp считает его через --kl-divergence.

Иголка в стоге сена

Проверка реального контекста, описана в разделе 18.

23. Свой набор задач

Самый ценный инструмент оценки. Двадцать реальных запросов из рабочего сценария информативнее любой сводной таблицы.

  1. Отобрать 15–25 задач, которые действительно решаются на практике, включая сложные.
  2. Зафиксировать ожидаемый результат хотя бы в общих чертах.
  3. Прогнать через кандидатов с одинаковыми параметрами вывода.
  4. Оценивать вслепую, без информации о том, какая модель что выдала.

Процедура занимает вечер и окупается: разница между лидером рейтинга и моделью, которая выполняет конкретную работу, бывает противоположной.

Отдельно проверяются:

  • следование формату (запрошен JSON — получен JSON, без пояснений вокруг);
  • поведение при недостатке данных (признаёт незнание или выдумывает);
  • длинный контекст;
  • русский язык;
  • вызов инструментов, если он требуется по сценарию.

24. Доверие к сборщику

GGUF-файлы готовят энтузиасты, и качество сборок различается.

  • Предпочтение известным аккаунтам сборщиков либо официальным сборкам авторов модели.
  • Проверка, указана ли матрица важности и на каком корпусе велась калибровка.
  • Сверка заявленной архитектуры с исходной моделью.
  • Чтение карточки: добросовестный автор описывает, что именно сделано и какие замеры получены. Отсутствие любых замеров — сигнал само по себе.

Файл модели — исполняемые данные для движка, а не программа, однако битые и обрезанные сборки встречаются. Контрольные суммы проверяются, если опубликованы.

25. Ограничения подхода

Раздел для перечитывания перед внедрением в рабочий процесс.

Выдумки. Локальная модель выдумывает не реже облачной, а меньшие модели — заметно чаще. Особенно опасны правдоподобные детали: номера законов, даты, названия. Всё проверяемое подлежит проверке.

Отсечка знаний. Модель знает мир на момент обучения. Для актуальных данных требуется поиск или подключение к внешним источникам.

Квантизация не бесплатна. Даже Q4_K_M — это потеря. На простых задачах незаметна, на длинных цепочках рассуждений накапливается.

Расцензуренные модели хуже исходных. Это измеримый факт, а не оценочное суждение. Для рабочих задач берётся официальный instruct.

Слияния — лотерея. Красивое название не заменяет замеров.

Скорость на ноутбуке ограничена физикой памяти. Никакая настройка не даст 70B со скоростью 20 токенов в секунду на двухканальной конфигурации. Если задача требует большего, дешевле держать сервер с видеокартой и обращаться к нему по сети.

26. Порядок действий

  1. Определить класс задачи. Диалог — LLM. Поиск по документам — векторизатор плюс реранкер, а не крупная LLM. Изображения — VLM с проектором.
  2. Посчитать бюджет памяти. Общий объём минус система минус контекст. На 32 ГБ реально доступно около 20.
  3. Выбрать тип. Слабая память — MoE. Есть видеокарта — плотная модель, влезающая целиком.
  4. Взять самую крупную модель в Q4_K_M, которая помещается. Не наоборот.
  5. Проверить свежесть. Поколение важнее хитрой сборки: модель годовой давности того же размера обычно заметно слабее новой.
  6. Начать с официального instruct. Слияния и расцензуренные варианты сравниваются с ним как с точкой отсчёта.
  7. Проверить шаблон диалога сразу после загрузки.
  8. Настроить параметры вывода под задачу, не оставляя умолчания интерфейса.
  9. Прогнать собственный набор из двадцати задач.
  10. Замерить скорость на своём железе: llama-bench -m model.gguf.

Частые вопросы

Что лучше — большая модель в Q4 или маленькая в Q8?

При сопоставимом расходе памяти крупная модель в Q4_K_M почти всегда выигрывает. 27B в Q4 занимает около 17 ГБ и превосходит 9B в Q8_0 на 9,5 ГБ по качеству ответов. Исключение — сценарии, требующие точного следования формату при квантах ниже 3 бит.

Почему модель со зрением не видит изображения?

В формате GGUF такая модель состоит из двух файлов. Без отдельного mmproj-*.gguf проектор отсутствует, и картинки молча игнорируются. Загружаются оба файла, проектор подключается параметром запуска движка.

Сколько оперативной памяти нужно для модели 30B?

MoE-модель 30B-A3B в Q4_K_M занимает около 18 ГБ плюс кэш контекста. С учётом операционной системы комфортный минимум — 32 ГБ ОЗУ, при этом контекст ограничивается 16 тысячами токенов со сжатием кэша до q8_0.

Почему на русском языке скорость ниже?

Кириллица требует в 2–2,5 раза больше токенов на тот же объём содержания. Пропускная способность памяти при этом не меняется, поэтому воспринимаемая скорость падает примерно вдвое, а полезный объём контекста сокращается в те же 2–2,5 раза.

Стоит ли брать расцензуренные сборки для работы?

Нет. Абляция и дообучение без отказов повреждают следование указаниям, работу с инструментами, длинный контекст и не-английские языки. Для прикладных задач берётся официальный instruct как точка отсчёта.

Ollama или llama-server?

Ollama — обёртка над тем же llama.cpp с автозагрузкой моделей и упрощённой конфигурацией. llama-server даёт доступ ко всем флагам, включая --n-cpu-moe, сжатие кэша и спекулятивное декодирование. Для тонкой оптимизации под конкретное железо применяется второй вариант.

Как ускорить обработку длинного запроса на ноутбуке?

Разбор входа упирается в вычисления, а не в память. Включение бэкенда Vulkan или SYCL для встроенной графики сокращает паузу до первого токена в несколько раз, даже если скорость генерации остаётся прежней.

Что даёт спекулятивное декодирование?

Ускорение генерации в 1,5–2,5 раза без потери качества: результат математически идентичен обычному выводу. Требуется черновая модель того же семейства с общим словарём токенов, подключается через --model-draft.

Заключение

Локальный вывод перестал быть экспериментом и стал предсказуемой инженерной задачей: пропускная способность памяти определяет скорость, архитектура MoE снимает потолок по размеру модели на скромном железе, а Q4_K_M с матрицей важности остаётся опорной точкой по соотношению качества и объёма. Основные потери качества в 2026 году возникают не из-за железа, а из-за неверного шаблона диалога, оставленных по умолчанию параметров вывода и выбора слияний вместо официальных instruct-сборок. Расчёт бюджета памяти до загрузки, проверка шаблона сразу после неё и собственный набор из двадцати задач вместо публичных рейтингов дают инфраструктуру, которая работает автономно, без внешних поставщиков и с предсказуемой latency.

Оцените статью
ctrllife.ru
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x