Model Quantization
Узнай, как квантование моделей оптимизирует Ultralytics YOLO26 для периферийного ИИ. Познакомься с уменьшением потребления памяти, снижением задержки и экспортом моделей INT8 для более быстрого вывода.
Квантование модели — это сложный метод оптимизации модели, используемый для снижения вычислительных затрат и требований к памяти при запуске моделей глубокого обучения. В стандартных процессах обучения нейронные сети обычно хранят параметры (веса и смещения) и карты активации в виде 32-битных чисел с плавающей запятой (FP32). Хотя такая высокая точность обеспечивает корректность вычислений во время обучения, для инференса она часто избыточна. Квантование преобразует эти значения в форматы с меньшей точностью, например 16-битные числа с плавающей запятой (FP16) или 8-битные целые числа (INT8), эффективно уменьшая размер модели и ускоряя выполнение без существенного снижения точности.
Почему квантование важно#
Основная причина применения квантования — необходимость развертывать мощный ИИ на оборудовании с ограниченными ресурсами. По мере усложнения моделей компьютерного зрения, таких как YOLO26, растут и требования к вычислительным ресурсам. Квантование устраняет три критических узких места:
- Объем памяти: уменьшение разрядности весов (например, с 32 до 8 бит) сокращает требуемый объем хранилища модели до 4 раз. Это особенно важно для мобильных приложений, где размер приложения ограничен.
- Задержка инференса: операции с меньшей точностью требуют меньше вычислительных ресурсов. Современные процессоры, особенно оснащенные специализированными нейронными процессорами (NPUs), могут выполнять операции INT8 значительно быстрее, чем операции FP32, существенно сокращая задержку инференса.
- Энергопотребление: передача меньшего объема данных через память и выполнение более простых арифметических операций требуют меньше энергии, что увеличивает время работы от аккумулятора портативных устройств и автономных транспортных средств.
Сравнение со связанными концепциями#
Важно отличать квантование от других методов оптимизации, поскольку они по-разному изменяют модель:
- Квантование и прореживание: квантование уменьшает размер файла за счет снижения разрядности параметров, а прореживание модели предполагает полное удаление ненужных связей (весов) для создания разреженной сети. Прореживание изменяет структуру модели, тогда как квантование изменяет представление данных.
- Квантование и дистилляция знаний: дистилляция знаний — это метод обучения, при котором небольшая модель-«ученик» учится имитировать большую модель-«учителя». После дистилляции к модели-«ученику» часто применяют квантование, чтобы дополнительно повысить производительность периферийного ИИ.
Практические применения#
Квантование обеспечивает применение компьютерного зрения и ИИ в различных отраслях, где эффективность имеет первостепенное значение.
-
Автономные системы: в автомобильной отрасли беспилотные автомобили должны обрабатывать визуальные данные с камер и LiDAR в реальном времени. Квантованные модели, развернутые на движках NVIDIA TensorRT, позволяют этим автомобилям обнаруживать пешеходов и препятствия с задержкой в миллисекунды, обеспечивая безопасность пассажиров.
-
Умное сельское хозяйство: дроны с мультиспектральными камерами используют квантованные модели обнаружения объектов для выявления болезней сельскохозяйственных культур или мониторинга этапов их роста. Локальный запуск этих моделей на встроенных системах дрона устраняет необходимость в ненадежном подключении к сотовой сети в удаленных сельскохозяйственных районах.
Реализация квантования с помощью Ultralytics#
Библиотека Ultralytics упрощает процесс экспорта, позволяя разработчикам преобразовывать такие модели, как передовая YOLO26, в квантованные форматы. Платформа Ultralytics также предоставляет инструменты для удобного управления такими развертываниями.
В следующем примере показано, как экспортировать модель в TFLite с включенным квантованием INT8. Этот процесс включает этап калибровки, на котором модель анализирует образцы данных, чтобы определить оптимальный динамический диапазон для квантованных значений.
from ultralytics import YOLO
# Load a standard YOLO26 model
model = YOLO("yolo26n.pt")
# Export to TFLite format with INT8 quantization
# The 'int8' argument triggers Post-Training Quantization
# 'data' provides the calibration dataset needed for mapping values
model.export(format="tflite", int8=True, data="coco8.yaml")Оптимизированные модели часто развертываются с использованием совместимых стандартов, таких как ONNX, или высокопроизводительных движков инференса, таких как OpenVINO, что обеспечивает широкую совместимость с различными аппаратными экосистемами.









