Close

Introduzione a ImageLabeller


ImageLabeller è una semplice applicazione demo che utilizza l'apprendimento automatico per applicare etichette alle immagini. Utilizza AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch e AWS CloudFormation, ed è scritto in Go e Python. Questa guida spiega come utilizzare gli strumenti Atlassian Open DevOps per distribuire e monitorare un sottoinsieme di questi componenti.

Architettura di ImageLabeller

Diagramma

Come funziona

Un utente chiama l'AWS Lambda SubmitImage, passando un URL immagine valido come parametro. SubmitImage scarica l'immagine, la carica in un bucket AWS S3 opendevops-images-, inserisce una nuova tupla in una tabella AWS DynamoDB ImageLabels e restituisce un token ID immagine all'utente. Il token ID dell'immagine viene utilizzato per correlare l'immagine in open-devops-images- e la tupla in ImageLabels.

L'AWS Lambda InvokeLabeller presenta un trigger di eventi AWS DynamoDB. InvokeLabeller scarica l'immagine corrispondente da open-devops-images-, chiama un modello AWS SageMaker Inception V3 pre-addestrato per generare etichette di immagini e aggiorna la tupla in ImageLabels quando una nuova tupla viene inserita in ImageLabels.

L'utente chiama l'AWS Lambda GetImageLabel, passando il token dell'ID immagine come parametro. GetImageLabel cerca le etichette associate al token dell'ID immagine in ImageLabels e le restituisce all'utente. L'utente riceve un'etichetta NOT_CLASSIFIED se il modello AWS SageMaker non ha completato l'elaborazione di un'immagine.

ImageLabeller è distribuita in cinque ambienti: un ambiente di test in us-west-1, un ambiente di staging in us-east-2 e tre ambienti di produzione in us-west-2, us-east-1 e ca-central-1.

Componenti

I bucket AWS S3 e le tabelle AWS DynamoDB che fanno parte di ImageLabeller sono distribuiti utilizzando modelli AWS CloudFormation. Questa guida fornisce informazioni di configurazione CI/CD su come distribuire i bucket AWS S3. Il processo di distribuzione delle tabelle AWS DynamoDB è quasi identico e ti forniremo un esercizio da completare in autonomia.

In ImageLabeller sono presenti tre AWS Lambda: SubmitImage, InvokeLabeller e GetImageLabel. Questa guida fornisce informazioni di configurazione CI/CD su come distribuire SubmitImage. Il processo di distribuzione di GetImageLabel è quasi identico e puoi anche completarlo in autonomia.

InvokeLabeller è un AWS Lambda basato su Python e richiede un aggiornamento minore prima di poter essere pubblicato. Nello specifico, InvokeLabeller dipende dalla configurazione di AWS SageMaker, che viene eseguita tramite la console AWS.

I test di sistema inclusi nel progetto ImageLabeller testano ImageLabeller nel suo complesso. I test non vengono superati se qualche componente di ImageLabeller non è presente o non funziona come previsto. Le distribuzioni di SubmitImage, GetImageLabel e InvokeLabeller eseguono tutte i test di sistema come parte delle rispettive pipeline CI/CD.

Per la distribuzione iniziale di SubmitImage, GetImageLabel e InvokeLabeller è necessario commentare i passaggi di esecuzione dei test di sistema. Una volta che le distribuzioni sono state eseguite correttamente, puoi decommentare i passaggi di esecuzione dei test di sistema e ripetere la distribuzione.

Ordine di distribuzione dei componenti

Distribuisci manualmente il modello pre-addestrato di AWS SageMaker tramite la console AWS.

Distribuisci i repository dell'infrastruttura AWS.

  1. s3_infra
  2. dynamodb_infra

Distribuisci AWS Lambda.

  1. SubmitImage
  2. GetImageLabel
  3. InvokeLabeller

Distribuisci i test di sistema.

Distribuisci CloudWatchAlarms.

Configurazione del modello pre-addestrato AWS SageMaker

Dettagli su come configurare il modello pre-addestrato AWS SageMaker.

Integrazione di Jira con CI/CD

Connetti i tuoi strumenti di pianificazione, repository, CI/CD e monitoraggio con 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.


Condividi l'articolo

Letture consigliate

Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.

Illustrazione su Devops

Community DevOps

Illustrazione su Devops

Percorso di apprendimento DevOps

Illustrazione di una mappa

Inizia gratis

Iscriviti alla nostra newsletter DevOps

Thank you for signing up