Implementeer en beheer machine learning-pijplijnen met Terraform met behulp van Amazon SageMaker PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Implementeer en beheer pijplijnen voor machine learning met Terraform met behulp van Amazon SageMaker

AWS-klanten vertrouwen op Infrastructure as Code (IaC) om hun cloudinfrastructuur te ontwerpen, ontwikkelen en beheren. IaC zorgt ervoor dat de infrastructuur en diensten van de klant consistent, schaalbaar en reproduceerbaar zijn, terwijl het de best practices op het gebied van ontwikkelingsactiviteiten (DevOps) kan volgen.

Een mogelijke benadering voor het beheren van AWS-infrastructuur en -services met IaC is: Terraform, waarmee ontwikkelaars hun infrastructuur kunnen organiseren in herbruikbare codemodules. Dit aspect wordt steeds belangrijker op het gebied van machine learning (ML). Door ML-pijplijnen te ontwikkelen en te beheren, inclusief training en inferentie met Terraform als IaC, kunt u eenvoudig schalen voor meerdere ML-gebruiksscenario's of regio's zonder dat u de infrastructuur helemaal opnieuw hoeft te ontwikkelen. Bovendien biedt het consistentie voor de infrastructuur (bijvoorbeeld het type en de grootte van de instantie) voor training en inferentie over verschillende implementaties van de ML-pijplijn. Hiermee kunt u verzoeken en inkomend verkeer naar verschillende Amazon Sage Maker eindpunten.

In dit bericht laten we u zien hoe u ML-pijplijnen implementeert en beheert met Terraform en Amazon SageMaker.

Overzicht oplossingen

Dit bericht bevat code en leidt u door de stappen die nodig zijn om AWS-infrastructuur voor ML-pijplijnen met Terraform te implementeren voor modeltraining en inferentie met behulp van Amazon SageMaker. De ML-pipeline wordt beheerd via AWS Stap Functies om de verschillende stappen die in de ML-pijplijn zijn geรฏmplementeerd, te orkestreren, zoals geรฏllustreerd in de volgende afbeelding.

Stap Functie Stappen

Stap Functies begint een AWS Lambda functie, waardoor een unieke taak-ID wordt gegenereerd, die vervolgens wordt gebruikt bij het starten van een SageMaker-trainingstaak. Step Functions maakt ook een model, een eindpuntconfiguratie en een eindpunt dat wordt gebruikt voor inferentie. Aanvullende bronnen zijn onder meer:

De ML-gerelateerde code voor training en gevolgtrekking met een Docker-afbeelding is voornamelijk gebaseerd op bestaand werk in het volgende: GitHub-repository.

Het volgende diagram illustreert de oplossingsarchitectuur:

Architectuurdiagram

We leiden u door de volgende stappen op hoog niveau:

  1. Implementeer uw AWS-infrastructuur met Terraform.
  2. Push uw Docker-image naar Amazon ECR.
  3. Voer de ML-pijplijn uit.
  4. Roep uw eindpunt op.

Opslagplaatsstructuur

Je kunt de repository met de code en gegevens die voor dit bericht zijn gebruikt, hieronder vinden: GitHub-repository.

De repository bevat de volgende mappen:

  • /terraform โ€“ Bestaat uit de volgende submappen:
    • ./infrastructure โ€“ Bevat het main.tf-bestand dat de ML-pijplijnmodule aanroept, naast variabeledeclaraties die we gebruiken om de infrastructuur te implementeren
    • ./ml-pipeline-module โ€“ Bevat de Terraform ML-pijplijnmodule, die we kunnen hergebruiken
  • /src โ€“ Bestaat uit de volgende submappen:
    • ./container โ€“ Bevat voorbeeldcode voor training en gevolgtrekking met de definities voor de Docker-afbeelding
    • ./lambda_function โ€“ Bevat de Python-code voor de Lambda-functie die configuraties genereert, zoals een unieke taak-ID voor de SageMaker-trainingstaak
  • /data โ€“ Bevat het volgende bestand:
    • ./iris.csv โ€“ Bevat gegevens voor het trainen van het ML-model

Voorwaarden

Voor deze walkthrough moet u aan de volgende vereisten voldoen:

Implementeer uw AWS-infrastructuur met Terraform

Om de ML-pijplijn te implementeren, moet u een aantal variabelen en namen aanpassen aan uw behoeften. De code voor deze stap staat in de /terraform directory.

Wanneer u voor de eerste keer initialiseert, opent u het bestand terraform/infrastructure/terraform.tfvars en pas de variabele aan Naam van het project naar de naam van uw project, naast de variabele regio als u in een andere regio wilt implementeren. U kunt ook aanvullende variabelen wijzigen, zoals instantietypen voor training en inferentie.

Gebruik vervolgens de volgende opdrachten om de infrastructuur met Terraform te implementeren:

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

Controleer de output en zorg ervoor dat de geplande resources correct verschijnen, en bevestig met ja in de Apply-fase als alles correct is. Ga vervolgens naar de Amazon ECR-console (of controleer de uitvoer van Terraform in de terminal) en haal de URL op voor uw ECR-repository die u via Terraform hebt gemaakt.

