Логотип Зефирнет

Глубокое погружение в квантование модели для крупномасштабного развертывания

Дата:

Введение

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

Квантование модели

Обучение с учетом квантования становится убедительным ответом. Он легко интегрирует квантование в процесс обучения модели, позволяя значительно уменьшить размер модели, иногда в два-четыре раза и более, сохраняя при этом критическую точность. В этой статье подробно рассматривается квантование, сравнивается квантование после обучения (PTQ) и обучение с учетом квантования (QAT). Кроме того, мы предоставляем практические идеи, демонстрируя, как оба метода могут быть эффективно реализованы с помощью SuperGradients, учебной библиотеки с открытым исходным кодом, разработанной Deci.

Кроме того, мы изучаем оптимизацию Сверточные нейронные сети (CNN) для мобильных и встроенных платформ, решая уникальные проблемы размера и вычислительных требований. Мы фокусируемся на квантовании, изучая роль представления чисел в оптимизации моделей для мобильных и встроенных платформ.

Цели обучения

  • Понять концепцию квантования модели в ИИ.
  • Узнайте о типичных уровнях квантования и их компромиссах.
  • Различают обучение с учетом квантования (QAT) и квантование после обучения (PTQ).
  • Узнайте о преимуществах квантования модели, включая эффективность использования памяти и экономию энергии.
  • Узнайте, как квантование модели обеспечивает более широкое развертывание моделей ИИ.

Эта статья была опубликована в рамках Блогатон по Data Science.

Содержание

Понимание необходимости квантования модели

Необходимость квантования модели

Квантование модели, фундаментальный метод глубокого обучения, направлено на решение важнейших проблем, связанных с размером модели, скоростью вывода и эффективностью памяти. Это достигается путем преобразования весов модели из представлений с плавающей запятой высокой точности, обычно 32-битных (FP32), в форматы с плавающей запятой (FP) или целых чисел (INT) более низкой точности, например 16-битные или 8-битные. .

Преимущества квантования двоякие. Во-первых, это значительно уменьшает объем памяти модели и повышает скорость вывода, не вызывая существенного снижения точности. Во-вторых, он оптимизирует производительность модели за счет снижения требований к пропускной способности памяти и повышения эффективности использования кэша.

Представление INT8 часто в разговорной речи называют «квантованным» в контексте глубоких нейронных сетей, но в зависимости от аппаратной архитектуры также используются и другие форматы, такие как UINT8 и INT16. Различные модели требуют разных подходов к квантованию, часто требующих предварительных знаний и тщательной тонкой настройки, чтобы сбалансировать точность и уменьшение размера модели.

Квантование создает проблемы, особенно с целочисленными форматами низкой точности, такими как INT8, из-за их ограниченного динамического диапазона. Сжатие обширного динамического диапазона FP32 всего лишь до 255 значений INT8 может привести к потере точности. Чтобы смягчить эту проблему, поканальное или послойное масштабирование корректирует масштаб и значения нулевой точки весовых и активационных тензоров, чтобы лучше соответствовать квантованному формату.

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

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

Методы квантования модели

Уровень квантования

Квантование преобразует веса и активации модели с плавающей запятой высокой точности в значения с фиксированной запятой более низкой точности. «Уровень квантования» относится к количеству битов, представляющих эти значения с фиксированной точкой. Типичными уровнями квантования являются 8-битное, 16-битное и даже двоичное (1-битное) квантование. Выбор подходящего уровня квантования зависит от компромисса между точностью модели и эффективностью памяти, хранилища и вычислений.

Подробное обучение с учетом квантования (QAT)

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

  • Во время QAT модель обучается с учетом ограничений квантования. Эти ограничения включают моделирование типов данных низкой точности (например, 8-битных целых чисел) во время прямого и обратного проходов.
  • Используется функция потерь с учетом квантования, которая учитывает ошибку квантования, чтобы наказывать отклонения от поведения модели полной точности.
  • QAT помогает модели научиться справляться с потерей точности, вызванной квантованием, соответствующим образом корректируя ее веса и активации.

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

