Schakel CI/CD van Amazon SageMaker-eindpunten in meerdere regio's in PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

CI/CD van Amazon SageMaker-eindpunten in meerdere regio's inschakelen

Amazon Sage Maker en SageMaker inferentie-eindpunten bieden de mogelijkheid om uw AI- en machine learning-workloads (ML) te trainen en in te zetten. Met inferentie-eindpunten kunt u uw modellen implementeren voor realtime of batch-inferentie. De eindpunten ondersteunen verschillende soorten ML-modellen die worden gehost met behulp van AWS diepe leercontainers of uw eigen containers met aangepaste AI/ML-algoritmen. Wanneer u SageMaker-inferentie-eindpunten met meerdere instanties start, verdeelt SageMaker de instanties over meerdere beschikbaarheidszones (in รฉรฉn regio) voor hoge beschikbaarheid.

Om de laagst mogelijke latentie voor klanten in diverse geografische gebieden te garanderen, moet u in sommige gevallen echter inferentie-eindpunten in meerdere regio's implementeren. Multiregionale implementatie van SageMaker-endpoints en andere gerelateerde applicatie- en infrastructuurcomponenten kan ook deel uitmaken van een rampherstelstrategie voor uw bedrijfskritieke workloads om het risico van een regionale storing te verkleinen.

SageMaker-projecten implementeert een set vooraf gebouwde MLOps-sjablonen die kunnen helpen bij het beheren van eindpuntimplementaties. In dit bericht laten we zien hoe u een MLOps SageMaker Projects-pijplijn kunt uitbreiden om multiregionale implementatie van uw AI/ML-inferentie-eindpunten mogelijk te maken.

Overzicht oplossingen

SageMaker Projects implementeert zowel training als implementatie MLOPs-pijplijnen; u kunt deze gebruiken om een โ€‹โ€‹model te trainen en te implementeren met behulp van een inferentie-eindpunt. Om de complexiteit en kosten van een oplossing met meerdere regio's te verminderen, gaan we ervan uit dat u het model in รฉรฉn regio traint en inferentie-eindpunten in twee of meer regio's implementeert.

Dit bericht presenteert een oplossing die een SageMaker-projectsjabloon enigszins aanpast om implementatie in meerdere regio's te ondersteunen. Om de wijzigingen beter te illustreren, toont de volgende afbeelding zowel een standaard MLOps-pijplijn die automatisch is gemaakt door SageMaker (stap 1-5), evenals wijzigingen die nodig zijn om deze uit te breiden naar een secundaire regio (stap 6-11).

De SageMaker Projects-sjabloon implementeert automatisch een standaard MLOps-oplossing, die de volgende componenten bevat:

  1. Amazon EventBridge monitors AWS Codecommit repositories voor wijzigingen en start een run van AWS CodePipeline als een code-commit wordt gedetecteerd.
  2. Als er een codewijziging is, AWS CodeBuild orkestreert de modeltraining met SageMaker-trainingstaken.
  3. Nadat de trainingstaak is voltooid, SageMaker-modelregister registreert en catalogiseert het getrainde model.
  4. Ter voorbereiding op de implementatiefase breidt CodeBuild de standaard uit AWS CloudFormatie sjabloonconfiguratiebestanden met parameters van een goedgekeurd model uit het modelregister.
  5. Ten slotte voert CodePipeline de CloudFormation-sjablonen uit om het goedgekeurde model te implementeren op de staging- en productie-inferentie-eindpunten.

De volgende aanvullende stappen wijzigen de MLOps Projects-sjabloon om de implementatie van het AI/ML-model in de secundaire regio in te schakelen:

  1. Een replica van de Amazon eenvoudige opslagservice (Amazon S3)-bucket in de primaire regio voor het opslaan van modelartefacten is vereist in de secundaire regio.
  2. De CodePipeline-sjabloon is uitgebreid met meer fasen om een โ€‹โ€‹regiooverschrijdende implementatie van het goedgekeurde model uit te voeren.
  3. Als onderdeel van het implementatieproces voor meerdere regio's, gebruikt de CodePipeline-sjabloon een nieuwe CloudFormation-sjabloon om het inferentie-eindpunt in een secundaire regio te implementeren. De CloudFormation-sjabloon implementeert het model van de modelartefacten uit de S3-replicabucket die in stap 6 is gemaakt.

