Эта запись в блоге написана в соавторстве с Джонатаном Ли, Нельсоном Леунгом, Полом Мином и Троем Сквиллачи из Intel.
In Часть 1 этой публикации мы обсудили, как Intel® 3DAT сотрудничала с Профессиональные услуги машинного обучения AWS (MLPS) для создания масштабируемого приложения SaaS с искусственным интеллектом. 3DAT использует компьютерное зрение и ИИ для распознавания, отслеживания и анализа более 1,000 точек данных биомеханики из стандартного видео. Это позволяет клиентам создавать многофункциональные и мощные продукты на основе биомеханики, такие как веб-приложения и мобильные приложения с подробными данными о производительности и трехмерной визуализацией.
Во второй части этого поста мы углубимся в каждый этап архитектуры. Мы изучаем сервисы AWS, используемые для соответствия требованиям проектирования 2DAT, в том числе Потоки данных Amazon Kinesis и Амазон Эластик Кубернетес Сервис (Amazon EKS), чтобы масштабируемо развернуть необходимые модели оценки позы для этого приложения «ПО как услуга» (SaaS).
Обзор архитектуры
Основная цель команды MLPS состояла в том, чтобы довести до производства конвейеры 2D- и 3D-модели оценки позы и создать функциональное и масштабируемое приложение. Следующая диаграмма иллюстрирует архитектуру решения.
Вся архитектура разбита на пять основных компонентов:
- Уровни пользовательского интерфейса приложений
- База данных
- Оркестрация рабочего процесса
- Генерация масштабируемой оценки позы
- Оперативный мониторинг
Давайте подробно рассмотрим каждый компонент, их взаимодействие и обоснование выбора дизайна.
Уровни пользовательского интерфейса приложений
На следующей диаграмме показаны уровни интерфейса приложения, которые обеспечивают доступ пользователей и управление приложением и его ресурсами.
Эти точки доступа поддерживают разные варианты использования в зависимости от разных типов клиентов. Например, пользователь приложения может отправить задание через интерфейс командной строки, тогда как разработчик может создать приложение с помощью Python SDK и внедрить в свои приложения интеллектуальные функции оценки позы. CLI и SDK построены как модульные компоненты — оба уровня являются оболочками уровня API, который построен с использованием Шлюз API Amazon для разрешения вызовов API и связанный AWS Lambda функции, которые заботятся о внутренней логике, связанной с каждым вызовом API. Эти уровни были ключевым компонентом для команды Intel OTG, поскольку они открывают широкую базу клиентов, которые могут эффективно использовать это приложение SaaS.
Уровень API
Решение имеет базовый набор из девяти API, которые соответствуют типам объектов, работающих на этой платформе. У каждого API есть файл Python, в котором определяются действия API, которые можно выполнять. Созданию новых объектов автоматически последовательно присваивается идентификатор объекта. Атрибуты этих объектов хранятся и отслеживаются в Amazon Aurora без сервера базу данных с использованием этого идентификатора. Поэтому действия API привязаны к функциям, определенным в центральном файле, содержащем внутреннюю логику для запросов к базе данных Aurora. Эта внутренняя логика использует Boto3 Клиент Amazon RDS DataService для доступа к кластеру базы данных.
Единственное исключение - это /job
API, который имеет create_job
метод, который обрабатывает отправку видео для создания нового задания обработки. Этот метод запускает Шаговые функции AWS логика рабочего процесса для выполнения задания. Проходя в job_id
, этот метод использует Boto3 Клиент Step Functions позвонить start_execution
метод для указанного stateMachineARN
(имя ресурса Amazon).
Восемь объектных API имеют методы и аналогичную схему доступа, как показано в следующей таблице.
Тип метода | Имя функции | Описание |
ПОЛУЧИТЬ | list_[object_name]s |
Выбирает все объекты этого типа из базы данных и отображает. |
POST | create_[object] |
Вставляет новую запись объекта с необходимыми входными данными в базу данных. |
ПОЛУЧИТЬ | get_[object] |
Выбирает атрибуты объекта на основе идентификатора объекта из базы данных и отображает. |
ПОЛОЖИЛ | update_[object] |
Обновляет существующую запись объекта необходимыми входными данными. |
УДАЛИТЬ | delete_[object] |
Удаляет существующую запись объекта из базы данных на основе идентификатора объекта. |
Детали девяти API следующие:
- / пользователь – Пользователь – это личность человека, уполномоченного отправлять задания в это приложение. Для создания пользователя требуется имя пользователя, адрес электронной почты пользователя и идентификатор группы, к которой принадлежит пользователь.
- /группа пользователей – Группа пользователей – это совокупность пользователей. Каждая группа пользователей сопоставляется с одним проектом и одним набором параметров конвейера. Чтобы иметь разные уровни (с точки зрения инфраструктурных ресурсов и параметров конвейера), пользователи делятся на группы пользователей. Каждый пользователь может принадлежать только к одной группе пользователей. Для создания группы пользователей требуется идентификатор проекта, идентификатор набора параметров конвейера, имя группы пользователей и описание группы пользователей. Обратите внимание, что группы пользователей отличаются от ролей пользователей, определенных в учетной записи AWS. Последний используется для предоставления разного уровня доступа в зависимости от их ролей доступа (например, администратора).
- /проект – Проект используется для группировки различных наборов инфраструктурных ресурсов вместе. Проект связан с одним
project_cluster_url
(кластер Aurora) для записи пользователей, заданий и других метаданных,project_queue_arn
(Kinesis Data Streams ARN) и среда выполнения вычислений (в настоящее время управляемая через Cortex), используемая для выполнения логических выводов по пакетам кадров или постобработки видео. Каждая группа пользователей связана с одним проектом, и этот механизм позволяет использовать разные уровни с точки зрения задержки и вычислительной мощности для разных групп пользователей. Для создания проекта требуется имя проекта, URL-адрес кластера проекта и ARN очереди проекта. - /трубопровод – Конвейер связан с одной конфигурацией для последовательности контейнеров обработки, которые выполняют обработку видео в кластере генерации выводов Amazon EKS, координируемом Cortex (дополнительные сведения см. в разделе о создании выводов обработки видео). Обычно это состоит из трех контейнеров: предварительная обработка и декодирование, обнаружение объектов и оценка позы. Например, этапы декодирования и обнаружения объектов одинаковы для конвейеров 2D и 3D, но замена последнего контейнера с использованием HRNet или 3DMPPE приводит к набору параметров для конвейеров обработки 2D и 3D. Вы можете создавать новые конфигурации для определения возможных конвейеров, которые можно использовать для обработки, и для этого требуется в качестве входных данных новый файл Python в репозитории Cortex, в котором подробно описана последовательность вызовов конечных точек модели, определяющих этот конвейер (см. ). Конечная точка конвейера — это конечная точка Cortex, вызываемая для обработки одного кадра. Для создания конвейера требуется имя конвейера, описание конвейера и конечная точка конвейера.
- /pipeline_parameter_set – Набор параметров конвейера представляет собой гибкую коллекцию JSON из нескольких параметров (среда выполнения конфигурации конвейера) для конкретного конвейера и добавляется для обеспечения гибкости для будущей настройки, когда требуется несколько сред выполнения конфигурации конвейера. Группы пользователей могут быть связаны с определенным набором параметров конвейера, и его цель состоит в том, чтобы иметь разные группы параметров для каждой группы пользователей и для каждого конвейера. Это было важным перспективным дополнением для Intel OTG, позволяющим встроить индивидуальную настройку, поддерживающую переносимость по мере того, как различные клиенты, особенно независимые поставщики программного обеспечения, начинают использовать приложение.
- /параметры_трубопровода – Отдельный набор параметров конвейера является воплощением набора параметров конвейера. Это делает его сопоставлением 1:many набора параметров конвейера с параметрами конвейера. Для этого API требуется идентификатор конвейера для связи с набором параметров конвейера, что позволяет создать конвейер для сопоставления параметров конвейера с конвейером 1:1. Другими входными данными, требуемыми для этого API, являются идентификатор набора параметров конвейера, значение параметров конвейера и имя параметров конвейера.
- /видео – Объект видео используется для определения отдельных видео, составляющих пакет .zip, отправленный во время выполнения задания. Этот файл разбит на несколько видео после отправки. Видео относится к
job_id
для задания, в котором отправляется пакет .zip, и Простой сервис хранения Amazon (Amazon S3) пути для расположения необработанных отдельных видео и результатов постобработки каждого видео. Объект видео также содержит процент выполнения видео, который постоянно обновляется во время обработки отдельных пакетов кадров этого видео, а также флаг состояния видео для завершения или незавершенности. Для создания видео требуется идентификатор задания, путь к видео, путь к результатам видео, процент выполнения видео и статус видео. - /frame_batch -
frame_batch
Объект представляет собой мини-пакет кадров, созданный путем выборки одного видео. Разделение видео на пакеты кадров обычного размера обеспечивает рычаг для настройки задержки и увеличивает распараллеливание и пропускную способность. Это детальная единица, которая обрабатывается Kinesis Data Streams для логического вывода. Для создания пакета кадров требуется идентификатор видео, начальный номер пакета кадров, конечный номер пакета кадров, путь ввода пакета кадров, путь результатов пакета кадров и статус пакета кадров. - /работа – Этот API взаимодействия используется для отправки файла для запуска задания обработки. Этот API имеет функцию, отличную от других объектных API, поскольку это прямой путь для взаимодействия с серверной частью обработки видео, координацией рабочего процесса Step Functions и кластером Amazon EKS. Для этого API требуется идентификатор пользователя, идентификатор проекта, идентификатор конвейера, идентификатор набора параметров конвейера, параметры задания и статус задания. В параметрах задания указывается путь к входному файлу, то есть место в Amazon S3, где находится .zip-пакет видео для обработки. Загрузка файла осуществляется с помощью
upload_handler
метод, который создает предварительно подписанный URL-адрес S3 для размещения пользователем файла. WORKFLOW_STATEMACHINE_ARN — это переменная среды, которая передается вcreate_job
API для указания места отправки ZIP-пакета видео с путем к входному файлу для запуска задания.
В следующей таблице перечислены функции API.
Тип метода | Функция | Описание |
ПОЛУЧИТЬ | list_jobs |
Выбирает все задания из базы данных и отображает. |
POST | create_ job |
Вставляет новую запись задания с идентификатором пользователя, идентификатором проекта, идентификатором конвейера, идентификатором набора параметров конвейера, путем к результатам задания, параметрами задания и статусом задания. |
ПОЛУЧИТЬ | get_ job |
Выбирает атрибуты задания на основе идентификатора задания из базы данных и отображает. |
ПОЛУЧИТЬ | upload_handler |
Создает предварительно подписанный URL-адрес S3 в качестве места для загрузки ZIP-файла. Требуется имя корзины S3 и ожидается тип файла application/zip. |
Слой Python SDK
Основываясь на API, команда создала клиентскую библиотеку Python SDK в качестве оболочки, чтобы облегчить разработчикам доступ к методам API. Они использовали открытый исходный код Поэзия, который занимается упаковкой Python и управлением зависимостями. Они создали client.py
файл, который содержит функции, обертывающие каждый из API с использованием Python requests
библиотека для обработки запросов и исключений API.
Чтобы разработчики могли запустить Intel 3DAT SDK, им необходимо установить и собрать пакет Poetry. Затем они могут добавить простой импорт Python intel_3dat_sdk
к любому коду Python.
Чтобы использовать клиент, вы можете создать экземпляр клиента, указав конечную точку API:
Затем вы можете использовать клиент для вызова отдельных методов, таких как create_pipeline
метод (см. следующий код), принимая соответствующие аргументы, такие как имя и описание конвейера.
Уровень командной строки
Точно так же команда построила API для создания интерфейса командной строки для пользователей, которые хотят получить доступ к методам API с помощью простого интерфейса без необходимости написания кода Python. Они использовали пакет Python с открытым исходным кодом Нажмите (Комплект для создания интерфейса командной строки). Преимуществами этой структуры являются произвольное вложение команд, автоматическое создание страницы справки и поддержка ленивой загрузки подкоманд во время выполнения. В то же самое client.py
как и в SDK, каждый клиентский метод SDK был обернут с помощью Click, а необходимые аргументы метода были преобразованы в флаги командной строки. Входные параметры флага затем используются при вызове команды SDK.
Для запуска CLI вы можете использовать CLI configure
команда. Вам будет предложено ввести URL-адрес конечной точки:
Теперь вы можете использовать CLI для вызова различных команд, связанных с методами API, например:
База данных
В качестве базы данных это приложение использует Aurora Serverless для хранения метаданных, связанных с каждым из API, с MYSQL в качестве ядра базы данных. Выбор службы базы данных Aurora Serverless соответствует принципу проектирования, который заключается в минимизации инфраструктурных издержек за счет использования, когда это возможно, бессерверных служб AWS. Следующая диаграмма иллюстрирует эту архитектуру.
Ассоциация бессерверный режим движка соответствует модели периодического использования, потому что это приложение масштабируется для новых клиентов, а рабочие нагрузки все еще неопределенны. При запуске конечной точки базы данных конкретный размер экземпляра БД не требуется, только минимальный и максимальный диапазон емкости кластера. Aurora Serverless обеспечивает соответствующую подготовку парка маршрутизаторов и распределяет рабочую нагрузку между ресурсами. Aurora Serverless автоматически выполняет хранение резервных копий от 1 до 35 дней. Команда оптимизировала безопасность, установив по умолчанию максимальное значение 35.
Кроме того, команда использовала API данных для управления доступом к кластеру Aurora Serverless, который не требует постоянного подключения, а вместо этого обеспечивает безопасную конечную точку HTTP и интеграцию с AWS SDK. Эта функция использует Менеджер секретов AWS для хранения учетных данных базы данных, поэтому нет необходимости явно передавать учетные данные. Сценарии CREATE TABLE были написаны в файлах .sql для каждой из девяти таблиц, соответствующих девяти API. Поскольку эта база данных содержала все метаданные и состояние объектов в системе, методы API запускались с использованием соответствующих команд SQL (например, select * from Job
для list_jobs
API) и передается в execute_statement
из клиента Amazon RDS в Data API.
Оркестрация рабочего процесса
Функциональная основа приложения управлялась с помощью пошаговых функций для координации рабочего процесса, как показано на следующей диаграмме.
Конечный автомат состоял из последовательности четырех лямбда-функций, которые запускаются при отправке задания с использованием create_job
метод из job
API. Для создания задания требуются идентификатор пользователя, идентификатор проекта, идентификатор конвейера, идентификатор набора параметров конвейера, путь к результатам задания, параметры задания и статус задания. Сначала вы можете загрузить ZIP-пакет видеофайлов, используя upload_handler
метод из API заданий для создания предварительно подписанного URL-адреса S3. Во время отправки задания путь к входному файлу передается через параметры задания, чтобы указать расположение файла. Это запускает выполнение конечного автомата рабочего процесса, запуская четыре основных шага:
- Лямбда-функция инициализатора
- Лямбда-функция отправителя
- Завершение Проверка лямбда-функции
- Лямбда-функция коллектора
Лямбда-функция инициализатора
Основная функция Инициализатора состоит в том, чтобы разделить пакет .zip на отдельные видеофайлы и подготовить их для отправки. Сначала загружается ZIP-файл, а затем каждый отдельный файл, включая видеофайлы, распаковывается и извлекается. Видео, предпочтительно в формате .mp4, загружаются обратно в корзину S3. Используя create_video
метод в video
API создается видеообъект с видеотрактом в качестве входных данных. Это вставляет данные о каждом видео в базу данных Aurora. Любые другие типы файлов, например файлы JSON, считаются метаданными и загружаются аналогичным образом, но объект видео не создается. Список имен извлеченных файлов и видеофайлов передается на следующий шаг.
Лямбда-функция отправителя
Функция Submitter берет видеофайлы, извлеченные инициализатором, и создает мини-пакеты видеокадров в виде изображений. Большинство современных моделей компьютерного зрения в производстве обучались на изображениях, поэтому даже при обработке видео они сначала разделяются на кадры изображения перед выводом модели. Текущее решение, использующее современную модель оценки позы, ничем не отличается — пакеты кадров из Submitter передаются в Kinesis Data Streams, чтобы инициировать этап генерации логического вывода.
Сначала видеофайл загружается функцией Lambda. Частота кадров и количество кадров рассчитывается с помощью FileVideoStream
модуль из imutils.video
библиотека обработки. Кадры извлекаются и группируются в соответствии с заданным размером мини-пакета, который является одним из ключевых настраиваемых параметров этого конвейера. С помощью библиотеки pickle Python данные сериализуются и загружаются в Amazon S3. Затем создается пакетный объект кадра и создается запись метаданных в базе данных Aurora. Эта лямбда-функция была построена с использованием Dockerfile с зависимостями от opencv-python
, numpy
и imutils
библиотеки.
Завершение Проверка лямбда-функции
Функция проверки завершения продолжает запрашивать базу данных Aurora, чтобы увидеть для каждого видео в ZIP-пакете текущего задания количество пакетов кадров, находящихся в состоянии ЗАВЕРШЕНО. Когда все пакеты кадров для всех видео будут завершены, процесс проверки будет завершен.
Лямбда-функция коллектора
Функция Collector берет выходные данные выводов, которые были выполнены для каждого кадра на этапе Consumer, и объединяет их по пакету кадров и по видео. Затем объединенные объединенные данные загружаются в корзину S3. Затем функция вызывает API постобработки Cortex для конкретного конвейера машинного обучения, чтобы выполнить любые вычисления постобработки, и добавляет агрегированные результаты по видео в выходную корзину. Многие из этих показателей рассчитываются по кадрам, например скорость, ускорение и угол сочленения, поэтому этот расчет необходимо выполнять на агрегированных данных. Основные выходные данные включают данные о ключевых точках тела (агрегированные в формате CSV), расчеты BMA (например, ускорение) и визуальное наложение ключевых точек, добавляемых к каждому кадру в файле изображения.
Генерация масштабируемой оценки позы
На этом этапе происходит механизм обработки, обеспечивающий масштабирование вывода ML. Он состоит из трех основных частей, каждая из которых имеет свои собственные рычаги параллелизма, которые можно настроить для достижения компромисса между задержкой (см. следующую диаграмму).
Эта архитектура позволяет экспериментировать с увеличением задержки, а также обеспечивает гибкость в будущем, когда рабочие нагрузки могут меняться в зависимости от различных комбинаций сегментов конечных пользователей, которые обращаются к приложению.
Потоки данных Kinesis
Команда выбрала Kinesis Data Streams, потому что он обычно используется для обработки потоковых данных, и в данном случае он хорошо подходит, поскольку он может обрабатывать пакеты кадров аналогичным образом, обеспечивая масштабируемость и параллелизацию. В функции Submitter Lambda используется клиент Kinesis Boto3 с put_record
метод передачи метаданных, связанных с одним пакетом кадров, таких как идентификатор пакета кадров, начальный кадр пакета кадров, конечный кадр пакета кадров, форма изображения, частота кадров и идентификатор видео.
Мы определили различные конфигурации очередей заданий и потоков данных Kinesis, чтобы установить уровни пропускной способности, привязанные к уровню приоритета различных групп пользователей. Доступ к разным уровням вычислительной мощности связан передачей очереди проекта ARN при создании нового проекта с использованием project
API. Затем каждая группа пользователей привязывается к конкретному проекту во время создания группы пользователей. Три конфигурации потока по умолчанию определены в Модель безсерверного приложения AWS (AWS SAM) шаблон инфраструктуры:
- Стандарт –
JobStreamShardCount
- приоритет –
PriorityJobStreamShardCount
- Высокий приоритет –
HighPriorityJobStreamShardCount
Команда использовала несколько разных рычагов, чтобы различать вычислительную мощность каждого потока или настраивать задержку системы, как показано в следующей таблице.
Рычаг | Описание | Значение по умолчанию |
осколок | Сегмент является родным для Kinesis Data Streams; это базовая единица пропускной способности для приема. Значение по умолчанию — 1 МБ/с, что соответствует 1,000 записей данных в секунду. | 2 |
KinesisBatchSize |
Максимальное количество записей, которые Kinesis Data Streams извлекает в одном пакете перед вызовом потребительской функции Lambda. | 1 |
KinesisParallelizationFactor |
Количество одновременно обрабатываемых пакетов из каждого сегмента. | 1 |
Улучшенное разветвление | Потребители данных, для которых активировано расширенное разветвление, имеют выделенную пропускную способность приема для каждого потребителя (например, 1 МБ/с по умолчанию) вместо совместного использования пропускной способности между потребителями. | от |
Потребительская лямбда-функция
С точки зрения Kinesis Data Streams потребитель данных — это сервис AWS, который извлекает данные из сегмента потока данных по мере того, как данные генерируются в потоке. Это приложение использует функцию Consumer Lambda, которая вызывается при передаче сообщений из очередей потока данных. Каждая потребительская функция обрабатывает один пакет кадров, выполняя следующие шаги. Сначала выполняется синхронный вызов API-интерфейса процессора Cortex, который является конечной точкой, на которой размещается конвейер вывода модели (дополнительные сведения см. в следующем разделе, посвященном Amazon EKS с Cortex). Результаты сохраняются в Amazon S3, а в базу данных вносится обновление путем изменения статуса обработанного пакета кадров на Complete
. Обработка ошибок встроена для управления вызовом Cortex API с циклом повторных попыток для обработки любых ошибок 504 из кластера Cortex с числом повторных попыток, равным 5.
Amazon EKS с Cortex для логического вывода машинного обучения
Команда использовала Amazon EKS, управляемый сервис Kubernetes в AWS, в качестве вычислительного механизма для вывода машинного обучения. Было принято решение использовать Amazon EKS для размещения конечных точек машинного обучения, что обеспечивает гибкость запуска восходящего потока Kubernetes с возможностью полного управления кластерами в AWS через АМС Фаргейтили локальное оборудование через Amazon EKS в любом месте. Это была важная часть функциональности, необходимая для Intel OTG, которая предоставляла возможность, например, подключить это приложение к специализированному локальному оборудованию.
Тремя моделями машинного обучения, которые были строительными блоками для построения конвейеров логического вывода, были пользовательская модель Yolo (для обнаружения объектов), пользовательская модель HRNet (для оценки 2D-позиции) и модель 3DMPPE (для оценки 3D-позы) (см. предыдущую раздел ML для более подробной информации). Они использовали открытый исходный код Кора библиотека для развертывания и управления конечными точками конвейера логического вывода машинного обучения, а также для запуска и развертывания кластеров Amazon EKS. Каждая из этих моделей была упакована в контейнеры Docker — файлы моделей хранились в Amazon S3, а образы моделей — в Реестр Amazon Elastic Container (Amazon ECR) и развернуты как Cortex Realtime API. Версии контейнеров модели, которые работают на ЦП и ГП, были созданы для обеспечения гибкости для типа вычислительного оборудования. В будущем, если потребуется добавить дополнительные модели или конвейеры моделей, они могут просто создать дополнительные API-интерфейсы Cortex Realtime.
Затем они построили конвейеры логического вывода, объединив API модели Cortex Realtime в API конвейера Cortex Realtime. Один API-интерфейс конвейера реального времени состоял из вызова последовательности API-интерфейсов модели реального времени. Потребительские лямбда-функции обрабатывали pipeline
API как черный ящик, использующий один вызов API для получения окончательного вывода для изображения. Были созданы два конвейера: 2D-конвейер и 3D-конвейер.
Конвейер 2D сочетает в себе этап предварительной обработки декодирования, обнаружение объектов с использованием пользовательской модели Yolo для определения местоположения спортсмена и создания ограничивающих рамок и, наконец, пользовательскую модель HRNet для создания ключевых точек 2D для оценки позы.
Конвейер 3D сочетает в себе этап предварительной обработки декодирования, обнаружение объектов с использованием пользовательской модели Yolo для определения местоположения спортсмена и создания ограничивающих рамок и, наконец, модель 3DMPPE для создания ключевых точек 3D для оценки позы.
После создания выводов для пакета кадров каждый конвейер также включает в себя отдельную конечную точку постобработки Realtime Cortex, которая генерирует три основных вывода:
- Агрегированные данные ключевых точек тела в одном файле CSV.
- Расчеты BMA (например, ускорение)
- Визуальное наложение ключевых точек, добавленных к каждому кадру в файле изображения
Лямбда-функция Collector отправляет соответствующие метаданные, связанные с конкретным видео, такие как идентификаторы кадров и местоположения S3 выходных данных вывода оценки позы, в конечную точку для создания этих выходных данных постобработки.
Cortex предназначен для интеграции с Amazon EKS и требует только файла конфигурации кластера и простой команды для запуска кластера Kubernetes:
Еще одним рычагом для настройки производительности была конфигурация экземпляра для вычислительных кластеров. Было создано три уровня с различными комбинациями инстансов M5 и G4dn, закодированных в виде файлов .yaml с такими спецификациями, как имя кластера, регион, конфигурация и сочетание инстансов. Инстансы M5 основаны на более дешевых процессорах, а G4dn — на более дорогих на базе графических процессоров, что обеспечивает некоторое соотношение цены и производительности.
Оперативный мониторинг
Для поддержания операционных стандартов ведения журналов все функции Lambda включают код для записи и приема журналов через Пожарный шланг данных Amazon Kinesis. Например, каждый пакет кадров, обработанный функцией Submitter Lambda, регистрируется с отметкой времени, именем действия и ответом функции Lambda в формате JSON и сохраняется в Amazon S3. Следующая диаграмма иллюстрирует этот шаг в архитектуре.
развертывание
Развертывание осуществляется с помощью AWS SAM — платформы с открытым исходным кодом для создания бессерверных приложений в AWS. AWS SAM позволяет систематизировать и легко развертывать инфраструктуру, включая функции, API, базы данных и сопоставления источников событий, в новых средах AWS. Во время развертывания синтаксис AWS SAM переводится на AWS CloudFormation для управления предоставлением инфраструктуры.
A template.yaml
содержит спецификации инфраструктуры вместе с настраиваемыми параметрами, такими как рычаги задержки Kinesis Data Streams, подробно описанные в предыдущих разделах. А samconfig.toml
Файл содержит параметры развертывания, такие как имя стека, имя корзины S3, в которой хранятся файлы приложений, такие как код функции Lambda, и теги ресурсов для отслеживания стоимости. Сценарий оболочки deploy.sh с простыми командами — это все, что требуется для сборки и развертывания всего шаблона:
Рабочий процесс пользователя
Подводя итог, можно сказать, что после развертывания инфраструктуры вы можете приступить к работе по следующему рабочему процессу:
- Создайте клиент Intel 3DAT, используя клиентскую библиотеку.
- Используйте API для создания нового экземпляра конвейера, соответствующего требуемому типу обработки, например, для оценки 3D-позиции.
- Создайте новый экземпляр проекта, передав ARN кластера и ARN очереди Kinesis.
- Создайте новый экземпляр набора параметров конвейера.
- Создайте новый экземпляр параметров конвейера, которые сопоставляются с набором параметров конвейера.
- Создайте новую группу пользователей, связанную с идентификатором проекта и идентификатором набора параметров конвейера.
- Создайте нового пользователя, связанного с группой пользователей.
- Загрузите ZIP-файл с видео в Amazon S3, используя предварительно подписанный URL-адрес S3, сгенерированный функцией загрузки в API заданий.
- Отправить
create_job
Вызов API с параметрами задания, указывающими расположение видеофайлов. Это запускает задание обработки.
Заключение
Приложение запущено и готово к тестированию как со спортсменами, так и с тренерами. Intel OTG рада сделать инновационную технологию оценки позы с использованием компьютерного зрения доступной для самых разных пользователей, от разработчиков до спортсменов и партнеров-поставщиков программного обеспечения.
Команда AWS стремится помочь таким клиентам, как Intel OTG, ускорить их путь к машинному обучению, начиная с этапа создания идеи и исследования с помощью лаборатории решений для машинного обучения и заканчивая этапом укрепления и развертывания с помощью AWS ML ProServe. Этим летом мы все будем внимательно следить за Олимпийскими играми в Токио в 2021 году, чтобы представить весь прогресс, который ML может достичь в спорте.
Начните сегодня! Изучите свой вариант использования сервисов, упомянутых в этом посте и многих других на Консоль управления AWS.
Об авторах
Хан Ман является старшим менеджером по машинному обучению и искусственному интеллекту в AWS в Сан-Диего, Калифорния. Он имеет докторскую степень в области инженерии Северо-Западного университета и имеет многолетний опыт работы консультантом по вопросам управления, консультируя клиентов в области производства, финансовых услуг и энергетики. Сегодня он увлеченно работает с клиентами из различных отраслей, разрабатывая и внедряя решения для машинного обучения и искусственного интеллекта на AWS. Ему нравится следить за НБА и играть в баскетбол в свободное время.
Иман Камьяби является инженером по машинному обучению в AWS Professional Services. Он работал с широким кругом клиентов AWS, чтобы продвигать лучшие практики по настройке воспроизводимых и надежных конвейеров машинного обучения.
Джонатан Ли является директором по технологиям спортивных достижений Олимпийской технологической группы Intel. Он изучал применение машинного обучения для здоровья в студенчестве Калифорнийского университета в Лос-Анджелесе и во время работы в аспирантуре Оксфордского университета. Его карьера была сосредоточена на разработке алгоритмов и датчиков для здоровья и работоспособности человека. Сейчас он возглавляет проект Intel по отслеживанию спортсменов 3D.
Нельсон Люнг является архитектором платформ в Центре поддержки спортивных достижений в Intel, где он определяет сквозную архитектуру для передовых продуктов, которые повышают производительность спортсменов. Он также руководит внедрением, развертыванием и производством этих решений машинного обучения в различных масштабах для различных партнеров Intel.
Трой Сквиллачи является инженером DecSecOps в Intel, где он предоставляет клиентам профессиональные программные решения с использованием лучших практик DevOps. Ему нравится интегрировать решения ИИ в масштабируемые платформы в различных областях.
Пол Мин является стажером младшего архитектора решений в Amazon Web Services (AWS), где он помогает клиентам из разных отраслевых вертикалей продвигать свою миссию и ускорять внедрение облачных технологий. Ранее в Intel он работал стажером по разработке программного обеспечения, помогая разрабатывать 3D Athlete Tracking Cloud SDK. Вне работы Пол любит играть в гольф, и его можно услышать, как он поет.
- Коинсмарт. Лучшая в Европе биржа биткойнов и криптовалют.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. БЕСПЛАТНЫЙ ДОСТУП.
- КриптоХок. Альткоин Радар. Бесплатная пробная версия.
- Источник: https://aws.amazon.com/blogs/machine-learning/the-intel3d-athlete-tracking-3dat-scalable-architecture-deploys-pose-estimation-models-using-amazon-kinesis-data-streams- и-amazon-eks/
- "
- &
- 000
- 100
- 2021
- 3d
- О нас
- ускорять
- доступ
- доступной
- По
- Учетная запись
- через
- Действие
- действия
- дополнение
- дополнительный
- Администратор
- Принятие
- AI
- алгоритм
- Все
- Amazon
- Amazon Web Services
- среди
- API
- API
- Применение
- Приложения
- соответствующий
- архитектура
- Аргументы
- назначенный
- Юрист
- спортсменов
- Атрибуты
- Автоматический
- AWS
- Восстановление
- Баскетбол
- до
- Преимущества
- ЛУЧШЕЕ
- лучшие практики
- Черный
- Блог
- тело
- Коробка
- строить
- Строительство
- призывают
- Пропускная способность
- заботится
- Карьера
- случаев
- центральный
- чемпион
- изменение
- выбор
- клиентов
- облако
- код
- лыжных шлемов
- коллектор
- сочетании
- компонент
- Вычисление
- компьютер
- Конфигурация
- связи
- консультант
- потребитель
- Потребители
- Container
- Контейнеры
- содержит
- продолжается
- контроль
- координировать
- Основные
- соответствующий
- Создайте
- создали
- создает
- Создающий
- создание
- Полномочия
- критической
- решающее значение
- Текущий
- В настоящее время
- изготовленный на заказ
- клиент
- Клиенты
- передовой
- данным
- База данных
- базы данных
- день
- преданный
- более глубокий
- обеспечивает
- развертывание
- развернуть
- развертывание
- развертывает
- Проект
- предназначенный
- подробность
- подробный
- подробнее
- обнаружение
- развивать
- Застройщик
- застройщиков
- Развитие
- различный
- дифференцировать
- направлять
- директор
- открытие
- дисплеев
- Docker
- не
- доменов
- вниз
- в течение
- легко
- Конечная точка
- энергетика
- Двигатель
- инженер
- Проект и
- Окружающая среда
- События
- пример
- возбужденный
- существующий
- надеется
- опыт
- Больше
- Особенность
- в заключение
- финансовый
- финансовые услуги
- First
- соответствовать
- ФЛОТ
- Трансформируемость
- гибкого
- внимание
- следовать
- после
- следующим образом
- формат
- дальновидный
- КАДР
- Рамки
- функция
- функциональная
- функциональность
- Функции
- будущее
- порождать
- порождающий
- поколение
- Отдаете
- цель
- хорошо
- GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР
- выпускник
- группы
- Группы
- обрабатывать
- Управляемость
- Аппаратные средства
- Медицина
- услышанный
- помощь
- помощь
- помогает
- здесь
- высший
- Как
- HTTPS
- человек
- Личность
- изображение
- осуществлять
- реализация
- важную
- включают
- включает в себя
- В том числе
- individual
- промышленности
- промышленность
- Инфраструктура
- инновационный
- вход
- Вставки
- устанавливать
- интегрированный
- интеграции.
- Intel
- Интеллекта
- взаимодействие
- Интерфейс
- IT
- работа
- Джобс
- путешествие
- Основные
- лаборатория
- запуск
- запуск
- Лиды
- изучение
- уровень
- Библиотека
- линия
- Список
- погрузка
- расположение
- места
- машина
- обучение с помощью машины
- сделанный
- поддерживать
- основной
- ДЕЛАЕТ
- человек
- управлять
- управляемого
- управление
- производство
- карта
- отображение
- упомянутый
- методы
- Метрика
- минимальный
- Наша миссия
- ML
- Мобильный телефон
- Приложения для мобильных устройств
- модель
- Модели
- модульный
- БОЛЕЕ
- самых
- с разными
- имена
- NBA
- необходимо
- потребности
- номер
- Олимпийские игры
- Откроется
- работать
- оптимизированный
- Опция
- заказ
- Другое
- собственный
- Oxford
- пакет
- часть
- особый
- особенно
- партнеры
- Прохождение
- страстный
- шаблон
- процент
- производительность
- выполнения
- перспектива
- кусок
- Платформа
- Платформы
- игры
- Поэзия
- пунктов
- возможное
- мощностью
- мощный
- Подготовить
- предыдущий
- первичный
- принцип
- приоритет
- процесс
- Процессы
- обработка
- процессор
- производит
- Производство
- Продукция
- профессиональный
- Проект
- обеспечивать
- приводит
- цель
- ассортимент
- Сырье
- реальном времени
- признавать
- запись
- учет
- по
- складская
- Запросы
- требовать
- обязательный
- Требования
- требуется
- ресурс
- Полезные ресурсы
- ответ
- Итоги
- Run
- Бег
- Сохранность
- Сан -
- Масштабируемость
- масштабируемые
- Шкала
- масштабирование
- SDK
- безопасный
- сегментами
- Serverless
- обслуживание
- Услуги
- набор
- установка
- Форма
- разделение
- Оболочка
- показанный
- аналогичный
- Аналогичным образом
- просто
- Размер
- So
- Software
- программное обеспечение как услуга
- разработка программного обеспечения
- Решение
- Решения
- некоторые
- Кто-то
- специализированный
- спецификации
- скорость
- Спорт
- стек
- Этап
- стандарт
- стандартов
- Начало
- и политические лидеры
- начинается
- Область
- современное состояние
- Статус:
- диск
- магазин
- поток
- потоковый
- представленный
- впоследствии
- лето
- поддержка
- Поддержка
- система
- с
- команда
- Технологии
- Тестирование
- следовательно
- Через
- TIE
- время
- сегодня
- вместе
- Токио
- трек
- Отслеживание
- Типы
- типично
- Лос-Анджелесе
- Университет
- Оксфордский университет
- отпереть
- Обновление ПО
- использование
- пользователей
- Использующий
- ценностное
- разнообразие
- различный
- вертикалей
- Видео
- Видео
- видение
- Web
- веб-сервисы
- КТО
- без
- Работа
- работавший
- работает
- лет