Квантование моделей: как выбрать формат без потери смысла
Квантование уменьшает точность чисел, которыми модель хранит параметры, чтобы сократить файл и требования к памяти. Благодаря этому более крупная модель может запуститься на доступной видеокарте, но часть качества иногда теряется. Формат нельзя выбирать только по цифре 4-bit или 8-bit: результат зависит от архитектуры, метода калибровки, движка и задач. Правильный подход — сравнить варианты на собственных данных и заранее определить неприемлемую ошибку.
Что именно изменяется
Параметры исходной модели обычно представлены числами с плавающей точкой. При квантовании они переводятся в компактное представление с меньшим диапазоном значений, а движок восстанавливает приближённые значения во время вычисления. Чем сильнее сжатие, тем меньше памяти и диска требуется, но тем выше риск потерять редкие термины, точные числа или сложное условие.
Название формата описывает размер представления, а не итоговую точность. Два файла одного разрядности могут вести себя по-разному из-за калибровки и поддержки конкретного ускорителя. Отдельно учитывайте формат весов и формат KV-кэша: они влияют на разные участки потребления памяти.
Сначала измерьте доступное железо
Запишите объём видеопамяти, RAM, свободный диск, процессор, драйвер и операционную систему. Оставьте запас под контекст, кэш и сам движок. Модель, которая помещается ровно в доступную память, может уйти в подкачку и стать в несколько раз медленнее.
Сделайте базовый замер: время загрузки, задержка первого токена, скорость генерации, пиковая память и температура после десяти минут работы. Сохраните параметры контекста и длину ответа. Эти цифры позволят отличить эффект квантования от влияния драйвера или другой версии библиотеки.
Выберите кандидатов
Начните с умеренного сжатия, затем добавьте более компактный вариант для сравнения. Сильное квантование оставляйте для черновой классификации, коротких ответов и задач, где ошибка легко проверяется. Для медицинских, юридических и финансовых выводов оно не подходит без независимого контроля.
Проверьте, поддерживает ли движок именно этот файл, тип ускорения и нужную длину контекста. Не конвертируйте единственную рабочую копию на сервере. Храните исходный файл и его хеш отдельно.
Постройте контрольный набор
Подготовьте десять–пятнадцать заданий: письмо на русском, извлечение денежных значений и дат, длинную инструкцию, объяснение кода, таблицу и отказ при отсутствии данных. Для каждого укажите эталон и допустимое отклонение. Добавьте редкие фамилии, смешение кириллицы и латиницы, отрицания и единицы измерения.
Прогоните исходный и квантованный варианты в одинаковом режиме, без ручной правки между запусками. Сохраните необработанные ответы, токены в секунду, время до первого токена и потребление памяти. Смотрите не только среднюю оценку, но и худший случай: одна ошибка в идентификаторе может быть важнее десяти удачных резюме.
Проверьте русский язык и контекст
Сравните склонения, кавычки, тире, отрицания и числа. Для длинного документа разместите контрольные маркеры в начале, середине и конце, затем задайте вопросы по каждому. Если после сжатия исчезает исключение или путается дата, уменьшите агрессивность формата либо сократите лишний контекст.
Не делайте вывод по приветствию и короткому вопросу. Потеря точности чаще проявляется на редких словах, вложенных условиях и таблицах. Для кода проверяйте не только объяснение, но и выполнение тестов.
Протокол решения для рабочей команды
Перед скачиванием очередного файла назначьте владельца теста и запишите сценарий, ради которого вообще нужна экономия памяти. Например: «отвечать на внутренние вопросы по инструкциям на ноутбуке с 8 ГБ видеопамяти». В этот сценарий включите три числа: максимальную длину запроса, допустимую задержку и предельное число фактических ошибок за смену. Если эти ограничения не заданы, команда почти неизбежно выберет самый маленький файл, а затем будет объяснять пользователям, почему ответы стали менее надёжными.
Сравнивайте варианты в два этапа. Сначала проведите быстрый фильтр на пяти коротких заданиях и исключите форматы, которые не запускаются, медленно загружаются или путают контрольные значения. Оставшиеся варианты прогоните на длинных документах и параллельных запросах. Результаты занесите в одну таблицу: рядом с каждой ошибкой укажите тип (число, отрицание, имя, структура) и возможность её обнаружить автоматической проверкой. Ошибка, которую валидатор ловит сразу, менее опасна, чем правдоподобный, но неверный вывод.
Не меняйте промпт между замерами. Если нужно подстроить подсказку под компактную модель, сохраните это как отдельную конфигурацию и повторите тест для всех кандидатов. После выбора оставьте «контрольный» файл и поставьте дату повторной проверки: обновление движка или драйвера может изменить скорость и качество без смены весов. Такой журнал экономит время при споре о результатах и делает откат обычной инженерной процедурой, а не экстренным поиском старой версии.
Скорость не равна пользе
Меньший файл обычно быстрее загружается и занимает меньше памяти, но генерация зависит от того, умеет ли драйвер эффективно работать с форматом. Измеряйте задержку при холодном запуске и после прогрева, а также стабильность при двух одновременных запросах. Длительный перегрев может снизить частоту и свести преимущество к нулю.
Для команды считайте полную сессию: запуск, прогрев, генерация, повтор после ошибки, электричество и обслуживание. Облачный вызов для редкой задачи иногда дешевле локального сервера, даже если квантованный файл кажется бесплатным.
Совместимость и обновления
Сохраните манифест: хеш модели, формат, версию движка, драйвер и параметры. После обновления любой части повторяйте контрольный набор. Нельзя считать новый результат сопоставимым, если одновременно изменились квантование и промпт.
Старую рабочую версию не удаляйте до завершения теста и периода наблюдения. Если формат перестал поддерживаться, вернитесь к предыдущему файлу, а не выполняйте конвертацию поверх единственной копии.
Приватность и откат
Квантованная модель обрабатывает те же данные, что и исходная. Защитите историю, кэш и резервные копии, не открывайте локальный API наружу без авторизации и не храните файлы в общей папке с секретами. Переключение на проверенный вариант должно занимать одну операцию; вместе с ним восстановите конфигурацию и параметры контекста.
Если выросло число фактических ошибок, сначала вернитесь к базовой модели. Затем проверьте формат, движок и входные данные по журналу. Не пытайтесь компенсировать потерю качества случайным повышением температуры.
Чек-лист выбора
- Записаны характеристики железа и запас памяти.
- Кандидат поддерживается движком и ускорителем.
- Сохранены исходный файл, хеш и манифест.
- Одинаковый набор покрывает русский язык, числа, таблицы и контекст.
- Измерены загрузка, скорость, задержка, память и температура.
- Зафиксирован худший случай и допустимый порог ошибки.
- Кэш, история и локальный API защищены.
- Подготовлен быстрый откат с конфигурацией.
Квантование — управляемый компромисс между ресурсами и качеством. Выбирайте его по конкретному сценарию: сколько памяти сэкономлено, какая ошибка появилась и можно ли быстро вернуться к проверенной версии.