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 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:
- AWS identitets- og adgangsstyring (IAM) roller og politikker knyttet til ressourcerne for at muliggøre interaktion med andre ressourcer
- Amazon Simple Storage Service (Amazon S3) spande til træningsdata og modeloutput
- An Amazon Elastic Container Registry (Amazon ECR) repository for Docker billede, der indeholder trænings- og slutningslogikken
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:
Vi leder dig gennem følgende trin på højt niveau:
- Implementer din AWS-infrastruktur med Terraform.
- Skub dit Docker-billede til Amazon ECR.
- Kør ML-pipeline.
- 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:
- En AWS-konto
- terraform version 0.13.5 eller nyere
- AWS kommandolinjegrænseflade (AWS CLI) v2
- Python 3.7 eller større
- Docker
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:
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:
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):
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.
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.
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:
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:
- På Amazon S3-konsollen skal du slette datasættet i S3-træningsbøtten.
- Slet alle de modeller, du trænede via ML-pipelinen i S3-modellerne, enten via Amazon S3-konsollen eller AWS CLI.
- Ødelæg infrastrukturen skabt via Terraform:
- 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
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.
- Coinsmart. Europas bedste Bitcoin og Crypto Exchange.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. FRI ADGANG.
- CryptoHawk. Altcoin radar. Gratis prøveversion.
- Kilde: https://aws.amazon.com/blogs/machine-learning/deploy-and-manage-machine-learning-pipelines-with-terraform-using-amazon-sagemaker/
- "
- 100
- 7
- adgang
- Ifølge
- tværs
- aktioner
- Desuden
- Yderligere
- algoritme
- Alle
- allerede
- Amazon
- Amazon Web Services
- En anden
- tilgang
- arkitektur
- OMRÅDE
- til rådighed
- AWS
- være
- BEDSTE
- bedste praksis
- krop
- grænse
- bygge
- bygger
- kapaciteter
- tilfælde
- CD
- lave om
- Vælg
- Cloud
- sky infrastruktur
- kode
- selskab
- Konfiguration
- Konsol
- Container
- indeholder
- Omkostninger
- oprettet
- skaber
- kunde
- Kunder
- data
- dataforsker
- indsætte
- indsat
- implementering
- implementering
- beskrevet
- Design
- ødelægge
- ødelagt
- udvikle
- udviklet
- udviklere
- udvikling
- Udvikling
- forskellige
- direkte
- Docker
- nemt
- muliggøre
- tilskynde
- Endpoint
- Enterprise
- at alt
- eksempel
- eksisterende
- udforske
- Mode
- Funktionalitet
- Figur
- Fornavn
- første gang
- følger
- efter
- funktion
- yderligere
- generere
- Global
- have
- Hvordan
- How To
- HTTPS
- Identity
- billede
- implementering
- implementeret
- betydning
- omfatter
- omfatter
- Herunder
- stigende
- Infrastruktur
- indgang
- interaktion
- IT
- Job
- seneste
- læring
- Line (linje)
- maskine
- machine learning
- administrere
- lykkedes
- styring
- ML
- model
- modeller
- flere
- navne
- Navigation
- nødvendig
- notesbog
- åbent
- Produktion
- ordrer
- Andet
- politikker
- mulig
- potentiale
- projekt
- give
- giver
- Repository
- anmode
- anmodninger
- Krav
- Ressourcer
- svar
- R
- Kør
- kører
- skalerbar
- Scale
- Videnskabsmand
- SDK
- sikkerhed
- Tjenester
- lignende
- Simpelt
- Størrelse
- solid
- løsninger
- Løsninger
- Stage
- standarder
- starte
- starter
- Tilstand
- Status
- opbevaring
- butik
- Succesfuld
- terminal
- derfor
- Gennem
- tid
- Trafik
- Kurser
- enestående
- brug
- visualisering
- vente
- web
- webservices
- mens
- uden
- Arbejde