DevOps für maschinelles Lernen
DevOps und MLOps
DevOps wird als Vereinigung von Personen, Prozessen und Produkten beschrieben, um unseren Endbenutzern eine kontinuierliche Lieferung von Wert zu ermöglichen, von Donovan Brown in Was ist DevOps?.
Um zu verstehen, wie sie bei der Arbeit mit Machine Learning-Modellen verwendet werden kann, untersuchen wir einige wesentliche DevOps-Prinzipien weiter.
DevOps ist eine Kombination aus Tools und Methoden, die Entwickler beim Erstellen robuster und reproduzierbarer Anwendungen leiten. Das Ziel der Verwendung von DevOps-Prinzipien besteht darin, dem Endbenutzer schnell Einen Mehrwert zu bieten.
Wenn Sie mehr Vorteile erzielen möchten, indem Sie Machine Learning-Modelle in Datentransformationspipelinen oder Echtzeitanwendungen integrieren, profitieren Sie von der Implementierung von DevOps-Prinzipien. Wenn Sie mehr über DevOps erfahren, können Sie Ihre Arbeit organisieren und automatisieren.
Das Erstellen, Bereitstellen und Überwachen robuster und reproduzierbarer Modelle, um dem Endbenutzer einen Mehrwert zu bieten, ist das Ziel von Machine Learning Operations (MLOps).

