Close

Présentation d'ImageLabeller


ImageLabeller est une application de démo simple qui utilise l'apprentissage machine pour appliquer des étiquettes à des images. Elle utilise AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch et AWS CloudFormation, et est codée en Go et en Python. Ce guide explique comment utiliser les outils Atlassian Open DevOps pour déployer et surveiller un sous-ensemble de ces composants.

Architecture ImageLabeller

Diagramme

Fonctionnement

Un utilisateur invoque AWS Lambda SubmitImage en transmettant une URL d'image valide sous forme de paramètre. SubmitImage télécharge l'image, l'importe dans un compartiment AWS S3 open-devops-images-, insère un nouveau tuple dans un tableau AWS DynamoDB ImageLabels, puis renvoie un jeton d'identification d'image à l'utilisateur. Ce jeton d'identification d'image est utilisé pour mettre en corrélation l'image dans open-devops-images-, et le tuple dans ImageLabels.

AWS Lambda InvokeLabeller a un déclencheur d'événement AWS DynamoDB. InvokeLabeller télécharge l'image correspondante depuis open-devops-images-, appelle un modèle préformé AWS SageMaker Inception V3 pour générer des étiquettes d'images, puis met à jour le tuple dans ImageLabels quand un nouveau tuple est inséré dans ImageLabels.

L'utilisateur invoque AWS Lambda GetImageLabel en transmettant le jeton d'identification d'image sous forme de paramètre. GetImageLabel recherche les étiquettes associées au jeton d'identification d'image dans ImageLabels et les renvoie à l'utilisateur. L'utilisateur reçoit l'étiquette NOT_CLASSIFIED si le modèle AWS SageMaker n'a pas fini de traiter une image.

ImageLabeller est déployé dans cinq environnements. Il existe un environnement de test (us-west-1), un environnement de staging (us-east-2) et trois environnements de production (us-west-2, us-east-1 et ca-central-1).

Composants

Les compartiments AWS S3 et les tables AWS DynamoDB qui font partie d'ImageLabeller sont déployés à l'aide de modèles AWS CloudFormation. Ce guide fournit des informations de configuration de CI/CD sur la façon de déployer les compartiments AWS S3. Le processus de déploiement des tables AWS DynamoDB est presque identique. Nous vous laissons réaliser cet exercice vous-même.

ImageLabeller contient trois composants AWS Lambda : SubmitImage, InvokeLabeller et GetImageLabeller. Ce guide fournit des informations de configuration de CI/CD sur la façon de déployer SubmitImage. Le processus de déploiement de GetImageLabel est presque identique, et nous vous laissons également réaliser cet exercice vous-même.

InvokeLabeller est un composant AWS Lambda basé sur Python qui nécessite une mise à jour mineure avant de pouvoir être publié. Plus précisément, InvokeLabeller dépend de la configuration d'AWS SageMaker, qui s'effectue via la console AWS.

Les tests système inclus dans le projet ImageLabeller testent ImageLabeller dans son ensemble. Ils échoueront si un composant d'ImageLabeller n'est pas présent ou ne fonctionne pas comme prévu. Les déploiements de SubmitImage, GetImageLabel et InvokeLabeller exécutent tous les tests système dans le cadre de leurs pipelines de CI/CD respectifs.

Pour le déploiement initial de SubmitImage, GetImageLabel et InvokeLabeller, vous devez commenter les étapes d'exécution des tests du système. Une fois les déploiements exécutés, vous pouvez supprimer les commentaires pour les étapes d'exécution des tests système et effectuer un nouveau déploiement.

Ordre de déploiement des composants

Déployer manuellement le modèle préformé d'AWS SageMaker via la console AWS

Déployer des dépôts d'infrastructure AWS

  1. s3_infra
  2. dynamodb_infra

Déployer des composants AWS Lambda

  1. SubmitImage
  2. GetImageLabel
  3. InvokeLabeller

Déployer SystemTests

Déployer CloudWatchAlarms

Configurer le modèle préformé AWS SageMaker

Informations sur la configuration du modèle préformé AWS SageMaker.

Intégration Jira avec la CI/CD

Connectez vos outils de planification, de dépôt, de CI/CD et de surveillance à 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.


Partager cet article

Lectures recommandées

Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.

Illustration DevOps

Communauté DevOps

Illustration DevOps

Parcours de formation DevOps

Illustration d'une carte

Essayez la solution gratuitement

Inscrivez-vous à notre newsletter DevOps

Thank you for signing up