9โ€“11 optioneel, maak bronnen aan in Amazon Route 53, Amazon API-gateway en AWS Lambda om applicatieverkeer te routeren naar eindpunten in de secundaire regio.

Voorwaarden

Maak een SageMaker-project in uw primaire regio (us-east-2 in dit bericht). Voltooi de stappen in ML-workflows bouwen, automatiseren, beheren en schalen met Amazon SageMaker Pipelines tot de sectie De voorbeeldcode aanpassen voor een aangepast gebruik.

Werk uw pijplijn bij in CodePipeline

In deze sectie bespreken we hoe u handmatige CodePipeline-goedkeuring en interregionale modelimplementatiefasen kunt toevoegen aan uw bestaande pijplijn die door SageMaker voor u is gemaakt.

  1. Zoek en selecteer op de CodePipeline-console in uw primaire regio de pijplijn met uw projectnaam en eindigend met deploy. Deze pijplijn is al voor u gemaakt door SageMaker Projects. U wijzigt deze pijplijn om AI/ML-eindpuntimplementatiefasen toe te voegen voor de secundaire regio.
  2. Kies Edit.
  3. Kies Voeg podium toe.
  4. Voor Artiestennaam, ga naar binnen SecondaryRegionDeployment.
  5. Kies Voeg podium toe.
  6. In het SecondaryRegionDeployment podium, kies Actiegroep toevoegen.In deze actiegroep voegt u een handmatige goedkeuringsstap toe voor modelimplementatie in de secundaire regio.
  7. Voor Actienaam, ga naar binnen ManualApprovaltoDeploytoSecondaryRegion.
  8. Voor Actieprovider, kiezen Handmatige goedkeuring.
  9. Laat alle andere instellingen op hun standaardwaarden staan โ€‹โ€‹en kies Klaar .
  10. In het SecondaryRegionDeployment podium, kies Actiegroep toevoegen (na ManualApprovaltoDeploytoSecondaryRegion).In deze actiegroep voegt u een AWS CloudFormation-implementatiestap voor meerdere regio's toe. U geeft de namen op van build-artefacten die u later in dit bericht maakt.
  11. Voor Actienaam, ga naar binnen DeploytoSecondaryRegion.
  12. Voor Actieprovider, kiezen AWS Cloud-formatie.
  13. Voor Regio, voer uw secundaire regionaam in (bijvoorbeeld us-west-2).
  14. Voor Invoerartefacten, ga naar binnen BuildArtifact.
  15. Voor ActieModus, ga naar binnen CreateorUpdateStack.
  16. Voor Stapelnaam, ga naar binnen DeploytoSecondaryRegion.
  17. Onder Sjabloonvoor Naam artefactselecteer BuildArtifact.
  18. Onder Sjabloonvoor Bestandsnaam, ga naar binnen template-export-secondary-region.yml.
  19. Draaien Configuratiebestand gebruiken op.
  20. Onder Sjabloonvoor Naam artefactselecteer BuildArtifact.
  21. Onder Sjabloonvoor Bestandsnaam, ga naar binnen secondary-region-config-export.json.
  22. Onder Mogelijkheden, kiezen CAPABILITY_NAMED_IAM.
  23. Voor Rol, kiezen AmazonSageMakerServiceCatalogProductsUseRole gemaakt door SageMaker Projects.
  24. Kies Klaar .
  25. Kies Bespaar.
  26. Als een Wijzigingen in pijplijn opslaan dialoogvenster verschijnt, kies Bespaar weer.

IAM-rol wijzigen

