Implementer og administrer pipelines for maskinlæring med Terraform ved hjælp af Amazon SageMaker PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Implementer og administrer pipelines for maskinlæring med Terraform ved hjælp af Amazon SageMaker

AWS-kunder er afhængige af Infrastructure as Code (IaC) til at designe, udvikle og administrere deres cloud-infrastruktur. IaC sikrer, at kundernes infrastruktur og tjenester er konsistente, skalerbare og reproducerbare, samtidig med at de er i stand til at følge bedste praksis inden for udviklingsoperationer (DevOps).

En mulig tilgang til at administrere AWS-infrastruktur og tjenester med IaC er terraform, som giver udviklere mulighed for at organisere deres infrastruktur i genanvendelige kodemoduler. Dette aspekt får stadig større betydning inden for maskinlæring (ML). Udvikling og styring af ML-pipelines, inklusive træning og inferens med Terraform som IaC, lader dig nemt skalere til flere ML-brugssager eller regioner uden at skulle udvikle infrastrukturen fra bunden. Ydermere giver det konsistens for infrastrukturen (for eksempel instanstype og størrelse) til træning og konklusioner på tværs af forskellige implementeringer af ML-pipelinen. Dette lader dig dirigere anmodninger og indgående trafik til forskellige Amazon SageMaker slutpunkter.

I dette indlæg viser vi dig, hvordan du implementerer og administrerer ML-pipelines ved hjælp af Terraform og Amazon SageMaker.

Løsningsoversigt

Dette indlæg giver kode og leder dig gennem de nødvendige trin for at implementere AWS-infrastruktur til ML-pipelines med Terraform til modeltræning og inferens ved hjælp af Amazon SageMaker. ML pipelinen styres via AWS-trinfunktioner at orkestrere de forskellige trin implementeret i ML-pipelinen, som illustreret i den følgende figur.

Trin Funktion Trin

Trin Funktioner starter en AWS Lambda funktion, der genererer et unikt job-id, som derefter bruges, når du starter et SageMaker-uddannelsesjob. Trinfunktioner opretter også en model, endepunktskonfiguration og endepunkt, der bruges til inferens. Yderligere ressourcer omfatter følgende:

Den ML-relaterede kode til træning og inferens med et Docker-billede afhænger hovedsageligt af eksisterende arbejde i det følgende GitHub repository.

Følgende diagram illustrerer løsningsarkitekturen:

Arkitektur diagram

Vi leder dig gennem følgende trin på højt niveau:

  1. Implementer din AWS-infrastruktur med Terraform.
  2. Skub dit Docker-billede til Amazon ECR.
  3. Kør ML-pipeline.
  4. Kald dit slutpunkt.

Depotstruktur

Du kan finde depotet, der indeholder koden og data, der blev brugt til dette indlæg, i det følgende GitHub repository.

Depotet indeholder følgende mapper:

  • /terraform – Består af følgende undermapper:
    • ./infrastructure – Indeholder main.tf-filen, der kalder ML-pipeline-modulet, foruden variable erklæringer, som vi bruger til at implementere infrastrukturen
    • ./ml-pipeline-module – Indeholder Terraform ML pipeline-modulet, som vi kan genbruge
  • /src – Består af følgende undermapper:
    • ./container – Indeholder eksempelkode til træning og inferens med definitionerne for Docker-billedet
    • ./lambda_function – Indeholder Python-koden til Lambda-funktionen, der genererer konfigurationer, såsom et unikt job-id for SageMaker træningsjobbet
  • /data – Indeholder følgende fil:
    • ./iris.csv – Indeholder data til træning af ML-modellen

Forudsætninger

For denne gennemgang skal du have følgende forudsætninger:

Implementer din AWS-infrastruktur med Terraform

For at implementere ML-pipelinen skal du justere nogle få variabler og navne i overensstemmelse med dine behov. Koden til dette trin er i /terraform mappe.

Når du initialiserer for første gang, skal du åbne filen terraform/infrastructure/terraform.tfvars og justere variablen Projekt navn til navnet på dit projekt, ud over variablen region hvis du ønsker at implementere i en anden region. Du kan også ændre yderligere variabler såsom instanstyper til træning og inferens.

Brug derefter følgende kommandoer til at implementere infrastrukturen med Terraform:

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

Kontroller outputtet og sørg for, at de planlagte ressourcer vises korrekt, og bekræft med ja i ansøgningsfasen, om alt er korrekt. Gå derefter til Amazon ECR-konsollen (eller tjek output fra Terraform i terminalen) og få URL'en til dit ECR-lager, som du oprettede via Terraform.

