Eine gut konzipierte CI/CD-Pipeline ist unerlässlich, um jeden Softwareentwicklungs-Workflow effektiv zu skalieren. Beim Entwerfen von CI/CD-Pipelines für die Produktion empfiehlt AWS, mehrere Konten zu nutzen, um Ressourcen zu isolieren, Sicherheitsbedrohungen einzudämmen und die Abrechnung zu vereinfachen – und Data-Science-Pipelines sind nicht anders. Bei AWS arbeiten wir weiterhin an Innovationen, um den MLOps-Workflow zu vereinfachen.
In diesem Beitrag diskutieren wir einige der neueren kontoübergreifenden Funktionen Amazon Sage Maker die es Ihnen ermöglichen, Modellgruppen besser zu teilen und zu verwalten sowie Modellversionen zu verwalten. Eine beispielhafte Kontostruktur folgt Best Practices der Organisationseinheit Informationen zum Hosten von Modellen mit kontenübergreifenden SageMaker-Endpunkten finden Sie unter MLOps Workload Orchestrator.
Lösungsüberblick
Das folgende Diagramm veranschaulicht unsere gemeinsam genutzte Modellregistrierungsarchitektur.
Einige Dinge, die bei der vorhergehenden Architektur zu beachten sind:
Die folgenden Schritte entsprechen dem Diagramm:
- Ein Data Scientist registriert ein Modell aus dem Data Science-Konto in der SageMaker-Modellregistrierung für gemeinsam genutzte Dienste in a
PendingManualApproval
Zustand. Das Modellartefakt wird im Konto für gemeinsame Dienste erstellt Amazon Simple Storage-Service (Amazon S3) Eimer. - Bei einer Registrierung einer neuen Modellversion sollte jemand mit der Berechtigung, das Modell basierend auf den Metriken zu genehmigen, das Modell genehmigen oder ablehnen.
- Nachdem das Modell genehmigt wurde, ist die CI/CD-Pipeline im Bereitstellungskonto zur Bereitstellung ausgelöst die aktualisierten Modelldetails im QA-Konto und aktualisieren Sie die Phase als QA.
- Nachdem Sie den Testprozess bestanden haben, können Sie entweder einen manuellen Genehmigungsschritt in Ihrem CI/CD-Prozess durchführen oder Ihre CI/CD-Pipeline das Modell direkt in der Produktion bereitstellen und die Phase als Prod aktualisieren.
- Die Produktionsumgebung verweist auf das genehmigte Modell und den genehmigten Code und tut dies möglicherweise A/B-Test in der Produktion. Im Falle einer Prüfung oder eines Problems mit dem Modell können Sie verwenden Amazon SageMaker ML-Herkunftsverfolgung. Es erstellt und speichert Informationen über die Schritte eines Arbeitsablaufs für maschinelles Lernen (ML) von der Datenvorbereitung bis zur Modellbereitstellung. Mit den Tracking-Informationen können Sie die Workflow-Schritte reproduzieren, die Modell- und Dataset-Herkunft verfolgen und Modell-Governance- und Audit-Standards festlegen.
Während des gesamten Prozesses behält die gemeinsam genutzte Modellregistrierung die älteren Modellversionen bei. Dies ermöglicht dem Team, Änderungen rückgängig zu machen oder sogar zu hosten Produktionsvarianten.
Voraussetzungen:
Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
- Eine bereitgestellte Struktur mit mehreren Konten – Anweisungen finden Sie unter Best Practices für Organisationseinheiten mit AWS Organizations. Für die Zwecke dieses Blogs nutzen wir die folgenden Konten:
- Data-Science-Konto – Ein Konto, in dem Data Scientists Zugriff auf die Trainingsdaten haben und die Modelle erstellen.
- Shared-Services-Konto – Ein zentrales Konto zum Speichern der Modellartefakte (wie im Architekturdiagramm gezeigt), auf die über die verschiedenen Workload-Konten zugegriffen werden kann.
- Bereitstellungskonto – Ein Konto, das für die Bereitstellung von Änderungen an den verschiedenen Konten verantwortlich ist.
- Workload-Konten – Dies sind in der Regel QA- und Produktionsumgebungen, in denen Softwareentwickler Anwendungen erstellen können, um das ML-Modell zu nutzen.
- Ein Bereitstellungskonto mit entsprechenden Berechtigungen – Weitere Informationen zu Best Practices mit einer OU-Struktur mit mehreren Konten finden Sie unter Bereitstellungen OU. Dieses Konto ist dafür verantwortlich, die Workload-Konten auf das gewünschte Modell in der Modellregistrierung des Kontos für gemeinsame Dienste zu verweisen.
Definieren Sie kontoübergreifende Richtlinien
Gemäß dem Prinzip der geringsten Rechte müssen wir zuerst kontenübergreifende Ressourcenrichtlinien zu den Ressourcen der gemeinsam genutzten Dienste hinzufügen, um den Zugriff von den anderen Konten zu gewähren.
Da die Modellartefakte im S3-Bucket des Shared-Services-Kontos gespeichert sind, benötigt das Data Science-Konto Amazon S3-Lese-/Schreibzugriff, um trainierte Modelle an Amazon S3 zu übertragen. Der folgende Code veranschaulicht diese Richtlinie, aber fügen Sie sie noch nicht dem Konto für gemeinsame Dienste hinzu:
Dem Bereitstellungskonto muss lediglich Lesezugriff auf den S3-Bucket gewährt werden, damit es die Modellartefakte für die Bereitstellung auf SageMaker-Endpunkten verwenden kann. Wir müssen auch die folgende Richtlinie an den S3-Bucket für gemeinsame Dienste anhängen:
Wir kombinieren beide Richtlinien, um die folgende endgültige Richtlinie zu erhalten. Erstellen Sie diese Richtlinie im Konto für gemeinsame Dienste, nachdem Sie die entsprechenden Konto-IDs ersetzt haben:
Um ein in einem anderen Konto erstelltes Modell bereitstellen zu können, muss der Benutzer über eine Rolle verfügen, die Zugriff auf SageMaker-Aktionen hat, z. B. eine Rolle mit der AmazonSageMakerFullAccess
verwaltete Richtlinie. Beziehen auf Stellen Sie eine Modellversion von einem anderen Konto bereit für weitere Details.
Wir müssen die Modellgruppe definieren, die die Modellversionen enthält, die wir bereitstellen möchten. Außerdem möchten wir dem Data Science-Konto Berechtigungen erteilen. Dies kann in den folgenden Schritten erreicht werden. Wir beziehen uns auf die Konten wie folgt:
- shared_services_account_id – Das Konto, in dem sich die Modellregistrierung befindet und in dem wir das Modell haben möchten
- data_science_account_id – Das Konto, in dem wir trainieren und daher das eigentliche Modellartefakt erstellen
- Bereitstellungskonto-ID – Das Konto, in dem wir den Endpunkt für dieses Modell hosten möchten
Zuerst müssen wir sicherstellen, dass die Modellpaketgruppen vorhanden sind. Sie können Boto3-APIs verwenden, wie im folgenden Beispiel gezeigt, oder Sie können die AWS-Managementkonsole um das Modellpaket zu erstellen. Beziehen auf Modellpaketgruppe erstellen für mehr Details. Dies setzt voraus, dass Sie Boto3 installiert haben.
Für die Berechtigungen für diese Modellpaketgruppe können Sie ein JSON-Dokument erstellen, das dem folgenden Code ähnelt. Ersetzen Sie die tatsächlichen Konto-IDs und den Namen der Modellpaketgruppe durch Ihre eigenen Werte.
Wenden Sie abschließend die Richtlinie auf die Modellpaketgruppe an. Sie können diese Richtlinie nicht über die Konsole mit der Paketgruppe verknüpfen. Sie benötigen das SDK bzw AWS-Befehlszeilenschnittstelle (AWS CLI)-Zugriff. Der folgende Code verwendet beispielsweise Boto3:
Wir brauchen auch einen Brauch AWS-Schlüsselverwaltungsservice (AWS KMS)-Schlüssel, um das Modell zu verschlüsseln, während es in Amazon S3 gespeichert wird. Dies muss mit dem Data Science-Konto erfolgen. Navigieren Sie in der AWS KMS-Konsole zu der Definieren Sie Schlüsselnutzungsberechtigungen Seite. In dem Andere AWS-Konten Wählen Sie im Abschnitt Fügen Sie ein weiteres AWS-Konto hinzu. Geben Sie die AWS-Kontonummer für das Bereitstellungskonto ein. Sie verwenden diesen KMS-Schlüssel für den SageMaker-Trainingsjob. Wenn Sie keinen KMS-Schlüssel für den Trainingsauftrag angeben, verwendet SageMaker standardmäßig einen serverseitigen Amazon S3-Verschlüsselungsschlüssel. Ein standardmäßiger serverseitiger Amazon S3-Verschlüsselungsschlüssel kann nicht mit einem anderen AWS-Konto geteilt oder von diesem verwendet werden.
Die Richtlinie und Berechtigungen folgen diesem Muster:
- Die Amazon S3-Richtlinie, die in angegeben ist
shared_services_account
erteilt Berechtigungen für das Data Science-Konto und das Bereitstellungskonto - Die KMS-Schlüsselrichtlinie, die in angegeben ist
shared_services_account
erteilt Berechtigungen für das Data Science-Konto und das Bereitstellungskonto
Wir müssen sicherstellen, dass das Konto für gemeinsame Dienste und das Bereitstellungskonto Zugriff auf die Docker-Images haben, die zum Trainieren des Modells verwendet wurden. Diese Bilder werden im Allgemeinen in AWS-Konten gehostet, und Ihr Kontoadministrator kann Ihnen helfen, Zugriff zu erhalten, falls Sie noch keinen Zugriff haben. Für diesen Beitrag erstellen wir nach dem Training des Modells keine benutzerdefinierten Docker-Images und benötigen daher keine spezifischen Amazon ECR-Richtlinien für die Images.
In den Workload-Konten (QA oder prod) müssen wir zwei erstellen AWS Identity and Access Management and (IAM)-Richtlinien, die den folgenden ähneln. Diese sind Inline-Richtlinien, was bedeutet, dass sie in eine IAM-Identität eingebettet sind. Dadurch erhalten diese Konten Zugriff auf die Modellregistrierung.
Die erste Inline-Richtlinie ermöglicht einer Rolle den Zugriff auf die Amazon S3-Ressource im Shared-Services-Konto, das das Modellartefakt enthält. Geben Sie den Namen des S3-Buckets und Ihr Modell an:
Die zweite Inline-Richtlinie erlaubt einer Rolle, die wir später erstellen, den KMS-Schlüssel im Konto für gemeinsame Dienste zu verwenden. Geben Sie die Konto-ID für das Konto für gemeinsame Dienste und die KMS-Schlüssel-ID an:
Schließlich müssen wir Erstellen Sie eine IAM-Rolle für SageMaker. Diese Rolle hat die AmazonSageMakerFullAccess
Richtlinie beigefügt. Anschließend hängen wir diese beiden Inline-Richtlinien an die von uns erstellte Rolle an. Wenn Sie eine vorhandene SageMaker-Ausführungsrolle verwenden, hängen Sie diese beiden Richtlinien an diese Rolle an. Anweisungen finden Sie unter Rollen erstellen und Richtlinien anhängen (Konsole).
Nachdem wir nun die Richtlinien für jedes Konto definiert haben, sehen wir uns ein Beispiel an, um es in Aktion zu sehen.
Erstellen und trainieren Sie ein Modell mithilfe einer SageMaker-Pipeline
Wir erstellen zunächst eine SageMaker-Pipeline im Data-Science-Konto, um die Datenverarbeitung, das Modelltraining und die Bewertung durchzuführen. Wir verwenden den kalifornischen Wohnungsdatensatz aus der StatLib-Bibliothek. Im folgenden Codeausschnitt verwenden wir ein benutzerdefiniertes Vorverarbeitungsskript preprocess.py
um einige einfache Feature-Transformationen wie Feature-Skalierung durchzuführen, die mit dem Folgenden generiert werden können Notizbuch. Dieses Skript teilt das Dataset auch in Trainings- und Test-Datasets auf.
Wir schaffen eine SKLearnProcessor
-Objekt, um dieses Vorverarbeitungsskript auszuführen. In der SageMaker-Pipeline erstellen wir einen Verarbeitungsschritt (ProcessingStep
), um den Verarbeitungscode mit auszuführen SKLearnProcessor
. Dieser Verarbeitungscode wird aufgerufen, wenn die SageMaker-Pipeline initialisiert wird. Der Code, der die erstellt SKLearnProcessor
und ProcessingStep
sind im folgenden Code dargestellt. Beachten Sie, dass der gesamte Code in diesem Abschnitt im Data Science-Konto ausgeführt wird.
Wir benötigen einen benutzerdefinierten KMS-Schlüssel, um das Modell zu verschlüsseln, während wir es in Amazon S3 speichern. Siehe folgenden Code:
Um das Modell zu trainieren, erstellen wir ein TensorFlow-Estimator-Objekt. Wir übergeben ihm die KMS-Schlüssel-ID zusammen mit unserem Trainingsskript train.py
, Trainingsinstanztyp und Anzahl. Wir erstellen auch eine TrainingStep
zu unserer Pipeline hinzuzufügen, und fügen Sie den TensorFlow-Schätzer hinzu. Siehe folgenden Code:
Zusätzlich zum Training müssen wir eine Modellbewertung durchführen, für die wir in diesem Beispiel den mittleren quadratischen Fehler (MSE) als Metrik verwenden. Das früheres Notizbuch erzeugt auch evaluate.py
, die wir verwenden, um unser a-Modell mit MSE zu evaluieren. Wir erstellen auch eine ProcessingStep
um das Modellauswertungsskript mit a zu initialisieren SKLearnProcessor
Objekt. Der folgende Code erstellt diesen Schritt:
Nach der Modellbewertung benötigen wir auch einen Schritt, um unser Modell bei der Modellregistrierung zu registrieren, wenn die Modellleistung den Anforderungen entspricht. Dies wird im folgenden Code mithilfe von gezeigt RegisterModel
Schritt. Hier müssen wir das Modellpaket angeben, das wir im Konto für gemeinsame Dienste deklariert hatten. Ersetzen Sie das Paket „Region“, „Konto“ und „Modell“ durch Ihre Werte. Der hier verwendete Modellname lautet modeltest
, aber Sie können einen beliebigen Namen Ihrer Wahl verwenden.
Wir müssen auch die Modellartefakte erstellen, damit sie bereitgestellt werden können (unter Verwendung des anderen Kontos). Zum Erstellen des Modells erstellen wir a CreateModelStep
, wie im folgenden Code gezeigt:
Das Hinzufügen von Bedingungen zur Pipeline erfolgt mit a ConditionStep
. In diesem Fall möchten wir die neue Modellversion nur dann bei der Modellregistrierung registrieren, wenn das neue Modell eine Genauigkeitsbedingung erfüllt. Siehe folgenden Code:
Schließlich wollen wir alle Pipeline-Schritte orchestrieren, damit die Pipeline initialisiert werden kann:
Stellen Sie eine Modellversion von einem anderen Konto bereit
Nachdem das Modell im Shared-Services-Konto registriert wurde, müssen wir es mithilfe der CI/CD-Pipeline im Bereitstellungskonto in unseren Workload-Konten bereitstellen. Wir haben die Rolle und die Richtlinie bereits in einem früheren Schritt konfiguriert. Wir verwenden den Modellpaket-ARN, um das Modell aus der Modellregistrierung bereitzustellen. Der folgende Code wird im Bereitstellungskonto ausgeführt und zum Bereitstellen genehmigter Modelle für QA und Produktion verwendet:
Zusammenfassung
In diesem Beitrag haben wir gezeigt, wie die Richtlinien eingerichtet werden, die für eine Multi-Account-Einrichtung für ML auf der Grundlage des Prinzips der geringsten Rechte erforderlich sind. Dann haben wir den Prozess zum Erstellen und Trainieren der Modelle im Data Science-Konto gezeigt. Schließlich haben wir die CI/CD-Pipeline im Bereitstellungskonto verwendet, um die neueste Version genehmigter Modelle für QA- und Produktionskonten bereitzustellen. Darüber hinaus können Sie Zeigen Sie den Bereitstellungsverlauf von Modellen an und Auslöser bauen in AWS CodeBuild.
Sie können die Konzepte in diesem Beitrag skalieren, um Modelle darin zu hosten Amazon Elastic Compute-Cloud (Amazon EC2) oder Amazon Elastic Kubernetes-Service (Amazon EKS) sowie den Aufbau einer Batch-Inferenz-Pipeline.
Um mehr über separate Konten zu erfahren, die ML-Modelle in AWS erstellen, siehe Best Practices für Organisationseinheiten mit AWS Organizations und Aktualisieren Sie Modelle in der Produktion sicher.
Über die Autoren
Sandeep Verma ist Senior Prototyping Architect bei AWS. Er taucht gerne tief in die Herausforderungen der Kunden ein und baut Prototypen für Kunden, um Innovationen zu beschleunigen. Er hat einen Hintergrund in KI/ML, Gründer von New Knowledge, und generell eine Leidenschaft für Technik. In seiner Freizeit reist er gerne und fährt mit seiner Familie Ski.
Mani Chanuja ist Spezialist für künstliche Intelligenz und maschinelles Lernen SA bei Amazon Web Services (AWS). Sie hilft Kunden, maschinelles Lernen einzusetzen, um ihre geschäftlichen Herausforderungen mit AWS zu lösen. Sie verbringt die meiste Zeit damit, tief einzutauchen und Kunden in KI/ML-Projekten im Zusammenhang mit Computer Vision, natürlicher Sprachverarbeitung, Prognosen, ML am Edge und mehr zu unterrichten. Sie hat eine Leidenschaft für ML at Edge, daher hat sie ihr eigenes Labor mit selbstfahrenden Kits und einer Produktionslinie für die Prototypenfertigung geschaffen, in dem sie viel Freizeit verbringt.
Saumitra Vikram ist Softwareentwickler im Amazon SageMaker-Team und lebt in Chennai, Indien. Außerhalb der Arbeit verbringt er seine Zeit gerne mit Laufen, Trekking und Motorradfahren durch den Himalaya.
Sreedevi Srinivasan ist ein führendes technisches Unternehmen bei AWS SageMaker. Sie ist leidenschaftlich und begeistert davon, ML als Plattform zu ermöglichen, die das tägliche Leben verändern wird. Sie konzentriert sich derzeit auf den SageMaker Feature Store. In ihrer Freizeit verbringt sie gerne Zeit mit ihrer Familie.
Rupinder Grewal ist ein Sr Ai/ML Specialist Solutions Architect bei AWS. Derzeit konzentriert er sich auf die Bereitstellung von Modellen und MLOps auf SageMaker. Vor dieser Funktion hat er als Machine Learning Engineer gearbeitet und Modelle erstellt und gehostet. Außerhalb der Arbeit spielt er gerne Tennis und radelt auf Bergpfaden.
Farooq Sabir ist ein leitender Lösungsarchitekt für künstliche Intelligenz und maschinelles Lernen bei AWS. Er hat einen PhD- und MS-Abschluss in Elektrotechnik von der University of Texas at Austin und einen MS in Informatik vom Georgia Institute of Technology. Bei AWS hilft er Kunden bei der Formulierung und Lösung ihrer Geschäftsprobleme in den Bereichen Data Science, maschinelles Lernen, Computer Vision, künstliche Intelligenz, numerische Optimierung und verwandte Bereiche. Er verfügt über mehr als 16 Jahre Berufserfahrung und ist außerdem außerordentliches Fakultätsmitglied an der University of Texas in Dallas, wo er einen Graduiertenkurs über angewandtes maschinelles Lernen unterrichtet. Er lebt in Dallas, Texas, und seine Familie liebt es zu reisen und lange Autofahrten zu unternehmen.
- Fortgeschritten (300)
- AI
- Kunst
- KI-Kunstgenerator
- KI-Roboter
- Amazon Sage Maker
- künstliche Intelligenz
- Zertifizierung für künstliche Intelligenz
- Künstliche Intelligenz im Bankwesen
- Roboter mit künstlicher Intelligenz
- Roboter mit künstlicher Intelligenz
- Software für künstliche Intelligenz
- AWS Maschinelles Lernen
- Best Practices
- Blockchain
- Blockchain-Konferenz ai
- Einfallsreichtum
- dialogorientierte künstliche Intelligenz
- Krypto-Konferenz ai
- Dalls
- tiefe Lernen
- Google Ai
- Maschinelles Lernen
- Plato
- platon ai
- Datenintelligenz von Plato
- Plato-Spiel
- PlatoData
- Platogaming
- Skala ai
- Syntax
- Technische Anleitung
- Zephyrnet