Wdrażaj i zarządzaj potokami uczenia maszynowego za pomocą Terraform przy użyciu Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wdrażaj i zarządzaj potokami uczenia maszynowego za pomocą Terraform za pomocą Amazon SageMaker

Klienci AWS polegają na Infrastructure as Code (IaC), aby projektować, rozwijać i zarządzać swoją infrastrukturą chmurową. IaC zapewnia, że ​​infrastruktura i usługi klienta są spójne, skalowalne i powtarzalne, przy jednoczesnym zachowaniu najlepszych praktyk w obszarze działań rozwojowych (DevOps).

Jednym z możliwych podejść do zarządzania infrastrukturą i usługami AWS za pomocą IaC jest: Terraform, który pozwala programistom organizować swoją infrastrukturę w moduły kodu wielokrotnego użytku. Ten aspekt nabiera coraz większego znaczenia w obszarze uczenia maszynowego (ML). Opracowywanie potoków ML i zarządzanie nimi, w tym trenowanie i wnioskowanie za pomocą Terraform jako IaC, umożliwia łatwe skalowanie dla wielu przypadków użycia ML lub regionów bez konieczności tworzenia infrastruktury od podstaw. Ponadto zapewnia spójność infrastruktury (na przykład typ i rozmiar wystąpienia) na potrzeby uczenia i wnioskowania w różnych implementacjach potoku ML. Dzięki temu możesz kierować żądania i ruch przychodzący do różnych Amazon Sage Maker punkty końcowe.

W tym poście pokazujemy, jak wdrożyć i zarządzać potokami ML za pomocą Terraform i Amazon SageMaker.

Omówienie rozwiązania

Ten post zawiera kod i prowadzi przez kroki niezbędne do wdrożenia infrastruktury AWS dla potoków ML za pomocą Terraform do uczenia modeli i wnioskowania przy użyciu Amazon SageMaker. Potok ML jest zarządzany przez Funkcje kroków AWS do organizowania różnych kroków zaimplementowanych w potoku ML, jak pokazano na poniższym rysunku.

Krok Funkcja Kroki

Funkcje krokowe uruchamiają się i AWS Lambda funkcja, generująca unikalny identyfikator pracy, który jest następnie używany podczas rozpoczynania pracy szkoleniowej SageMaker. Step Functions tworzy również model, konfigurację punktu końcowego i punkt końcowy używany do wnioskowania. Dodatkowe zasoby obejmują:

Kod związany z ML do uczenia i wnioskowania z obrazem Dockera opiera się głównie na istniejącej pracy w poniższych Repozytorium GitHub.

Poniższy diagram ilustruje architekturę rozwiązania:

Schemat Architektury

Przeprowadzimy Cię przez następujące etapy wysokiego poziomu:

  1. Wdróż swoją infrastrukturę AWS za pomocą Terraform.
  2. Prześlij swój obraz Docker do Amazon ECR.
  3. Uruchom potok ML.
  4. Wywołaj swój punkt końcowy.

Struktura repozytorium

Repozytorium zawierające kod i dane użyte w tym poście znajdziesz poniżej Repozytorium GitHub.

Repozytorium zawiera następujące katalogi:

  • /terraform – Składa się z następujących podfolderów:
    • ./infrastructure – Zawiera plik main.tf wywołujący moduł potoku ML, oprócz deklaracji zmiennych, których używamy do wdrażania infrastruktury
    • ./ml-pipeline-module – Zawiera moduł potoku Terraform ML, który możemy ponownie wykorzystać
  • /src – Składa się z następujących podfolderów:
    • ./container – Zawiera przykładowy kod do szkolenia i wnioskowania z definicjami dla obrazu Docker
    • ./lambda_function – Zawiera kod Pythona do generowania konfiguracji funkcji Lambda, takich jak unikalny identyfikator zadania dla zadania szkoleniowego SageMaker
  • /data – Zawiera następujący plik:
    • ./iris.csv – Zawiera dane do trenowania modelu ML

Wymagania wstępne

W tej instrukcji należy spełnić następujące wymagania wstępne:

Wdróż infrastrukturę AWS z Terraform

Aby wdrożyć potok ML, musisz dostosować kilka zmiennych i nazw do swoich potrzeb. Kod tego kroku znajduje się w /terraform katalogiem.

Podczas inicjalizacji po raz pierwszy otwórz plik terraform/infrastructure/terraform.tfvars i dostosuj zmienną! Nazwa Projektu do nazwy Twojego projektu, oprócz zmiennej region jeśli chcesz wdrożyć w innym regionie. Możesz także zmienić dodatkowe zmienne, takie jak typy instancji do uczenia i wnioskowania.

Następnie użyj następujących poleceń, aby wdrożyć infrastrukturę za pomocą Terraform:

export AWS_PROFILE=<your_aws_cli_profile_name>
cd terraform/infrastructure
terraform init
terraform plan
terraform apply

Sprawdź wyniki i upewnij się, że zaplanowane zasoby pojawiają się poprawnie, i potwierdź tak na etapie aplikowania, jeśli wszystko jest w porządku. Następnie przejdź do konsoli Amazon ECR (lub sprawdź dane wyjściowe Terraform w terminalu) i uzyskaj adres URL repozytorium ECR utworzonego za pomocą Terraform.

Dane wyjściowe powinny wyglądać podobnie do następujących wyświetlanych danych wyjściowych, w tym adres URL repozytorium ECR:

Apply complete! Resources: 19 added, 0 changed, 0 destroyed. Outputs: ecr_repository_url = <account_number>.dkr.ecr.eu-west-1.amazonaws.com/ml-pipeline-terraform-demo

Prześlij swój obraz Dockera do Amazon ECR