PTQ и QAT — это два разных подхода к квантованию модели, каждый из которых имеет свои преимущества и последствия.

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

Квантование после обучения (PTQ)

PTQ — это метод квантования, применяемый после того, как модель прошла полное обучение со стандартной точностью, обычно в представлении с плавающей запятой. В PTQ веса и активации модели квантуются в форматы более низкой точности, такие как 8-битные целые числа или 16-битные числа с плавающей запятой, чтобы уменьшить использование памяти и повысить скорость вывода. Хотя PTQ предлагает простоту и совместимость с ранее существовавшими моделями, это может привести к умеренной потере точности из-за преобразования после обучения.

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

QAT, с другой стороны, представляет собой более тонкий подход к квантованию. Он включает в себя точную настройку модели PTQ с учетом квантования. Во время QAT процесс квантования, включающий масштабирование, ограничение и округление, легко интегрируется в процесс обучения. Это позволяет явно обучить модель, чтобы она сохраняла свою точность даже после квантования. QAT оптимизирует веса модели для точной имитации квантования времени вывода. Во время обучения он использует «фальшивые» модули квантования, чтобы имитировать поведение фазы тестирования или вывода, где веса округляются или фиксируются до представлений с низкой точностью. Этот подход приводит к более высокой точности при выводе в реальном мире, поскольку модель с самого начала учитывает квантование.

Алгоритмы квантования

Существуют различные алгоритмы и методы квантования нейронных сетей. Некоторые стандартные методы квантования включают в себя:

  • Квантование веса включает в себя квантование весов модели до значений меньшей точности (например, 8-битных целых чисел). Весовое квантование может значительно уменьшить объем памяти модели.
  • Активационное квантование: Помимо квантования весов, во время вывода можно квантовать активации. Это еще больше снижает вычислительные требования и использование памяти.
  • Динамическое квантование: Вместо использования фиксированного масштаба квантования динамическое квантование позволяет динамически масштабировать диапазоны квантования во время вывода, помогая снизить потерю точности.
  • Обучение с учетом квантования (QAT): Как упоминалось ранее, QAT — это метод обучения, который включает ограничения квантования и позволяет модели научиться работать с данными более низкой точности.
  • Квантование смешанной точности: Этот метод сочетает в себе различную точность квантования для весов и активаций, оптимизируя точность и эффективность.
  • Квантование после обучения с калибровкой: При квантовании после обучения калибровка используется для определения диапазонов квантования весов и активаций, чтобы минимизировать потерю точности.

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

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

Преимущества квантования модели

  1. Более быстрый вывод: Квантовые модели быстрее развертываются и запускаются, что делает их идеальными для приложений реального времени, таких как распознавание голоса, обработка изображений и автономные транспортные средства. Пониженная точность позволяет выполнять вычисления быстрее, что приводит к снижению задержки.
  2. Снижение затрат на развертывание: Меньшие размеры моделей приводят к снижению требований к хранилищу и памяти, что значительно снижает стоимость развертывания решений искусственного интеллекта, особенно в облачных сервисах, где затраты на хранение и вычисления являются важными факторами.
  3. Повышенная доступность: Квантование позволяет развертывать ИИ на устройствах с ограниченными ресурсами, таких как смартфоны, устройства IoT и платформы периферийных вычислений. Это расширяет сферу применения ИИ для более широкой аудитории и открывает новые возможности для применения в отдаленных или слаборазвитых регионах.
  4. Улучшенная конфиденциальность и безопасность: Уменьшая размер моделей, квантование может облегчить обработку ИИ на устройстве, уменьшая необходимость отправки конфиденциальных данных на централизованные серверы. Это повышает конфиденциальность и безопасность за счет сведения к минимуму подверженности данных внешним угрозам.
  5. Воздействие на окружающую среду: Меньшие размеры моделей приводят к снижению энергопотребления, делая центры обработки данных и облачную инфраструктуру более энергоэффективными. Это помогает смягчить воздействие крупномасштабного внедрения ИИ на окружающую среду.
  6. Масштабируемость: Квантованные модели более доступны для распространения и развертывания, что позволяет эффективно масштабировать услуги ИИ для удовлетворения растущих потребностей пользователей и трафика без значительных инвестиций в инфраструктуру.
  7. Совместимость: Квантованные модели часто более совместимы с более широким спектром оборудования, что делает развертывание решений искусственного интеллекта на различных устройствах и платформах более доступным.
  8. Приложения реального времени: Уменьшенный размер модели и более быстрый вывод делают квантованные модели подходящими для приложений реального времени, таких как дополненная реальность, виртуальная реальность и игры, где низкая задержка имеет решающее значение для бесперебойного взаимодействия с пользователем.

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

