Квантизация — уменьшение точности чисел, которыми записаны веса модели. Вместо развёрнутого представления каждое число хранится короче: грубее, зато занимает меньше памяти.
Практический смысл один и очень весомый: модель, которая не помещалась в вашу видеокарту, начинает помещаться. Или помещается модель вдвое крупнее — а более крупная модель при большем сжатии обычно работает лучше, чем маленькая без сжатия.
Плата — потеря качества. Вопрос в том, какая и заметна ли она на вашей задаче.
Сколько экономит
Порядок величины, от которого удобно отталкиваться: объём весов примерно пропорционален числу параметров, умноженному на число байт на параметр.
| Уровень | Байт на параметр | Экономия памяти | Потеря качества |
|---|---|---|---|
| Полная точность | 4 | — | нет |
| Половинная точность | 2 | вдвое | практически нет |
| 8 бит | 1 | вчетверо | обычно незаметна |
| 5–6 бит | ~0,7 | ~в 5–6 раз | небольшая |
| 4 бита | ~0,5 | ~в 8 раз | заметна на сложных задачах |
| 3 бита и ниже | <0,5 | больше | часто неприемлема |
Числа приблизительные: конкретные форматы различаются деталями, а служебные данные добавляют накладные расходы.
Практический ориентир: большинство рабочих развёртываний живёт на 4–8 битах. Ниже четырёх спускаются редко и только после проверки.
Расчёт полного объёма, включая память под контекст, — «Расчёт видеопамяти».
Главное правило выбора
Оно не про уровень сжатия, а про то, что сравнивать:
> Крупная модель со сжатием обычно лучше мелкой без сжатия при одинаковом объёме памяти.
Это неочевидно и часто определяет решение. Если выбор стоит между небольшой моделью в полной точности и вдвое-втрое более крупной, сжатой до 4 бит, вторая чаще выигрывает.
Причина в том, что потеря от сжатия обычно меньше, чем выигрыш от большего числа параметров. Но правило не абсолютно: проверять надо на своей задаче.
Где качество падает раньше всего
Деградация от сжатия распределяется неравномерно. Раньше и заметнее всего страдают:
Точность в деталях. Числа, даты, названия, артикулы. Модель начинает чаще ошибаться в мелочах, оставаясь связной в целом.
Длинные цепочки рассуждений. Задачи, где нужно удержать несколько условий сразу.
Соблюдение строгого формата. Заметно для конвейеров автоматизации: сжатая модель чаще нарушает схему ответа — «Структурированный вывод модели».
Редкие языки и специальная терминология. Русский страдает сильнее английского при одинаковом сжатии — это стоит учитывать.
Устойчивость на краях. Необычные, нестандартные входы обрабатываются хуже.
Что почти не страдает: общее понимание темы, связность текста, простая классификация, извлечение явно указанных данных.
Отсюда практический вывод: для простых задач сжимать можно смело, для сложных — проверять.
Как проверить потери
Единственный надёжный способ, и он занимает часы.
Возьмите свой набор из 50–100 реальных задач с известным правильным результатом.
Прогоните одну и ту же модель в нескольких уровнях сжатия на одинаковом промпте.
Сравните по классам задач, а не в среднем. Часто картина такая: на простых случаях разницы нет вовсе, на сложных — заметна.
Проверьте отдельно соблюдение формата, если это важно для конвейера.
Замерьте скорость. Сжатие обычно ускоряет работу, потому что меньше данных читается из памяти, — это часть выигрыша.
Методика — «Тестирование модели на своей задаче».
Разбор: как выбирали уровень сжатия
Задача. Внутренний ассистент по документации. Оборудование — одна видеокарта, купленная до проекта. Крупная модель в полной точности в неё не помещалась.
Что сравнивали. Одну и ту же модель в четырёх вариантах: 8 бит, 6 бит, 5 бит, 4 бита. Плюс модель вдвое меньше в 8 битах — как альтернативу.
Набор — 90 реальных вопросов, разделённых на три класса: простые справочные, вопросы с техническими обозначениями, вопросы, требующие сопоставить несколько условий.
Что получилось.
| Вариант | Простые | С обозначениями | Составные | Скорость |
|---|---|---|---|---|
| 8 бит | эталон | эталон | эталон | базовая |
| 6 бит | без изменений | без изменений | чуть хуже | быстрее |
| 5 бит | без изменений | немного хуже | заметно хуже | ещё быстрее |
| 4 бита | немного хуже | заметно хуже | плохо | самая быстрая |
| Модель вдвое меньше, 8 бит | заметно хуже | плохо | плохо | быстрая |
Что решило выбор. Два наблюдения.
Первое: более крупная модель даже в 4 битах обошла вдвое меньшую в 8 битах почти по всем классам. Правило подтвердилось.
Второе, менее ожидаемое: провал на вопросах с техническими обозначениями начинался раньше, чем на остальных. Модель путала похожие обозначения оборудования — ровно то, о чём говорилось выше про точность в деталях. Для этой базы знаний такие вопросы были основными.
Выбрали 6 бит — компромисс, при котором обозначения ещё не страдали, а память экономилась достаточно.
Побочный результат. Освободившейся памяти хватило, чтобы увеличить длину контекста, и это дало прирост качества больше, чем разница между уровнями сжатия. То есть выигрыш пришёл не оттуда, откуда ожидали.
Что стоит забрать. Уровень сжатия подбирается не по общим рекомендациям, а по тому, какой класс задач у вас основной. И освободившуюся память стоит потратить осмысленно, а не просто оставить свободной.
Практические замечания
Сжатие не всегда бесплатно по скорости. Обычно ускоряет, но некоторые форматы требуют дополнительных вычислений при чтении весов. Замерять надо, а не предполагать.
Не все среды запуска поддерживают все форматы. Совместимость проверяется до выбора — «vLLM, Ollama, llama.cpp».
Готовые сжатые версии различаются. Одна и та же модель, сжатая разными людьми разными методами, работает по-разному. Если результат неожиданно плох, стоит попробовать другую сборку.
Сжатие не заменяет выбор модели. Плохо подходящая модель не станет подходящей от сжатия.
Для облачных моделей вопрос не стоит — там сжатие на стороне поставщика и вас не касается.
Частые вопросы
Что такое квантизация модели?
Это уменьшение точности чисел, которыми записаны веса: каждое хранится короче и занимает меньше памяти. Практический эффект — модель, не помещавшаяся в видеокарту, начинает помещаться, обычно ещё и работая быстрее. Плата — потеря качества, величина которой зависит от уровня сжатия и от задачи.
Какой уровень сжатия выбрать?
Большинство рабочих развёртываний живёт на 4–8 битах. Начинать разумно с 8 бит, где потеря почти незаметна, и спускаться ниже, проверяя качество на своём наборе задач. Ниже четырёх бит обычно не опускаются без веской причины.
Что лучше: большая сжатая модель или маленькая без сжатия?
При одинаковом объёме памяти обычно выигрывает более крупная сжатая. Потеря от сжатия чаще оказывается меньше выигрыша от большего числа параметров. Правило не абсолютное, и его стоит проверить на своей задаче, но начинать проверку разумно именно с него.
Как понять, что сжатие испортило качество?
Прогнать один и тот же набор реальных задач на разных уровнях сжатия и сравнить по классам задач отдельно. Раньше всего страдают точность в деталях — числа, даты, обозначения, — длинные рассуждения и соблюдение строгого формата ответа.
Влияет ли сжатие на русский язык сильнее?
Как правило, да: на менее представленных в обучении языках деградация заметнее, чем на английском. Это дополнительный довод в пользу проверки на своих русскоязычных данных, а не переноса чужих рекомендаций.
Ускоряет ли сжатие работу модели?
Обычно да, потому что из памяти читается меньше данных. Но выигрыш зависит от формата и среды запуска: некоторые форматы требуют дополнительных вычислений при распаковке весов. Скорость стоит замерить, а не предполагать.
Что дальше
Полный расчёт памяти, включая контекст, — «Расчёт видеопамяти». Выбор среды запуска и поддержка форматов — «vLLM, Ollama, llama.cpp». Экономика размещения — «Облако или свой сервер».
Подбор модели, уровня сжатия и оборудования под задачу — часть работы по разработке и внедрению ИИ.