Максимизируйте производительность в Edge AI-приложениях - KDnuggets

Максимизируйте производительность в приложениях Edge AI – KDnuggets

Исходный узел: 2919295

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

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

Может потребоваться специальный ускоритель искусственного интеллекта, будь то дискретный или интегрированный в SoC (в отличие от выполнения вывода искусственного интеллекта на процессоре или графическом процессоре).

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

Фактические требования к производительности зависят от приложения. Обычно можно ожидать, что для видеоаналитики система должна обрабатывать потоки данных, поступающие с камер, с частотой 30-60 кадров в секунду и разрешением 1080p или 4k. Камера с поддержкой искусственного интеллекта будет обрабатывать один поток; периферийное устройство будет обрабатывать несколько потоков параллельно. В любом случае периферийная система искусственного интеллекта должна поддерживать функции предварительной обработки для преобразования данных датчика камеры в формат, соответствующий входным требованиям раздела вывода искусственного интеллекта (рис. 1).

Функции предварительной обработки принимают необработанные данные и выполняют такие задачи, как изменение размера, нормализация и преобразование цветового пространства, прежде чем подавать входные данные в модель, работающую в ускорителе искусственного интеллекта. Предварительная обработка может использовать эффективные библиотеки обработки изображений, такие как OpenCV, чтобы сократить время предварительной обработки. Постобработка включает в себя анализ результатов вывода. Он использует такие задачи, как немаксимальное подавление (NMS интерпретирует выходные данные большинства моделей обнаружения объектов) и отображение изображений для создания действенной информации, такой как ограничивающие рамки, метки классов или оценки достоверности.

 

Максимизируйте производительность в приложениях Edge AI
Рисунок 1. Для вывода модели ИИ функции предварительной и постобработки обычно выполняются на процессоре приложений.
 

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

Для динамического запуска нескольких моделей требуется внешний ускоритель искусственного интеллекта с выделенной и достаточно большой памятью для хранения моделей. Часто встроенный ускоритель искусственного интеллекта внутри SoC не может управлять многомодельной рабочей нагрузкой из-за ограничений, налагаемых подсистемой общей памяти и другими ресурсами в SoC.

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

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

Интегрированная SoC может содержать ряд вычислительных блоков, включая центральные процессоры, графические процессоры, ускоритель искусственного интеллекта, процессоры машинного зрения, видеокодеры/декодеры, процессор сигналов изображения (ISP) и многое другое. Все эти вычислительные блоки используют одну и ту же шину памяти и, следовательно, имеют доступ к одной и той же памяти. Кроме того, центральный и графический процессоры, возможно, также должны будут сыграть роль в выводе, и эти устройства будут заняты выполнением других задач в развернутой системе. Именно это мы подразумеваем под накладными расходами на уровне системы (рис. 2).

Многие разработчики ошибочно оценивают производительность встроенного в SoC ускорителя искусственного интеллекта, не учитывая влияние накладных расходов на системном уровне на общую производительность. В качестве примера рассмотрим запуск теста YOLO на ускорителе искусственного интеллекта производительностью 50 TOPS, интегрированном в SoC, который может получить результат теста 100 выводов в секунду (IPS). Но в развернутой системе со всеми остальными активными вычислительными блоками эти 50 TOPS можно уменьшить примерно до 12 TOPS, а общая производительность составит только 25 IPS, при условии щедрого коэффициента использования 25%. Накладные расходы системы всегда являются фактором, если платформа непрерывно обрабатывает видеопотоки. В качестве альтернативы, при использовании дискретного ускорителя искусственного интеллекта (например, Kinara Ara-1, Hailo-8, Intel Myriad X) загрузка на уровне системы может превысить 90 %, поскольку как только хост-система инициирует функцию вывода и передает входные данные модели искусственного интеллекта. данных, ускоритель работает автономно, используя выделенную память для доступа к весам и параметрам модели.

 

Максимизируйте производительность в приложениях Edge AI
Рисунок 2. Шина общей памяти будет управлять производительностью на уровне системы, показанной здесь с приблизительными значениями. Реальные значения будут варьироваться в зависимости от модели использования вашего приложения и конфигурации вычислительного блока SoC.

До этого момента мы обсуждали производительность ИИ с точки зрения количества кадров в секунду и TOPS. Но низкая задержка — еще одно важное требование для обеспечения оперативности системы в реальном времени. Например, в играх низкая задержка имеет решающее значение для плавного и оперативного игрового процесса, особенно в играх с управлением движением и системах виртуальной реальности (VR). В системах автономного вождения низкая задержка жизненно важна для обнаружения объектов в реальном времени, распознавания пешеходов, определения полосы движения и распознавания дорожных знаков, чтобы избежать угрозы безопасности. Системы автономного вождения обычно требуют сквозной задержки менее 150 мс от обнаружения до фактического действия. Аналогичным образом, в производстве низкая задержка важна для обнаружения дефектов в реальном времени, распознавания аномалий, а роботизированное управление зависит от видеоаналитики с малой задержкой, чтобы обеспечить эффективную работу и минимизировать время простоя производства.

В общем, существует три компонента задержки в приложении видеоаналитики (рис. 3):

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

 

Максимизируйте производительность в приложениях Edge AI
Рисунок 3. Конвейер видеоаналитики состоит из сбора, передачи и обработки данных.
 

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

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

Отметка времени:

Больше от КДнаггетс