Чем крупнее нейросеть, тем острее вопрос, как уместить ее в ограниченную память и не потерять в скорости. Один из главных инструментов здесь — квантование: перевод весов и активаций из FP32 (а в современных моделях часто FP16 или BF16) в компактные форматы вроде INT8. Модель становится легче, а на подходящем оборудовании нередко и быстрее, причем без критичной потери точности. Но квантование квантованию рознь. Ниже разберем два подхода — простое пост-обучающее (PTQ) и более тонкое квантование с учетом обучения (QAT): как оно устроено, чем лучше, чего стоит и где его применяют.

Что такое квантование

Внутри нейросети живут числа с плавающей запятой высокой точности. Они удобны для обучения, но «тяжелы» по объему. Квантование заменяет их более грубым представлением, например 8-битными целыми. Это в четыре раза меньше по размеру. Наглядный пример из практики: модель в FP32 занимает 487 МБ, а после перевода в INT8 — всего 168 МБ.

Выигрыш в скорости, правда, не гарантирован. Он зависит от аппаратной поддержки целочисленных операций, от оптимизации рантайма и от того, что именно квантовано: веса, активации или и то и другое. Заметнее всего эффект на смартфонах, микроконтроллерах и ноутбуках, где целочисленная арифметика заметно экономнее.

Важная деталь: квантование — это не просто замена числа на другое. Допустим, вес 0.75482945 (32 бита) после преобразования превращается в 96 из диапазона от -128 до 127. Чтобы по такому значению можно было приближенно восстановить исходное, хранятся параметры масштаба (scale) и сдвига (zero-point). Без них интерпретировать целые числа было бы невозможно. Данные немного упрощаются, и точность может чуть просесть, но в большинстве случаев это почти незаметно, особенно если применять продвинутые методы вроде QAT.

Два пути: PTQ и QAT

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

Критерий PTQ (после обучения) QAT (с учетом обучения)
Когда применяется Когда модель уже обучена Во время обучения или дообучения
Нужен ли тренировочный пайплайн и данные Нет, достаточно небольшого калибровочного набора Да
Затраты времени Минимальные Обучение дольше, как правило на 20–50%
Точность Может заметно упасть на сложных моделях Близка к исходной, зависит от задачи и настроек
Адаптация модели Модель не знает о предстоящем квантовании Модель подстраивает веса под низкую точность

Пост-обучающее квантование (PTQ)

При PTQ сеть сначала обучают обычным образом в FP32 или FP16/BF16, а затем без дообучения преобразуют веса и/или активации в более компактный формат, чаще всего INT8. Полный тренировочный цикл повторять не нужно, доступ к обучающему коду не требуется, а сам процесс занимает несравнимо меньше времени. Для статического квантования активаций обычно делают калибровочный прогон на небольшом репрезентативном наборе, чтобы собрать статистику диапазонов значений.

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

Цена простоты — потеря точности. У сложных архитектур, таких как трансформеры и модели генерации текста, без дообучения возможны ощутимые искажения: они опираются на тонкие числовые различия в весах и активациях, и смена формата нарушает их поведение. Вторая проблема — отсутствие адаптивности: модель не знает, что ее параметры будут преобразованы, и не может подготовиться к этому.

В итоге PTQ — компромисс: быстро и удобно, но лучше для простых моделей или ситуаций, где небольшое падение качества допустимо. Для больших языковых моделей (LLM) PTQ часто применяют в режиме weight-only, то есть квантуют только веса, например до 4 бит. Полное квантование (веса плюс активации) требует более сложных методов.

Квантование с учетом обучения (QAT)

QAT устроен иначе: модель сознательно обучают в условиях, имитирующих низкую точность. В граф добавляются фиктивные (симулированные) операции квантования, которые воспроизводят работу в низкой разрядности еще до финального вывода. Веса и активации при этом ведут себя так, как будто уже переведены в INT8 или другие форматы, например INT4.

Что это дает:

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

Часто удается сохранить значительную часть исходной точности, иногда на уровне, близком к FP32, — в зависимости от задачи и конфигурации. Поэтому QAT особенно полезен для чувствительных архитектур: трансформеров, LLM, рекуррентных сетей, где обычное пост-обучающее квантование легко приводит к ошибкам.

Недостатки тоже есть:

  • нужно повторное обучение со специальными библиотеками;
  • обучение дороже по времени и ресурсам, типично на 20–50% в зависимости от архитектуры и реализации;
  • необходим доступ к данным и тренировочному пайплайну.

Для LLM QAT оправдан, когда требуется fine-tuning для восстановления качества после квантования, и нередко сочетается с такими методами, как QLoRA.

Как QAT устроен технически

Фиктивное квантование

Сердце метода — fake quantization. На прямом проходе, когда считаются выходы модели, значения весов и активаций округляются и обрезаются так, как если бы они действительно хранились в INT8. Это не настоящее квантование, а симуляция: модель видит те искажения, которые возникнут при реальном развертывании, и учится с ними справляться.

Обратный проход при этом идет иначе. Градиенты считаются не по округленным значениям, а по исходным высокоточным (FP32), поскольку округление не дифференцируемо. Для этого применяют аппроксимацию, чаще всего Straight-Through Estimator (STE). Так сохраняется стабильность оптимизации, и информация не теряется при обновлении весов.

Процесс по шагам:

  1. В граф модели добавляются операции FakeQuantize, округляющие значения до нужной разрядности на прямом проходе.
  2. Градиенты на обратном проходе остаются в высокой точности, с аппроксимацией.
  3. Модель постепенно привыкает к шуму квантования и адаптирует веса к искаженному представлению.

