Квантование модели - важнейшая техника оптимизации модели, используемая в глубоком обучении (ГОО) для снижения затрат на вычисления и память моделей. Она достигается за счет преобразования числовой точности параметров модели(весов и активаций) из представлений высокой точности, обычно 32-битных чисел с плавающей точкой(FP32), в форматы более низкой точности, такие как 16-битные числа с плавающей точкой (FP16), 8-битные целые числа(INT8) или даже более низкие битовые представления. Этот процесс делает модели машинного обучения меньше, быстрее и энергоэффективнее, что особенно важно для развертывания сложных моделей в средах с ограниченными ресурсами, таких как мобильные устройства или пограничные системы ИИ.
Как работает квантование моделей
По своей сути квантование модели подразумевает отображение диапазона значений, содержащихся в тензорах высокой точности (например, весов и активаций в FP32), на меньший диапазон, представляемый типами данных с более низкой точностью (например, INT8). Это преобразование значительно сокращает объем памяти, необходимой для хранения модели, и вычислительные ресурсы, необходимые для вывода, так как операции с числами меньшей точности (особенно целыми) часто выполняются быстрее и более энергоэффективны на современном оборудовании, таком как GPU, CPU и специализированные ускорители вроде TPU или NPU. Цель состоит в том, чтобы добиться такого прироста эффективности с минимальным влиянием на прогностическую производительность модели.
Преимущества квантования моделей
Применение квантования в моделях глубокого обучения дает несколько ключевых преимуществ:
- Уменьшение размера модели: Типы данных с меньшей точностью требуют меньше места для хранения, поэтому модели легче хранить и распространять, особенно при развертывании на устройствах.
- Более высокая скорость вычислений: Вычисления с числами меньшей точности (в частности, с целыми числами) выполняются быстрее на совместимом оборудовании, что уменьшает задержку в выводах. Это очень важно для приложений реального времени.
- Улучшенная энергоэффективность: Более быстрые вычисления и уменьшение количества обращений к памяти приводят к снижению энергопотребления, продлевая время автономной работы мобильных и граничных устройств.
- Улучшенная аппаратная совместимость: Многие специализированные аппаратные ускорители(Edge TPU, NPU на процессорах ARM) оптимизированы для целочисленной арифметики низкой точности, что позволяет значительно увеличить производительность квантованных моделей.
Техники квантования
Существует два основных подхода к квантованию моделей:
- Посттренировочное квантование (PTQ): Этот метод предполагает квантование уже обученной модели с использованием стандартной точности плавающей точки. Он более прост в реализации, так как не требует переобучения или доступа к исходным обучающим данным. Однако иногда это может привести к заметному снижению точности модели. Такие инструменты, как TensorFlow Model Optimization Toolkit, предоставляют возможности PTQ.
- Обучение с учетом квантования (Quantization-Aware Training, QAT): Эта техника имитирует эффект квантования в процессе обучения модели. Благодаря тому, что модель "знает" о предстоящем снижении точности, QAT часто достигает лучшей точности по сравнению с PTQ, особенно для моделей, чувствительных к квантованию, хотя это требует изменения рабочего процесса обучения и доступа к обучающим данным. PyTorch предлагает поддержку QAT.
Применение в реальном мире
Квантование моделей широко используется в различных областях:
- Мобильные приложения для зрения: Сложные задачи компьютерного зрения, такие как обнаружение объектов в реальном времени (например, с помощью квантованной модели Ultralytics YOLO ) или сегментация изображений непосредственно на смартфонах для таких приложений, как дополненная реальность, редактирование фотографий или визуальный поиск. Квантование делает эти требовательные модели выполнимыми на мобильном оборудовании.
- Автономные транспортные средства и робототехника: Развертывание моделей восприятия (для обнаружения пешеходов, транспортных средств, препятствий) в автомобилях или беспилотниках, где низкая задержка и энергоэффективность имеют первостепенное значение для безопасности и выносливости. Квантованные модели помогают удовлетворить эти строгие требования к обработке данных в реальном времени.
- Устройства краевого ИИ: Запускай модели ИИ для таких задач, как обнаружение дефектов в промышленности, автоматизация умного дома или мониторинг здоровья носимых устройств, на маломощных микроконтроллерах или специализированных граничных процессорах.
Соображения и связанные с ними концепции
Хотя квантование очень полезно, оно может потенциально повлиять на точность модели. После квантования необходима тщательная оценка с использованием соответствующих показателей производительности. Такие приемы, как использование архитектур моделей, дружественных к квантованию (например, замена определенных функций активации, как в YOLO), могут помочь смягчить ухудшение точности, как это обсуждалось при развертывании квантованных моделей YOLOv8 .
Квантование модели - это одна из нескольких техник оптимизации модели. Другие включают в себя:
- Обрезка модели: Удаление лишних или неважных связей (весов) в нейронной сети.
- Смешанная точность: Использование комбинации различных численных точностей (например, FP16 и FP32) во время обучения или вывода.
- Дистилляция знаний: Обучи меньшую модель "ученика" подражать поведению большей, предварительно обученной модели "учителя".
Ultralytics поддерживает экспорт моделей в различные форматы, которые облегчают квантование и развертывание, включая ONNX, OpenVINO (оптимизированный для аппаратного обеспеченияIntel ), TensorRT (для графических процессоровNVIDIA ), CoreML (для устройств Apple) и TFLite, что позволяет эффективно развертывать модели на различных аппаратных платформах. Ты можешь управлять и разворачивать свои модели, включая квантованные версии, с помощью таких инструментов, как Ultralytics HUB. Интеграции, такие как Neural Magic также используют квантование для оптимизации работы CPU .