Aktivieren Sie CI/CD von multiregionalen Amazon SageMaker-Endpunkten PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Aktivieren Sie CI/CD von Amazon SageMaker-Endpunkten mit mehreren Regionen

Amazon Sage Maker und SageMaker-Inferenzendpunkte Bieten Sie die Möglichkeit, Ihre Workloads für KI und maschinelles Lernen (ML) zu trainieren und bereitzustellen. Mit Inferenzendpunkten können Sie Ihre Modelle für Echtzeit- oder Batch-Inferenz bereitstellen. Die Endpunkte unterstützen verschiedene Arten von gehosteten ML-Modellen AWS Deep Learning Container oder Ihre eigenen Container mit benutzerdefinierten AI/ML-Algorithmen. Wenn Sie SageMaker-Inferenzendpunkte mit mehreren Instances starten, verteilt SageMaker die Instances auf mehrere Availability Zones (in einer einzelnen Region), um eine hohe Verfügbarkeit zu gewährleisten.

In einigen Fällen müssen Sie jedoch möglicherweise Inferenzendpunkte in mehreren Regionen bereitstellen, um die geringstmögliche Latenz für Kunden in verschiedenen geografischen Gebieten sicherzustellen. Die multiregionale Bereitstellung von SageMaker-Endpunkten und anderen zugehörigen Anwendungs- und Infrastrukturkomponenten kann auch Teil einer Notfallwiederherstellungsstrategie für Ihre geschäftskritischen Workloads sein, die darauf abzielt, das Risiko eines regionalen Ausfalls zu mindern.

SageMaker-Projekte implementiert eine Reihe vorgefertigter MLOps-Vorlagen, die bei der Verwaltung von Endpunktbereitstellungen helfen können. In diesem Beitrag zeigen wir, wie Sie eine MLOps-SageMaker-Projektpipeline erweitern können, um eine multiregionale Bereitstellung Ihrer KI/ML-Inferenzendpunkte zu ermöglichen.

Lösungsüberblick

SageMaker Projects stellt sowohl Schulungs- als auch Bereitstellungs-MLOPs-Pipelines bereit; Sie können diese verwenden, um ein Modell zu trainieren und es mithilfe eines Inferenzendpunkts bereitzustellen. Um die Komplexität und die Kosten einer Lösung mit mehreren Regionen zu reduzieren, gehen wir davon aus, dass Sie das Modell in einer einzelnen Region trainieren und Inferenzendpunkte in zwei oder mehr Regionen bereitstellen.

Dieser Beitrag stellt eine Lösung vor, die eine SageMaker-Projektvorlage leicht modifiziert, um die Bereitstellung in mehreren Regionen zu unterstützen. Um die Änderungen besser zu veranschaulichen, zeigt die folgende Abbildung sowohl eine automatisch von SageMaker erstellte Standard-MLOps-Pipeline (Schritte 1–5) als auch Änderungen, die erforderlich sind, um sie auf eine sekundäre Region zu erweitern (Schritte 6–11).

Die SageMaker-Projektvorlage stellt automatisch eine Boilerplate-MLOps-Lösung bereit, die die folgenden Komponenten umfasst:

  1. Amazon EventBridge Monitore AWS-CodeCommit Repositorys für Änderungen und startet einen Lauf von AWS CodePipeline wenn ein Code-Commit erkannt wird.
  2. Wenn es eine Codeänderung gibt, AWS CodeBuild orchestriert das Modelltraining mithilfe von SageMaker-Trainingsjobs.
  3. Nach Abschluss des Ausbildungsauftrags wird die SageMaker-Modellregistrierung registriert und katalogisiert das trainierte Modell.
  4. Zur Vorbereitung auf die Bereitstellungsphase erweitert CodeBuild den Standard AWS CloudFormation Vorlagenkonfigurationsdateien mit Parametern eines genehmigten Modells aus der Modellregistrierung.
  5. Schließlich führt CodePipeline die CloudFormation-Vorlagen aus, um das genehmigte Modell an den Staging- und Produktions-Inferenz-Endpunkten bereitzustellen.

Die folgenden zusätzlichen Schritte ändern die MLOps-Projektvorlage, um die KI/ML-Modellbereitstellung in der sekundären Region zu ermöglichen:

  1. Eine Nachbildung der Amazon Simple Storage-Service (Amazon S3)-Bucket in der primären Region, in dem Modellartefakte gespeichert werden, in der sekundären Region erforderlich.
  2. Die CodePipeline-Vorlage wird um weitere Stufen erweitert, um eine regionsübergreifende Bereitstellung des genehmigten Modells auszuführen.
  3. Als Teil des regionsübergreifenden Bereitstellungsprozesses verwendet die CodePipeline-Vorlage eine neue CloudFormation-Vorlage, um den Inferenzendpunkt in einer sekundären Region bereitzustellen. Die CloudFormation-Vorlage stellt das Modell aus den Modellartefakten aus dem in Schritt 3 erstellten S6-Replikat-Bucket bereit.