Outputtet skal ligne det følgende viste output, inklusive ECR-lagerets URL:

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

Skub dit Docker-billede til Amazon ECR

For at ML-pipelinen og SageMaker kan træne og levere et SageMaker-slutpunkt til slutninger, skal du levere et Docker-billede og gemme det i Amazon ECR. Du kan finde et eksempel i mappen src/container. Hvis du allerede har anvendt AWS-infrastrukturen fra det tidligere trin, kan du skubbe Docker-billedet som beskrevet. Når dit Docker-billede er udviklet, kan du udføre følgende handlinger og skubbe det til Amazon ECR (juster Amazon ECR URL'en efter dine behov):

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>

Hvis du allerede har anvendt AWS-infrastrukturen med Terraform, kan du skubbe ændringerne af din kode og Docker-billede direkte til Amazon ECR uden at implementere via Terraform igen.

Kør ML-pipeline

For at træne og køre ML-pipelinen skal du gå til Trinfunktioner-konsollen og starte implementeringen. Du kan kontrollere fremskridtene for hvert trin i visualiseringen af ​​tilstandsmaskinen. Du kan også kontrollere SageMaker-træningsjobbets fremskridt og status for dit SageMaker-slutpunkt.

Start Trin Funktion

Når du har kørt tilstandsmaskinen i Step Functions, kan du se, at SageMaker-slutpunktet er blevet oprettet. Vælg på SageMaker-konsollen Inferens i navigationsruden, så Endpoints. Sørg for at vente på, at status ændres til InService.

SageMaker Endpoint Status

Kald dit slutpunkt

For at kalde dit slutpunkt (i dette eksempel for iris-datasættet), kan du bruge følgende Python-script med AWS SDK til Python (Boto3). Du kan gøre dette fra en SageMaker-notesbog eller indlejre følgende kodestykke i en Lambda-funktion:

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)

Ryd op

Du kan ødelægge infrastrukturen oprettet af Terraform med kommandoen terraform destroy, men du skal først slette dataene og filerne i S3-bøtterne. SageMaker-slutpunktet (eller flere SageMaker-endepunkter, hvis det køres flere gange) oprettes desuden via Step Functions og administreres ikke via Terraform. Det betyder, at implementeringen sker, når ML-pipelinen køres med Step Functions. Sørg derfor for, at du også sletter SageMaker-endepunktet eller -endepunkter, der er oprettet via Step Functions ML-pipelinen, for at undgå unødvendige omkostninger. Udfør følgende trin:

  1. På Amazon S3-konsollen skal du slette datasættet i S3-træningsbøtten.
  2. Slet alle de modeller, du trænede via ML-pipelinen i S3-modellerne, enten via Amazon S3-konsollen eller AWS CLI.
  3. Ødelæg infrastrukturen skabt via Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. Slet SageMaker-endepunkterne, slutpunktskonfigurationen og modellerne oprettet via Trinfunktioner, enten på SageMaker-konsollen eller via AWS CLI.

Konklusion

Tillykke! Du har implementeret en ML-pipeline ved hjælp af SageMaker med Terraform. Dette eksempel på løsning viser, hvordan du nemt kan implementere AWS-infrastruktur og -tjenester til ML-pipelines på en genanvendelig måde. Dette giver dig mulighed for at skalere til flere anvendelsestilfælde eller regioner og muliggør træning og implementering af ML-modeller med et enkelt klik på en ensartet måde. Desuden kan du køre ML-pipelinen flere gange, for eksempel når nye data er tilgængelige, eller du vil ændre algoritmekoden. Du kan også vælge at dirigere anmodninger eller trafik til forskellige SageMaker-slutpunkter.

Jeg opfordrer dig til at udforske tilføjelse af sikkerhedsfunktioner og indførelse af bedste praksis for sikkerhed i overensstemmelse med dine behov og potentielle virksomhedsstandarder. Derudover vil indlejring af denne løsning i dine CI/CD-pipelines give dig yderligere muligheder for at vedtage og etablere DevOps bedste praksis og standarder i overensstemmelse med dine krav.


Om forfatteren

Implementer og administrer pipelines for maskinlæring med Terraform ved hjælp af Amazon SageMaker PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Oliver Zollikofer er dataforsker hos Amazon Web Services. Han gør det muligt for globale virksomhedskunder at bygge, træne og implementere maskinlæringsmodeller samt at administrere ML-modellens livscyklus med MLOps. Derudover bygger og arkitekterer han relaterede cloud-løsninger.

Tidsstempel:

Mere fra AWS maskinindlæring