De uitvoer moet er ongeveer uitzien als de volgende weergegeven uitvoer, inclusief de URL van de ECR-repository:

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

Push uw Docker-image naar Amazon ECR

Als u wilt dat de ML-pijplijn en SageMaker een SageMaker-eindpunt voor inferentie trainen en inrichten, moet u een Docker-image opgeven en opslaan in Amazon ECR. Een voorbeeld vind je in de directory src/container. Als u de AWS-infrastructuur uit de eerdere stap al hebt toegepast, kunt u de Docker-image pushen zoals beschreven. Nadat uw Docker-image is ontwikkeld, kunt u de volgende acties ondernemen en deze naar Amazon ECR pushen (pas de Amazon ECR-URL aan uw behoeften aan):

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>

Als u de AWS-infrastructuur al met Terraform hebt toegepast, kunt u de wijzigingen van uw code en Docker-image rechtstreeks naar Amazon ECR pushen zonder opnieuw via Terraform te implementeren.

De ML-pijplijn uitvoeren

Om de ML-pijplijn te trainen en uit te voeren, gaat u naar de Step Functions-console en start u de implementatie. U kunt de voortgang van elke stap controleren in de visualisatie van de statusmachine. U kunt ook de voortgang van de SageMaker-trainingstaak en de status van uw SageMaker-eindpunt controleren.

Start Stap Functie

Nadat u de statusmachine in Step Functions met succes hebt uitgevoerd, kunt u zien dat het SageMaker-eindpunt is gemaakt. Kies op de SageMaker-console Gevolgtrekking in het navigatievenster, dan Eindpunten. Zorg ervoor dat u wacht tot de status verandert in InService.

SageMaker-eindpuntstatus

Uw eindpunt aanroepen

Om uw eindpunt aan te roepen (in dit voorbeeld voor de iris-dataset), kunt u het volgende Python-script gebruiken met de AWS SDK voor Python (Boto3). U kunt dit doen vanuit een SageMaker-notebook of het volgende codefragment insluiten in een Lambda-functie:

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)

Opruimen

U kunt de infrastructuur die door Terraform is gemaakt vernietigen met het commando terraform destroy, maar u moet eerst de gegevens en bestanden in de S3-buckets verwijderen. Bovendien wordt het SageMaker-eindpunt (of meerdere SageMaker-eindpunten als het meerdere keren wordt uitgevoerd) gemaakt via Step Functions en niet beheerd via Terraform. Dit betekent dat de implementatie plaatsvindt wanneer de ML-pijplijn wordt uitgevoerd met Step Functions. Zorg er daarom voor dat u ook het SageMaker-eindpunt of de eindpunten die via de Step Functions ML-pijplijn zijn gemaakt, verwijdert om onnodige kosten te voorkomen. Voer de volgende stappen uit:

  1. Verwijder op de Amazon S3-console de dataset in de S3-trainingsbucket.
  2. Verwijder alle modellen die je hebt getraind via de ML-pijplijn in de S3-modellenbucket, hetzij via de Amazon S3-console of de AWS CLI.
  3. Vernietig de infrastructuur die is gemaakt via Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. Verwijder de SageMaker-eindpunten, eindpuntconfiguratie en modellen die zijn gemaakt via Step Functions, op de SageMaker-console of via de AWS CLI.

Conclusie

Gefeliciteerd! U hebt een ML-pijplijn geรฏmplementeerd met SageMaker met Terraform. Deze voorbeeldoplossing laat zien hoe u eenvoudig AWS-infrastructuur en -services voor ML-pijplijnen op een herbruikbare manier kunt implementeren. Hierdoor kunt u schalen voor meerdere gebruiksscenario's of regio's, en kunt u ML-modellen met รฉรฉn klik op een consistente manier trainen en implementeren. Bovendien kunt u de ML-pipeline meerdere keren uitvoeren, bijvoorbeeld wanneer er nieuwe gegevens beschikbaar zijn of als u de algoritmecode wilt wijzigen. U kunt er ook voor kiezen verzoeken of verkeer naar verschillende SageMaker-eindpunten te routeren.

Ik moedig u aan om te onderzoeken hoe u beveiligingsfuncties kunt toevoegen en best practices voor beveiliging kunt toepassen op basis van uw behoeften en mogelijke bedrijfsnormen. Bovendien biedt het insluiten van deze oplossing in uw CI/CD-pijplijnen u meer mogelijkheden bij het adopteren en vaststellen van best practices en standaarden voor DevOps volgens uw vereisten.


Over de auteur

Implementeer en beheer machine learning-pijplijnen met Terraform met behulp van Amazon SageMaker PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Oliver Zollikofer is een datawetenschapper bij Amazon Web Services. Hij stelt wereldwijde zakelijke klanten in staat om machine learning-modellen te bouwen, te trainen en te implementeren, en om de levenscyclus van ML-modellen te beheren met MLOps. Verder bouwt en architecteert hij gerelateerde cloudoplossingen.

Tijdstempel:

Meer van AWS-machine learning