We moeten extra rechten toevoegen aan de AWS Identiteits- en toegangsbeheer (IAM) rol AmazonSageMakerServiceCatalogProductsUseRole gemaakt door AWS-servicecatalogus om toegang tot CodePipeline en S3-bucket voor implementatie in verschillende regio's in te schakelen.

  1. Kies op de IAM-console rollen in het navigatievenster.
  2. Zoek en selecteer AmazonSageMakerServiceCatalogProductsUseRole.
  3. Kies het IAM-beleid onder Beleidsnaam: AmazonSageMakerServiceCatalogProductsUseRole-XXXXXXXXX.
  4. Kies Beleid bewerken en JSON.
  5. Wijzig de AWS CloudFormation-machtigingen zodat CodePipeline de S3-bucket in de secundaire regio kan synchroniseren. U kunt het bestaande IAM-beleid vervangen door het bijgewerkte van het volgende: GitHub repo (zie regels: 16-18, 198, 213)
  6. Kies Controleer het beleid.
  7. Kies Wijzigingen opslaan.

De implementatiesjabloon voor de secundaire regio toevoegen

Om een โ€‹โ€‹inferentie-eindpunt in de secundaire regio op te draaien, SecondaryRegionDeployment stage heeft een CloudFormation-sjabloon nodig (voor endpoint-config-template-secondary-region.yml) en een configuratiebestand (secondary-region-config.json).

De CloudFormation-sjabloon wordt volledig geconfigureerd via parameters; u kunt het verder aanpassen aan uw behoeften. Op dezelfde manier kunt u het configuratiebestand gebruiken om de parameters voor de startconfiguratie van het eindpunt te definiรซren, zoals het exemplaartype en het aantal exemplaren:

{
  "Parameters": {
    "StageName": "secondary-prod",
    "EndpointInstanceCount": "1",
    "EndpointInstanceType": "ml.m5.large",
    "SamplingPercentage": "100",
    "EnableDataCapture": "true"
  }

Om deze bestanden aan uw project toe te voegen, downloadt u ze via de meegeleverde links en uploadt u ze naar Amazon SageMaker Studio in de primaire regio. Kies in Studio Bestandsbrowser en vervolgens de map met uw projectnaam en eindigend met modeldeploy.

Upload deze bestanden naar de hoofdmap van de implementatierepository door het uploadpictogram te kiezen. Zorg ervoor dat de bestanden zich in de hoofdmap bevinden, zoals weergegeven in de volgende schermafbeelding.

Schermafbeelding van configuratiebestanden

Wijzig het build-python-bestand

Vervolgens moeten we de implementatie aanpassen build.py bestand om SageMaker-eindpuntimplementatie in de secundaire regio in te schakelen om het volgende te doen:

  • De locatie van modelartefacten ophalen en Amazon Elastic Container-register (Amazon ECR) URI voor de modelafbeelding in de secundaire regio
  • Bereid een parameterbestand voor dat wordt gebruikt om de modelspecifieke argumenten door te geven aan de CloudFormation-sjabloon die het model in de secundaire regio implementeert

U kunt de bijgewerkte versie downloaden build.py bestand en vervang de bestaande in uw map. Kies in Studio Bestandsbrowser en vervolgens de map met uw projectnaam en eindigend met modeldeploy. Zoek het bestand build.py en vervang het door het bestand dat je hebt gedownload.

De CloudFormation-sjabloon gebruikt de modelartefacten die zijn opgeslagen in een S3-bucket en het Amazon ECR-afbeeldingspad om het inferentie-eindpunt in de secundaire regio te implementeren. Dit verschilt van de implementatie van het modelregister in de primaire regio, omdat u geen modelregister in de secundaire regio nodig hebt.

Screenshot van primaire en secundaire omgevingsparameters

Wijzig het buildspec-bestand

buildspec.yml bevat instructies die worden uitgevoerd door CodeBuild. We wijzigen dit bestand om het volgende te doen:

  • Installeer de SageMaker Python-bibliotheek die nodig is om de code-run te ondersteunen
  • Ga door de -secundaire-regio en modelspecifieke parameters om build.py
  • Voeg de S3-bucketinhoudsynchronisatie toe van de primaire naar secundaire regio's
  • Exporteer de secundaire Region CloudFormation-sjabloon en het bijbehorende parameterbestand als artefacten van de CodeBuild-stap

Open de buildspec.yml bestand uit de map model deploy en breng de gemarkeerde wijzigingen aan zoals weergegeven in de volgende schermafbeelding.

Screenshot van build yaml-bestand

Als alternatief kunt u het volgende downloaden: buildspec.yml bestand om het standaardbestand te vervangen.

CodeBuild-omgevingsvariabelen toevoegen

In deze stap voegt u configuratieparameters toe die nodig zijn voor CodeBuild om de configuratiebestanden voor modelimplementatie te maken in de secundaire regio.

  1. Zoek op de CodeBuild-console in de primaire regio het project dat uw projectnaam bevat en eindigt met deploy. Dit project is al voor u gemaakt door SageMaker Projects.

Screenshot van codepijplijn

  1. Kies het project en op de Edit menu, kies Milieu.

Schermafbeelding van configuraties

  1. In het Geavanceerde configuratie sectie, deselecteren Sta AWS CodeBuild toe om deze servicerol aan te passen zodat deze kan worden gebruikt met dit buildproject.
  2. Voeg de volgende omgevingsvariabelen toe en definieer de namen van de aanvullende CloudFormation-sjablonen, secundaire regio en modelspecifieke parameters:
    1. EXPORT_TEMPLATE_NAME_SECONDARY_REGION - Voor Waarde, ga naar binnen template-export-secondary-region.yml en voor Type, kiezen Platte tekst.
    2. EXPORT_TEMPLATE_SECONDARY_REGION_CONFIG - Voor Waarde, ga naar binnen secondary-region-config-export.json en voor Type, kiezen Platte tekst.
    3. AWS_SECONDARY_REGION - Voor Waarde, voer us-west-2 in en for Type, kiezen Platte tekst.
    4. KADER - Voor Waarde, ga naar binnen xgboost (vervang door uw kader) en voor Type, kiezen Platte tekst.
    5. MODEL_VERSIE - Voor Waarde, voer 1.0-1 in (vervang door uw modelversie) en voor Type, kiezen Platte tekst.
  3. Kopieer de waarde van ARTIFACT_BUCKET in Kladblok of een andere teksteditor. U hebt deze waarde nodig in de volgende stap.
  4. Kies Omgeving bijwerken.

U hebt de waarden nodig die u hebt opgegeven voor modeltraining voor: FRAMEWORK en MODEL_VERSION. Als u bijvoorbeeld deze waarden wilt vinden voor het Abalone-model dat wordt gebruikt in MLOps-boilerplate-implementatie, opent u Studio en op de Bestandsbrowser menu, open de map met uw projectnaam en eindigend met modelbuild. Navigeren naar pipelines/abalone en open de pipeline.py het dossier. Zoeken naar sagemaker.image_uris.retrieve en kopieer de relevante waarden.

Schermafbeelding van ML-framework

Een S3-replicabucket maken in de secundaire regio

We moeten een S3-bucket maken om de modelartefacten in de secundaire regio te bewaren. SageMaker gebruikt deze bucket om de nieuwste versie van het model te krijgen om een โ€‹โ€‹inferentie-eindpunt op te zetten. U hoeft dit maar รฉรฉn keer te doen. CodeBuild synchroniseert automatisch de inhoud van de bucket in de primaire regio met de replicatiebucket bij elke pijplijnuitvoering.

  1. Kies op de Amazon S3-console Maak een bucket.
  2. Voor Bucketnaam, voer de waarde van . in ARTEFACT_BUCKET gekopieerd in de vorige stap en toevoegen -replica tot het einde (bijv. sagemaker-project-X-XXXXXXXX-replica.
  3. Voor AWS-regio, voer uw secundaire regio in (us-west-2).
  4. Laat alle andere waarden op hun standaard en kies Maak een bucket.

Een model goedkeuren voor implementatie

De implementatiefase van de pijplijn vereist een goedgekeurd model om te starten. Dit is vereist voor de implementatie in de primaire regio.

  1. Kies in Studio (primaire regio) SageMaker-bronnen in het navigatievenster.
  2. Voor Selecteer de bron om te bekijken, kiezen Modelregister.
  3. Kies de naam van de modelgroep die begint met uw projectnaam.
  4. Controleer in het rechterdeelvenster de modelversie, fase en status.
  5. Als de status in behandeling is, kiest u de modelversie en kiest u vervolgens Update status.
  6. Status wijzigen in aangenomen, kies dan Update status.

De wijzigingen implementeren en verifiรซren

Alle wijzigingen die nodig zijn voor implementatie in meerdere regio's van uw SageMaker-inferentie-eindpunt zijn nu voltooid en u kunt het implementatieproces starten.

  1. Sla in Studio alle bestanden op die je hebt bewerkt, kies Giten kies de repository die uw projectnaam bevat en eindigt met deploy.
  2. Kies het plusteken om wijzigingen aan te brengen.
  3. Onder Veranderd, Voegen build.py en buildspec.yml.
  4. Onder niet bijgehouden, Voegen endpoint-config-template-secondary-region.yml en secondary-region-config.json.
  5. Typ een opmerking in de Samengevat veld en kies Plegen.
  6. Duw de wijzigingen naar de repository door te kiezen voor Duwen.

Het pushen van deze wijzigingen naar de CodeCommit-opslagplaats activeert een nieuwe pijplijnuitvoering, omdat een EventBridge-gebeurtenis controleert op gepushte vastleggingen. Na enkele ogenblikken kunt u de run controleren door naar de pijplijn op de CodePipeline-console te navigeren.

Zorg ervoor dat u handmatige goedkeuring geeft voor implementatie naar productie en de secundaire regio.

U kunt controleren of het secundaire regio-eindpunt is gemaakt op de SageMaker-console door te kiezen voor Overzicht in het navigatievenster en de status van het eindpunt bevestigen in Recente activiteiten.

Screenshot van salie maker dashboard

Voeg API Gateway en Route 53 toe (optioneel)

U kunt optioneel de instructies volgen in Een Amazon SageMaker-modeleindpunt aanroepen met Amazon API Gateway en AWS Lambda om het SageMaker-inferentie-eindpunt in de secundaire regio als een API beschikbaar te stellen met behulp van API Gateway en Lambda.

Opruimen

Om het SageMaker-project te verwijderen, zie Een MLOps-project verwijderen met Amazon SageMaker Studio. Om ervoor te zorgen dat het secundaire inferentie-eindpunt wordt vernietigd, gaat u naar de AWS CloudFormation-console en verwijdert u de gerelateerde stapels in uw primaire en secundaire regio's; dit vernietigt de SageMaker-inferentie-eindpunten.

Conclusie

In dit bericht hebben we laten zien hoe een MLOps-specialist een vooraf geconfigureerde MLOps-sjabloon kan wijzigen voor hun eigen gebruiksscenario voor implementatie in meerdere regio's, zoals het implementeren van workloads in meerdere regio's of als onderdeel van het implementeren van een multi-regionale strategie voor noodherstel. Met deze implementatiebenadering hoeft u geen services in de secundaire regio te configureren en kunt u de CodePipeline- en CloudBuild-setups in de primaire regio opnieuw gebruiken voor interregionale implementatie. Bovendien kunt u kosten besparen door de training van uw modellen in de primaire regio voort te zetten, terwijl u SageMaker-inferentie in meerdere regio's gebruikt om uw AI/ML-implementatie wereldwijd te schalen.

Laat ons uw feedback weten in het opmerkingengedeelte.


Over de auteurs

Schakel CI/CD van Amazon SageMaker-eindpunten in meerdere regio's in PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai. Mehran Najafi, PhD, is een Senior Solutions Architect voor AWS gericht op AI/ML- en SaaS-oplossingen op schaal.

Schakel CI/CD van Amazon SageMaker-eindpunten in meerdere regio's in PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Steven Alyekhin is een Senior Solutions Architect voor AWS gericht op MLOps op schaal.

Tijdstempel:

Meer van AWS-machine learning