9–11 erstellen Sie optional Ressourcen in Amazon Route 53, Amazon API-Gateway und AWS Lambda um Anwendungsdatenverkehr an Inferenzendpunkte in der sekundären Region weiterzuleiten.

Voraussetzungen:

Erstellen Sie ein SageMaker-Projekt in Ihrer primären Region (us-east-2 in diesem Beitrag). Führen Sie die Schritte aus Erstellen, Automatisieren, Verwalten und Skalieren von ML-Workflows mithilfe von Amazon SageMaker Pipelines bis zum Abschnitt Ändern des Beispielcodes für einen benutzerdefinierten Anwendungsfall.

Aktualisieren Sie Ihre Pipeline in CodePipeline

In diesem Abschnitt besprechen wir, wie Sie manuelle CodePipeline-Genehmigungs- und regionsübergreifende Modellbereitstellungsphasen zu Ihrer bestehenden Pipeline hinzufügen, die von SageMaker für Sie erstellt wurde.

  1. Suchen und wählen Sie in der CodePipeline-Konsole in Ihrer primären Region die Pipeline aus, die Ihren Projektnamen enthält und auf deploy endet. Diese Pipeline wurde bereits von SageMaker Projects für Sie erstellt. Sie ändern diese Pipeline, um KI/ML-Endpunktbereitstellungsphasen für die sekundäre Region hinzuzufügen.
  2. Auswählen Bearbeiten.
  3. Auswählen Stufe hinzufügen.
  4. Aussichten für Künstlername, eingeben SecondaryRegionDeployment.
  5. Auswählen Stufe hinzufügen.
  6. Im SecondaryRegionDeployment Stufe, wählen Aktionsgruppe hinzufügen.In dieser Aktionsgruppe fügen Sie einen manuellen Genehmigungsschritt für die Modellbereitstellung in der sekundären Region hinzu.
  7. Aussichten für Aktionsname, eingeben ManualApprovaltoDeploytoSecondaryRegion.
  8. Aussichten für Aktionsanbieter, wählen Manuelle Genehmigung.
  9. Belassen Sie alle anderen Einstellungen auf ihren Standardeinstellungen und wählen Sie Erledigt .
  10. Im SecondaryRegionDeployment Stufe, wählen Aktionsgruppe hinzufügen (nach dem ManualApprovaltoDeploytoSecondaryRegion).In dieser Aktionsgruppe fügen Sie einen regionsübergreifenden AWS CloudFormation-Bereitstellungsschritt hinzu. Sie geben die Namen der Build-Artefakte an, die Sie später in diesem Beitrag erstellen.
  11. Aussichten für Aktionsname, eingeben DeploytoSecondaryRegion.
  12. Aussichten für Aktionsanbieter, wählen AWS Cloud-Bildung.
  13. Aussichten für Region, geben Sie Ihren sekundären Regionsnamen ein (z. B. us-west-2).
  14. Aussichten für Eingabeartefakte, eingeben BuildArtifact.
  15. Aussichten für Aktionsmodus, eingeben CreateorUpdateStack.
  16. Aussichten für Stapelname, eingeben DeploytoSecondaryRegion.
  17. Der TemplateZ. ArtefaktnameWählen BuildArtifact.
  18. Der TemplateZ. Dateiname, eingeben template-export-secondary-region.yml.
  19. Wende Konfigurationsdatei verwenden auf.
  20. Der TemplateZ. ArtefaktnameWählen BuildArtifact.
  21. Der TemplateZ. Dateiname, eingeben secondary-region-config-export.json.
  22. Der Fähigkeiten, wählen CAPABILITY_NAMED_IAM.
  23. Aussichten für Rollen, wählen AmazonSageMakerServiceCatalogProductsUseRole erstellt von SageMaker Projects.
  24. Auswählen Erledigt .
  25. Auswählen Speichern.
  26. Sollten Sie jetzt aufgefordert werden, ein Pipeline-Änderungen speichern Dialog erscheint, wählen Sie Speichern erneut.

Ändern Sie die IAM-Rolle

