Close

Знакомство с приложением Atlassian ImageLabeller


ImageLabeller — это простое демонстрационное приложение, использующее машинное обучение для нанесения меток на изображения. Оно используется AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch и AWS CloudFormation, а также написано на языках Go и Python. В данном руководстве рассказывается, как использовать инструменты Atlassian Open DevOps для развертывания и мониторинга некоторых из этих компонентов.

Архитектура ImageLabeller

Диаграмма

Порядок действий

Пользователь вызывает сервис AWS Lambda SubmitImage, передавая в качестве параметра правильный URL-адрес изображения. SubmitImage загружает изображение, выгружает его в корзину AWS S3 open-devops-images-<регион>, вставляет новый кортеж в таблицу AWS DynamoDB под названием ImageLabels и возвращает токен идентификатора изображения пользователю. Токен идентификатора изображения используется для сопоставления изображения в корзине open-devops-images-<регион> с кортежем в ImageLabels.

Для компонента AWS Lambda под названием InvokeLabeller в AWS DynamoDB есть событие-триггер. InvokeLabeller загружает соответствующее изображение из корзины open-devops-images-<регион>, вызывает предварительно обученную модель AWS SageMaker Inception V3, чтобы сгенерировать метки изображения, и обновляет кортеж в ImageLabels, когда туда попадает новый кортеж.

Пользователь вызывает сервис AWS Lambda GetImageLabel, передавая токен идентификатора изображения в качестве параметра. GetImageLabel ищет метки, связанные с токеном идентификатора изображения, в ImageLabels и возвращает их пользователю. Если модель AWS SageMaker еще не завершила обработку изображения, пользователь получает метку NOT_CLASSIFIED.

ImageLabeller развертывается в пяти средах: тестовая среда в регионе us-west-1, промежуточная среда в регионе us-east-2 и три рабочие среды в us-west-2, us-east-1 и ca-central-1.

Компоненты

Корзины AWS S3 и таблицы AWS DynamoDB, входящие в ImageLabeller, развертываются с помощью шаблонов AWS CloudFormation. В этом руководстве представлена информация о настройке CI/CD для развертывания корзин AWS S3. Развертывание таблиц AWS DynamoDB выполняется аналогичным образом; вы сможете заняться этим самостоятельно.

В ImageLabeller есть три вида компонента AWS Lambda: SubmitImage, InvokeLabeller и GetImageLabel. В этом руководстве представлена информация о настройке CI/CD для развертывания SubmitImage. Развертывание GetImageLabel выполняется аналогичным образом; этим также можно заняться самостоятельно.

InvokeLabeller — это компонент AWS Lambda на основе Python, в который потребуется внести небольшие изменения, прежде чем его можно будет опубликовать. Если точнее, InvokeLabeller зависит от конфигурации AWS SageMaker, настройка которой выполняется через консоль AWS.

Системные тесты, включенные в проект ImageLabeller, выполняют общее тестирование. Тесты завершаются с ошибкой, если какой-либо компонент ImageLabeller отсутствует или не работает должным образом. При любом развертывании SubmitImage, GetImageLabel и InvokeLabeller системные тесты выполняются в рамках соответствующих конвейеров CI/CD.

Для первоначального развертывания SubmitImage, GetImageLabel и InvokeLabeller необходимо закомментировать шаги системного тестирования. После успешного запуска развертываний их можно раскомментировать и выполнить повторное развертывание.

Порядок развертывания компонентов

Вручную разверните предварительно обученную модель AWS SageMaker через консоль AWS.

Разверните репозитории инфраструктуры AWS

  1. s3_infra
  2. dynamodb_infra

Разверните компоненты AWS Lambda

  1. SubmitImage
  2. GetImageLabel
  3. InvokeLabeller

Разверните системные тесты

Разверните CloudWatchAlarms

Настройка предварительно обученной модели AWS SageMaker

Подробные сведения о настройке предварительно обученной модели AWS SageMaker.

Интеграция Jira с CI/CD

Подключите инструменты для планирования, работы с репозиторием, CI/CD и мониторинга к Atlassian Open DevOps.

Warren Marusiak
Warren Marusiak

Warren is a Canadian developer from Vancouver, BC with over 10 years of experience. He came to Atlassian from AWS in January of 2021.


Поделитесь этой статьей
Следующая тема

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Образовательные программы DevOps

Рисунок: карта

Начните работу бесплатно

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up