Фиктивное квантование можно применять ко всем слоям сразу или выборочно — к тем, которые сильнее всего влияют на производительность или чувствительны к снижению точности. Обычно это линейные и сверточные слои: именно они несут основную вычислительную нагрузку и дают максимум выигрыша. Нормализации (LayerNorm, BatchNorm), softmax и некоторые нелинейности часто оставляют в FP16/FP32 или квантуют особыми схемами.

Поддержка во фреймворках

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

  • TensorFlow — через TensorFlow Model Optimization Toolkit (tfmot): готовые обертки для фиктивного квантования, подготовка модели и экспорт в TFLite;
  • PyTorch — через torch.ao.quantization или более актуальный torchao: поддержка QAT через prepare_qat и convert, а также QConfig для тонкой настройки поведения;
  • ONNX Runtime, TensorRT, OpenVINO — поддерживают экспорт квантованных моделей для работы на производственных устройствах.

Настройка пайплайна требует времени, но благодаря поддержке на уровне фреймворков QAT вполне по силам и небольшим командам, и отдельным разработчикам.

Преимущества QAT

Точность

Главное достоинство — минимальные потери относительно исходной неквантованной модели. Там, где PTQ может заметно ухудшить результат (классификация, распознавание речи, генерация текста), QAT позволяет удержать значительную часть качества. Причины понятны: сеть адаптирует веса к ограниченной точности, ошибки округления и обрезки компенсируются уже в ходе обучения, а поведение при обучении близко к реальному инференсу, так что на этапе развертывания меньше неприятных сюрпризов. Это критично для медицинского ИИ, автономных систем и голосовых ассистентов.

Производительность и ресурсы

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

  • меньший объем памяти: INT8-модель в 4 раза компактнее FP32;
  • меньшее энергопотребление и, как следствие, большую автономность устройств;
  • рост скорости инференса, так как целочисленные операции быстрее выполняются на поддерживаемом железе.

Где QAT применяют

QAT доказал эффективность и в теории, и в реальных проектах: от компьютерного зрения до языковых моделей. Показательный кейс — оптимизация больших языковых моделей вроде LLaMA* 3. Они крайне чувствительны к квантованию, и простое снижение разрядности без обучения обычно резко ухудшает качество генерации.

Примеры результатов:

  • в LLaMA* 3 QAT может позволить уменьшить модель до 1/4 размера с заметным улучшением качества по сравнению с PTQ, хотя итоговые потери в перплексии зависят от конфигурации;
  • в мобильных NLP-приложениях QAT помогает запускать трансформеры на устройствах без выделенного GPU с приемлемой производительностью;
  • в распознавании речи метод обеспечивает стабильную точность в реальном времени на устройствах с ARM-процессорами.

Ключевые области:

  • CNN для компьютерного зрения на мобильных телефонах, дронах, в системах видеонаблюдения: классификация изображений, детекция объектов, сегментация;
  • LLM на edge-устройствах, в автономных ассистентах и офлайн-приложениях, где генерируется текст или анализируются запросы;
  • IoT: запуск моделей на микроконтроллерах для анализа сенсорных данных, видео и аудио при минимальном энергопотреблении.

Для LLM QAT часто используют для полного квантования (веса и активации в INT8), тогда как weight-only PTQ чаще применяют при более низкой разрядности (INT4, 2 бита).

Сложности и подводные камни

Рост затрат на обучение

Фиктивные операции квантования увеличивают время тренировки и требуют больше памяти и вычислительных ресурсов. На практике:

  • время обучения может вырасти на 20–50% в зависимости от архитектуры и реализации;
  • на больших датасетах заметно возрастает нагрузка на GPU или TPU;
  • отлаживать такие модели сложнее, поскольку артефакты квантования влияют на стабильность градиентов.

Из-за этого QAT плохо подходит для экспресс-прототипирования и работы на слабой инфраструктуре. Зато дополнительные усилия окупаются устойчивостью и качеством итоговой модели.

Выбор параметров

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

  • Разрядность весов и активаций. Стандарт — INT8, но для отдельных моделей подходят INT4, FP16 или смешанные форматы.
  • Диапазон квантования. Он определяет, как реальные значения сопоставляются целочисленным.
  • Метод округления. Например, «ближайшее целое» или «с обрезкой»: от этого зависит характер ошибки.
  • Переменная или фиксированная схема. Разным слоям могут требоваться разные схемы.

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

Что это значит при выборе железа

Квантование напрямую влияет на то, какое оборудование понадобится. Для PTQ и инференса достаточно скромных ресурсов, а вот QAT увеличивает нагрузку на этапе обучения: нужны GPU с запасом по памяти и производительности, учитывая рост времени обучения на 20–50%. Зато готовая INT8-модель в четыре раза компактнее FP32 и легче размещается на сервере или на edge-устройстве.

Если вы планируете дообучать модели с QAT или разворачивать квантованные нейросети в продакшене, посмотрите подборки в разделах серверы и серверы для ИИ. Подобрать конфигурацию под конкретные модели и нагрузку поможет команда «СервакМастер» — свяжитесь с нами.

Итоги

QAT — один из самых эффективных способов оптимизации нейросетей для ограниченных ресурсов: он позволяет сохранить значительную часть исходной точности. Взамен приходится заплатить дополнительными вычислениями и временем, более сложным обучением, ростом нагрузки на память и оборудование, а также внимательной настройкой разрядности, диапазонов значений и метода округления. Тем не менее там, где нельзя допустить заметного падения качества, но нужна компактная и быстрая модель вне дата-центра, QAT остается надежным выбором.

*LLaMA — проект Meta Platforms Inc.**, деятельность которой в России признана экстремистской и запрещена.

**Деятельность Meta Platforms Inc. в России признана экстремистской и запрещена.