Implementați și gestionați conductele de învățare automată cu Terraform folosind Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Implementați și gestionați conductele de învățare automată cu Terraform folosind Amazon SageMaker

Clienții AWS se bazează pe Infrastructure as Code (IaC) pentru a proiecta, dezvolta și gestiona infrastructura lor cloud. IaC asigură că infrastructura și serviciile clienților sunt consecvente, scalabile și reproductibile, putând în același timp să urmeze cele mai bune practici în domeniul operațiunilor de dezvoltare (DevOps).

O posibilă abordare pentru a gestiona infrastructura și serviciile AWS cu IaC este Terraform, care permite dezvoltatorilor să-și organizeze infrastructura în module de cod reutilizabile. Acest aspect capătă din ce în ce mai multă importanță în domeniul învățării automate (ML). Dezvoltarea și gestionarea conductelor ML, inclusiv instruirea și inferența cu Terraform ca IaC, vă permite să scalați cu ușurință mai multe cazuri de utilizare ML sau regiuni, fără a fi nevoie să dezvoltați infrastructura de la zero. În plus, oferă coerență infrastructurii (de exemplu, tipul și dimensiunea instanței) pentru instruire și inferență în diferite implementări ale conductei ML. Acest lucru vă permite să direcționați solicitările și traficul de intrare către diferite Amazon SageMaker puncte finale.

În această postare, vă arătăm cum să implementați și să gestionați conductele ML folosind Terraform și Amazon SageMaker.

Prezentare generală a soluțiilor

Această postare oferă cod și vă îndrumă prin pașii necesari pentru a implementa infrastructura AWS pentru conductele ML cu Terraform pentru formarea modelului și inferența folosind Amazon SageMaker. Conducta ML este gestionată prin Funcții pas AWS pentru a orchestra diferiții pași implementați în pipeline ML, așa cum este ilustrat în figura următoare.

Pas Funcție Pași

Funcțiile pasului începe an AWS Lambdas funcția, generând un ID unic al jobului, care este apoi utilizat la pornirea unui job de instruire SageMaker. Step Functions creează, de asemenea, un model, o configurație de punct final și un punct final utilizat pentru inferență. Resursele suplimentare includ următoarele:

Codul legat de ML pentru antrenament și inferență cu o imagine Docker se bazează în principal pe lucrările existente în următoarele GitHub depozit.

Următoarea diagramă ilustrează arhitectura soluției:

Diagrama arhitecturii

Vă ghidăm prin următorii pași de nivel înalt:

  1. Implementați-vă infrastructura AWS cu Terraform.
  2. Împingeți imaginea dvs. Docker către Amazon ECR.
  3. Rulați conducta ML.
  4. Invocați punctul final.

Structura depozitului

Puteți găsi depozitul care conține codul și datele utilizate pentru această postare în cele ce urmează GitHub depozit.

Depozitul include următoarele directoare:

  • /terraform – Constă din următoarele subdosare:
    • ./infrastructure – Conține fișierul main.tf care apelează modulul pipeline ML, în plus față de declarațiile de variabile pe care le folosim pentru a implementa infrastructura
    • ./ml-pipeline-module – Conține modulul pipeline Terraform ML, pe care îl putem reutiliza
  • /src – Constă din următoarele subdosare:
    • ./container – Conține cod exemplu pentru antrenament și inferență cu definițiile pentru imaginea Docker
    • ./lambda_function – Conține codul Python pentru configurațiile de generare a funcției Lambda, cum ar fi un ID unic de job pentru jobul de instruire SageMaker
  • /data – Conține următorul fișier:
    • ./iris.csv – Conține date pentru antrenarea modelului ML

Cerințe preliminare

Pentru această prezentare generală, ar trebui să aveți următoarele condiții prealabile:

Implementați-vă infrastructura AWS cu Terraform

Pentru a implementa pipeline ML, trebuie să ajustați câteva variabile și nume în funcție de nevoile dvs. Codul pentru acest pas este în /terraform director.

Când inițializați pentru prima dată, deschideți fișierul terraform/infrastructure/terraform.tfvars și ajustați variabila Denumirea proiectului la numele proiectului dvs., pe lângă variabilă regiune dacă doriți să vă desfășurați în altă regiune. De asemenea, puteți modifica variabile suplimentare, cum ar fi tipurile de instanțe pentru antrenament și inferență.

Apoi utilizați următoarele comenzi pentru a implementa infrastructura cu Terraform:

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

Verificați rezultatul și asigurați-vă că resursele planificate apar corect și confirmați cu da în etapa de aplicare dacă totul este corect. Apoi accesați consola Amazon ECR (sau verificați rezultatul Terraform în terminal) și obțineți adresa URL pentru depozitul dvs. ECR pe care l-ați creat prin Terraform.

