Distribuer og administrer pipelines for maskinlæring med Terraform ved å bruke Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Distribuer og administrer pipelines for maskinlæring med Terraform ved å bruke Amazon SageMaker

AWS-kunder er avhengige av Infrastructure as Code (IaC) for å designe, utvikle og administrere skyinfrastrukturen deres. IaC sikrer at kundeinfrastruktur og tjenester er konsistente, skalerbare og reproduserbare, samtidig som de kan følge beste praksis innen utviklingsoperasjoner (DevOps).

En mulig tilnærming til å administrere AWS-infrastruktur og tjenester med IaC er terra, som lar utviklere organisere sin infrastruktur i gjenbrukbare kodemoduler. Dette aspektet får stadig større betydning innen maskinlæring (ML). Å utvikle og administrere ML-pipelines, inkludert opplæring og inferens med Terraform som IaC, lar deg enkelt skalere for flere ML-brukstilfeller eller regioner uten å måtte utvikle infrastrukturen fra bunnen av. Videre gir det konsistens for infrastrukturen (for eksempel instanstype og størrelse) for opplæring og slutning på tvers av ulike implementeringer av ML-rørledningen. Dette lar deg rute forespørsler og innkommende trafikk til forskjellige Amazon SageMaker endepunkter.

I dette innlegget viser vi deg hvordan du distribuerer og administrerer ML-rørledninger ved å bruke Terraform og Amazon SageMaker.

Løsningsoversikt

Dette innlegget gir deg kode og leder deg gjennom trinnene som er nødvendige for å distribuere AWS-infrastruktur for ML-rørledninger med Terraform for modelltrening og slutning ved bruk av Amazon SageMaker. ML-rørledningen administreres via AWS trinnfunksjoner å orkestrere de forskjellige trinnene implementert i ML-pipelinen, som illustrert i følgende figur.

Trinn Funksjon Trinn

Step Functions starter en AWS Lambda funksjon, genererer en unik jobb-ID, som deretter brukes når du starter en SageMaker-treningsjobb. Step Functions oppretter også en modell, endepunktkonfigurasjon og endepunkt som brukes for slutning. Ytterligere ressurser inkluderer følgende:

Den ML-relaterte koden for opplæring og slutning med et Docker-bilde er hovedsakelig avhengig av eksisterende arbeid i det følgende GitHub repository.

Følgende diagram illustrerer løsningsarkitekturen:

Arkitektur diagram

Vi går gjennom følgende trinn på høyt nivå:

  1. Distribuer AWS-infrastrukturen din med Terraform.
  2. Skyv Docker-bildet ditt til Amazon ECR.
  3. Kjør ML-rørledningen.
  4. Påkall endepunktet ditt.

Depotstruktur

Du kan finne depotet som inneholder koden og dataene som ble brukt for dette innlegget i det følgende GitHub repository.

Depotet inkluderer følgende kataloger:

  • /terraform – Består av følgende undermapper:
    • ./infrastructure – Inneholder main.tf-filen som kaller ML pipeline-modulen, i tillegg til variable deklarasjoner som vi bruker til å distribuere infrastrukturen
    • ./ml-pipeline-module – Inneholder Terraform ML-rørledningsmodulen, som vi kan gjenbruke
  • /src – Består av følgende undermapper:
    • ./container – Inneholder eksempelkode for opplæring og slutning med definisjonene for Docker-bildet
    • ./lambda_function – Inneholder Python-koden for Lambda-funksjonen som genererer konfigurasjoner, for eksempel en unik jobb-ID for SageMaker-treningsjobben
  • /data – Inneholder følgende fil:
    • ./iris.csv – Inneholder data for opplæring av ML-modellen

Forutsetninger

For dette gjennomgangen bør du ha følgende forutsetninger:

Distribuer AWS-infrastrukturen din med Terraform

For å distribuere ML-rørledningen må du justere noen få variabler og navn i henhold til dine behov. Koden for dette trinnet er i /terraform katalogen.

Når du initialiserer for første gang, åpner du filen terraform/infrastructure/terraform.tfvars og juster variabelen prosjektnavn til navnet på prosjektet ditt, i tillegg til variabelen region hvis du ønsker å distribuere i en annen region. Du kan også endre tilleggsvariabler som forekomsttyper for trening og inferens.

Bruk deretter følgende kommandoer for å distribuere infrastrukturen med Terraform:

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

Sjekk utdataene og sørg for at de planlagte ressursene vises riktig, og bekreft med ja i søknadsfasen om alt er riktig. Gå deretter til Amazon ECR-konsollen (eller sjekk utdataene til Terraform i terminalen) og få URL-en til ECR-depotet ditt som du opprettet via Terraform.