Aby potok ML i SageMaker mogły trenować i udostępniać punkt końcowy SageMaker w celu wnioskowania, należy dostarczyć obraz platformy Docker i przechowywać go w Amazon ECR. Możesz znaleźć przykład w katalogu src/container. Jeśli już zastosowałeś infrastrukturę AWS z poprzedniego kroku, możesz wypchnąć obraz Docker zgodnie z opisem. Po opracowaniu obrazu Docker możesz wykonać następujące czynności i przekazać go do Amazon ECR (dostosuj adres URL Amazon ECR do swoich potrzeb):

cd src/container
export AWS_PROFILE=<your_aws_cli_profile_name>
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin <account_number>.dkr.ecr.eu-west-1.amazonaws.com
docker build -t ml-training .
docker tag ml-training:latest <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>:latest
docker push <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>

Jeśli już zastosowałeś infrastrukturę AWS z Terraform, możesz przesłać zmiany kodu i obrazu Docker bezpośrednio do Amazon ECR bez ponownego wdrażania za pośrednictwem Terraform.

Uruchom potok ML

Aby trenować i uruchamiać potok ML, przejdź do konsoli Step Functions i rozpocznij implementację. Możesz sprawdzić postęp każdego kroku w wizualizacji maszyny stanowej. Możesz także sprawdzić postęp zadania szkoleniowego SageMaker i stan punktu końcowego SageMaker.

Rozpocznij funkcję kroku

Po pomyślnym uruchomieniu maszyny stanów w Step Functions można zobaczyć, że punkt końcowy programu SageMaker został utworzony. W konsoli SageMaker wybierz Wnioskowanie w okienku nawigacji, a następnie Punkty końcowe. Poczekaj, aż status zmieni się na InService.

Stan punktu końcowego SageMaker

Wywołaj swój punkt końcowy

Aby wywołać punkt końcowy (w tym przykładzie dla zestawu danych tęczówki), możesz użyć następującego skryptu Pythona z AWS SDK dla Pythona (Boto3). Możesz to zrobić z notatnika SageMaker lub osadzić następujący fragment kodu w funkcji Lambda:

import boto3
from io import StringIO
import pandas as pd client = boto3.client('sagemaker-runtime') endpoint_name = 'Your endpoint name' # Your endpoint name.
content_type = "text/csv"   # The MIME type of the input data in the request body. payload = pd.DataFrame([[1.5,0.2,4.4,2.6]])
csv_file = StringIO()
payload.to_csv(csv_file, sep=",", header=False, index=False)
payload_as_csv = csv_file.getvalue() response = client.invoke_endpoint(
EndpointName=endpoint_name,
ContentType=content_type,
Body=payload_as_csv
) label = response['Body'].read().decode('utf-8')
print(label)

Sprzątać

Infrastrukturę utworzoną przez Terraform można zniszczyć za pomocą polecenia terraform destroy, ale najpierw należy usunąć dane i pliki z zasobników S3. Co więcej, punkt końcowy SageMaker (lub wiele punktów końcowych SageMaker, jeśli jest uruchamiany wiele razy) jest tworzony za pomocą funkcji Step Functions i nie jest zarządzany przez Terraform. Oznacza to, że wdrożenie ma miejsce podczas uruchamiania potoku ML z funkcjami kroków. Dlatego upewnij się, że usuniesz punkt końcowy SageMaker lub punkty końcowe utworzone za pomocą potoku Step Functions ML, aby uniknąć niepotrzebnych kosztów. Wykonaj następujące kroki:

  1. W konsoli Amazon S3 usuń zestaw danych z zasobnika szkoleniowego S3.
  2. Usuń wszystkie modele wytrenowane za pomocą potoku ML w zasobniku modeli S3, za pomocą konsoli Amazon S3 lub interfejsu AWS CLI.
  3. Zniszcz infrastrukturę stworzoną przez Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. Usuń punkty końcowe SageMaker, konfigurację punktów końcowych i modele utworzone za pomocą funkcji krokowych w konsoli SageMaker lub za pośrednictwem interfejsu AWS CLI.

Wnioski

Gratulacje! Wdrożyłeś potok ML przy użyciu SageMaker z Terraform. To przykładowe rozwiązanie pokazuje, jak łatwo wdrożyć infrastrukturę i usługi AWS dla potoków ML w sposób wielokrotnego użytku. Umożliwia to skalowanie dla wielu przypadków użycia lub regionów oraz umożliwia trenowanie i wdrażanie modeli ML za pomocą jednego kliknięcia w spójny sposób. Ponadto można wielokrotnie uruchamiać potok ML, na przykład, gdy dostępne są nowe dane lub chcesz zmienić kod algorytmu. Możesz także wybrać kierowanie żądań lub ruchu do różnych punktów końcowych SageMaker.

Zachęcam do zapoznania się z dodawaniem funkcji bezpieczeństwa i przyjęciem najlepszych praktyk w zakresie bezpieczeństwa zgodnie z Twoimi potrzebami i potencjalnymi standardami firmy. Ponadto osadzenie tego rozwiązania w potokach CI/CD zapewni dodatkowe możliwości w zakresie przyjmowania i ustanawiania najlepszych praktyk i standardów DevOps zgodnie z Twoimi wymaganiami.


O autorze

Wdrażaj i zarządzaj potokami uczenia maszynowego za pomocą Terraform przy użyciu Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Olivera Zollikofera jest analitykiem danych w Amazon Web Services. Umożliwia globalnym klientom korporacyjnym tworzenie, szkolenie i wdrażanie modeli uczenia maszynowego, a także zarządzanie cyklem życia modelu ML za pomocą MLOps. Ponadto buduje i architekci powiązane rozwiązania chmurowe.

Znak czasu:

Więcej z Uczenie maszynowe AWS