View a markdown version of this page

Schritt 3. Definieren Sie die Pipeline - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Schritt 3. Definieren Sie die Pipeline

Definition der ML-Pipeline.

In diesem Schritt werden die Reihenfolge und Logik der Aktionen definiert, die die Pipeline ausführen wird. Dies umfasst diskrete Schritte sowie deren logische Ein- und Ausgänge. Wie ist beispielsweise der Status der Daten zu Beginn der Pipeline? Stammen sie aus mehreren Dateien mit unterschiedlichen Granularitätsebenen oder aus einer einzigen Flat-Datei? Wenn die Daten aus mehreren Dateien stammen, benötigen Sie einen einzigen Schritt für alle Dateien oder separate Schritte für jede Datei, um die Vorverarbeitungslogik zu definieren? Die Entscheidung hängt von der Komplexität der Datenquellen und dem Umfang ab, in dem sie vorverarbeitet werden.

In unserer Referenzimplementierung verwenden wir AWS Step Functions, einen serverlosen Funktions-Orchestrator, um die Workflow-Schritte zu definieren. Das ML Max-Framework unterstützt jedoch auch andere Pipeline- oder Zustandsmaschinensysteme wie Apache AirFlow (siehe Abschnitt Verschiedene Engines für die Pipeline-Orchestrierung), um die Entwicklung und Bereitstellung von ML-Pipelines voranzutreiben.

Verwenden des Step Functions SDK

Um die ML-Pipeline zu definieren, verwenden wir zunächst die vom AWS Step Functions Data Science SDK (dem Step Functions SDK) bereitgestellte Python-API auf hoher Ebene, um zwei Schlüsselkomponenten der Pipeline zu definieren: Schritte und Daten. Wenn Sie sich eine Pipeline als einen gerichteten azyklischen Graphen (DAG) vorstellen, stellen Schritte die Knoten im Graphen dar, und Daten werden als gerichtete Kanten dargestellt, die einen Knoten (Schritt) mit dem nächsten verbinden. Zu den typischen Beispielen für ML-Schritte gehören die Vorverarbeitung, das Training und die Auswertung. Das Step Functions SDK bietet eine Reihe von integrierten Schritten (z. B. die TrainingStep), die Sie verwenden können. Beispiele für Daten sind Eingabe, Ausgabe und viele Zwischendatensätze, die durch einige Schritte in der Pipeline erzeugt werden. Wenn Sie eine ML-Pipeline entwerfen, kennen Sie die konkreten Werte der Datenelemente nicht. Sie können Datenplatzhalter definieren, die als Vorlage dienen (ähnlich wie Funktionsparameter) und nur den Namen des Datenelements und primitive Datentypen enthalten. Auf diese Weise können Sie einen vollständigen Pipeline-Blueprint entwerfen, ohne die konkreten Werte der Daten, die sich auf dem Diagramm bewegen, im Voraus zu kennen. Zu diesem Zweck können Sie die Platzhalterklassen im Step Functions SDK verwenden, um diese Datenvorlagen explizit zu modellieren.

ML-Pipelines benötigen außerdem Konfigurationsparameter, um das Verhalten der einzelnen ML-Schritte detailliert steuern zu können. Diese speziellen Datenplatzhalter werden als Parameterplatzhalter bezeichnet. Viele ihrer Werte sind bei der Definition der Pipeline unbekannt. Zu den Platzhaltern für Parameter gehören beispielsweise infrastrukturbezogene Parameter, die Sie beim Pipeline-Design definieren (z. B. die URL eines Container-Images), AWS-Region und Parameter im Zusammenhang mit der ML-Modellierung (wie Hyperparameter), die Sie bei der Ausführung der Pipeline definieren.

Erweiterung des Step Functions SDK

In unserer Referenzimplementierung bestand eine Anforderung darin, ML-Pipeline-Definitionen mithilfe spezifischer Parametereinstellungen von der konkreten Erstellung und Bereitstellung von ML-Pipelines zu trennen. Einige der integrierten Schritte im Step Functions SDK erlaubten es uns jedoch nicht, all diese Platzhalterparameter zu übergeben. Stattdessen wurde erwartet, dass die Parameterwerte direkt während der Pipeline-Entwurfszeit durch API-Aufrufe für die SageMaker KI-Konfiguration abgerufen werden. Dies funktioniert einwandfrei, wenn die SageMaker KI-Entwurfszeitumgebung mit der SageMaker KI-Laufzeitumgebung identisch ist. In realen Umgebungen ist dies jedoch selten der Fall. Eine solch enge Kopplung zwischen der Entwurfszeit der Pipeline und der Laufzeit sowie die Annahme, dass die ML-Plattforminfrastruktur konstant bleibt, behindern die Anwendbarkeit der entworfenen Pipeline erheblich. Tatsächlich bricht die ML-Pipeline sofort ab, wenn die zugrunde liegende Bereitstellungsplattform auch nur die geringste Änderung erfährt.

Um diese Herausforderung zu bewältigen und eine robuste ML-Pipeline zu erstellen (die wir einmal entwerfen und überall ausführen wollten), haben wir unsere eigenen benutzerdefinierten Schritte implementiert, indem wir einige der integrierten Schritte erweitert haben, darunter TrainingStepModelStep, und. TransformerStep Diese Erweiterungen werden im ML Max-Projekt bereitgestellt. Die Schnittstellen dieser benutzerdefinierten Schritte unterstützen weitaus mehr Platzhalter für Parameter, die während der Pipelineerstellung oder während des Betriebs der Pipeline mit konkreten Werten gefüllt werden können.