Close

Introductie op ImageLabeller


ImageLabeller is een eenvoudige demotoepassing die gebruikmaakt van machine learning om labels op afbeeldingen aan te brengen. Het maakt gebruik van AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch en AWS CloudFormation, en is geschreven in Go en Python. In deze handleiding wordt beschreven hoe je Atlassian Open DevOps-tools kunt gebruiken om een subset van deze componenten te implementeren en te monitoren.

ImageLabeller-architectuur

Diagram

Hoe het werkt

Een gebruiker roept AWS Lambda SubmitImage aan en geeft een geldige URL van de afbeelding door als parameter. SubmitImage downloadt de afbeelding, uploadt deze naar een AWS S3-bucket open-devops-images-, voegt een nieuwe tuple in een AWS DynamoDB-tabel ImageLabels in en geeft de gebruiker een afbeeldings-ID-token terug. De afbeeldings-ID-token wordt gebruikt om de afbeelding in een open-devops-images- en de tuple in ImageLabels met elkaar te correleren.

De AWS Lambda InvokeLabeller heeft een AWS DynamoDB-gebeurtenistrigger. InvokeLabeller downloadt de bijbehorende afbeelding uit de open-devops-images-, roept een vooraf getraind model van AWS SageMaker Inception V3 aan om afbeeldingslabels te genereren, en actualiseert de tuple in ImageLabels wanneer er een nieuwe tuple wordt ingevoegd in ImageLabels.

De gebruiker roept AWS Lambda GetImageLabel aan en geeft het afbeeldings-ID-token door als parameter. GetImageLabel zoekt de labels op die zijn gekoppeld aan de afbeeldings-ID-token in ImageLabels en stuurt ze terug naar de gebruiker. De gebruiker krijgt het label NOT_CLASSIFIED als het AWS SageMaker-model nog niet klaar is met het verwerken van een afbeelding.

ImageLabeller wordt geïmplementeerd in vijf omgevingen. Een testomgeving in us-west-1, een stagingomgeving in us-east-2 en drie productieomgevingen in us-west-2, us-east-1 en ca-central-1.

Componenten

De AWS S3-buckets en AWS DynamoDB-tabellen die deel uitmaken van ImageLabeller worden geïmplementeerd met behulp van AWS CloudFormation-sjablonen. Deze handleiding bevat CI/CD-configuratiegegevens voor het implementeren van de AWS S3-buckets. Het proces voor het implementeren van de AWS DynamoDB-tabellen is vrijwel identiek en wordt je als een oefening aangeboden die je zelf moet voltooien.

ImageLabeller bevat drie AWS Lambda's in ImageLabeller: SubmitImage, InvokeLabeller en GetImageLabel. Deze handleiding bevat CI/CD-configuratiegegevens voor het implementeren van SubmitImage. Het proces voor de implementatie van GetImageLabel is vrijwel identiek en moet je ook zelf voltooien.

InvokeLabeller is een op Python gebaseerde AWS Lambda en moet een kleine update ondergaan voordat het gepubliceerd kan worden. In het bijzonder is InvokeLabeller afhankelijk van de AWS SageMaker-configuratie die via de AWS-console wordt uitgevoerd.

De systeemtests die zijn opgenomen in het ImageLabeller-project testen ImageLabeller als geheel. De tests mislukken als een component van ImageLabeller niet aanwezig is of naar verwachting werkt. De implementaties van SubmitImage, GetImageLabel en InvokeLabeller voeren de systeemtests allemaal uit als onderdeel van hun respectievelijke CI/CD-pipelines.

Voor de eerste implementatie van SubmitImage, GetImageLabel en InvokeLabeller moet je de uitvoeringsstappen voor systeemtests uitcommentariëren. Zodra de implementaties eenmaal succesvol zijn uitgevoerd, kun je de opmerkingen over de uitvoeringsstappen van de systeemtest ongedaan maken en opnieuw implementeren.

Order om componenten te implementeren

Implementeer het vooraf getrainde model van AWS SageMaker handmatig via de AWS-console

Implementeer repository's voor AWS-infrastructuur

  1. s3_infra
  2. dynamodb_infra

AWS Lambda's implementeren

  1. SubmitImage
  2. GetImageLabel
  3. InvokeLabeller

Systeemtests implementeren

Cloud Watch-alarmen implementeren

Stel het vooraf getrainde model van AWS SageMaker in

Informatie over het instellen van het vooraf getrainde model van AWS SageMaker.

Jira-integratie met CI/CD

Verbind je tools voor planning, repository, CI/CD en monitoring met 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.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Toelichting DevOps

DevOps-community

Toelichting DevOps

DevOps-leertraject

Afbeelding van kaart

Gratis aan de slag

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up