Razmestite in upravljajte cevovode strojnega učenja s Terraform z uporabo Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Razmestite in upravljajte cevovode strojnega učenja s Terraform z uporabo Amazon SageMaker

Stranke AWS se za načrtovanje, razvoj in upravljanje svoje infrastrukture v oblaku zanašajo na infrastrukturo kot kodo (IaC). IaC zagotavlja, da so infrastruktura in storitve strank dosledne, razširljive in ponovljive, hkrati pa lahko sledi najboljšim praksam na področju razvojnih operacij (DevOps).

Eden od možnih pristopov za upravljanje infrastrukture in storitev AWS z IAC je Terraform, ki razvijalcem omogoča, da organizirajo svojo infrastrukturo v modulih kode za večkratno uporabo. Ta vidik postaja vedno bolj pomemben na področju strojnega učenja (ML). Razvijanje in upravljanje cevovodov ML, vključno z usposabljanjem in sklepanjem s Terraform kot IaC, vam omogoča preprosto prilagajanje za več primerov uporabe ML ali regij, ne da bi morali infrastrukturo razvijati od začetka. Poleg tega zagotavlja doslednost za infrastrukturo (na primer vrsto in velikost primerka) za usposabljanje in sklepanje v različnih izvedbah cevovoda ML. To vam omogoča, da zahteve in dohodni promet usmerite na različne Amazon SageMaker končne točke.

V tej objavi vam pokažemo, kako uvesti in upravljati cevovode ML z uporabo Terraform in Amazon SageMaker.

Pregled rešitev

Ta objava vsebuje kodo in vas vodi skozi korake, potrebne za uvedbo infrastrukture AWS za cevovode ML s Terraform za usposabljanje modela in sklepanje z uporabo Amazon SageMaker. Cevovod ML se upravlja prek Korak funkcije AWS za orkestriranje različnih korakov, izvedenih v cevovodu ML, kot je prikazano na naslednji sliki.

Korak Funkcija Koraki

Korak Funkcije zažene an AWS Lambda funkcijo, ki generira enolični ID opravila, ki se nato uporabi pri zagonu učnega opravila SageMaker. Step Functions ustvari tudi model, konfiguracijo končne točke in končno točko, ki se uporablja za sklepanje. Dodatni viri vključujejo naslednje:

Koda, povezana z ML, za usposabljanje in sklepanje s sliko Docker se opira predvsem na obstoječe delo v naslednjem GitHub repozitorij.

Naslednji diagram ponazarja arhitekturo rešitve:

Arhitekturni diagram

Vodimo vas skozi naslednje korake na visoki ravni:

  1. Razmestite svojo infrastrukturo AWS s Terraformom.
  2. Potisnite svojo sliko Docker v Amazon ECR.
  3. Zaženite cevovod ML.
  4. Prikličite svojo končno točko.

Struktura skladišča

Repozitorij, ki vsebuje kodo in podatke, uporabljene za to objavo, najdete v nadaljevanju GitHub repozitorij.

Repozitorij vključuje naslednje imenike:

  • /terraform – Sestavljen je iz naslednjih podmap:
    • ./infrastructure – Vsebuje datoteko main.tf, ki kliče modul cevovoda ML, poleg deklaracij spremenljivk, ki jih uporabljamo za uvajanje infrastrukture
    • ./ml-pipeline-module – Vsebuje cevovodni modul Terraform ML, ki ga lahko ponovno uporabimo
  • /src – Sestavljen je iz naslednjih podmap:
    • ./container – Vsebuje primer kode za usposabljanje in sklepanje z definicijami za sliko Docker
    • ./lambda_function – Vsebuje kodo Python za generiranje konfiguracij funkcije Lambda, kot je enolični ID opravila za opravilo usposabljanja SageMaker
  • /data – Vsebuje naslednjo datoteko:
    • ./iris.csv – Vsebuje podatke za usposabljanje modela ML

Predpogoji

Za ta korak morate imeti naslednje predpogoje:

Razmestite svojo infrastrukturo AWS s Terraformom

Če želite uvesti cevovod ML, morate prilagoditi nekaj spremenljivk in imen glede na vaše potrebe. Koda za ta korak je v /terraform imenik.

Pri prvi inicializaciji odprite datoteko terraform/infrastructure/terraform.tfvars in prilagodite spremenljivko Ime Projekta na ime vašega projekta, poleg spremenljivke okolica če želite namestiti v drugo regijo. Spremenite lahko tudi dodatne spremenljivke, kot so vrste primerkov za usposabljanje in sklepanje.

Nato uporabite naslednje ukaze za namestitev infrastrukture s Terraform:

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

Preverite izpis in se prepričajte, da so načrtovani viri prikazani pravilno, in potrdite z da v fazi uporabe, če je vse pravilno. Nato pojdite na konzolo Amazon ECR (ali preverite izpis Terraforma v terminalu) in pridobite URL za svoje skladišče ECR, ki ste ga ustvarili prek Terraforma.

