Amazon SageMaker-Pipelines ermöglicht Datenwissenschaftlern und Ingenieuren für maschinelles Lernen (ML) die Automatisierung von Trainingsworkflows, was Ihnen hilft, einen wiederholbaren Prozess zu erstellen, um Modellentwicklungsschritte für schnelles Experimentieren und Modellneutraining zu orchestrieren. Sie können den gesamten Modellerstellungs-Workflow automatisieren, einschließlich Datenvorbereitung, Feature-Engineering, Modelltraining, Modelloptimierung und Modellvalidierung, und ihn in der Modellregistrierung katalogisieren. Sie können Pipelines so konfigurieren, dass sie automatisch in regelmäßigen Abständen oder beim Auslösen bestimmter Ereignisse ausgeführt werden, oder Sie können sie nach Bedarf manuell ausführen.
In diesem Beitrag heben wir einige der Verbesserungen an der hervor Amazon Sage Maker SDK und führen neue Funktionen von Amazon SageMaker Pipelines ein, die es ML-Praktikern erleichtern, ML-Modelle zu erstellen und zu trainieren.
Pipelines verbessert seine Entwicklererfahrung weiterhin, und mit diesen neuesten Versionen können Sie den Dienst jetzt auf individuellere Weise nutzen:
- 2.99.0, 2.101.1, 2.102.0, 2.104.0 – Aktualisierte Dokumentation auf
PipelineVariable
Verwendung für Estimator-, Prozessor-, Tuner-, Transformer- und Modellbasisklassen, Amazon-Modelle und Framework-Modelle. Mit neueren Versionen des SDK werden zusätzliche Änderungen vorgenommen, um alle Unterklassen von Schätzern und Prozessoren zu unterstützen. - 2.90.0 - Verfügbarkeit von Modellschritt für integrierte Aufgaben zur Erstellung und Registrierung von Modellressourcen.
- 2.88.2 - Verfügbarkeit von Pipeline-Sitzung für die verwaltete Interaktion mit SageMaker-Einheiten und -Ressourcen.
- 2.88.2 – Unterklassenkompatibilität für Workflow-Pipeline-Auftragsschritte So können Sie Jobabstraktionen erstellen und Verarbeitungs-, Trainings-, Transformations- und Optimierungsjobs konfigurieren und ausführen, wie Sie es ohne eine Pipeline tun würden.
- 2.76.0 - Verfügbarkeit von Fehlerschritt um eine Pipeline mit einem Fehlerstatus bedingt zu stoppen.
In diesem Beitrag führen wir Sie anhand eines Beispieldatensatzes durch einen Workflow mit Schwerpunkt auf Modellerstellung und -bereitstellung, um zu demonstrieren, wie die neuen Funktionen von Pipelines implementiert werden. Am Ende sollten Sie über genügend Informationen verfügen, um diese neueren Funktionen erfolgreich zu verwenden und Ihre ML-Workloads zu vereinfachen.
Funktionsübersicht
Pipelines bietet die folgenden neuen Funktionen:
- Anmerkung zu Pipeline-Variablen – Bestimmte Methodenparameter akzeptieren mehrere Eingabetypen, einschließlich
PipelineVariables
, und zusätzliche Dokumentation wurde hinzugefügt, um zu verdeutlichen, woPipelineVariables
werden sowohl in der neuesten stabilen Version der SageMaker SDK-Dokumentation als auch in der Init-Signatur der Funktionen unterstützt. Im folgenden TensorFlow-Schätzer zeigt die Init-Signatur dies beispielsweise jetzt anmodel_dir
undimage_uri
SupportPipelineVariables
, während die anderen Parameter dies nicht tun. Weitere Informationen finden Sie unter TensorFlow-Schätzer.- Vor:
- Nach:
- Pipeline-Sitzung - Pipeline-Sitzung ist ein neues Konzept, das eingeführt wurde, um Einheit über das SageMaker SDK zu bringen, und führt eine verzögerte Initialisierung der Pipeline-Ressourcen ein (die Ausführungsaufrufe werden erfasst, aber nicht ausgeführt, bis die Pipeline erstellt und ausgeführt wird). Das
PipelineSession
Kontext erbt dieSageMakerSession
und implementiert praktische Methoden, mit denen Sie mit anderen SageMaker-Entitäten und -Ressourcen interagieren können, z. B. Trainingsjobs, Endpunkte und darin gespeicherte Eingabedatensätze Amazon Simple Storage-Service (Amazon S3). - Unterklassenkompatibilität mit Jobschritten der Workflow-Pipeline – Sie können jetzt Jobabstraktionen erstellen und Verarbeitungs-, Trainings-, Transformations- und Optimierungsjobs konfigurieren und ausführen, wie Sie es ohne eine Pipeline tun würden.
- Erstellen Sie beispielsweise einen Verarbeitungsschritt mit
SKLearnProcessor
zuvor war Folgendes erforderlich: - Wie wir im vorherigen Code sehen,
ProcessingStep
muss grundsätzlich die gleiche Vorverarbeitungslogik wie ausführen.run
, nur ohne den API-Aufruf zum Starten des Jobs zu initiieren. Aber da die Unterklassenkompatibilität jetzt mit Workflow-Pipeline-Auftragsschritten aktiviert ist, deklarieren wir diestep_args
-Argument, das die Vorverarbeitungslogik mit .run verwendet, sodass Sie eine Auftragsabstraktion erstellen und so konfigurieren können, wie Sie sie ohne Pipelines verwenden würden. Wir passieren auch in derpipeline_session
, die einPipelineSession
Objekt, stattsagemaker_session
um sicherzustellen, dass die Ausführungsaufrufe erfasst, aber nicht aufgerufen werden, bis die Pipeline erstellt und ausgeführt wird. Siehe folgenden Code:
- Erstellen Sie beispielsweise einen Verarbeitungsschritt mit
- Modellschritt (ein optimierter Ansatz mit Modellerstellungs- und Registrierungsschritten) –Pipelines bietet zwei Schritttypen zur Integration mit SageMaker-Modellen:
CreateModelStep
undRegisterModel
. Sie können jetzt beides erreichen, indem Sie nur die verwendenModelStep
Typ. Beachten Sie, dass aPipelineSession
ist erforderlich, um dies zu erreichen. Dies bringt Ähnlichkeit zwischen den Pipelineschritten und dem SDK.- Vor:
-
- Nach:
- Fehlerschritt (bedingter Stopp des Pipeline-Laufs) -
FailStep
ermöglicht das Stoppen einer Pipeline mit einem Fehlerstatus, wenn eine Bedingung erfüllt ist, z. B. wenn der Modellwert unter einem bestimmten Schwellenwert liegt.
Lösungsüberblick
In dieser Lösung ist Ihr Einstiegspunkt die Amazon SageMaker-Studio integrierte Entwicklungsumgebung (IDE) für schnelles Experimentieren. Studio bietet eine Umgebung zum Verwalten der End-to-End-Pipelines-Erfahrung. Mit Studio können Sie das umgehen AWS-Managementkonsole für Ihr gesamtes Workflow-Management. Weitere Informationen zum Verwalten von Pipelines in Studio finden Sie unter Anzeigen, Verfolgen und Ausführen von SageMaker-Pipelines in SageMaker Studio.
Das folgende Diagramm veranschaulicht die High-Level-Architektur des ML-Workflows mit den verschiedenen Schritten zum Trainieren und Generieren von Inferenzen mithilfe der neuen Features.
Die Pipeline umfasst die folgenden Schritte:
- Verarbeiten Sie Daten vor, um die erforderlichen Funktionen zu erstellen, und teilen Sie Daten in Trainings-, Validierungs- und Testdatensätze auf.
- Erstellen Sie einen Trainingsjob mit dem SageMaker XGBoost-Framework.
- Bewerten Sie das trainierte Modell mithilfe des Testdatasets.
- Überprüfen Sie, ob der AUC-Score über einem vordefinierten Schwellenwert liegt.
- Wenn der AUC-Wert unter dem Schwellenwert liegt, stoppen Sie die Pipelineausführung und markieren Sie sie als fehlgeschlagen.
- Wenn der AUC-Score größer als der Schwellenwert ist, erstellen Sie ein SageMaker-Modell und registrieren Sie es in der SageMaker-Modellregistrierung.
- Wenden Sie die Stapeltransformation auf das angegebene Dataset an, indem Sie das im vorherigen Schritt erstellte Modell verwenden.
Voraussetzungen:
Um diesem Beitrag folgen zu können, benötigen Sie ein AWS-Konto mit a Studio-Domain.
Pipelines ist direkt in SageMaker-Entitäten und -Ressourcen integriert, sodass Sie nicht mit anderen AWS-Services interagieren müssen. Sie müssen auch keine Ressourcen verwalten, da es sich um einen vollständig verwalteten Dienst handelt, was bedeutet, dass Ressourcen für Sie erstellt und verwaltet werden. Weitere Informationen zu den verschiedenen SageMaker-Komponenten, die sowohl eigenständige Python-APIs als auch integrierte Komponenten von Studio sind, finden Sie unter SageMaker-Produktseite.
Bevor Sie beginnen, installieren Sie SageMaker SDK Version >= 2.104.0 und xlrd >=1.0.0 im Studio-Notebook mit dem folgenden Code-Snippet:
ML-Workflow
Für diesen Beitrag verwenden Sie die folgenden Komponenten:
- Datenaufbereitung
- SageMaker-Verarbeitung – SageMaker Processing ist ein vollständig verwalteter Service, mit dem Sie benutzerdefinierte Datentransformationen und Feature-Engineering für ML-Workloads ausführen können.
- Modellbau
- Modelltraining und Evaluation
- Ein-Klick-Training – Die verteilte Trainingsfunktion von SageMaker. SageMaker bietet verteilte Trainingsbibliotheken für Datenparallelität und Modellparallelität. Die Bibliotheken sind für die SageMaker-Trainingsumgebung optimiert, helfen bei der Anpassung Ihrer verteilten Trainingsjobs an SageMaker und verbessern die Trainingsgeschwindigkeit und den Durchsatz.
- SageMaker-Experimente – Experimente ist eine Funktion von SageMaker, mit der Sie Ihre ML-Iterationen organisieren, verfolgen, vergleichen und bewerten können.
- SageMaker-Batch-Transformation – Batch-Transformation oder Offline-Scoring ist ein verwalteter Dienst in SageMaker, mit dem Sie mithilfe Ihrer ML-Modelle Vorhersagen für einen größeren Datensatz treffen können.
- Workflow-Orchestrierung
Eine SageMaker-Pipeline ist eine Reihe miteinander verbundener Schritte, die durch eine JSON-Pipelinedefinition definiert werden. Es codiert eine Pipeline mithilfe eines gerichteten azyklischen Graphen (DAG). Die DAG liefert Informationen zu den Anforderungen und Beziehungen zwischen den einzelnen Schritten der Pipeline, und ihre Struktur wird durch die Datenabhängigkeiten zwischen den Schritten bestimmt. Diese Abhängigkeiten werden erstellt, wenn die Eigenschaften der Ausgabe eines Schritts als Eingabe an einen anderen Schritt übergeben werden.
Das folgende Diagramm veranschaulicht die verschiedenen Schritte in der SageMaker-Pipeline (für einen Anwendungsfall der Abwanderungsvorhersage), wobei die Verbindungen zwischen den Schritten von SageMaker basierend auf den durch die Schrittdefinitionen definierten Eingaben und Ausgaben abgeleitet werden.
In den nächsten Abschnitten werden die einzelnen Schritte der Pipeline erstellt und die gesamte Pipeline ausgeführt, nachdem sie erstellt wurde.
Projektstruktur
Beginnen wir mit der Projektstruktur:
- /sm-pipelines-End-to-End-Beispiel – Der Projektname
- /Daten – Die Datensätze
- /Pipelines – Die Codedateien für Pipelinekomponenten
- /Kundenabwanderung
- preprocess.py
- auswerten.py
- /Kundenabwanderung
- sagemaker-pipelines-project.ipynb – Ein Notebook, das durch den Modellierungsworkflow mit den neuen Funktionen von Pipelines führt
Laden Sie den Datensatz herunter
Um diesem Beitrag zu folgen, müssen Sie die herunterladen und speichern Beispieldatensatz unter dem Datenordner im Home-Verzeichnis des Projekts, in dem die Datei gespeichert wird Amazon Elastic File System (Amazon EFS) innerhalb der Studio-Umgebung.
Erstellen Sie die Pipelinekomponenten
Jetzt können Sie die Pipelinekomponenten erstellen.
Importieren Sie Anweisungen und deklarieren Sie Parameter und Konstanten
Erstellen Sie ein Studio-Notizbuch mit dem Namen sagemaker-pipelines-project.ipynb
innerhalb des Home-Verzeichnisses des Projekts. Geben Sie den folgenden Codeblock in eine Zelle ein und führen Sie die Zelle aus, um SageMaker- und S3-Client-Objekte einzurichten, create PipelineSession
, und richten Sie den S3-Bucket-Speicherort mit dem Standard-Bucket ein, der mit einer SageMaker-Sitzung geliefert wird:
Pipelines unterstützt die Parametrisierung, wodurch Sie Eingabeparameter zur Laufzeit angeben können, ohne Ihren Pipeline-Code zu ändern. Sie können die unter der verfügbaren Module verwenden sagemaker.workflow.parameters
Modul, wie z ParameterInteger
, ParameterFloat
und ParameterString
, um Pipelineparameter verschiedener Datentypen anzugeben. Führen Sie den folgenden Code aus, um mehrere Eingabeparameter einzurichten:
Generieren Sie ein Batch-Dataset
Generieren Sie das Batch-Dataset, das Sie später im Batch-Transformationsschritt verwenden:
Hochladen von Daten in einen S3-Bucket
Laden Sie die Datensätze in Amazon S3 hoch:
Definieren Sie ein Verarbeitungsskript und einen Verarbeitungsschritt
In diesem Schritt bereiten Sie ein Python-Skript vor, um Feature-Engineering, eine Hot-Codierung durchzuführen und die Trainings-, Validierungs- und Testaufteilungen zu kuratieren, die für die Modellerstellung verwendet werden sollen. Führen Sie den folgenden Code aus, um Ihr Verarbeitungsskript zu erstellen:
Führen Sie als Nächstes den folgenden Codeblock aus, um den Prozessor und den Schritt „Pipelines“ zu instanziieren, um das Verarbeitungsskript auszuführen. Da das Verarbeitungsskript in Pandas geschrieben ist, verwenden Sie a SKLearnProcessor. Die Pipelines ProcessingStep
Die Funktion akzeptiert die folgenden Argumente: den Prozessor, die S3-Eingabespeicherorte für Rohdatensätze und die S3-Ausgabespeicherorte zum Speichern verarbeiteter Datensätze.
Definieren Sie einen Trainingsschritt
Richten Sie das Modelltraining mit einem SageMaker XGBoost-Estimator und den Pipelines ein TrainingStep
Funktion:
Definieren Sie das Bewertungsskript und den Modellbewertungsschritt
Führen Sie den folgenden Codeblock aus, um das Modell nach dem Training auszuwerten. Dieses Skript kapselt die Logik zur Überprüfung, ob der AUC-Score den angegebenen Schwellenwert erreicht.
Führen Sie als Nächstes den folgenden Codeblock aus, um den Prozessor und den Schritt „Pipelines“ zu instanziieren, um das Evaluierungsskript auszuführen. Da das Evaluierungsskript das XGBoost-Paket verwendet, verwenden Sie a ScriptProcessor
zusammen mit dem XGBoost-Image. Die Pipelines ProcessingStep
Die Funktion akzeptiert die folgenden Argumente: den Prozessor, die S3-Eingabespeicherorte für Rohdatensätze und die S3-Ausgabespeicherorte zum Speichern verarbeiteter Datensätze.
Definieren Sie einen Modellerstellungsschritt
Führen Sie den folgenden Codeblock aus, um ein SageMaker-Modell mithilfe des Pipelines-Modellschritts zu erstellen. Dieser Schritt verwendet die Ausgabe des Trainingsschritts, um das Modell für die Bereitstellung zu verpacken. Beachten Sie, dass der Wert für das Instance-Typ-Argument mithilfe des Pipelines-Parameters übergeben wird, den Sie zuvor in diesem Beitrag definiert haben.
Definieren Sie einen Stapeltransformationsschritt
Führen Sie den folgenden Codeblock aus, um die Batch-Transformation mithilfe des trainierten Modells mit der im ersten Schritt erstellten Batch-Eingabe auszuführen:
Definieren Sie einen Registrierungsmodellschritt
Der folgende Code registriert das Modell in der SageMaker-Modellregistrierung mithilfe des Pipelines-Modellschritts:
Definieren Sie einen Fehlerschritt, um die Pipeline zu stoppen
Der folgende Code definiert den Pipelines-Fail-Schritt, um die Pipelineausführung mit einer Fehlermeldung zu stoppen, wenn der AUC-Score den definierten Schwellenwert nicht erreicht:
Definieren Sie einen Bedingungsschritt, um den AUC-Score zu überprüfen
Der folgende Code definiert einen Bedingungsschritt, um den AUC-Score zu prüfen und ein Modell bedingt zu erstellen und eine Stapeltransformation auszuführen und ein Modell in der Modellregistrierung zu registrieren oder die Pipelineausführung in einem fehlgeschlagenen Zustand zu stoppen:
Erstellen Sie die Pipeline und führen Sie sie aus
Nachdem Sie alle Komponentenschritte definiert haben, können Sie sie zu einem Pipelines-Objekt zusammenfügen. Sie müssen die Reihenfolge der Pipeline nicht angeben, da Pipelines die Reihenfolge automatisch auf der Grundlage der Abhängigkeiten zwischen den Schritten ableitet.
Führen Sie den folgenden Code in einer Zelle in Ihrem Notizbuch aus. Wenn die Pipeline bereits vorhanden ist, aktualisiert der Code die Pipeline. Wenn die Pipeline nicht vorhanden ist, wird eine neue erstellt.
Zusammenfassung
In diesem Beitrag haben wir einige der neuen Funktionen vorgestellt, die jetzt mit Pipelines verfügbar sind, zusammen mit anderen integrierten SageMaker-Funktionen und dem XGBoost-Algorithmus zum Entwickeln, Iterieren und Bereitstellen eines Modells für die Abwanderungsvorhersage. Die Lösung kann um zusätzliche Datenquellen erweitert werden
um Ihren eigenen ML-Workflow zu implementieren. Weitere Einzelheiten zu den im Pipelines-Workflow verfügbaren Schritten finden Sie unter Amazon SageMaker-Modellerstellungspipeline und SageMaker-Workflowsdem „Vermischten Geschmack“. Seine AWS SageMaker-Beispiele Das GitHub-Repository enthält weitere Beispiele für verschiedene Anwendungsfälle mit Pipelines.
Über die Autoren
Jerry Peng ist Softwareentwicklungsingenieur bei AWS SageMaker. Er konzentriert sich auf den Aufbau eines umfassenden MLOps-Systems im großen Maßstab von der Schulung bis zur Modellüberwachung in der Produktion. Er ist auch leidenschaftlich daran interessiert, das Konzept von MLOps einem breiteren Publikum zugänglich zu machen.
Dewen Qi ist Softwareentwicklungsingenieur bei AWS. Derzeit konzentriert sie sich auf die Entwicklung und Verbesserung von SageMaker-Pipelines. Außerhalb der Arbeit übt sie gerne Cello.
Gayatri Ghanakota ist Senior Machine Learning Engineer bei AWS Professional Services. Ihre Leidenschaft gilt der Entwicklung, Bereitstellung und Erläuterung von KI/ML-Lösungen in verschiedenen Bereichen. Vor dieser Funktion leitete sie mehrere Initiativen als Datenwissenschaftlerin und ML-Ingenieurin bei weltweit führenden Unternehmen im Finanz- und Einzelhandelsbereich. Sie hat einen Master-Abschluss in Informatik mit Spezialisierung auf Data Science von der University of Colorado, Boulder.
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.
Ray Li ist Senior Data Scientist bei AWS Professional Services. Seine Spezialität konzentriert sich auf den Aufbau und die Operationalisierung von KI/ML-Lösungen für Kunden unterschiedlicher Größe, von Start-ups bis hin zu Großunternehmen. Außerhalb der Arbeit genießt Ray Fitness und Reisen.
- 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
- 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
- Zephyrnet