Преимущества квантования модели

Примеры из реальной жизни

  • Здоровье: В секторе здравоохранения квантование моделей позволило развернуть решения для медицинской визуализации на базе искусственного интеллекта на периферийных устройствах. Портативные ультразвуковые аппараты и приложения для смартфонов теперь используют квантовые модели для диагностики заболеваний сердца и обнаружения опухолей. Это снижает потребность в дорогостоящем специализированном оборудовании и позволяет медицинским работникам ставить своевременную и точную диагностику в удаленных условиях или в условиях ограниченных ресурсов.
  • Автономные транспортные средства: Квантовые модели играют решающую роль в автономных транспортных средствах, где принятие решений в режиме реального времени является обязательным. Беспилотные автомобили могут эффективно работать на встроенном оборудовании за счет уменьшения размера моделей глубокого обучения для задач восприятия и управления. Это повышает безопасность, скорость реагирования и способность ориентироваться в сложных условиях, делая автономное вождение реальностью.
  • Обработка естественного языка (НЛП): В области НЛП квантованные модели позволили развернуть языковые модели на интеллектуальных колонках, чат-ботах и ​​мобильных устройствах. Это позволяет понимать и генерировать язык в режиме реального времени, делая голосовые помощники и приложения для языкового перевода более доступными и отзывчивыми на запросы пользователей.
  • Индустриальная автоматизация: Промышленная автоматизация использует квантовые модели для прогнозного обслуживания и контроля качества. Периферийные устройства, оснащенные квантованными моделями, могут отслеживать состояние оборудования и обнаруживать дефекты в режиме реального времени, сводя к минимуму время простоя и повышая эффективность производства на производственных предприятиях.
  • Розничная торговля и электронная коммерция: Розничные торговцы используют квантовые модели для управления запасами и взаимодействия с клиентами. Модели распознавания изображений в режиме реального времени, развернутые на камерах в магазинах, могут отслеживать наличие продуктов и оптимизировать планировку магазинов. Аналогичным образом, квантовые системы рекомендаций обеспечивают персонализированный опыт покупок на платформах электронной коммерции, повышая удовлетворенность клиентов и продажи.

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

Проблемы и соображения

При квантовании модели несколько важных проблем и соображений формируют ландшафт эффективного развертывания ИИ. Фундаментальная задача заключается в достижении хрупкого баланса между точностью и эффективностью. Агрессивное квантование, хотя и повышает эффективность использования ресурсов, может привести к значительной потере точности, что делает необходимым адаптировать подход к квантованию к конкретным требованиям приложения.

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

Компромиссы в точности

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

Проблемы обучения с учетом квантования

  • Общие проблемы, с которыми сталкиваются при внедрении QAT, и стратегии их преодоления: Мы устраняем препятствия, с которыми сталкиваются разработчики при интеграции обучения с учетом квантования (QAT) в процесс обучения модели. Мы также предоставляем информацию о стратегиях и передовом опыте решения этих проблем, обеспечивая успешное внедрение QAT.

Аппаратные ограничения

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

Обнаружение объектов в реальном времени на Raspberry Pi с использованием Quantized MobileNetV2

1: Настройка оборудования

