Узнайте, как легко настроить свое первое приложение Panorama
Почти год назад я опубликовал пошаговое руководство здесь, на сайте Towards Data Science, по развертыванию приложения для обнаружения объектов на AWS Panorama. Статья была довольно длинной (17 минут на чтение!) и содержала множество тонких шагов. Создать приложение Panorama с помощью официальных инструментов непросто: вы должны использовать фиксированную и сложную структуру проекта, помнить множество параметров, касающихся вашего проекта, и передавать их инструментам каждый раз, когда вы их вызываете. Затем файлы и папки должны быть названы определенным образом, и вы должны поддерживать согласованные копии одной и той же информации (например, свойства модели глубокого обучения) в разных частях проекта. Все эти домашние задачи не приносят реальной ценности для бизнеса: они служат только для поддержания проекта и шаблонного кода в актуальном состоянии.
За последние несколько месяцев я создал и развернул дюжину приложений Panorama, испытав это бремя на себе. Очевидно, появились некоторые повторяющиеся задачи и шаблоны, которые подтолкнули меня к максимально возможной автоматизации процесса установки и развертывания любого приложения Panorama. Я рад представить cookiecutter-panorama, инструмент для создания проектов AWS Panorama и систему сборки. Давайте углубимся, начав с определения приложения AWS Panorama.
Анатомия приложения Panorama
Если вы пропустили предыдущие эпизоды, AWS Panorama — это аппаратно-программная платформа, которая позволяет запускать приложения компьютерного зрения (CV), анализирующие видеопотоки с локальных камер с интернет-протоколом (IP).
Приложение Panorama – это набор упакованных моделей глубокого обучения, кода бизнес-логики и структуры манифеста (также называемой "графом приложения"), которая определяет конвейер данных между этими компонентами.
В случае «классических» приложений Panorama модель глубокого обучения (обученная в Pytorch, Tensorflow или MXNet) упаковывается в артефакт, называемый «активом модели», в процессе сборки приложения. Точно так же код вашей бизнес-логики (написанный на Python с использованием SDK приложения Panorama) упакован в артефакт «актив кода». Эти артефакты регистрируются и загружаются в вашу учетную запись AWS. Всякий раз, когда вы хотите развернуть свое приложение CV на устройстве Panorama, вы должны предоставить структуру манифеста, которая ссылается на эти артефакты и описывает, как устройство должно их подключать.
Таким образом, приложение Panorama слабо связано с набором пакетов глубокого обучения и бизнес-логики, связанных вместе файлом манифеста. Разработчик должен постоянно синхронизировать ссылки в файле манифеста приложения и внутри пакетов. Это одна из самых больших задач обслуживания, которую может автоматизировать cookiecutter-panorama.
печенье
Давайте поговорим о том, как сделать печенье!
Cookiecutter — это утилита командной строки, которая создает проекты из cookiecutter (шаблонов проектов). Он стал стандартом де-факто для создания проектов в экосистеме Python, потому что его красивый простой дизайн сочетается с привлекательными функциями. В настоящее время на GitHub опубликовано более 7000 шаблонов проектов cookiecutter. Cookiecutter-panorama добавляет в этот пантеон шаблон приложения Panorama.
Начать!
Сначала установите инструмент командной строки cookiecutter с помощью pip (pip install cookiecutter
), conda (conda install -c conda-forge cookiecutter
) или pipx (pipx install cookiecutter
, рекомендуемый способ).
Создать проект приложения Panorama очень просто:
$ cookiecutter https://github.com/mrtj/cookiecutter-panorama.git
Механизм шаблонов запросит у вас значение набора параметров. Однако он также предоставляет разумные значения по умолчанию, которые в большинстве случаев можно оставить такими, какие они есть, и подтвердить выбор.
Вам нужно настроить только два параметра: project_name
и s3_working_bucket
. Последнее должно быть именем существующей корзины S3 в вашей учетной записи, где у вас есть права на чтение/запись. Подробное описание параметров вы можете найти в README файле cookiecutter-panorama.
$ cookiecutter https://github.com/mrtj/cookiecutter-panorama.git project_name [Panorama Video Processor]: ↲ project_slug [panorama_video_processor]: ↲ s3_working_bucket [my_bucket]: my_real_bucket s3_working_path [s3://my_real_bucket/panorama_projects/panorama_video_processor]: ↲ camera_node_name [camera_input]: ↲ display_node_name [display_output]: ↲ code_package_name [panorama_video_processor_logic]: ↲ code_package_version [1.0]: ↲ code_asset_name [panorama_video_processor_logic_asset]: ↲ code_node_name [panorama_video_processor_logic_node]: ↲ model_package_name [panorama_video_processor_model]: ↲ model_package_version [1.0]: ↲ model_asset_name [panorama_video_processor_model_asset]: ↲ model_node_name [panorama_video_processor_model_node]: ↲ model_input_name [input0]: ↲ model_processing_width [224]: ↲ model_processing_height [224]: ↲
Cookiecutter сгенерирует ваш проект в каталоге с именем параметра project_slug
, в приведенном выше случае panorama_video_processor
:
$ cd panorama_video_processor
Батарейки в комплекте: система сборки
Как только проект будет сгенерирован, вы можете начать взаимодействовать с Makefile. Система сборки предоставляет широкий набор функций: настроить репозиторий git, создать контейнер приложения и модель глубокого обучения, загрузить пакеты в свою учетную запись AWS, готовые к развертыванию на устройстве Panorama, запустить приложение на рабочей станции разработки с помощью Test Utility, защитит вас от утечки идентификатора вашей учетной записи AWS в общедоступные репозитории git и т. д. Полный список функций см. в файле README, созданном в рамках проекта Panorama. Здесь — превью.
Некоторые задачи, предоставляемые cookiecutter-panorama, вам могут быть полезны:
make init-repo
: инициализировать репозиторий git- Установите необходимые инструменты сборки: aws-cli, panorama-cli и docker. Настройте aws-cli на учетные данные учетной записи, в которой зарегистрировано устройство Panorama.
make import
: импортируйте проект в свою учетную запись AWSmake build
: создайте проект и создайте фиктивную модель глубокого обучения, которую впоследствии можно будет заменить реальной моделью. Фиктивная модель будет вычислять среднее значение каналов RGB входного видеокадра, используя инфраструктуру пакета модели и реальный графический процессор устройства Panorama.make package
: загрузите скомпилированный контейнер приложения и упакованную модель глубокого обучения в свою учетную запись AWS. Этот скрипт также выводит путь к скомпилированному манифесту JSON.
Затем вы можете взять манифест в формате JSON, перейти в Консоль AWS Panorama и развернуть свое приложение!
Вопросы? Проблемы? Предложения? Откройте вопрос в проекте cookiecutter-panorama github или свяжитесь с нами по указанным ниже контактам!
Об авторе
Янош Толгьеси (Janos Tolgyesi) — специалист по созданию сообщества AWS и руководитель группы машинного обучения в Neosperience с более чем 5-летним опытом работы с технологиями машинного обучения и более 8-летним опытом работы в AWS. Он любит что-то создавать, пусть это будет приложение для видеоаналитики на периферии или профилировщик пользователей на основе событий истории кликов. Вы можете найти меня в Twitter, Medium и LinkedIn.
Открытый проект cookiecutter-panorama был поддержан компанией Neosperience.
Отдельное спасибо Luca Bianchi за корректуру этой статьи.