Ieșirea ar trebui să arate similar cu următoarea ieșire afișată, inclusiv adresa URL a depozitului 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

Împingeți imaginea dvs. Docker către Amazon ECR

Pentru ca pipeline ML și SageMaker să antreneze și să furnizeze un punct final SageMaker pentru inferență, trebuie să furnizați o imagine Docker și să o stocați în Amazon ECR. Puteți găsi un exemplu în director src/container. Dacă ați aplicat deja infrastructura AWS de la pasul anterior, puteți împinge imaginea Docker așa cum este descris. După ce imaginea dvs. Docker este dezvoltată, puteți efectua următoarele acțiuni și o puteți trimite către Amazon ECR (ajustați adresa URL Amazon ECR în funcție de nevoile dvs.):

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>

Dacă ați aplicat deja infrastructura AWS cu Terraform, puteți împinge modificările codului și ale imaginii Docker direct în Amazon ECR fără a le implementa din nou prin Terraform.

Rulați conducta ML

Pentru a antrena și a rula conducta ML, accesați consola Step Functions și începeți implementarea. Puteți verifica progresul fiecărui pas în vizualizarea mașinii de stări. De asemenea, puteți verifica progresul lucrării de instruire SageMaker și starea punctului final SageMaker.

Funcția de pornire a pasului

După ce ați rulat cu succes mașina de stări în Step Functions, puteți vedea că punctul final SageMaker a fost creat. Pe consola SageMaker, alegeți deducție în panoul de navigare, atunci Puncte finale. Asigurați-vă că așteptați ca starea să se schimbe în InService.

Starea punctului final SageMaker

Invocați punctul final

Pentru a invoca punctul final (în acest exemplu, pentru setul de date iris), puteți utiliza următorul script Python cu SDK AWS pentru Python (Boto3). Puteți face acest lucru dintr-un blocnotes SageMaker sau puteți încorpora următorul fragment de cod într-o funcție 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)

A curăța

Puteți distruge infrastructura creată de Terraform cu comanda terraform destroy, dar mai întâi trebuie să ștergeți datele și fișierele din compartimentele S3. În plus, punctul final SageMaker (sau mai multe puncte finale SageMaker dacă sunt executate de mai multe ori) este creat prin Step Functions și nu este gestionat prin Terraform. Aceasta înseamnă că implementarea are loc atunci când rulează conducta ML cu funcții de pas. Prin urmare, asigurați-vă că ștergeți punctul final SageMaker sau punctele finale create prin conducta Step Functions ML, de asemenea, pentru a evita costurile inutile. Parcurgeți următorii pași:

  1. Pe consola Amazon S3, ștergeți setul de date din compartimentul de antrenament S3.
  2. Ștergeți toate modelele pe care le-ați antrenat prin conducta ML din compartimentul de modele S3, fie prin consola Amazon S3, fie prin AWS CLI.
  3. Distrugeți infrastructura creată prin Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. Ștergeți punctele finale SageMaker, configurația punctelor finale și modelele create prin Step Functions, fie pe consola SageMaker, fie prin AWS CLI.

Concluzie

Felicitări! Ați implementat o conductă ML folosind SageMaker cu Terraform. Acest exemplu de soluție arată cum puteți implementa cu ușurință infrastructura și serviciile AWS pentru conductele ML într-un mod reutilizabil. Acest lucru vă permite să scalați pentru mai multe cazuri de utilizare sau regiuni și permite antrenamentul și implementarea modelelor ML cu un singur clic într-un mod consistent. În plus, puteți rula conducta ML de mai multe ori, de exemplu, când sunt disponibile date noi sau doriți să schimbați codul algoritmului. De asemenea, puteți alege să direcționați solicitările sau traficul către diferite puncte finale SageMaker.

Vă încurajez să explorați adăugarea de funcții de securitate și adoptarea celor mai bune practici de securitate în conformitate cu nevoile dvs. și standardele potențiale ale companiei. În plus, încorporarea acestei soluții în conductele dumneavoastră CI/CD vă va oferi capacități suplimentare în adoptarea și stabilirea celor mai bune practici și standarde DevOps în conformitate cu cerințele dumneavoastră.


Despre autor

Implementați și gestionați conductele de învățare automată cu Terraform folosind Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Oliver Zollikofer este Data Scientist la Amazon Web Services. El permite clienților întreprinderi globale să construiască, să antreneze și să implementeze modele de învățare automată, precum și să gestioneze ciclul de viață al modelului ML cu MLOps. Mai mult, el construiește și arhitectează soluții legate de cloud.

Timestamp-ul:

Mai mult de la Învățare automată AWS