Close

Wprowadzenie do aplikacji ImageLabeller


ImageLabeller jest prostą aplikacją demonstracyjną, która wykorzystuje uczenie maszynowe do oznaczania etykietami obrazów. Wykorzystuje ona komponenty AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch oraz AWS CloudFormation i jest napisana w językach Go oraz Python. W tym przewodniku omówiono sposób korzystania z narzędzi Atlassian Open DevOps do wdrożenia i monitorowania podzbioru tych komponentów.

Architektura aplikacji ImageLabeller

Schemat

Jak to działa

Użytkownik wywołuje funkcję AWS Lambda SubmitImage, przekazując prawidłowy adres URL obrazu jako parametr. Funkcja SubmitImage pobiera obraz, przekazuje go do zasobnika AWS S3 open-devops-images-, wstawia nową krotkę do tabeli ImageLabels w AWS DynamoDB i zwraca użytkownikowi token identyfikatora obrazu. Token identyfikatora obrazu służy do korelowania obrazu w zasobniku open-devops-images- z krotką w tabeli ImageLabels.

Funkcja AWS Lambda InvokeLabeller ma wyzwalacz zdarzenia AWS DynamoDB. InvokeLabeller pobiera odpowiedni obraz z zasobnika open-devops-images-, wywołuje wstępnie wytrenowany model AWS SageMaker Inception V3 w celu wygenerowania etykiet obrazów i aktualizuje krotkę w tabeli ImageLabels po wstawieniu nowej krotki do ImageLabels.

Użytkownik wywołuje funkcję AWS Lambda GetImageLabel, przekazując token identyfikatora obrazu jako parametr. Funkcja GetImageLabel wyszukuje etykiety powiązane z tokenem identyfikatora obrazu w tabeli ImageLabels i zwraca je użytkownikowi. Jeśli model AWS SageMaker nie zakończył przetwarzania obrazu, użytkownik otrzymuje etykietę NOT_CLASSIFIED.

Aplikacja ImageLabeller jest wdrażana w pięciu środowiskach: testowym w regionie us-west-1, przejściowym w regionie us-east-2 i trzech produkcyjnych w regionach us-west-2, us-east-1 i ca-central-1.

Komponenty

Zasobniki AWS S3 i tabele AWS DynamoDB będące częścią aplikacji ImageLabeller są wdrażane przy użyciu szablonów AWS CloudFormation. Ten przewodnik zawiera informacje na temat konfiguracji CI/CD odnośnie wdrażania zasobników AWS S3. Proces wdrażania tabel AWS DynamoDB jest niemal identyczny i możesz go wykonać samodzielnie w ramach ćwiczenia.

W aplikacji ImageLabeller występują trzy funkcje AWS Lambda: SubmitImage, InvokeLabeller i GetImageLabel. Ten przewodnik zawiera informacje o konfiguracji CI/CD dotyczącej wdrażania funkcji SubmitImage. Proces wdrażania funkcji GetImageLabel jest niemal identyczny i również możesz go wykonać samodzielnie.

InvokeLabeller jest opartą na języku Python funkcją AWS Lambda i wymaga drobnej aktualizacji przed opublikowaniem. Funkcja InvokeLabeller jest zależna od konfiguracji AWS SageMaker wprowadzanej z poziomu konsoli AWS.

Testy systemowe zawarte w projekcie ImageLabeller testują aplikację ImageLabeller jako całość. Testy zakończą się niepowodzeniem, jeśli którykolwiek komponent aplikacji ImageLabeller nie będzie działał zgodnie z oczekiwaniami lub będzie go brakowało. Wdrożenia funkcji SubmitImage, GetImageLabel i InvokeLabeller wykonują testy systemowe w ramach swoich pipeline'ów CI/CD.

W celu wstępnego wdrożenia funkcji SubmitImage, GetImageLabel i InvokeLabeller musisz ująć w komentarz kroki wykonywania testów systemowych. Gdy wdrożenia zostaną raz pomyślnie uruchomione, możesz usunąć oznaczenie komentarzem kroków wykonywania testów systemowych i ponowić wdrożenie.

Kolejność wdrażania komponentów

Ręczne wdrożenie wstępnie wytrenowanego modelu AWS SageMaker za pośrednictwem konsoli AWS

Wdrożenie repozytoriów infrastruktury AWS

  1. s3_infra
  2. dynamodb_infra

Wdrożenie funkcji AWS Lambda

  1. SubmitImage
  2. GetImageLabel
  3. InvokeLabeller

Wdrożenie SystemTests

Wdrożenie CloudWatchAlarms

Konfiguracja wstępnie wytrenowanego modelu AWS SageMaker

Szczegółowy opis konfiguracji wstępnie wytrenowanego modelu AWS SageMaker.

Integracja systemu Jira z narzędziami CI/CD

Połącz narzędzia planowania, repozytoriów, CI/CD i monitorowania dzięki 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.


Udostępnij ten artykuł

Zalecane lektury

Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.

Ilustracja DevOps

Społeczność DevOps

Ilustracja DevOps

Ścieżka szkoleniowa DevOps

Ilustracja przedstawiająca mapę

Zacznij korzystać za darmo

Zapisz się do newslettera DevOps

Thank you for signing up