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

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

Введение

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

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

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

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

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

Эта статья была опубликована в рамках Блогона Дата Сайэнс.

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

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

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

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

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

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

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

Техники квантования модели

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

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

Тренировка с учетом квантования (QAT) в деталях

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

  • Во время QAT модель тренируется с ограничениями на квантование. Эти ограничения включают моделирование данных низкой точности (например, 8-битных целых чисел) во время прямого и обратного проходов.
  • Используется специальная функция потерь, учитывающая ошибку квантования и штрафующая отклонения от поведения модели с полной точностью.
  • 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. Большая доступность: Квантование позволяет развертывать искусственный интеллект на устройствах с ограниченными ресурсами, таких как смартфоны, устройства Интернета вещей и платформы для краевых вычислений. Это расширяет возможности использования искусственного интеллекта и открывает новые возможности для применения в удаленных или недоразвитых районах.
  4. Улучшенная конфиденциальность и безопасность: За счет снижения размера моделей квантование может облегчить обработку искусственного интеллекта на устройствах, минимизируя необходимость отправки конфиденциальных данных на централизованные серверы. Это повышает уровень конфиденциальности и безопасности, минимизируя риск утечки данных внешним угрозам.
  5. Экологический эффект: Более низкий размер модели приводит к снижению энергопотребления, делая центры обработки данных и облачную инфраструктуру более энергоэффективными. Это помогает смягчить экологический ущерб от масштабного развертывания искусственного интеллекта.
  6. Масштабируемость: Квантованные модели легче распространять и развертывать, позволяя эффективно масштабировать услуги искусственного интеллекта, чтобы удовлетворить возрастающие потребности пользователей и трафика без значительных инвестиций в инфраструктуру.
  7. Совместимость: Квантованные модели часто более совместимы с широким спектром аппаратных средств, что облегчает развертывание искусственного интеллекта на различных устройствах и платформах.
  8. Приложения в режиме реального времени: Сниженный размер модели и более быстрая обработка делают квантованные модели подходящими для приложений в реальном времени, таких как дополненная реальность, виртуальная реальность и игры, где низкая задержка является ключевым фактором для бесперебойного пользовательского опыта.

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

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

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

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

Испытания и соображения

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

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

Торговые условия точности

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

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

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

Ограничения оборудования

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

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

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

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

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

  • Настройте Raspberry Pi с Raspberry Pi OS (ранее Raspbian).
  • Установите Python и необходимые библиотеки:
sudo apt updatesudo apt install python3-pippip3 install opencv-python-headlesspip3 install opencv-pythonpip3 install numpypip3 install tensorflow==2.7

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

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

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

import argparse  # Для анализа аргументов командной строкиimport cv2  # библиотека OpenCV для задач компьютерного зренияimport imutils  # Утилиты для работы с изображениями и видеоimport numpy as np  # NumPy для числовых операцийimport tensorflow as tf  # TensorFlow для машинного обучения и глубокого обучения

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

  • Квантование предварительно обученной модели MobileNetV2 с помощью TensorFlow:
import tensorflow as tf# Загрузка предварительно обученной моделиmodel = tf.keras.applications.MobileNetV2(weights='imagenet', input_shape=(224, 224, 3))# Квантование моделиconverter = tf.lite.TFLiteConverter.from_keras_model(model)converter.optimizations = [tf.lite.Optimize.DEFAULT]tflite_quantized_model = converter.convert()# Сохранение квантованной моделиwith open('quantized_mobilenetv2.tflite', 'wb') as f:    f.write(tflite_quantized_model)Шаг 5: Развертывание и вывод в реальном времени

6: Разбор аргументов

  • «argparse» используется для разбора аргументов командной строки. Здесь он настроен для принятия пути к пользовательской модели, к файлу с метками и порогу уверенности.
# Разбор аргументов командной строкиap = argparse.ArgumentParser()ap.add_argument("-m", "--model", required=True,    help="путь к вашей пользовательской модели")ap.add_argument("-l", "--labels", required=True,    help="путь к файлу с классами меток")ap.add_argument("-c", "--confidence", type=float, default=0.2,    help="минимальная вероятность для фильтрации слабых обнаружений")args = vars(ap.parse_args())

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

  • Код загружает пользовательскую модель обнаружения объектов и классы меток.
# Загрузка пользовательской модели и метокprint("[INFO] загрузка модели...")model = tf.saved_model.load(args["model"])  # Загрузка пользовательской модели TensorFlowwith open(args["labels"], "r") as f:    CLASSES = f.read().strip().split("\\n")  # Загрузка классов меток из файла

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

  • Настройка видеопотока, который захватывает кадры с камеры по умолчанию.
# Инициализация видеопотокапrint("[INFO] запуск видеопотока...")cap = cv2.VideoCapture(0)  # Инициализация видеопотока (0 - камера по умолчанию)fps = cv2.getTickFrequency()start_time = cv2.getTickCount()

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

  • Главный цикл захватывает кадры из видеопотока, выполняет обнаружение объектов с помощью пользовательской модели и отображает результаты на кадре.
  • Обнаруженные объекты отображаются в виде ограничивающих рамок с метками и оценками уверенности.
while True:    # Чтение кадра из видеопотока    ret, frame = cap.read()    frame = imutils.resize(frame, width=800)  # Изменение размера кадра для более быстрой обработки    # Обнаружение объектов с помощью пользовательской модели    detections = model(frame)    # Цикл по обнаруженным объектам    for detection in detections['detection_boxes']:        # Извлечение координат ограничивающей рамки        startY, startX, endY, endX = detection[0], detection[1], detection[2], detection[3]        # Рисование ограничивающей рамки и метки на кадре        label = CLASSES[0]  # Замените на свою логику выбора класса метки        confidence = 1.0  # Замените на свою логику оценки уверенности        color = (0, 255, 0)  # Зеленый цвет для ограничивающей рамки (можно изменить)        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)    # Отображение кадра с результатами обнаружения объектов    cv2.imshow("Пользовательское обнаружение объектов", frame)    key = cv2.waitKey(1) & 0xFF    if key == ord("q"):        break  # Прерывание цикла при нажатии клавиши 'q'# Очисткаcap.release()  # Освобождение видеопотокаcv2.destroyAllWindows()  # Закрытие окон OpenCV

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

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

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

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

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

Заключение

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

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

Ключевые выводы

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

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

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