С ростом масштабов нейросетевых моделей все острее встает вопрос об их оптимизации, особенно при развертывании на устройствах с ограниченными ресурсами. Одним из методов снижения нагрузки на память и ускорения вывода модели является квантизация – перевод весов и активаций с плавающей точностью (часто FP32, но также FP16 или BF16 в современных моделях) на более компактные форматы, такие как INT8. Это позволяет значительно сократить размер модели и часто повысить ее производительность на поддерживаемом оборудовании без критических потерь в точности.
Однако не вся квантизация одинаково эффективна. В этой статье мы разберем два подхода – простую пост-обучающую квантизацию и более продвинутый метод, называемый квантизацией с учетом обучения (QAT). Мы рассмотрим, как работает QAT, почему он дает лучшие результаты, и какие практические аспекты надо учесть при его внедрении.
Что такое квантизация?
Квантизация – это способ «упростить» числа, которые используются внутри нейросетей. Обычная модель работает с весами и активациями в формате FP32 (или FP16/BF16 в более современных случаях). Это числа с плавающей запятой высокой точности, но и «тяжелые» с точки зрения используемого объема данных.
Инфографика наглядно показывает эффект квантизации: модель в формате FP32 весит 487MB, тогда как та же модель после преобразования в формат INT8 занимает всего 168MB. Источник: .
Квантизация переводит эти числа в более компактный формат, например, INT8, то есть 8-битные целые числа. Это в четыре раза меньше по размеру, и такие данные можно обрабатывать быстрее на оборудовании с поддержкой целочисленных операций, особенно на простых устройствах вроде смартфонов, микроконтроллеров или ноутбуков. Однако ускорение не всегда гарантировано и зависит от аппаратного обеспечения, оптимизации рантайма и того, что именно квантизовано (веса, активации или оба).
Допустим, если раньше вес в модели выглядел как 0.75482945 (и занимал 32 бита), после квантизации он может быть представлен как просто 96 в диапазоне от -128 до 127. Важно отметить, что это не просто замена: квантизация обычно включает параметры масштабирования (scale) и сдвига (zero-point), которые позволяют восстановить приближенное значение во время вычислений. Без них интерпретация была бы невозможной. Да, такая замена немного упрощает данные и может чуть снизить точность, но в большинстве случаев это почти незаметно, особенно если использовать продвинутые методы вроде QAT.
Типы квантизации: какими бывают и в чем разница
Квантизацию можно реализовать двумя основными способами – после обучения модели или непосредственно в ходе ее обучения. У каждого подхода есть особенности, преимущества и ограничения. Более подробно рассмотрим их далее.
Пост-обучающая квантизация (PTQ)
Пост-обучающая квантизация – это метод, при котором квантизация нейросети выполняется уже после ее полного обучения. То есть сначала нейросеть обучается как обычно, используя стандартные числа с плавающей точкой (формат FP32 или FP16/BF16), а затем, уже без дообучения, происходит преобразование весов и/или активаций в более компактный формат, чаще всего INT8 – 8-битные целые числа.
Сравнение вычислений в нейросети до и после квантизации: слева операции с весами и активациями в формате FP32, справа — преобразованные в INT8 данные, что снижает объем и ускоряет свертки. Источник: .
Особенность PTQ заключается в том, что он обычно не требует повторного запуска полного тренировочного процесса. После обучения модель просто «пересобирается» в облегченном варианте. Это делает метод очень удобным: не нужен доступ к обучающему коду, и сам процесс занимает гораздо меньше времени по сравнению с методами, где квантизация учитывается уже во время тренировки. Однако для статической квантизации активаций часто требуется калибровочный прогон на небольшом репрезентативном наборе данных, чтобы собрать статистики диапазонов.
Эта простота делает PTQ популярным выбором в реальных проектах, особенно там, где нужно быстро оптимизировать уже готовую нейросеть. Он широко применяется для моделей, которые не слишком чувствительны к округлению и обрезке значений – например, для сверточных нейросетей (CNN), используемых в задачах классификации изображений, распознавания объектов и других устойчивых к ошибкам сценариях.
Однако за эту простоту приходится платить определенной потерей точности. В некоторых случаях, особенно если речь идет о сложных архитектурах, таких как трансформеры или модели генерации текста, квантизация без дообучения может вносить значимые искажения. Эти нейросети часто используют тонкие числовые различия в весах и активациях, и любые изменения формата могут нарушить их поведение.
Схема сравнивает два подхода к квантизации нейросетей: QAT (с дообучением) и PTQ (с калибровкой без обучения), оба начинаются с предобученной модели и ведут к уменьшенной версии. Источник: .
Еще один недостаток – это отсутствие адаптивности. Так как модель не «знает», что ее веса будут преобразованы, она не может к этому подготовиться или компенсировать изменения. Она продолжает использовать параметры, обученные в условиях высокой точности, что снижает устойчивость при переходе к новому представлению данных.
В итоге PTQ можно рассматривать как компромиссное решение: оно быстрое, удобное и не требует доступа к полному циклу обучения, но подходит в первую очередь для простых моделей или ситуаций, где небольшое падение точности допустимо. Для крупных языковых моделей (LLM) PTQ часто применяется в режиме weight-only (только веса, например, в 4-битном формате), в то время как полная квантизация (веса + активации) может требовать более сложных подходов.
Квантизация с учетом обучения (QAT)
Более сложный, но и более эффективный подход. В процессе обучения в модель добавляются специальные фиктивные (симулированные) квантизационные операции, которые имитируют работу модели в низкой точности еще до финального вывода.
Особенности QAT:
Веса и активации имитируют преобразование в INT8 (или другие форматы, такие как INT4) уже во время обучения;
Нейросеть «учится» работать с ограниченной точностью и адаптирует свои параметры под эти условия;
Значительно сокращается разрыв в точности между версией высокой точности и квантизованной моделью.
При использовании такого метода нейросеть часто позволяет сохранить значительную часть исходной точности (иногда до уровня, близкого к FP32, в зависимости от задачи и конфигурации). Технология хорошо подходит для сложных моделей и высокочувствительных задач, где качество критично. Кроме того, она дает надежный результат при использовании на целевых устройствах.
Недостатки у метода QAT тоже есть:
Требует повторного обучения модели с использованием специальных библиотек;
Увеличивает затраты по времени и ресурсам на этапе обучения (типичный порядок — на 20–50%, в зависимости от архитектуры и реализации);
Требует доступ к данным и тренировочному пайплайну.
Таким образом, QAT – это более ресурсоемкий, но и более точный способ квантизации, особенно полезный в тех случаях, когда критична точность работы модели при ограниченной мощности. Для LLM QAT оправдан, когда нужен fine-tuning для восстановления качества после квантизации, и часто сочетается с методами вроде QLoRA.
Что такое квантизация с учетом обучения?
Квантизация с учетом обучения – это современный метод оптимизации нейросетей, при котором модель не просто подвергается квантизации после завершения обучения, а осознанно обучается с имитацией условий низкой точности. Такой подход позволяет нейросети лучше адаптироваться к изменениям в представлении весов и активаций, возникающим при переходе с FP32 (или FP16/BF16) на INT8 или ниже.
В процессе обучения в архитектуру внедряются симулированные операции преобразования весов и активаций в низкоразрядный формат. Это дает ИИ-модели возможность «привыкнуть» к этим ограничениям заранее и компенсировать возможные потери точности.
Главные идеи QAT можно сформулировать следующим образом:
Не просто применять квантизацию в конце, как в PTQ, а встроить ее эффекты прямо в тренировку;
Дать модели шанс подстроить веса и распределения выходов так, чтобы они были устойчивы к округлениям и обрезке значений при преобразовании.
QAT особенно полезен при работе с чувствительными архитектурами – трансформерами, LLM, рекуррентными сетями, где обычная пост-обучающая квантизация может привести к ошибкам.
Как работает QAT
Технически QAT реализуется через фиктивные (или симулированные) операции квантизации, которые вставляются в модель во время обучения. Они не изменяют реальные данные на низкоразрядные числа, но имитируют округление и обрезку значений в точности, как если бы это была настоящая квантизация. Потоки градиентов аппроксимируются (часто с помощью Straight-Through Estimator, STE), что важно для обратного распространения ошибки, позволяя продолжать обучение.
Процесс включает:
Добавление FakeQuantize-операций в граф модели – они округляют значения до нужной разрядности при прямом проходе;
Сохранение градиентов в формате высокой точности во время обратного прохода с аппроксимацией – это позволяет продолжать обучение;
Постепенное привыкание модели к шуму, вносимому квантизацией, и адаптация весов к этому искаженному представлению.
Такой подход требует больше ресурсов при обучении, но в итоге выдает модель, почти не теряющую точности даже при переводе на INT8 или более компактные форматы, такие как INT4.
QAT интегрируется в большинство современных фреймворков машинного обучения, таких как TensorFlow и PyTorch, что делает его доступным и для промышленных решений, и для науки.
Преимущества QAT
Квантизация с учетом обучения применяется тогда, когда критически важно сохранить точность модели при ее оптимизации под ограниченные вычислительные ресурсы. Рассмотрим ее плюсы.
Улучшенная точность
Большое достоинство QAT – минимальные потери в точности по сравнению с оригинальной, неквантизованной моделью. Там, где пост-обучающая квантизация может привести к заметному падению качества (особенно в задачах классификации, распознавания речи или генерации текста), QAT дает возможность сохранить значительную часть точности (иногда до уровня, близкого к исходному, в зависимости от задачи).
Почему это работает:
Нейросеть адаптирует свои веса под условия ограниченной точности;
Ошибки, возникающие при округлении и обрезке значений, компенсируются уже в ходе обучения;
Поведение модели приближено к реальному поведению при инференсе, что исключает «сюрпризы» на стадии развертывания.
Это особенно важно в случаях, где качество критично – медицинский искусственный интеллект, автономные системы, голосовые ассистенты.
Высокая производительность
Модели, прошедшие квантизацию с помощью QAT, подходят для запуска на устройствах с ограниченными вычислительными ресурсами. Это смартфоны, планшеты, IoT-устройства, встраиваемые системы и даже микроконтроллеры. Так как модель уже обучена работать в условиях низкой точности, она эффективно использует аппаратные ресурсы.
Преимущества на практике:
Меньший объем памяти: INT8-модель в 4 раза компактнее FP32;
Меньшее энергопотребление – выше автономность устройств;
Увеличение скорости инференса: целочисленные операции выполняются быстрее на поддерживаемом железе.
Таким образом, QAT – это не просто способ сохранить точность, но и инструмент, позволяющий реально внедрять нейросети в устройства, где раньше это было невозможно или неэффективно.
Реализация QAT
Реализация квантизации с учетом обучения требует определенной подготовки модели и тренировочного конвейера. Однако современные фреймворки машинного обучения предлагают удобные средства для внедрения этого метода – без необходимости переписывать архитектуру модели с нуля. Центральным элементом QAT является фиктивная квантизация – имитация операций округления и обрезки значений в процессе обучения.
Фиктивная квантизация
Фиктивная квантизация – это основа подхода QAT, которая позволяет обучать ИИ так, словно она уже работает в условиях пониженной точности, но при этом сохраняет точность вычислений, необходимую для эффективного обучения.
Диаграмма показывает, как работает квантизация весов нейросети в процессе обучения с помощью QAT. Источник: .
Главная цель этой техники – имитировать квантизацию еще в процессе обучения, чтобы модель заранее научилась справляться с возникающими ошибками округления и потерь точности.
Механизм работы фиктивной квантизации заключается в том, что во время прямого прохода, то есть при расчете выходов модели на основе входных данных, значения весов и активаций преобразуются в условные целочисленные аналоги.
Это не настоящая квантизация, а симуляция: данные округляются и ограничиваются, как если бы они действительно были записаны в формате INT8. Таким образом, модель видит искажения, которые возникнут при реальной квантизации, и учится с ними работать на стадии обучения.
Однако, чтобы не нарушать процесс обучения, обратное распространение ошибки – то есть расчет градиентов – происходит не с округленными значениями, а с оригинальными высокоточными (FP32). Это позволяет сохранять стабильность оптимизации и не терять информацию при обновлении весов.
Применений у фиктивной квантизации много. В одних случаях ее используют глобально – ко всем слоям модели. В других – выборочно, только к тем слоям, которые больше всего влияют на производительность или чувствительны к снижению точности. Обычно это линейные и сверточные слои, так как именно они несут основную нагрузку по вычислениям и дают наибольший выигрыш при квантизации. Нормализации (LayerNorm/BatchNorm), softmax и некоторые нелинейности часто оставляют в более высокой точности (FP16/FP32) или квантизуют особыми схемами.
Интеграция с конвейерами обучения
Современные инструменты, такие как TensorFlow и PyTorch, предоставляют встроенные модули и API для реализации QAT без глубокого вмешательства в структуру модели. Это позволяет быстро интегрировать квантизацию в существующие пайплайны обучения.
Возможности фреймворков:
TensorFlow (через tfmot – TensorFlow Model Optimization Toolkit). Включает готовые обертки для фиктивной квантизации, методы подготовки модели и инструменты для экспорта в TFLite;
PyTorch (через torch.ao.quantization или более актуальный torchao). Поддерживает QAT через prepare_qat, convert, а также работу с QConfig, позволяющим тонко настраивать поведение квантизации;
ONNX Runtime, TensorRT, OpenVINO, поддерживают экспорт квантизованных ИИ для использования на производственных устройствах.
Интеграция QAT в рабочий процесс требует времени на настройку, но значительно упрощается благодаря поддержке на уровне фреймворков. Это делает QAT практичным инструментом даже для небольших команд и отдельных разработчиков.
Примеры использования QAT
Квантизация с учетом обучения доказала эффективность не только в теории, но и на практике – в реальных проектах, от компьютерного зрения до языковых моделей. Она позволяет запускать нейросети на оборудовании с ограниченными ресурсами, сохраняя приемлемую точность и скорость. Ниже приведены примеры применения QAT и результаты, которых удалось достичь.
Улучшения производительности
Одним из заметных кейсов применения QAT стали оптимизации крупных языковых моделей, таких как LLaMA* 3. Эти модели чрезвычайно чувствительны к квантизации, и простое снижение разрядности без обучения обычно приводит к резкому снижению качества генерации текста.
Примеры улучшений:
В LLaMA* 3 QAT может позволить уменьшить модель до 1/4 размера с заметным улучшением качества по сравнению с PTQ, хотя итоговые потери в перплексии зависят от конфигурации;
В мобильных NLP-приложениях QAT помогает использовать трансформеры на устройствах без выделенного GPU, поддерживая приемлемую производительность;
Для моделей распознавания речи QAT обеспечивает стабильную точность при работе в реальном времени на устройствах с ARM-процессорами.
Таким образом, QAT важен для переноса сложных моделей из дата-центров на локальные устройства.
Применение квантизации QAT
Квантизация с учетом обучения применяется в широком спектре задач и архитектур – от компактных сверточных нейросетей до масштабных трансформеров. Она особенно актуальна там, где важно соблюдать баланс между точностью и ограничениями по ресурсам. Для LLM QAT часто используется для full-квантизации (веса + активации в INT8), в отличие от weight-only PTQ в более низких битах (INT4/2-bit).
Ключевые области применения:
CNN для задач компьютерного зрения на мобильных телефонах, дронов, систем видеонаблюдения. Примеры: классификация изображений, детекция объектов, сегментация.
LLM. Использование на edge-устройствах, автономных ассистентах, оффлайн-приложениях с генерацией текста или анализа запросов.
IoT-устройства. Запуск моделей на микроконтроллерах для анализа сенсорных данных, видео, аудио с минимальным энергопотреблением.
QAT позволяет адаптировать модели к аппаратным ограничениям без компромисса между точностью и производительностью. Это делает технологию ценной в мобильной разработке.
Проблемы и соображения
Несмотря на преимущества квантизации с учетом обучения, ее внедрение сопровождается рядом технических и организационных сложностей. Это особенно важно учитывать при планировании разработки и развертывания моделей, особенно в условиях ограниченных ресурсов и сроков.
Сложность обучения
Одним из главных препятствий для внедрения QAT является рост вычислительных затрат. Добавление фиктивных операций квантизации увеличивает время тренировки, а также требует больше оперативной памяти и вычислительных ресурсов.
Что это означает на практике:
Время обучения модели может увеличиваться на 20–50% в зависимости от используемой архитектуры и реализации;
При использовании больших наборов данных нагрузка на GPU или TPU может существенно возрасти;
Модели становятся сложнее для отладки, поскольку квантизационные артефакты влияют на стабильность градиентов.
Эти факторы делают QAT менее подходящим для экспресс-прототипирования или работы с ограниченной инфраструктурой. Однако в перспективе дополнительные усилия окупаются за счет устойчивости и качества квантизованной модели.
Выбор параметров квантизации
Еще один важный аспект – грамотная настройка параметров квантизации, особенно битовой глубины. Неправильно выбранный формат может либо ухудшить точность, либо не дать нужного выигрыша в производительности.
Основные параметры, подлежащие настройке:
Разрядность весов и активаций. Стандарт – INT8, но для некоторых моделей можно использовать INT4, FP16 или смешанные форматы.
Диапазон квантизации. Задает, как реальные значения сопоставляются целочисленным представлениям.
Метод округления. Например, «ближайшее целое» или «с обрезкой» – влияет на характер ошибки.
Переменная или фиксированная квантизация. Разные слои модели могут требовать разных схем.
Выбор параметров – это компромисс между точностью и эффективностью. В большинстве случаев требуется эмпирическая настройка с тестированием на валидационном наборе данных, особенно для сложных или нестандартных архитектур.
Инфографика с кратким сравнением пяти типов квантизации нейросетей: PTQ, QAT, Dynamic, Static и Weight-Only — с их преимуществами, ограничениями и условиями применения. Источник: .
Таким образом, успешное внедрение QAT требует технической подготовки, понимания специфики модели и доступности ресурсов. Но при правильной настройке технология обеспечивает отличные результаты для вывода моделей в условиях ограниченных вычислительных возможностей.
Заключение
Квантизация с учетом обучения (QAT) представляет собой один из наиболее эффективных подходов к оптимизации нейросетей для работы в условиях ограниченных ресурсов. Она позволяет модели сохранить значительную часть своей исходной точности.
С другой стороны, этот подход требует дополнительных вычислительных ресурсов и времени: тренировка нейросетей становится более сложной, увеличивается объем памяти и нагрузка на оборудование. Кроме того, реализация требует внимательной настройки параметров квантизации, включая разрядность, диапазоны значений и метод округления.
Несмотря на эти сложности, QAT – это надежный способ получения высокой точности при максимальной эффективности. Он особенно полезен в задачах, где нельзя позволить себе заметное падение качества, но нужна компактная и производительная модель для использования вне дата-центров.
*LLAMA — проект Meta Platforms Inc.**, деятельность которой в России признана экстремистской и запрещена.
**Деятельность Meta Platforms Inc. в России признана экстремистской и запрещена.
Сейчас тут ничего нет. Ваш комментарий может стать первым.
Скидка 1 500 ₽ или бесплатная доставка - уже сейчас 🔥
Мы ценим обратную связь от клиентов. При оформлении заказа вы можете сообщить о своём намерении поделиться впечатлением о работе ServerFlow после получения товара.
* - скидка предоставляется при покупке от 30 000 рублей, в ином случае предусмотрена бесплатная доставка до ПВЗ СДЭК.
Продолжная использовать наш сайт, вы даете согласие на использование файлов Cookie, пользовательских данных (IP-адрес, вид операционной системы, тип браузера, сведения о местоположении, источник, откуда пришел на сайт пользователь, с какого сайта или по какой рекламе, какие страницы
открывает и на какие страницы нажимает пользователь) в целях функционирования сайта, проведения статистических исследований и обзоров. Если вы не хотите, чтобы ваши данные обрабатывались, покиньте сайт.
При оформлении заказа в ServerFlow вы можете сообщить о намерении оставить отзыв о нашей работе после получения товара.
Нам важно ваше честное мнение. Оно помогает развивать сервис и даёт другим клиентам представление о нашей работе.
Вы можете оставить отзыв на удобной для вас платформе:
Google Maps
2GIS
Яндекс Карты
Как работает акция
Применяя промокод, вы подтверждаете намерение поделиться впечатлением о работе ServerFlow после получения заказа. Мы применяем бонус уже к текущему заказу в знак благодарности за обратную связь.
Условия акции:
скидка 1 500 ₽ при заказе от 30 000 ₽
или бесплатная доставка* при заказе до 30 000 ₽
* Бесплатная доставка заказа осуществляется до ПВЗ СДЭК.