Utdataene skal se ut som følgende viste utdata, inkludert URL-adressen til ECR-depotet:

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

Skyv Docker-bildet ditt til Amazon ECR

For at ML-rørledningen og SageMaker skal trene opp og klargjøre et SageMaker-endepunkt for slutninger, må du oppgi et Docker-bilde og lagre det i Amazon ECR. Du finner et eksempel i katalogen src/container. Hvis du allerede har brukt AWS-infrastrukturen fra det tidligere trinnet, kan du skyve Docker-bildet som beskrevet. Etter at Docker-bildet ditt er utviklet, kan du utføre følgende handlinger og skyve det til Amazon ECR (juster Amazon ECR-URL-en i henhold til 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 brukt AWS-infrastrukturen med Terraform, kan du sende endringene av koden og Docker-bildet direkte til Amazon ECR uten å distribuere via Terraform igjen.

Kjør ML-rørledningen

For å trene og kjøre ML-rørledningen, gå til Step Functions-konsollen og start implementeringen. Du kan sjekke fremdriften for hvert trinn i visualiseringen av tilstandsmaskinen. Du kan også sjekke fremdriften for SageMaker-treningsjobben og statusen til SageMaker-endepunktet.

Start trinn funksjon

Etter at du har kjørt tilstandsmaskinen i Step Functions, kan du se at SageMaker-endepunktet er opprettet. Velg på SageMaker-konsollen slutning i navigasjonsruten, da endepunkter. Sørg for å vente på at statusen endres til InService.

SageMaker Endpoint Status

Påkall endepunktet ditt

For å påkalle endepunktet ditt (i dette eksemplet, for iris-datasettet), kan du bruke følgende Python-skript med AWS SDK for Python (Boto3). Du kan gjøre dette fra en SageMaker-notisbok, eller legge inn følgende kodebit i en Lambda-funksjon:

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)

Rydd opp

Du kan ødelegge infrastrukturen opprettet av Terraform med kommandoen terraform destroy, men du må slette dataene og filene i S3-bøttene først. Videre er SageMaker-endepunktet (eller flere SageMaker-endepunkter hvis det kjøres flere ganger) opprettet via Step Functions og ikke administrert via Terraform. Dette betyr at utrullingen skjer når du kjører ML-rørledningen med trinnfunksjoner. Sørg derfor for at du sletter SageMaker-endepunktet eller -endepunktene som er opprettet via Step Functions ML-pipeline også for å unngå unødvendige kostnader. Fullfør følgende trinn:

  1. På Amazon S3-konsollen sletter du datasettet i S3-treningsbøtten.
  2. Slett alle modellene du trente via ML-rørledningen i S3-modellbøtta, enten via Amazon S3-konsollen eller AWS CLI.
  3. Ødelegg infrastrukturen opprettet via Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. Slett SageMaker-endepunktene, endepunktkonfigurasjonen og modellene opprettet via Step Functions, enten på SageMaker-konsollen eller via AWS CLI.

konklusjonen

Gratulerer! Du har distribuert en ML-pipeline ved hjelp av SageMaker med Terraform. Denne eksempelløsningen viser hvordan du enkelt kan distribuere AWS-infrastruktur og tjenester for ML-rørledninger på en gjenbrukbar måte. Dette lar deg skalere for flere brukstilfeller eller regioner, og muliggjør opplæring og distribusjon av ML-modeller med ett klikk på en konsistent måte. Videre kan du kjøre ML-pipelinen flere ganger, for eksempel når nye data er tilgjengelige eller du ønsker å endre algoritmekoden. Du kan også velge å rute forespørsler eller trafikk til forskjellige SageMaker-endepunkter.

Jeg oppfordrer deg til å utforske å legge til sikkerhetsfunksjoner og ta i bruk beste fremgangsmåter for sikkerhet i henhold til dine behov og potensielle bedriftsstandarder. I tillegg vil innbygging av denne løsningen i CI/CD-pipelines gi deg ytterligere muligheter til å ta i bruk og etablere DevOps beste praksis og standarder i henhold til dine krav.


om forfatteren

Distribuer og administrer pipelines for maskinlæring med Terraform ved å bruke Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Oliver Zollikofer er dataforsker hos Amazon Web Services. Han gjør det mulig for globale bedriftskunder å bygge, trene og distribuere maskinlæringsmodeller, i tillegg til å administrere ML-modellens livssyklus med MLOps. Videre bygger og arkitekter han relaterte skyløsninger.

Tidstempel:

Mer fra AWS maskinlæring