DevOps für maschinelles Lernen

Abgeschlossen

DevOps und MLOps

DevOps wird von Donovan Brown in What is DevOps? wie folgt beschrieben: „Eine Verbindung von Menschen, Prozessen und Produkten, um unseren Endbenutzern kontinuierlich einen Mehrwert bieten zu können“.

Um zu verstehen, wie DevOps bei der Arbeit mit maschinellen Lernmodellen von Nutzen ist, sollten wir einige grundlegende DevOps-Prinzipien näher untersuchen.

DevOps ist eine Kombination von Tools und Praktiken, die Entwickler bei der Erstellung robuster und reproduzierbarer Anwendungen unterstützen. Das Ziel des Einsatzes von DevOps-Prinzipien ist es, Endbenutzern schnell einen Mehrwert zu bieten.

Wenn Sie durch die Integration von Modellen für maschinelles Lernen in Datentransformationspipelines oder Echtzeitanwendungen leichter einen Mehrwert schaffen möchten, profitieren Sie von der Implementierung von DevOps-Prinzipien. Das Erlernen von DevOps hilft Ihnen, Ihre Arbeit zu organisieren und zu automatisieren.

Das Erstellen, Bereitstellen und Überwachen robuster und reproduzierbarer Modelle, um Endnutzern einen Mehrwert zu bieten, ist das Ziel von Machine Learning Operations (MLOps).

MLOps overview of three processes

Es gibt drei Prozesse, die wir miteinander kombinieren, wenn wir über Machine Learning Operations (MLOps) sprechen:

  • ML umfasst alle Workloads für maschinelles Lernen, für die ein Data Scientist verantwortlich ist. Ein Data Scientist hat die folgenden Aufgaben:

    • Explorative Datenanalyse (EDA)
    • Featureentwicklung
    • Modelltraining und -optimierung
  • DEV bezieht sich auf die Softwareentwicklung, die Folgendes umfasst:

    1. Planung: Definieren der Anforderungen und Leistungsmetriken des Modells.
    2. Erstellung: Erstellen des Modelltrainings und der Bewertungsskripts.
    3. Überprüfung: Überprüfen der Code- und Modellqualität.
    4. Paketerstellung: Vorbereiten der Bereitstellung durch Staging der Lösung.
  • OPS bezieht sich auf den Betrieb (Operations) und umfasst Folgendes:

    1. Release: Bereitstellen des Modells für die Produktion.
    2. Konfiguration: Standardisieren von Infrastrukturkonfigurationen mit Infrastructure-as-Code (IaC).
    3. Überwachung: Nachverfolgen von Metriken und Sicherstellen, dass das Modell und die Infrastruktur sich wie erwartet verhalten.

Sehen wir uns einige DevOps-Prinzipien an, die für MLOps unerlässlich sind.

DevOps-Prinzipien

Eines der Kernprinzipien von DevOps ist Automatisierung. Durch die Automatisierung von Aufgaben streben wir an, neue Modelle schneller in der Produktion bereitzustellen. Durch Automatisierung erstellen Sie außerdem reproduzierbare Modelle, die in allen Umgebungen zuverlässig und konsistent sind.

Vor allem, wenn Sie Ihr Modell im Laufe der Zeit regelmäßig verbessern möchten, ermöglicht Ihnen Automatisierung, alle notwendigen Aktivitäten schnell durchzuführen, um sicherzustellen, dass das Modell in der Produktion immer das leistungsfähigste Modell ist.

Ein Schlüsselkonzept für Automatisierung ist CI/CD, also Continuous Integration und Continuous Delivery.

Continuous Integration

Continuous Integration deckt die Aktivitäten Erstellung und Überprüfung ab. Ziel ist es, den Code zu erstellen und die Qualität sowohl des Codes als auch des Modells durch automatisierte Tests zu überprüfen.

Bei MLOps kann Continuous Integration Folgendes umfassen:

  • Refactoring von explorativem Code in Jupyter Notebooks in Python- oder R-Skripts.
  • Linting, um nach programmgesteuerten oder stilistischen Fehlern in den Python- oder R-Skripts zu suchen. Überprüfen Sie beispielsweise, ob eine Zeile in Ihrem Skript weniger als 80 Zeichen enthält.
  • Komponententests, um die Leistung des Inhalts der Skripts zu überprüfen. Überprüfen Sie beispielsweise, ob das Modell genaue Vorhersagen für ein Testdataset generiert.

Zum Ausführen von Linting- und Komponententests können Sie Automatisierungstools wie Azure Pipelines in Azure DevOps oder GitHub Actions verwenden.

Continuous Delivery