Izhod mora biti podoben naslednjemu prikazanemu izhodu, vključno z URL-jem repozitorija 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

Potisnite svojo sliko Docker v Amazon ECR

Za cevovod ML in SageMaker za usposabljanje in zagotavljanje končne točke SageMaker za sklepanje, morate zagotoviti sliko Docker in jo shraniti v Amazon ECR. Primer najdete v imeniku src/container. Če ste že uporabili infrastrukturo AWS iz prejšnjega koraka, lahko potisnete sliko Docker, kot je opisano. Ko je vaša slika Docker razvita, lahko izvedete naslednja dejanja in jo potisnete v Amazon ECR (prilagodite URL Amazon ECR glede na svoje potrebe):

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>

Če ste že uporabili infrastrukturo AWS s Terraformom, lahko spremembe svoje kode in slike Docker potisnete neposredno v Amazon ECR brez ponovne uvedbe prek Terraforma.

Zaženite cevovod ML

Če želite usposobiti in zagnati cevovod ML, pojdite na konzolo Step Functions in začnite implementacijo. Napredek vsakega koraka lahko preverite v vizualizaciji državnega avtomata. Prav tako lahko preverite napredek usposabljanja SageMaker in stanje vaše končne točke SageMaker.

Funkcija Start Step

Ko uspešno zaženete avtomat stanja v funkcijah korakov, lahko vidite, da je bila končna točka SageMaker ustvarjena. Na konzoli SageMaker izberite Sklepanje v navigacijskem podoknu, nato Končne točke. Počakajte, da se stanje spremeni v InService.

Stanje končne točke SageMaker

Prikličite svojo končno točko

Če želite priklicati svojo končno točko (v tem primeru za nabor podatkov šarenice), lahko uporabite naslednji skript Python z AWS SDK za Python (Boto3). To lahko storite v prenosnem računalniku SageMaker ali vdelate naslednji delček kode v funkcijo 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)

Čiščenje

Infrastrukturo, ki jo je ustvaril Terraform, lahko uničite z ukazom terraform destroy, vendar morate najprej izbrisati podatke in datoteke v vedrih S3. Poleg tega je končna točka SageMaker (ali več končnih točk SageMaker, če se izvajajo večkrat) ustvarjena prek funkcij koraka in se ne upravlja prek Terraform. To pomeni, da se uvedba zgodi med izvajanjem cevovoda ML s funkcijami korakov. Zato poskrbite, da izbrišete končno točko SageMaker ali končne točke, ustvarjene prek cevovoda Step Functions ML, da se izognete nepotrebnim stroškom. Izvedite naslednje korake:

  1. Na konzoli Amazon S3 izbrišite nabor podatkov v vedru za usposabljanje S3.
  2. Izbrišite vse modele, ki ste jih usposobili prek cevovoda ML v vedru modelov S3, bodisi prek konzole Amazon S3 ali AWS CLI.
  3. Uničite infrastrukturo, ustvarjeno prek Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. Izbrišite končne točke SageMaker, konfiguracijo končne točke in modele, ustvarjene prek funkcij koraka, bodisi na konzoli SageMaker ali prek AWS CLI.

zaključek

čestitke! Razmestili ste cevovod ML z uporabo SageMakerja s Terraformom. Ta primer rešitve prikazuje, kako lahko preprosto uvedete infrastrukturo in storitve AWS za cevovode ML na način za večkratno uporabo. To vam omogoča prilagajanje za več primerov uporabe ali regij ter omogoča usposabljanje in uvajanje modelov ML z enim klikom na dosleden način. Poleg tega lahko cevovod ML zaženete večkrat, ko so na primer na voljo novi podatki ali želite spremeniti kodo algoritma. Izberete lahko tudi usmerjanje zahtev ali prometa na različne končne točke SageMaker.

Spodbujam vas, da raziščete dodajanje varnostnih funkcij in sprejmete najboljše varnostne prakse glede na vaše potrebe in potencialne standarde podjetja. Poleg tega vam bo vdelava te rešitve v vaše cevovode CI/CD dala dodatne zmogljivosti pri sprejemanju in vzpostavljanju najboljših praks in standardov DevOps v skladu z vašimi zahtevami.


O Author

Razmestite in upravljajte cevovode strojnega učenja s Terraform z uporabo Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Oliver Zollikofer je podatkovni znanstvenik pri Amazon Web Services. Globalnim podjetniškim strankam omogoča gradnjo, usposabljanje in uvajanje modelov strojnega učenja ter upravljanje življenjskega cikla modela ML z MLOps. Poleg tega gradi in arhitektira povezane rešitve v oblaku.

Časovni žig:

Več od Strojno učenje AWS