Close

Einführung in ImageLabeller


ImageLabeller ist eine einfache Demo-Anwendung, die maschinelles Lernen nutzt, um Images mit Stichwörtern zu versehen. Sie verwendet AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch und AWS CloudFormation und wurde in Go und Python geschrieben. In diesem Leitfaden wird beschrieben, wie du mit Atlassian Open DevOps-Tools eine Teilmenge dieser Komponenten bereitstellst und überwachst.

ImageLabeller-Architektur

Diagramm

Wie es funktioniert

Ein Benutzer ruft das AWS Lambda SubmitImage auf und übergibt eine gültige Image-URL als Parameter. SubmitImage lädt das Image herunter, lädt es in einen AWS S3-Bucket (open-devops-images-) hoch, fügt ein neues Tupel in die AWS DynamoDB-Tabelle "ImageLabels" ein und gibt dem Benutzer ein Image-ID-Token zurück. Das Image-ID-Token wird verwendet, um das Image in open-devops-images- und das Tupel in "ImageLabels" zu korrelieren.

Das AWS Lambda InvokeLabeller verfügt über einen AWS DynamoDB-Ereignistrigger. InvokeLabeller lädt das entsprechende Image aus open-devops-images- herunter, ruft ein vorgefertigtes AWS SageMaker Inception V3-Modell auf, um Image-Stichwörter zu generieren, und aktualisiert das Tupel in ImageLabels, wenn ein neues Tupel in ImageLabels eingefügt wird.

Der Benutzer ruft das AWS Lambda GetImageLabel auf und übergibt das Image-ID-Token als Parameter. GetImageLabel sucht die Stichwörter, die dem Image-ID-Token in ImageLabels zugeordnet sind, und gibt sie an den Benutzer zurück. Dem Benutzer wird das Stichwort "NOT_CLASSIFIED" (Nicht klassifiziert) angezeigt, wenn das AWS SageMaker-Modell die Verarbeitung eines Image noch nicht abgeschlossen hat.

ImageLabeller wird in fünf Umgebungen bereitgestellt: in einer Testumgebung in us-west-1, einer Staging-Umgebung in us-east-2 sowie in drei Produktionsumgebungen in us-west-2, us-east-1 und ca-central-1.

Komponenten

Die AWS S3-Buckets und AWS DynamoDB-Tabellen, die Teil von ImageLabeller sind, werden mithilfe von AWS CloudFormation-Vorlagen bereitgestellt. Dieser Leitfaden enthält CI/CD-Konfigurationsinformationen für das Bereitstellen der AWS S3-Buckets. Der Prozess für das Deployment der AWS DynamoDB-Tabellen ist fast derselbe. Du kannst ihn zur Übung selbst durchführen.

Es gibt drei AWS Lambdas in ImageLabeller: SubmitImage, InvokeLabeller und GetImageLabel. Dieser Leitfaden enthält CI/CD-Konfigurationsinformationen für das Bereitstellen von SubmitImage. Der Prozess für das Deployment von GetImageLabel ist fast derselbe. Du kannst ihn zur Übung selbst durchführen.

InvokeLabeller ist ein Python-basiertes AWS Lambda und erfordert eine geringfügige Aktualisierung, bevor es veröffentlicht werden kann. Konkret ist InvokeLabeller von der AWS SageMaker-Konfiguration abhängig, die über die AWS-Konsole erfolgt.

Mit den im ImageLabeller-Projekt enthaltenen Systemtests wird ImageLabeller als Ganzes getestet. Die Tests werden nicht bestanden, wenn eine Komponente von ImageLabeller nicht vorhanden ist oder nicht wie erwartet funktioniert. Bei den Deployments von SubmitImage, GetImageLabel und InvokeLabeller werden die Systemtests jeweils im Rahmen der CI/CD-Pipeline ausgeführt.

Für das anfängliche Deployment von SubmitImage, GetImageLabel und InvokeLabeller musst du die Schritte zur Ausführung von Systemtests auskommentieren. Sobald die Deployments einmal erfolgreich ausgeführt wurden, kannst du die Schritte zur Ausführung des Systemtests einkommentieren und das Deployment erneut durchführen.

Deployment-Reihenfolge für Komponenten

Manuelles Bereitstellen des vorgefertigten AWS SageMaker-Modells über die AWS-Konsole

Bereitstellen von AWS-Infrastruktur-Repositorys

  1. s3_infra
  2. dynamodb_infra

Bereitstellen von AWS Lambdas

  1. SubmitImage
  2. GetImageLabel
  3. InvokeLabeller

Bereitstellen von SystemTests

Bereitstellen von CloudWatchAlarms

Einrichten des vorgefertigten AWS SageMaker-Modells

In diesem Text wird erläutert, wie du das vorgefertigte AWS SageMaker-Modell einrichtest.

Jira-Integration mit CI/CD

Verbinde deine Planungs-, Repository-, CI/CD- und Überwachungstools mit 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.


Diesen Artikel teilen

Lesenswert

Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.

Abbildung: DevOps

DevOps-Community

Abbildung: DevOps

DevOps-Lernpfad

Abbildung: Karte

Kostenlos loslegen

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up