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
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-
Das AWS Lambda InvokeLabeller verfügt über einen AWS DynamoDB-Ereignistrigger. InvokeLabeller lädt das entsprechende Image aus open-devops-images-
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
- s3_infra
- dynamodb_infra
Bereitstellen von AWS Lambdas
- SubmitImage
- GetImageLabel
- InvokeLabeller
Bereitstellen von SystemTests
Bereitstellen von CloudWatchAlarms
Diesen Artikel teilen
Nächstes Thema
Lesenswert
Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.