Nachdem Sie die Codequalität der Python- oder R-Skripts überprüft haben, die zum Trainieren des Modells verwendet wurden, möchten Sie das Modell in die Produktion bringen. Continuous Delivery umfasst die Schritte, die Sie unternehmen müssen, um ein Modell in der Produktion bereitzustellen, wobei Sie so viel wie möglich automatisieren sollten.

Um ein Modell in der Produktion bereitzustellen, müssen Sie es zunächst verpacken und in einer Vorproduktionsumgebung bereitstellen. Indem Sie Staging des Modells in einer Vorproduktionsumgebung durchführen, können Sie überprüfen, ob alles wie erwartet funktioniert.

Wenn die Bereitstellung des Modells in der Stagingphase erfolgreich und fehlerfrei war, können Sie die Bereitstellung des Modells in der Produktionsumgebung genehmigen.

Für die Zusammenarbeit an den Python- oder R-Skripts zum Trainieren des Modells und dem erforderlichen Code zum Bereitstellen des Modells in den jeweiligen Umgebungen verwenden Sie Quellcodeverwaltung.

Quellcodeverwaltung

Quellcodeverwaltung (oder Versionsverwaltung) wird am häufigsten durch Arbeiten mit einem Git-basierten Repository erreicht. Ein Repository bezeichnet den Ort, an dem alle relevanten Dateien eines Softwareprojekts gespeichert werden können.

Bei Projekten für maschinelles Lernen verfügen Sie wahrscheinlich über ein Repository für jedes Projekt, das Sie betreuen. Das Repository enthält z. B. Jupyter Notebooks, Trainingsskripts, Bewertungsskripts und Pipelinedefinitionen.

Hinweis

Vorzugsweise speichern Sie keine Trainingsdaten in Ihrem Repository. Stattdessen werden Trainingsdaten in einer Datenbank oder einem Data Lake gespeichert, und Azure Machine Learning ruft die Daten mithilfe von Datenspeichern direkt aus der Datenquelle ab.

Git-basierte Repositorys sind mit Azure Repos in Azure DevOps oder einem GitHub-Repository verfügbar.

Wenn Sie den gesamten relevanten Code in einem Repository hosten, können Sie problemlos gemeinsam an dem Code arbeiten und alle Änderungen nachverfolgen, die ein Teammitglied vornimmt. Jedes Mitglied kann an einer eigenen Version des Codes arbeiten. Sie können alle früheren Änderungen anzeigen und überprüfen, bevor sie in das Hauptrepository committet werden.

Um zu entscheiden, wer an welchem Teil des Projekts arbeitet, empfiehlt es sich, agile Planung zu verwenden.

Agile Planung

Da Sie ein Modell schnell für die Produktion bereitstellen möchten, ist agile Planung ideal für Projekte des maschinellen Lernens.

Agile Planung bedeutet, dass Sie Aufgaben in Sprints isolieren. Sprints sind kurze Zeiträume, in denen Sie einen Teil der Ziele des Projekts erreichen möchten.

Ziel ist es, Sprints zu planen, um den Code schnell zu verbessern. Dabei spielt es keine Rolle, ob es sich um Code für die Daten- und Modellexploration handelt oder um ein Modell für die Bereitstellung in der Produktion.

Das Trainieren eines Modells für maschinelles Lernen kann ein nicht enden wollender Prozess sein. Als Data Scientist müssen Sie zum Beispiel die Leistung des Modells aufgrund von Datendrift verbessern. Oder Sie müssen das Modell anpassen, um es besser auf neue Geschäftsanforderungen abzustimmen.

Um zu vermeiden, dass zu viel Zeit für das Modelltraining aufgewendet wird, kann die agile Planung dabei helfen, den Projektumfang festzulegen und alle Beteiligten durch die Vereinbarung kurzfristigerer Ergebnisse an einen Tisch zu bringen.

Um Ihre Arbeit zu planen, können Sie ein Tool wie Azure Boards in Azure DevOps oder GitHub Issues verwenden.

Infrastruktur als Code (Infrastructure as Code, IaC)

Die Anwendung von DevOps-Prinzipien auf Projekte des maschinellen Lernens bedeutet, dass Sie robuste, reproduzierbare Lösungen erstellen möchten. Mit anderen Worten: Alles, was Sie tun oder erstellen, sollten Sie wiederholen und automatisieren können.

Um die zum Trainieren und Bereitstellen Ihres Modells erforderliche Infrastruktur zu wiederholen und zu automatisieren, verwendet Ihr Team Infrastructure-as-Code (IaC). Wenn Sie Modelle in Azure trainieren und bereitstellen, bedeutet IaC, dass Sie alle Azure-Ressourcen, die für den Prozess benötigt werden, im Code definieren und der Code in einem Repository gespeichert wird.

Tipp

Machen Sie sich mit DevOps vertraut, indem Sie die Microsoft Learn-Module auf der DevOps Transformationsjourney erkunden