Статьи
Обучающие материалы
Интерактивные руководства
Знакомство с приложением 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
- s3_infra
- dynamodb_infra
Разверните компоненты AWS Lambda
- SubmitImage
- GetImageLabel
- InvokeLabeller
Разверните системные тесты
Разверните CloudWatchAlarms
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.