Wir müssen zusätzliche Berechtigungen hinzufügen AWS Identity and Access Management and (IAM) Rolle AmazonSageMakerServiceCatalogProductsUseRole erstellt von AWS-Servicekatalog zum Aktivieren des CodePipeline- und S3-Bucket-Zugriffs für die regionsübergreifende Bereitstellung.

  1. Wählen Sie in der IAM-Konsole Rollen im Navigationsbereich.
  2. Suchen und auswählen AmazonSageMakerServiceCatalogProductsUseRole.
  3. Wählen Sie die IAM-Richtlinie unter aus Versicherungsname: AmazonSageMakerServiceCatalogProductsUseRole-XXXXXXXXX.
  4. Auswählen Richtlinie bearbeiten und dann JSON.
  5. Ändern Sie die AWS CloudFormation-Berechtigungen, damit CodePipeline den S3-Bucket in der sekundären Region synchronisieren kann. Sie können die vorhandene IAM-Richtlinie wie folgt durch die aktualisierte ersetzen GitHub Repo (siehe Zeilen: 16-18, 198, 213)
  6. Auswählen Richtlinien überprüfen.
  7. Auswählen Änderungen speichern.

Fügen Sie die Bereitstellungsvorlage für die sekundäre Region hinzu

Um einen Inferenzendpunkt in der sekundären Region hochzufahren, muss die SecondaryRegionDeployment stage benötigt eine CloudFormation-Vorlage (z endpoint-config-template-secondary-region.yml) und eine Konfigurationsdatei (secondary-region-config.json).

Die CloudFormation-Vorlage wird vollständig über Parameter konfiguriert; Sie können es weiter an Ihre Bedürfnisse anpassen. Auf ähnliche Weise können Sie die Konfigurationsdatei verwenden, um die Parameter für die Endpoint-Startkonfiguration zu definieren, z. B. den Instance-Typ und die Anzahl der Instances:

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

Um diese Dateien zu Ihrem Projekt hinzuzufügen, laden Sie sie von den bereitgestellten Links herunter und laden Sie sie auf hoch Amazon SageMaker-Studio in der Primärregion. Wählen Sie in Studio aus Datei-Browser und dann den Ordner, der Ihren Projektnamen enthält und mit endet modeldeploy.

Laden Sie diese Dateien in den Stammordner des Bereitstellungs-Repositorys hoch, indem Sie das Upload-Symbol auswählen. Stellen Sie sicher, dass sich die Dateien im Stammordner befinden, wie im folgenden Screenshot gezeigt.

Screenshot der Konfigurationsdateien

Ändern Sie die Build-Python-Datei

Als nächstes müssen wir die Bereitstellung anpassen build.py Datei, um die SageMaker-Endpunktbereitstellung in der sekundären Region für Folgendes zu aktivieren:

  • Abrufen der Position von Modellartefakten und Amazon Elastic Container-Registrierung (Amazon ECR) URI für das Modellbild in der sekundären Region
  • Bereiten Sie eine Parameterdatei vor, die verwendet wird, um die modellspezifischen Argumente an die CloudFormation-Vorlage zu übergeben, die das Modell in der sekundären Region bereitstellt

Sie können das aktualisierte herunterladen build.py Datei und ersetzen Sie die vorhandene in Ihrem Ordner. Wählen Sie in Studio aus Datei-Browser und dann den Ordner, der Ihren Projektnamen enthält und mit endet modeldeploy. Suchen Sie die Datei build.py und ersetzen Sie sie durch die heruntergeladene Datei.

Die CloudFormation-Vorlage verwendet die in einem S3-Bucket gespeicherten Modellartefakte und den Amazon ECR-Bildpfad, um den Inferenzendpunkt in der sekundären Region bereitzustellen. Dies unterscheidet sich von der Bereitstellung aus der Modellregistrierung in der primären Region, da Sie keine Modellregistrierung in der sekundären Region benötigen.

Screenshot der primären und sekundären Umgebungsparameter

Ändern Sie die buildspec-Datei

buildspec.yml enthält Anweisungen, die von CodeBuild ausgeführt werden. Wir ändern diese Datei, um Folgendes zu tun:

  • Installieren Sie die SageMaker-Python-Bibliothek, die zur Unterstützung der Codeausführung erforderlich ist
  • Übergeben Sie die –secondary-region und die modellspezifischen Parameter an build.py
  • Fügen Sie die S3-Bucket-Inhaltssynchronisierung von den primären zu den sekundären Regionen hinzu
  • Exportieren Sie die CloudFormation-Vorlage der sekundären Region und die zugehörige Parameterdatei als Artefakte des CodeBuild-Schritts

