Практика

Компактный край:
27B и малые размеры

3.8 27B dense 0.6 — 8B int4

В 3.8 компактной моделью стал открытый 27B с приёмом изображений и видео. Ниже по размеру — прошлые поколения: именно они закрывают извлечение данных на машине без ускорителя.

16 ГБ весов у 27B в int4
0.6 ГБ на 1B в int4
1M контекст у 3.8

Два разных «малых»

В 3.8 слово «компактный» означает 27 миллиардов параметров: это плотная модель, где все веса работают на каждом шаге. Она принимает изображения и видео, держит миллион токенов контекста и — главное для приватных задач — открыта. Именно её имеет смысл ставить на свой сервер, когда документы нельзя отдавать наружу.

Ниже 27B начинается другая территория: модели на 0.6–8 миллиардов из предыдущих поколений. Они не конкурируют с флагманом по уму, зато запускаются на процессоре, помещаются в память ноутбука и стоят ноль. Для извлечения реквизитов, классификации и роутинга этого достаточно — и на этом классе мы и меряем.

Выбор не между «умнее» и «глупее», а между «влезает в мой контур» и «не влезает».
Класс

Размерный ряд и память

Ориентир простой: примерно 2 ГБ на миллиард параметров в fp16 и 0.6 ГБ в int4. Вторая цифра и решает, что запускается на вашей машине.

Модель Параметры fp16 int4 Роль
qwen3-0.6b0.6B1.2 ГБ0.4 ГБФильтры, теги, роутинг запросов
qwen3-1.7b1.7B3.4 ГБ1.1 ГБИзвлечение полей, классификация
qwen3-4b4B8.0 ГБ2.6 ГБРабочая точка: JSON по схеме
qwen3-8b8B16.0 ГБ5.0 ГБСложные схемы, длинный контекст
qwen3.8-27b27B54.0 ГБ16.0 ГБЗрение, документы, приватный контур

Плюс 1–2 ГБ на контекст и кэш: длинный документ ест память заметнее, чем сами веса. Для 27B это уже серверная память.

Замеры

Извлечение по схеме: что выходит на практике

Наш тест: 400 русскоязычных документов четырёх типов, схема из пяти полей, температура 0, вывод ограничен грамматикой. Машина — восемь ядер без ускорителя, 32 ГБ памяти; для 27B добавлены замеры на одной карте.

Модель Память int4 JSON, % Поля, % ток/с
qwen3-0.6b 0.4 ГБ 88 71 42
qwen3-1.7b 1.1 ГБ 96 84 24
qwen3-4b 2.6 ГБ 99 91 12
qwen3-8b 5.0 ГБ 99 94 7
qwen3.8-27b 16.0 ГБ 100 97 38

«JSON, %» — доля ответов, прошедших схему с первой попытки. «Поля, %» — точное совпадение значений по всем пяти полям. Разрыв между колонками и есть цена размера: синтаксис держат все, а на нестандартной вёрстке ошибаются малые.

27B мерян на одной карте — отсюда высокая скорость. Числа дают порядок величины на нашем железе, а не воспроизводимый бенчмарк: прогоняйте на своих документах.

Что компактная модель делает хорошо

  • плоское извлечение — реквизиты, даты, суммы, номера, стороны договора: одна схема, один проход, стабильный результат;
  • нормализация — приведение адресов, единиц измерения и названий к справочнику;
  • классификация и роутинг — определить тип документа и отправить его в нужный конвейер, прежде чем звать тяжёлую модель;
  • разбор сканов — здесь выигрывает 27B: он принимает изображение страницы и не зависит от качества внешнего OCR;
  • предразметка — черновые сущности и связи для последующей проверки человеком.

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

Приёмы

Пять вещей, которые поднимают качество

  1. Схема вместо просьбы. Не «извлеки данные», а конкретный JSON с типами и обязательными полями. Ограничение генерации грамматикой убирает класс ошибок целиком.
  2. Три примера, не тридцать. На малых моделях few-shot работает до определённого предела: дальше примеры начинают конкурировать с инструкцией за внимание.
  3. Один документ — один вызов. Склейка нескольких документов в один промпт почти всегда снижает точность извлечения.
  4. Валидация и одна повторная попытка. Ответ, не прошедший схему, отправляем обратно с текстом ошибки — этого хватает моделям от 1.7B.
  5. Разделение труда. Дешёвая модель разбирает всё, крупная — только спорные записи. Стоимость падает сильнее, чем качество.

Схема для договора поставки выглядит примерно так:

schema.json { "type": "object", "required": ["номер", "дата", "сумма"], "properties": { "номер": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{6}$" }, "дата": { "type": "string", "format": "date" }, "сумма": { "type": "number", "minimum": 0 } }, "additionalProperties": false }
Решения

Где это применимо целиком

Разбор почты и вложений

офлайн

Модель на 1.7–4B раскладывает входящие по типам, вытаскивает реквизиты и складывает их в таблицу. Ничего не уходит наружу — на этом сценарии выбор обычно и заканчивается.

Сканы без внешнего OCR

зрение

Задача для 27B: страница подаётся изображением, модель сама находит таблицу и печати. Меньшие размеры здесь работают только с уже распознанным текстом.

Препроцессинг перед поиском

RAG

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

Шлюз к большой модели

роутинг

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

Чего от компактных не ждать

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

Зато всё, что описывается схемой и проверяется правилом, компактная модель делает предсказуемо и дешёво — и именно там она окупается быстрее всего.

Вопросы

Частое про компактные модели

Если документы текстовые и схема простая — 8B в int4 на 5 ГБ памяти даёт почти тот же результат. 27B берут ради сканов, изображений и очень длинных документов: там разница в точности становится заметной.
Для однотипных документов — да, если ответ ограничен схемой и есть два-три примера. Просадка начинается на нестандартной вёрстке: там поможет либо модель на 4B, либо повторная попытка с текстом ошибки.
Для 0.6–8B — не обязателен: 4B в int4 даёт около десятка токенов в секунду на восьми ядрах. Для 27B ускоритель практически обязателен, иначе пакетная обработка растянется на ночь.
По деньгам — часто да, и об этом стоит честно помнить. Свой контур берут не ради цены за токен, а ради того, что данные не покидают периметр. Если это не требование, сервис почти всегда выгоднее.