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
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
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
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