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

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

Что делать и чего не делать

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

Архитектура приложения

Приложение AWS Panorama определяется как граф с узлами и ребрами (этот граф называется манифестом). Узлы — это модели, код, потоки камер, вывод и параметры. Каждый узел также имеет входы или выходы в зависимости от вывода и типа (например, код обычно вводит и выводит видео). Ребра соединяют разные узлы.

Например, самое простое приложение будет иметь следующую архитектуру:

Узлы

  • Поток камеры
  • Код
  • Модель
  • Выход

Края

  • Поток с камеры ‹› Код
  • Код ‹› Выход

Обратите внимание, что модель не связана ни с одним узлом, а вместо этого вызывается узлом «Код».

Артефакты кода

Артефакт кода определяется как образ контейнера Docker. Код на AWS Panorama управляет следующим:

  • Обработка каждого изображения из видеопотока
  • Предварительно обработайте изображение перед запуском модели
  • Запуск модели на изображении
  • Аннотирование изображения перед отправкой на вывод
  • Создание журналов и метрик cloudwatch

Контейнер упакован с помощью Panorama-Cli и использует базовый док-образ панорамы public.ecr.aws/panorama/panorama-application.

Артефакты модели

AWS Panorama поддерживает большинство популярных фреймворков (Keras/MXNet/ONNX/Tensorflow/Torch), но требует использования формата, ожидаемого SageMaker Neo (подробнее см. https://docs.aws.amazon.com/sagemaker/latest/dg/neo- компиляция-подготовка-модель.html). Это связано с тем, что AWS Panorama использует Amazon SageMaker Neo для компиляции модели перед ее отправкой на устройство. Ожидается, что модель будет запускаться на изображении, но также может работать с несколькими входными данными.

Запуск локально

Лучший способ запустить приложение локально — использовать образцы AWS Panorama (https://github.com/aws-samples/aws-panorama-samples). В репозитории примеров есть блокноты (пример https://github.com/aws-samples/aws-panorama-samples/blob/main/samples/people_counter/people_counter_tutorial.ipynb), которые можно запускать в облаке или локально (требуется настройка среды докера).

Эта записная книжка позволяет сделать следующее:

  • проверьте, как ваша модель будет преобразована в SageMaker Neo (используя задание компиляции SageMaker)
  • проверьте, как ваш график и код будут работать на примере видео
  • проверьте, как ваша модель будет работать на видео и как ваш код будет аннотировать ее

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

Развертывание приложения

Есть два способа развернуть ваше приложение — через веб-консоль и программно. Оба потребуют от вас:

  • определили манифест, поэтому имейте это в виду перед развертыванием. Вы можете протестировать свой манифест, используя блокноты из абзаца выше.
  • используйте панораму-cli для создания контейнера и приложения для упаковки. panorama-cli — это интерфейс командной строки для управления приложением AWS Panorama, который можно установить через pip (https://pypi.org/project/panoramacli/)

Если вы хотите развернуть примеры приложений:

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

Мониторинг

Устройство AWS Panorama можно отслеживать с помощью веб-консоли и журналов CloudWatch. Первое можно использовать для проверки того, что ваше устройство и видеопоток находятся в сети, а второе — для проверки правильности работы вашего приложения.

AWS Panorama передает журналы в cloudwatch для каждого приложения и устройства. Журналы приложений содержат журналы для каждого узла, а журналы устройств содержат журналы системного уровня.

Подробнее о логах описано здесь https://docs.aws.amazon.com/panorama/latest/dev/monitoring-logging.html

Краткое содержание

AWS Panorama имеет отличное оборудование и интеграцию с AWS, которая занимается развертыванием модели и кода, а также мониторингом. Чтобы понять, применимо ли это к вашему случаю, я бы рекомендовал попробовать наши примеры из репозитория https://github.com/aws-samples/aws-panorama-samples и запустить их в режиме локальной разработки или в облаке. Это даст вам много информации о том, как его можно использовать для вашего варианта использования.