Настройка оборудования
  • Представьте свою модель Raspberry Pi (например, Raspberry Pi 4).
  • Модуль камеры Raspberry Pi (или веб-камера USB для старых моделей)
  • Источник питания
  • Карта MicroSD с ОС Raspberry Pi.
  • Кабель HDMI, монитор, клавиатура и мышь (для первоначальной настройки)
  • Подчеркните необходимость развертывания облегченной модели на Raspberry Pi из-за ограничений ее ресурсов.

2: Установка программного обеспечения

  • Настройте Raspberry Pi с ОС Raspberry Pi (ранее Raspbian).
  • Установите Python и необходимые библиотеки:
sudo apt update
sudo apt install python3-pip
pip3 install opencv-python-headless
pip3 install opencv-python
pip3 install numpy
pip3 install tensorflow==2.7

3: Сбор и предварительная обработка данных

  • Соберите или получите доступ к набору данных для обнаружения объектов (например, набор данных COCO).
  • Маркировка интересующих объектов на изображениях с помощью таких инструментов, как LabelImg.
  • Преобразование аннотаций в необходимый формат (например, TFRecord) для TensorFlow.

4. Импортируйте необходимые библиотеки

import argparse # For command-line argument parsing
import cv2 # OpenCV library for computer vision tasks
import imutils # Utility functions for working with images and video
import numpy as np # NumPy for numerical operations
import tensorflow as tf # TensorFlow for machine learning and deep learning

5: Квантование модели

  • Квантуйте предварительно обученную модель MobileNetV2 с помощью TensorFlow:
import tensorflow as tf # Load the pre-trained model
model = tf.keras.applications.MobileNetV2(weights='imagenet', input_shape=(224, 224, 3)) # Quantize the model
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quantized_model = converter.convert() # Save the quantized model
with open('quantized_mobilenetv2.tflite', 'wb') as f: f.write(tflite_quantized_model)Step 5: Deployment and Real-time Inference

6: Анализ аргументов

  • «argparse» используется для анализа аргументов командной строки. Здесь он настроен на принятие пути к специально обученной модели, файлу меток и порогу достоверности.
# Parse command-line arguments
ap = argparse.ArgumentParser()
ap.add_argument("-m", "--model", required=True, help="path to your custom trained model")
ap.add_argument("-l", "--labels", required=True, help="path to your class labels file")
ap.add_argument("-c", "--confidence", type=float, default=0.2, help="minimum probability to filter weak detections")
args = vars(ap.parse_args())

7: Загрузка модели и этикетки

  • Код загружает специально обученную модель обнаружения объектов и метки классов.
# Load your custom-trained model and labels
print("[INFO] loading model...")
model = tf.saved_model.load(args["model"]) # Load the custom-trained TensorFlow model
with open(args["labels"], "r") as f: CLASSES = f.read().strip().split("n") # Load class labels from a file

8: Инициализация видеопотока

  • Он настраивает видеопоток, который захватывает кадры с камеры по умолчанию.
# Initialize video stream
print("[INFO] starting video stream...")
cap = cv2.VideoCapture(0) # Initialize the video stream (0 for the default camera)
fps = cv2.getTickFrequency()
start_time = cv2.getTickCount()

9: Цикл обнаружения объектов в реальном времени

  • Основной цикл захватывает кадры из видеопотока, выполняет обнаружение объектов с использованием пользовательской модели и отображает результаты в кадре.
  • Обнаруженные объекты отображаются в виде ограничивающих рамок с метками и оценками достоверности.
