Beschreibung von Azure Machine Learning-Pipelines

Eine Azure Machine Learning-Pipeline ist ein unabhängig ausführbarer Workflow einer vollständigen Machine Learning-Aufgabe. Eine Azure Machine Learning-Pipeline hilft dabei, die bewährten Methoden zum Erstellen eines Machine Learning-Modells zu standardisieren, ermöglicht dem Team die Ausführung im großen Stil und verbessert die Effizienz der Modellerstellung.

Wofür sind Azure Machine Learning-Pipelines erforderlich?

Der Kern einer Machine Learning-Pipeline besteht darin, eine vollständige Machine Learning-Aufgabe in einen mehrstufigen Workflow zu unterteilen. Jeder Schritt ist eine gut handhabbare Komponente, die individuell entwickelt, optimiert, konfiguriert und automatisiert werden kann. Schritte werden über gut definierte Schnittstellen miteinander verbunden. Der Azure Machine Learning-Pipelinedienst orchestriert automatisch alle Abhängigkeiten zwischen den Schritten der Pipeline. Dieser modulare Ansatz liefert zwei wichtige Vorteile:

Standardisierung der Machine Learning-Vorgangspraxis (MLOPs) und Unterstützung von skalierbarer Teamzusammenarbeit

Machine Learning Operations (MLOps) automatisiert den Prozess des Erstellens von Machine Learning-Modellen und der Überführung des Modells in die Produktion. Dies ist ein komplexer Prozess. Er erfordert in der Regel die Zusammenarbeit zwischen verschiedenen Teams mit unterschiedlichen Fähigkeiten. Eine gut definierte Machine Learning-Pipeline kann diesen komplexen Prozess in einen mehrschrittigen Workflow abstrahieren, wobei jeder Schritt einem bestimmten Vorgang entspricht, damit jedes Team unabhängig arbeiten kann.

Ein typisches Machine Learning-Projekt umfasst beispielsweise die Schritte der Datensammlung, der Datenvorbereitung, des Modelltrainings, der Modellbewertung und der Modellimplementierung. In der Regel konzentrieren sich die Datentechniker auf Datenschritte, Datenanalysten verbringen die meisten Zeit mit dem Training und der Auswertung des Modells, die Machine Learning-Techniker konzentrieren sich auf die Modellimplementierung und Automatisierung des gesamten Workflows. Durch die Nutzung der Machine Learning-Pipeline muss jedes Team nur daran arbeiten, seine eigene Schritte zu erstellen. Die beste Möglichkeit zum Erstellen von Schritten besteht in der Verwendung einer Azure Machine Learning-Komponente (v2), bei der es sich um einen eigenständigen Codeteil handelt, der einen Schritt in einer Machine Learning-Pipeline ausführt. Alle diese von verschiedenen Benutzern erstellten Schritte werden schließlich über die Pipelinedefinition in einen Workflow integriert. Die Pipeline ist ein Zusammenarbeitstool für alle im Projekt. Der Prozess des Definierens einer Pipeline und aller ihrer Schritte kann durch die bevorzugte DevOps-Praxis jedes Unternehmens standardisiert werden. Die Pipeline kann außerdem mit einer Versionsverwaltung versehen und automatisiert werden. Wenn die ML-Projekte als Pipeline beschrieben werden, wird die bewährte MLOps-Methode bereits angewendet.

Trainingseffizienz und Kostensenkung

Die Machine Learning-Pipeline stellt nicht nur das Tool zum Implementieren von MLOps dar, sondern verbessert außerdem die Effizienz des Trainings großer Modelle und senkt die Kosten. Nehmen wir modernes Training eines natürlichsprachliches Modells als Beispiel. Dies erfordert die Vorabverarbeitung großer Datenmengen sowie GPU-intensives Training des Transformatormodells. Es dauert jedes Mal Stunden bis Tage, um ein Modell zu trainieren. Wenn das Modell erstellt wird, sollte der Datenanalyst verschiedene Trainingscodes oder Hyperparameter testen und das Training viele Male ausführen, um die beste Modellleistung zu erhalten. Zwischen den meisten dieser Trainings gibt es in der Regel nur kleine Änderungen. Es wäre also eine erhebliche Zeitverschwendung, wenn jedes Mal das vollständige Training von der Datenverarbeitung bis zum Modelltraining stattfände. Durch die Verwendung der Machine Learning-Pipeline kann automatisch berechnet werden, bei welchen Schritten die Ergebnisse unverändert bleiben, sodass Ausgaben aus dem vorherigen Training wiederverwendet werden können. Darüber hinaus unterstützt die Machine Learning-Pipeline die Ausführung jedes Schritts auf unterschiedlichen Computeressourcen. Somit können die arbeitsspeicherintensiven Datenverarbeitungsvorgänge auf CPU-Computern mit viel Arbeitsspeicher ausgeführt werden, und die berechnungsintensiven Trainings können auf kostspieligen GPU-Computern ausgeführt werden. Durch die richtige Auswahl, welche Schritte auf welchen Computertypen ausgeführt werden sollen, lassen sich die Trainingskosten deutlich senken.