Öffnen Sie den Microsoft Store auf Ihrem Windows-PC. buildspec.yml Datei aus dem Modellbereitstellungsordner und nehmen Sie die hervorgehobenen Änderungen vor, wie im folgenden Screenshot gezeigt.

Screenshot der Build-YAML-Datei

Alternativ können Sie Folgendes herunterladen buildspec.yml Datei, um die Standarddatei zu ersetzen.

Fügen Sie CodeBuild-Umgebungsvariablen hinzu

In diesem Schritt fügen Sie Konfigurationsparameter hinzu, die für CodeBuild erforderlich sind, um die Konfigurationsdateien für die Modellbereitstellung in der sekundären Region zu erstellen.

  1. Suchen Sie in der CodeBuild-Konsole in der primären Region das Projekt, das Ihren Projektnamen enthält und auf deploy endet. Dieses Projekt wurde bereits von SageMaker Projects für Sie erstellt.

Screenshot der Code-Pipeline

  1. Wählen Sie das Projekt und auf der Bearbeiten Menü, wählen Sie Arbeitsumfeld.

Screenshot von Konfigurationen

  1. Im Erweiterte Konfiguration Abschnitt, abwählen Erlauben Sie AWS CodeBuild, diese Servicerolle zu ändern, damit sie mit diesem Build-Projekt verwendet werden kann.
  2. Fügen Sie die folgenden Umgebungsvariablen hinzu und definieren Sie die Namen der zusätzlichen CloudFormation-Vorlagen, der sekundären Region und der modellspezifischen Parameter:
    1. EXPORT_TEMPLATE_NAME_SECONDARY_REGION - Zum Wert, eingeben template-export-secondary-region.yml und für Typ, wählen Klartext.
    2. EXPORT_TEMPLATE_SECONDARY_REGION_CONFIG - Zum Wert, eingeben secondary-region-config-export.json und für Typ, wählen Klartext.
    3. AWS_SECONDARY_REGION - Zum Wert, geben Sie us-west-2 und for ein Typ, wählen Klartext.
    4. RAHMENBEDINGUNGEN - Zum Wert, eingeben xgboost (durch Ihren Rahmen ersetzen) und für Typ, wählen Klartext.
    5. MODEL_VERSION - Zum Wert, geben Sie 1.0-1 ein (ersetzen Sie durch Ihre Modellversion) und for Typ, wählen Klartext.
  3. Kopieren Sie den Wert von ARTIFACT_BUCKET in Notepad oder einen anderen Texteditor. Diesen Wert benötigen Sie im nächsten Schritt.
  4. Auswählen Umgebung aktualisieren.

Sie benötigen die Werte, die Sie für das Modelltraining angegeben haben FRAMEWORK und MODEL_VERSION. Um beispielsweise diese Werte für das Abalone-Modell zu finden, das in der MLOps-Boilerplate-Bereitstellung verwendet wird, öffnen Sie Studio und auf der Datei-Browser öffnen Sie den Ordner mit Ihrem Projektnamen und der Endung modelbuild. Navigieren Sie zu pipelines/abalone und öffne die pipeline.py Datei. Suchen nach sagemaker.image_uris.retrieve und kopieren Sie die entsprechenden Werte.

Screenshot des ML-Frameworks

Erstellen Sie einen S3-Replikat-Bucket in der sekundären Region

