Квантование модели - важнейшая техника оптимизации модели, используемая в глубоком обучении (ГОО) для снижения затрат на вычисления и память моделей. Она достигается за счет преобразования числовой точности параметров модели(весов и активаций) из представлений с высокой точностью, обычно 32-битных чисел с плавающей точкой(FP32), в форматы с более низкой точностью, такие как 16-битные числа с плавающей точкой (FP16), 8-битные целые числа (INT8) или даже более низкие битовые представления. Этот процесс делает модели меньше, быстрее и энергоэффективнее, что особенно важно для развертывания сложных моделей в средах с ограниченными ресурсами, таких как мобильные устройства или пограничные системы ИИ.
Как работает квантование моделей
По своей сути квантование модели подразумевает преобразование диапазона значений, содержащихся в тензорах высокой точности (например, весов и активаций в FP32), в меньший диапазон, представляемый типами данных с более низкой точностью (например, INT8). Это преобразование значительно сокращает объем памяти, необходимой для хранения модели, и вычислительную мощность, необходимую для вывода, так как операции с числами меньшей точности (особенно целыми) часто выполняются быстрее и более энергоэффективны на современном оборудовании, таком как графические процессоры и специализированные ускорители вроде TPU.
Преимущества квантования моделей
Применение квантования в моделях глубокого обучения дает несколько ключевых преимуществ:
- Уменьшение размера модели: Более низкая точность требует меньшего количества битов на параметр, что значительно уменьшает объем памяти модели. Это выгодно для обновлений по воздуху и устройств с ограниченным объемом памяти.
- Более высокая скорость вычислений: Вычисления с числами меньшей точности, особенно целочисленная арифметика, как правило, выполняются быстрее на совместимом оборудовании, что приводит к уменьшению задержки в выводах.
- Более низкое энергопотребление: Уменьшение количества обращений к памяти и более простые вычисления приводят к снижению энергопотребления, что крайне важно для краевых устройств с питанием от батарей.
- Улучшенная развертываемость: Обеспечивает развертывание больших, сложных моделей, таких как Ultralytics YOLO на оборудовании с ограниченными вычислительными ресурсами, таком как микроконтроллеры или пограничные TPU.
Техники квантования
Существует два основных подхода к квантованию моделей:
- Посттренировочное квантование (PTQ): Этот метод предполагает квантование уже обученной модели с использованием стандартной точности плавающей точки. Его проще реализовать, так как он не требует переобучения, но иногда он может привести к заметному снижению точности модели. Для минимизации потери точности часто используется калибровка на репрезентативном наборе данных.
- Обучение с учетом квантования (Quantization-Aware Training, QAT): QAT имитирует эффект квантования в процессе обучения. Модель учится адаптироваться к более низкой точности, что обычно приводит к более высокой точности по сравнению с PTQ, хотя для этого требуется доступ к исходному обучающему конвейеру и данным.
Применение в реальном мире
Квантование моделей широко используется в различных областях:
- Мобильные вычисления: Позволяет реализовать сложные функции ИИ, такие как обнаружение объектов в реальном времени для фильтров камеры, классификация изображений и обработка естественного языка, прямо на смартфонах, не прибегая к облачным вычислениям. Такие фреймворки, как TensorFlow Lite, в значительной степени используют квантование.
- Автономные транспортные средства: Квантованные модели позволяют быстрее обрабатывать данные датчиков (камер, LiDAR) для таких задач, как обнаружение пешеходов, соблюдение полосы движения и распознавание дорожных знаков, что крайне важно для принятия решений в реальном времени в системах автономного вождения. Ultralytics предлагает различные варианты развертывания моделей, подходящие для таких приложений.
Соображения и связанные с ними концепции
Хотя квантование очень полезно, оно может потенциально повлиять на точность модели. После квантования необходимо провести тщательную оценку с использованием соответствующих показателей производительности. Такие приемы, как использование архитектур моделей, дружественных к квантованию (например, замена определенных функций активации, как в YOLO), могут помочь смягчить ухудшение точности, как это обсуждалось при развертывании квантованных моделей YOLOv8 .
Квантование модели - это одна из нескольких техник оптимизации модели. Другие включают в себя:
- Обрезка модели: Удаляй менее важные веса или связи, чтобы уменьшить сложность модели.
- Смешанная точность: Использование комбинации FP16 и FP32 во время обучения или вывода для баланса между скоростью/памятью и точностью.
- Дистилляция знаний: Обучи меньшую модель "ученика", чтобы она имитировала вывод большей, предварительно обученной модели "учителя".
Ultralytics поддерживает экспорт моделей в различные форматы, облегчающие квантование, включая ONNX, OpenVINO, TensorRT, CoreMLи TFLite, что позволяет эффективно развертывать модели на различных аппаратных платформах. Ты можешь управлять и разворачивать свои модели, включая квантованные версии, с помощью таких инструментов, как Ultralytics HUB.