Максимизация производительности в приложениях Edge AI
Оптимизация производительности в приложениях Edge AI
По мере того, как ИИ переходит с облачной платформы на Edge, мы видим, что технология используется во все более разнообразных сферах применения – от обнаружения аномалий до приложений, включающих умные покупки, наблюдение, робототехнику и автоматизацию производства. Поэтому здесь нет универсального решения. Однако с быстрым ростом устройств с камерами, ИИ получил самое широкое применение для анализа данных видео в режиме реального времени с целью автоматизации видеонаблюдения, улучшения безопасности, повышения операционной эффективности и предоставления лучшего опыта для клиентов, в конечном итоге обеспечивая конкурентное преимущество в своих отраслях. Чтобы лучше поддерживать анализ видео, необходимо понимать стратегии оптимизации производительности системы в помещениях с применением ИИ.
Стратегии оптимизации производительности ИИ-системы включают
- Выбор компьютерных движков правильного размера для достижения или превышения требуемого уровня производительности. Для приложения ИИ эти компьютерные движки должны выполнять функции всей визионной конвейера (то есть предварительной и последующей обработки видео, вывод нейронной сети).
Требуется специализированный ускоритель ИИ, будь то отдельный или интегрированный в SoC (вместо выполнения вывода ИИ на ЦП или ГПУ).
- Борьба с подменой личности искусственным интеллектом
- Пригодное для ношения оптическое устройство показывает надежду в обнаружении послеродового кровотечения.
- Законодательство Европейского союза ставит сцену для столкновения вопросов дезинформации.
- Понимание разницы между пропускной способностью и задержкой, где пропускная способность – это скорость обработки данных в системе, а задержка измеряет задержку обработки данных в системе и часто связана с отзывчивостью в режиме реального времени. Например, система может генерировать изображения с частотой 100 кадров в секунду (пропускная способность), но на обработку изображения требуется 100 мс (задержка).
- Учет возможности легкой масштабируемости производительности ИИ в будущем для удовлетворения растущих потребностей, изменяющихся требований и развивающихся технологий (например, более сложные модели ИИ для повышения функциональности и точности). Масштабирование производительности можно осуществить с использованием ускорителей ИИ в виде модулей или с дополнительными чипами ускорителей ИИ.
Понимание изменяющихся требований к производительности ИИ
Фактические требования к производительности зависят от приложения. Как правило, можно ожидать, что для видеоаналитики система должна обрабатывать потоки данных, поступающие от камер со скоростью от 30 до 60 кадров в секунду и разрешением 1080p или 4k. Камера, оснащенная ИИ, обрабатывает один поток; краевой аппарат обрабатывает несколько потоков параллельно. В обоих случаях краевая система ИИ должна поддерживать функции предварительной обработки для преобразования данных сенсора камеры в формат, соответствующий требованиям входных данных раздела вывода ИИ (Рисунок 1).
Функции предварительной обработки обрабатывают исходные данные и выполняют такие задачи, как изменение размера, нормализация и преобразование цветового пространства, перед подачей входных данных на модель, работающую на ускорителе ИИ. Предварительная обработка может использовать эффективные библиотеки обработки изображений, такие как OpenCV, для сокращения времени предварительной обработки. Постобработка включает анализ вывода вывода. В ней используются такие задачи, как подавление нескольких максимумов (NMS интерпретирует вывод большинства моделей обнаружения объектов) и отображение изображения для создания действенных идей, таких как ограничивающие рамки, классовые метки или оценочные баллы.
Модель вывода ИИ может столкнуться с дополнительной сложностью, которая заключается в обработке нескольких моделей нейронных сетей на каждый кадр, в зависимости от возможностей приложения. Приложения компьютерного зрения обычно включают в себя несколько ИИ-задач, требующих конвейера из нескольких моделей. Кроме того, вывод одной модели часто является входными данными для следующей модели. Другими словами, модели в приложении часто зависят друг от друга и должны выполняться последовательно. Точный набор моделей для выполнения может быть не статичным и может варьироваться динамически, даже на кадровой основе.
Задача выполнения нескольких моделей динамически требует наличия внешнего ускорителя ИИ с достаточно большой выделенной памятью для хранения моделей. Часто интегрированный ускоритель ИИ внутри SoC не может справиться со множественной заботой характеристик в общей подсистеме памяти и других ресурсов в SoC.
Например, прогнозирование движения на основе отслеживания объектов зависит от непрерывного обнаружения для определения вектора, который используется для идентификации отслеживаемого объекта в будущем положении. Этот подход ограничен по эффективности, поскольку отсутствует настоящая возможность повторной идентификации. С прогнозированием движения след объекта может быть потерян из-за пропущенного обнаружения, заслонений или выхода объекта из поля зрения даже на короткое время. После потери объекта его след нельзя восстановить. Добавление повторной идентификации позволяет решить эту проблему, но требует визуального внедрения внешнего вида (то есть отпечатка изображения). Для генерации внешнего вида необходима вторая сеть, которая генерирует вектор признаков, обрабатывая изображение внутри описывающей рамки объекта, обнаруженного первой сетью. Этот вектор признаков можно использовать для повторной идентификации объекта вне зависимости от времени или пространства. Поскольку эмбеддинги должны быть сгенерированы для каждого объекта, обнаруженного в поле зрения, требования к обработке возрастают с увеличением загрузки сцены. Отслеживание объекта с повторной идентификацией требует тщательного рассмотрения между выполнением обнаружения с высокой точностью / высоким разрешением / высокой частотой кадров и сохранением достаточного запаса для масштабируемости эмбеддингов. Один из способов удовлетворения требований обработки – использование специализированного акселератора ИИ. Как уже упоминалось, движок ИИ SoC может страдать от нехватки ресурсов общей памяти. Оптимизацию модели также можно использовать, чтобы снизить требования к процессору, но это может повлиять на производительность и / или точность.
Не ограничивайте производительность ИИ системными накладными расходами
В интеллектуальной камере или периферийном устройстве SoC (т. е. хост-процессор) получает видеокадры и выполняет предварительную обработку, описанную ранее. Эти функции могут выполняться с использованием ядер CPU или графического процессора SoC, но также они могут выполняться специализированными аппаратными ускорителями в SoC (например, обработчик изображений). После завершения этих этапов предварительной обработки, интегрированный в SoC ускоритель ИИ может напрямую получить этот квантованный вход из системной памяти или, в случае продвинутого ускорителя ИИ, вход передается для проведения вывода, обычно через интерфейс USB или PCIe.
Интегрированный SoC может содержать различные вычислительные блоки, включая ЦПУ, ГПУ, ускоритель ИИ, процессоры видео, видео кодеки/декодеры, обработчик изображений (ISP) и многое другое. Все эти блоки разделяют один и тот же шину памяти и, следовательно, имеют доступ к одной и той же памяти. Кроме того, ЦПУ и ГПУ также могут играть роль в выводе, а эти блоки будут заняты выполнением других задач в развернутой системе. Вот что мы имеем в виду под системными накладными расходами (рисунок 2).
Многие разработчики ошибочно оценивают производительность встроенного ускорителя ИИ в SoC, не учитывая влияние системных накладных расходов на общую производительность. Например, представьте себе запуск бенчмарка YOLO на 50 ТОПС ускорителе ИИ, интегрированном в SoC, который может получить результат бенчмарка в 100 инференций в секунду (IPS). Но в развернутой системе со всеми остальными вычислительными блоками эти 50 ТОПС могут быть сокращены до чего-то вроде 12 ТОПС, и общая производительность составит всего 25 IPS при щедром коэффициенте использования в 25%. Системная накладная расходы – это всегда фактор, если платформа непрерывно обрабатывает видеопотоки. В альтернативе, с использованием отдельного ускорителя ИИ (например, Kinara Ara-1, Hailo-8, Intel Myriad X), использование на уровне системы может быть больше 90%, потому что после инициации инференционной функции хост-SoC и передачи входных данных модели ИИ ускоритель работает автономно, используя свою собственную память для доступа к весам и параметрам модели.
Аналитика видео на периферии требует низкой задержки
До этого мы говорили о производительности ИИ в терминах кадров в секунду и ТОПС. Но низкая задержка является еще одним важным требованием для доставки реального времени реакции системы. Например, в играх низкая задержка критична для плавного и отзывчивого игрового опыта, особенно в играх с управлением движения и системах виртуальной реальности (VR). В системах автономного вождения низкая задержка необходима для обнаружения объектов в реальном времени, распознавания пешеходов, обнаружения полос и распознавания дорожных знаков, чтобы обеспечить безопасность. Системы автономного вождения обычно требуют задержки от детекции до реального действия менее 150 мс. Аналогично, в производстве низкая задержка необходима для обнаружения дефектов в режиме реального времени, распознавания аномалий и робототехнического управления, чтобы обеспечить эффективную работу и минимизировать простои в производстве.
В общем, задержка в приложении аналитики видео состоит из трех компонентов (рисунок 3):
- Задержка захвата данных – это время от захвата видеокадра камерой до доступности изображения аналитической системе для обработки. Вы можете оптимизировать эту задержку, выбирая камеру с быстрым датчиком и процессором с низкой задержкой, выбрав оптимальные частоты кадров и использование эффективных форматов видеокомпрессии.
- Задержка передачи данных – это время, необходимое для передачи захваченных и сжатых видеоданных от камеры к периферийным устройствам или локальным серверам. Это включает задержки обработки сети, возникающие на каждом конечном устройстве.
- Задержка обработки данных относится к времени, необходимому для выполнения задач видеообработки на периферийных устройствах, таких как разжатие кадра и алгоритмы аналитики (например, отслеживание объектов на основе предсказания движения, распознавание лиц). Как уже было отмечено ранее, задержка обработки особенно важна для приложений, которые должны запускать несколько моделей ИИ для каждого видеокадра.
Задержку обработки данных можно оптимизировать с помощью ускорителя ИИ с архитектурой, разработанной для минимизации перемещения данных внутри кристалла и между вычислениями и различными уровнями иерархии памяти. Кроме того, для улучшения задержки и эффективности на уровне системы архитектура должна поддерживать нулевое (или почти нулевое) время переключения между моделями, чтобы лучше поддерживать многоуровневые приложения, которые мы обсуждали ранее. Еще одним фактором для улучшения производительности и задержки является алгоритмическая гибкость. Другими словами, некоторые архитектуры разработаны для оптимального поведения только на конкретных моделях ИИ, но с быстро меняющейся средой ИИ каждый день появляются новые модели для повышения производительности и точности. Поэтому выбирайте процессор краевого ИИ с отсутствием практических ограничений на топологию, операторы и размер моделей.
В максимизации производительности в устройстве искусственного интеллекта на грани необходимо учитывать множество факторов, включая требования к производительности и латентности, а также системные накладные расходы. Успешная стратегия должна учитывать использование внешнего ускорителя искусственного интеллекта для преодоления ограничений по памяти и производительности в AI-движке SoC. C.H. Chee является опытным руководителем по маркетингу и управлению продуктами, обладающим обширным опытом в продвижении продуктов и решений в полупроводниковой индустрии, с акцентом на AI на основе компьютерного зрения, подключаемости и видеоинтерфейсов для нескольких рынков, включая корпоративный и потребительский секторы. В качестве предпринимателя Чи был одним из сооснователей двух стартапов по видео-полупроводникам, которые были приобретены публичной полупроводниковой компанией. Чи руководил командами по маркетингу продуктов и любит работать в небольшой группе, сосредотачивающейся на достижении отличных результатов.