while True: # Read a frame from the video stream ret, frame = cap.read() frame = imutils.resize(frame, width=800) # Resize the frame for better processing speed # Perform object detection using the custom model detections = model(frame) # Loop over detected objects for detection in detections['detection_boxes']: # Extract bounding box coordinates startY, startX, endY, endX = detection[0], detection[1], detection[2], detection[3] # Draw bounding box and label on the frame label = CLASSES[0] # Replace with your class label logic confidence = 1.0 # Replace with your confidence score logic color = (0, 255, 0) # Green color for bounding box (you can change this) cv2.rectangle(frame, (startX, startY), (endX, endY), color, 2) text = "{}: {:.2f}%".format(label, confidence * 100) cv2.putText(frame, text, (startX, startY - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2) # Display the frame with object detection results cv2.imshow("Custom Object Detection", frame) key = cv2.waitKey(1) & 0xFF if key == ord("q"): break # Break the loop if 'q' key is pressed # Clean up
cap.release() # Release the video stream
cv2.destroyAllWindows() # Close OpenCV windows

10: Оценка производительности

  • Измерьте скорость вывода и использование ресурсов Raspberry Pi с помощью инструментов мониторинга времени и системы (htop).
  • Обсудите любые компромиссы между точностью и эффективностью, наблюдавшиеся в ходе проекта.

11: Заключение и выводы

  • Обобщите основные выводы и подчеркните, как квантование модели позволило обнаруживать объекты в реальном времени на устройстве с ограниченными ресурсами, таком как Raspberry Pi.
  • Подчеркните практичность этого проекта и его практические применения, такие как обнаружение объектов в камерах видеонаблюдения или робототехнике.

Выполнив эти шаги и используя предоставленный код Python, учащиеся смогут создать систему обнаружения объектов в реальном времени на Raspberry Pi, продемонстрировав преимущества квантования модели для эффективных приложений искусственного интеллекта на периферийных устройствах.

Заключение

Квантование модели — это ключевой метод, который глубоко влияет на ландшафт развертывания ИИ. Он расширяет возможности мобильных и периферийных устройств с ограниченными ресурсами, позволяя им эффективно запускать приложения искусственного интеллекта, а также повышает масштабируемость и экономическую эффективность облачных сервисов искусственного интеллекта. Влияние квантования отражается на всей экосистеме ИИ, делая ИИ более доступным, отзывчивым и экологически чистым.

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

Основные выводы

  • Квантование модели имеет жизненно важное значение для развертывания больших моделей искусственного интеллекта на устройствах с ограниченными ресурсами.
  • Уровни квантования, например 8-битные или 16-битные, уменьшают размер модели и повышают эффективность.
  • Обучение с учетом квантования (QAT) Обучение с учетом квантования позволяет количественно оценить обучение во время обучения.
  • Квантование после обучения (PTQ) упрощает, но может снизить точность, требуя тонкой настройки.
  • Выбор зависит от конкретных потребностей развертывания и баланса между точностью и эффективностью, что имеет решающее значение для устройств с ограниченными ресурсами.

Часто задаваемые вопросы

Вопрос 1. Что такое квантование модели в ИИ?

Ответ: Квантование модели в ИИ — это метод, который предполагает снижение точности весов и активаций модели нейронной сети. Он преобразует значения с плавающей запятой высокой точности в представления с фиксированной запятой или целочисленные представления с более низкой точностью, что делает модель более эффективной с точки зрения использования памяти и ускоряет выполнение.

Вопрос 2. Какие стандартные уровни квантования используются при квантовании модели?

Ответ: Общие уровни квантования включают 8-битное, 16-битное и двоичное (1-битное) квантование. Выбор уровня квантования зависит от баланса между точностью модели и эффективностью памяти/хранилища/вычислений, необходимой для конкретного приложения.

Вопрос 3. Чем обучение с учетом квантования отличается от квантования после обучения?

Ответ: QAT включает ограничения квантования во время обучения, позволяя модели адаптироваться к вычислениям с более низкой точностью. С другой стороны, PTQ квантует предварительно обученную модель после стандартного обучения, что потенциально требует тонкой настройки для восстановления утраченной точности.

Вопрос 4. Каковы преимущества использования квантования модели в ИИ?

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

Вопрос 5. Когда мне следует выбирать обучение с учетом квантования (QAT) вместо PTQ?

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

Материалы, показанные в этой статье, не принадлежат Analytics Vidhya и используются по усмотрению Автора.

Spot_img

Последняя разведка

Spot_img