Bewährte Methoden für erste Schritte

Je nachdem, worüber ein Projekt mit maschinellem Lernen bereits verfügt, kann der Ausgangspunkt für das Erstellen einer Pipeline für maschinelles Lernen variieren. Es gibt ein paar typische Ansätze zum Erstellen einer Pipeline.

Der erste Ansatz gilt in der Regel für das Team, das noch keine Pipeline verwendet hat und Vorteile von Pipelines wie MLOps nutzen möchte. In dieser Situation haben Datenanalysten in der Regel schon Machine Learning-Modelle in ihrer lokalen Umgebung mit ihren bevorzugten Tools entwickelt. Machine Learning-Techniker müssen die Ausgaben von Datenanalysten in die Produktion überführen. Die Arbeit umfasst das Bereinigen von unnötigem Code aus dem originalem Notebook- oder Python-Code, das Ändern der Trainingseingabe von lokalen Daten zu parametrisierten Werten, das Aufteilen des Trainingscodes in mehrere Schritte nach Bedarf, das Ausführen von Komponententest für jeden Schritt und schließen das Zusammenfassen aller Schritte in einer Pipeline.

Sobald die Teams mit Pipelines vertraut sind und weitere Machine Learning-Projekte mithilfe von Pipelines durchführen möchten, stellen sie fest, dass sich der erste Ansatz schwer skalieren lässt. Der zweite Ansatz besteht darin, ein paar Pipelinevorlagen einzurichten, die jeweils versuchen, ein bestimmtes Machine Learning-Problem zu lösen. Die Vorlage definiert vorab die Pipelinestruktur, einschließlich der Anzahl der Schritte, der Ein- und Ausgaben der einzelnen Schritte und deren Konnektivität. Um ein neues Machine Learning-Projekt zu starten, forkt das Team zunächst ein Vorlagenrepository. Der Teamleiter weist dann Mitgliedern Schritte zu, an denen sie arbeiten müssen. Die Datenanalysten und Datentechniker erledigen ihre normalen Arbeiten. Wenn sie mit ihrem Ergebnis zufrieden sind, strukturieren sie ihren Code so, dass er in die vordefinierten Schritte passt. Sobald die strukturierten Codes eingecheckt sind, kann die Pipeline ausgeführt oder automatisiert werden. Wenn es zu Änderungen kommt, muss jedes Mitglied nur an seinem Codeteil arbeiten, ohne den Rest des Pipelinecodes anzufassen.

Nachdem ein Team eine Sammlung von Machine Learning-Pipelines und wiederverwendbaren Komponenten erstellt hat, könnte es mit der Erstellung der Machine Learning-Pipeline beginnen, indem eine frühere Pipeline geklont wird oder vorhandene wiederverwendbare Komponenten miteinander verbunden werden. In dieser Phase verbessert sich die Gesamtproduktivität des Teams erheblich.

Azure Machine Learning bietet verschiedene Methoden zum Erstellen einer Pipeline. Benutzern, die mit DevOps-Methoden vertraut sind, empfehlen wir die Verwendung der CLI. Data Scientists, die mit Python vertraut sind, wird empfohlen, Pipelines mit dem Azure Machine Learning SDK v2 zu schreiben. Benutzer*innen, die die Benutzeroberfläche bevorzugen, können den Designer verwenden, um Pipelines mithilfe registrierter Komponenten zu erstellen.

Welche Azure-Pipelinetechnologie sollte ich verwenden?

Die Azure-Cloud bietet mehrere Typen von Pipelines, die jeweils einem anderen Zweck dienen. Die folgende Tabelle listet die verschiedenen Pipelines und ihre jeweiligen Verwendungszwecke auf:

Szenario Primäre Persona Angebot von Azure OSS-Angebot Kanonische Pipe Stärken
Modellorchestrierung (maschinelles Lernen) Data Scientist Azure Machine Learning-Pipelines Kubeflow-Pipelines Daten -> Modell Verteilung, Caching, Code-First, Wiederverwendung
Datenorchestrierung (Datenvorbereitung) Datentechniker Azure Data Factory-Pipelines Apache Airflow Daten -> Daten Stark typisierte Verschiebung, datenorientierte Aktivitäten
Code- und App-Orchestrierung (CI/CD) App-Entwickler/Vorgänge Azure Pipelines Jenkins Code + Modell -> App/Dienst Offenste und flexibelste Aktivitätsunterstützung, Genehmigungswarteschlangen, Phasen mit Beschränkung

Nächste Schritte

Azure Machine Learning-Pipelines stellen ein leistungsfähiges Hilfsmittel dar, das schon in frühen Entwicklungsphasen Mehrwert produziert.