Wir müssen einen S3-Bucket erstellen, um die Modellartefakte in der sekundären Region zu speichern. SageMaker verwendet diesen Bucket, um die neueste Version des Modells abzurufen, um einen Inferenzendpunkt hochzufahren. Sie müssen dies nur einmal tun. CodeBuild synchronisiert bei jeder Pipelineausführung automatisch den Inhalt des Buckets in der primären Region mit dem Replikations-Bucket.

  1. Wählen Sie in der Amazon S3-Konsole aus Eimer erstellen.
  2. Aussichten für Eimername, geben Sie den Wert von ein ARTEFACT_BUCKET im vorherigen Schritt kopiert und angehängt -replica bis zum Ende (z. sagemaker-project-X-XXXXXXXX-replica.
  3. Aussichten für AWS-Region, geben Sie Ihre sekundäre Region ein (us-west-2).
  4. Belassen Sie alle anderen Werte auf ihren Standardwerten und wählen Sie aus Eimer erstellen.

Genehmigen Sie ein Modell für die Bereitstellung

Für den Start der Bereitstellungsphase der Pipeline ist ein genehmigtes Modell erforderlich. Dies ist für die Bereitstellung in der primären Region erforderlich.

  1. Wählen Sie in Studio (primäre Region) aus SageMaker-Ressourcen im Navigationsbereich.
  2. Aussichten für Wählen Sie die anzuzeigende Ressource aus, wählen Modellregistrierung.
  3. Wählen Sie den Modellgruppennamen beginnend mit Ihrem Projektnamen.
  4. Überprüfen Sie im rechten Bereich die Modellversion, das Stadium und den Status.
  5. Wenn der Status ausstehend angezeigt wird, wählen Sie die Modellversion aus und wählen Sie dann aus Update Status.
  6. Status ändern auf Genehmigt, Dann wählen Update Status.

Stellen Sie die Änderungen bereit und überprüfen Sie sie

Alle Änderungen, die für die Bereitstellung Ihres SageMaker-Inferenzendpunkts in mehreren Regionen erforderlich sind, sind jetzt abgeschlossen, und Sie können den Bereitstellungsprozess starten.

  1. Speichern Sie in Studio alle bearbeiteten Dateien, wählen Sie Git, und wählen Sie das Repository aus, das Ihren Projektnamen enthält und auf deploy endet.
  2. Wählen Sie das Pluszeichen, um Änderungen vorzunehmen.
  3. Der Geändert, Fügen build.py und buildspec.yml.
  4. Der Nicht verfolgt, Fügen endpoint-config-template-secondary-region.yml und secondary-region-config.json.
  5. Geben Sie einen Kommentar ein Zusammenfassung Feld und wählen Sie Verpflichten.
  6. Übertragen Sie die Änderungen in das Repository, indem Sie auswählen Push.

Das Pushen dieser Änderungen an das CodeCommit-Repository löst eine neue Pipelineausführung aus, da ein EventBridge-Ereignis auf Push-Commits überwacht. Nach einigen Augenblicken können Sie die Ausführung überwachen, indem Sie in der CodePipeline-Konsole zur Pipeline navigieren.

Stellen Sie sicher, dass Sie die Bereitstellung für die Produktion und die sekundäre Region manuell genehmigen.

Sie können überprüfen, ob der Endpunkt der sekundären Region auf der SageMaker-Konsole erstellt wurde, indem Sie auswählen Dashboard im Navigationsbereich und Bestätigen des Endpunktstatus in Letzte Aktivität.

Screenshot des Sage-Maker-Dashboards

API Gateway und Route 53 hinzufügen (optional)

Optional können Sie den Anweisungen in folgen Rufen Sie einen Amazon SageMaker-Modellendpunkt mit Amazon API Gateway und AWS Lambda auf um den SageMaker-Inferenzendpunkt in der sekundären Region als API verfügbar zu machen mit API Gateway und Lambda.

Aufräumen

Informationen zum Löschen des SageMaker-Projekts finden Sie unter Löschen Sie ein MLOps-Projekt mit Amazon SageMaker Studio. Um sicherzustellen, dass der sekundäre Inferenzendpunkt zerstört wird, gehen Sie zur AWS CloudFormation-Konsole und löschen Sie die zugehörigen Stacks in Ihren primären und sekundären Regionen; dies zerstört die SageMaker-Inferenzendpunkte.

Zusammenfassung

In diesem Beitrag haben wir gezeigt, wie ein MLOps-Spezialist eine vorkonfigurierte MLOps-Vorlage für seinen eigenen Anwendungsfall für die Bereitstellung in mehreren Regionen ändern kann, z. Bei diesem Bereitstellungsansatz müssen Sie keine Dienste in der sekundären Region konfigurieren und können die CodePipeline- und CloudBuild-Setups in der primären Region für die regionsübergreifende Bereitstellung wiederverwenden. Darüber hinaus können Sie Kosten sparen, indem Sie das Training Ihrer Modelle in der primären Region fortsetzen und gleichzeitig die SageMaker-Inferenz in mehreren Regionen nutzen, um Ihre KI/ML-Bereitstellung global zu skalieren.

Bitte teilen Sie uns Ihr Feedback im Kommentarbereich mit.


Über die Autoren

Aktivieren Sie CI/CD von multiregionalen Amazon SageMaker-Endpunkten PlatoBlockchain Data Intelligence. Vertikale Suche. Ai. Mehran Najafi, PhD, ist ein Senior Solutions Architect für AWS mit Schwerpunkt auf KI/ML- und SaaS-Lösungen im Maßstab.

Aktivieren Sie CI/CD von multiregionalen Amazon SageMaker-Endpunkten PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Steven Alechin ist ein Senior Solutions Architect für AWS, der sich auf MLOps at Scale konzentriert.

Zeitstempel:

Mehr von AWS Maschinelles Lernen