Es gibt drei Prozesse, die wir kombinieren möchten, wenn wir über Machine Learning Operations (MLOps) sprechen:
ML umfasst alle Machine Learning Workloads, für die ein Data Scientist verantwortlich ist. Ein Data Scientist wird Folgendes tun:
- Explorative Datenanalyse (EDA)
- Featureentwicklung
- Modellschulung und Optimierung
DEV bezieht sich auf die Softwareentwicklung, die Folgendes umfasst:
- Plan: Definieren sie die Anforderungen und Leistungsmetriken des Modells.
- Erstellen: Erstellen Sie die Modellschulungs- und Bewertungsskripts.
- Überprüfen: Überprüfen der Codequalität und Modellqualität.
- Paketerstellung: Vorbereiten der Bereitstellung durch Staging der Lösung.
OPS bezieht sich auf Vorgänge und umfasst:
- Release: Bereitstellen des Modells für die Produktion.
- Konfigurieren: Standardisieren Sie Infrastrukturkonfigurationen mit Infrastructure as Code (Infrastruktur als Code, IaC).
- Überwachen: Verfolgen Sie Metriken, und stellen Sie sicher, dass das Modell und die Infrastruktur wie erwartet ausgeführt werden.
Sehen wir uns einige DevOps-Prinzipien an, die für MLOps unerlässlich sind.
DevOps-Prinzipien
Einer der Kernprinzipien von DevOps ist die Automatisierung. Durch die Automatisierung von Aufgaben streben wir danach, neue Modelle schneller in die Produktion zu bringen. Durch die Automatisierung erstellen Sie auch reproduzierbare Modelle, die in allen Umgebungen zuverlässig und konsistent sind.
Insbesondere wenn Sie Ihr Modell im Laufe der Zeit regelmäßig verbessern möchten, ermöglicht ihnen die Automatisierung, alle erforderlichen Aktivitäten schnell auszuführen, um sicherzustellen, dass das Modell in der Produktion immer das leistungsstärkste Modell ist.
Ein Schlüsselkonzept zur Automatisierung ist CI/CD, das für eine kontinuierliche Integration und kontinuierliche Lieferung steht.
Kontinuierliche Integration
Die kontinuierliche Integration deckt die Erstellungs - und Überprüfungsaktivitäten ab. Ziel ist es, den Code zu erstellen und die Qualität des Codes und des Modells durch automatisierte Tests zu überprüfen.
Bei MLOps kann die kontinuierliche Integration Folgendes umfassen:
- Umgestalten von explorativem Code in Jupyter-Notizbüchern 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 zur Überprüfung der Leistung des Inhalts der Skripts. Überprüfen Sie beispielsweise, ob das Modell genaue Vorhersagen für ein Test-Dataset generiert.
Tipp
Erfahren Sie, wie Sie Machine Learning-Experimente in Produktions-Python-Code konvertieren.
Zum Ausführen von Linting- und Komponententests können Sie Automatisierungstools wie Azure Pipelines in Azure DevOps oder GitHub-Aktionen verwenden.
Kontinuierliche Lieferung
Nachdem Sie die Codequalität der Zum Trainieren des Modells verwendeten Python- oder R-Skripts überprüft haben, sollten Sie das Modell in die Produktion bringen. Kontinuierliche Bereitstellung umfasst die Schritte, die Sie ausführen müssen, um ein Modell in die Produktion zu bringen, vorzugsweise so weit wie möglich zu automatisieren.
Um ein Modell in der Produktion bereitzustellen, sollten Sie es zuerst packen und in einer Vorproduktionsumgebung bereitstellen. Indem Sie das Modell in einer Vorproduktionsumgebung bereitstellen, können Sie überprüfen, ob alles wie erwartet funktioniert.
Sobald die Bereitstellung des Modells in der Stagingphase erfolgreich ist und fehlerlos ist, können Sie genehmigen, dass das Modell in der Produktionsumgebung bereitgestellt wird.
Um an den Python- oder R-Skripts zusammenzuarbeiten, um das Modell und alle erforderlichen Code zum Bereitstellen des Modells in jeder Umgebung zu trainieren, verwenden Sie die Quellcodeverwaltung.
Quellcodeverwaltung
Die Quellcodeverwaltung (oder Versionsverwaltung) wird am häufigsten erreicht, indem sie mit einem Git-basierten Repository arbeiten. Ein Repository bezieht sich auf den Speicherort, an dem alle relevanten Dateien für ein Softwareprojekt gespeichert werden können.
Bei Machine Learning-Projekten verfügen Sie wahrscheinlich über ein Repository für jedes Projekt, das Sie haben. Das Repository enthält u. a. Jupyter-Notizbücher, Schulungsskripts, Bewertungsskripts und Pipelinedefinitionen.
Anmerkung
Vorzugsweise speichern Sie keine Schulungsdaten in Ihrem Repository. Stattdessen werden Schulungsdaten in einer Datenbank oder einem Datensee 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.
Indem Sie den gesamten relevanten Code in einem Repository hosten, können Sie ganz einfach an Code zusammenarbeiten und änderungen nachverfolgen, die ein Teammitglied vorschlägt. Jedes Mitglied kann an einer eigenen Version des Codes arbeiten. Sie können alle früheren Änderungen sehen, und Sie können Änderungen überprüfen, bevor sie an das Haupt-Repository gebunden sind.
Um zu entscheiden, wer an welchem Teil des Projekts arbeitet, empfiehlt es sich, agile Planung zu verwenden.
Agile Planung
Da Sie möchten, dass ein Modell schnell in der Produktion bereitgestellt wird, ist agile Planung ideal für Machine Learning-Projekte.
Agile Planung bedeutet, dass Sie Arbeit 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. Ganz gleich, ob Es sich um Code handelt, der für die Daten- und Modellsuche oder für die Bereitstellung eines Modells in der Produktion verwendet wird.
Das Trainieren eines Machine Learning-Modells kann ein nie endender Prozess sein. Beispielsweise müssen Sie als Datenwissenschaftler die Leistung des Modells aufgrund von Datenabweichungen verbessern. Oder Sie müssen das Modell optimieren, um sich besser an neue Geschäftsanforderungen anzupassen.
Um zu vermeiden, zu viel Zeit auf das Modelltraining zu verwenden, kann agile Planung dabei helfen, den Projektumfang festzulegen und alle auf ein gemeinsames Ziel auszurichten, indem kürzerfristige Ergebnisse vereinbart werden.
Um Ihre Arbeit zu planen, können Sie ein Tool wie Azure Boards in Azure DevOps oder GitHub-Probleme verwenden.
Infrastruktur als Code (IaC)
Das Anwenden von DevOps-Prinzipien auf Machine Learning-Projekte bedeutet, dass Sie robuste reproduzierbare Lösungen erstellen möchten. Mit anderen Worten: Alles, was Sie tun oder erstellen, sollten Sie in der Lage sein, sie zu wiederholen und zu automatisieren.
Um die zum Trainieren und Bereitstellen Ihres Modells erforderliche Infrastruktur zu wiederholen und zu automatisieren, verwendet Ihr Team Infrastruktur als Code (IaC). Wenn Sie Modelle in Azure trainieren und bereitstellen, bedeutet IaC, dass Sie alle Azure-Ressourcen definieren, die im Prozess im Code benötigt werden, und der Code wird in einem Repository gespeichert.
Tipp
Machen Sie sich mit DevOps vertraut, indem Sie die Microsoft Learn-Module auf der DevOps-Transformationsreise erkunden