Lösungsmöglichkeiten
In diesem Artikel ist ein Lösungsvorschlag beschrieben. Ihr Cloudarchitekt kann diesen Leitfaden verwenden, um die Hauptkomponenten einer typischen Implementierung dieser Architektur zu visualisieren. Verwenden Sie diesen Artikel als Ausgangspunkt, um eine gut durchdachte Lösung zu entwerfen, die den spezifischen Anforderungen Ihrer Workload entspricht.
In diesem Artikel finden Sie eine Architektur für MLOps (Machine Learning Operations) und einen von Azure Databricks genutzten Prozess. Data Scientists und Ingenieure können diesen standardisierten Prozess verwenden, um Machine Learning-Modelle und Pipelines von der Entwicklung in die Produktion zu verschieben.
Diese Lösung kann die volle Automatisierung, kontinuierliche Überwachung und robuste Zusammenarbeit nutzen und zielt daher auf eine Stufe 4 der MLOps-Reife ab. Diese Architektur verwendet den Höherstufencode, der den Modellansatz anstelle des Modellansatzes generiert. Der Heraufstufen von Code, der den Modellansatz generiert, konzentriert sich auf das Schreiben und Verwalten des Codes, der Machine Learning-Modelle generiert. Die Empfehlungen in diesem Artikel enthalten Optionen für automatisierte oder manuelle Prozesse.
Aufbau
Laden Sie eine Visio-Datei dieser Architektur herunter.
Workflow
Der folgende Arbeitsablauf entspricht der vorangegangenen Abbildung. Verwenden Sie Quellcodeverwaltungs- und Speicherkomponenten, um Code und Daten zu verwalten und zu organisieren.
Quellcodeverwaltung: Im Coderepository dieses Projekts sind die Notebooks, Module und Pipelines organisiert. Sie können Entwicklungszweige erstellen, um Updates und neue Modelle zu testen. Entwickeln Sie Code in git-unterstützten Notizbüchern oder integrierten Entwicklungsumgebungen (IDEs), die in Git-Ordner integriert werden, damit Sie mit Ihren Azure Databricks-Arbeitsbereichen synchronisieren können. Die Quellcodeverwaltung fördert Machine Learning-Pipelines von der Entwicklungsumgebung bis hin zu Tests in der Stagingumgebung und zur Bereitstellung in der Produktionsumgebung.
Lakehouse Produktionsdaten: Als Datenwissenschaftler haben Sie schreibgeschützten Zugriff auf Produktionsdaten in der Entwicklungsumgebung. Die Entwicklungsumgebung kann gespiegelte Daten und vertrauliche Daten gespiegelt haben. Außerdem haben Sie Lese- und Schreibzugriff in einer Entwicklungsspeicherumgebung für Entwicklung und Experimente. Es wird empfohlen, eine Lakehouse-Architektur für Daten zu verwenden, in denen Sie Delta Lake-Formatdaten in Azure Data Lake Storage speichern. Ein Seehaus bietet eine robuste, skalierbare und flexible Lösung für das Datenmanagement. Verwenden Sie zum Definieren von Zugriffssteuerungen die Passthrough - oder Tabellenzugriffssteuerelemente für Anmeldeinformationen der Microsoft Entra-ID.
Die folgenden Umgebungen umfassen den Hauptworkflow.
Entwicklung
In der Entwicklungsumgebung entwickeln Sie Machine Learning-Pipelines.
Durchführen einer explorativen Datenanalyse (EDA): Untersuchen von Daten in einem interaktiven, iterativen Prozess. Möglicherweise stellen Sie diese Arbeit nicht in Staging oder Produktion bereit. Verwenden Sie Tools wie Databricks SQL, den Befehl "dbutils.data.summarize " und "Databricks AutoML".
Entwickeln Sie Modellschulungen und andere Machine Learning-Pipelines: Entwickeln Sie modularen Code für maschinelles Lernen und orchestrieren Sie Code über Databricks Notebooks oder ein MLFlow-Projekt. In dieser Architektur liest die Modellschulungspipeline Daten aus dem Featurespeicher und anderen Lakehouse-Tabellen vor. Die Pipeline züget und tunes log model parameters and metrics to the MLflow tracking server. Die Featurespeicher-API protokolliert das endgültige Modell. Zu diesen Protokollen gehören das Modell, seine Eingaben und der Schulungscode.
Commitcode: Um den Machine Learning-Workflow in Richtung Produktion zu fördern, übernehmen Sie den Code für die Reifung, Schulung und andere Pipelines zur Quellcodeverwaltung. Platzieren Sie in der Codebasis Machine Learning-Code und Betriebscode in verschiedenen Ordnern, damit Teammitglieder gleichzeitig Code entwickeln können. Machine Learning-Code ist Code, der sich auf das Modell und die Daten bezieht. Operational code is code that's related to Databricks jobs and infrastructure.
Dieser Kernzyklus von Aktivitäten, die Sie beim Schreiben und Testen von Code ausführen, werden als innerloop-Prozess bezeichnet. Um den Innerloop-Prozess für die Entwicklungsphase auszuführen, verwenden Sie Visual Studio Code in Kombination mit der Dev-Container-CLI und der Databricks CLI. Sie können den Code schreiben und Komponententests lokal durchführen. Sie sollten auch die Modellpipelinen aus der lokalen Entwicklungsumgebung übermitteln, überwachen und analysieren.
Staging
In der Stagingumgebung testet die Infrastruktur der kontinuierlichen Integration (Continuous Integration, CI) Änderungen an Machine Learning-Pipelines in einer Umgebung, die die Produktion nachahmt.
Zusammenführen einer Anforderung: Wenn Sie eine Zusammenführungsanforderung oder Pullanforderung für die Staging-Verzweigung (Hauptzweig) des Projekts in der Quellcodeverwaltung übermitteln, führt ein Tool für kontinuierliche Integration und kontinuierliche Übermittlung (CI/CD) wie Azure DevOps Tests aus.
Ausführen von Komponententests und CI-Tests: Komponententests werden in der CI-Infrastruktur ausgeführt, und Integrationstests werden in End-to-End-Workflows auf Azure Databricks ausgeführt. Wenn Tests bestanden werden, werden die Codeänderungen gemergt.
Erstellen Sie eine Release-Verzweigung: Wenn Sie die aktualisierten Machine Learning-Pipelines für die Produktion bereitstellen möchten, können Sie eine neue Version erstellen. Eine Bereitstellungspipeline im CI/CD-Tool stellt die aktualisierten Pipelines als neue Workflows erneut bereit.
Bereitstellung
Maschine Learning-Entwickler verwalten die Produktionsumgebung, in der Pipelines für maschinelles Lernen direkt für Endanwendungen bereitgestellte werden. Die zentralen Pipelines in der Produktion dienen zum Aktualisieren von Featuretabellen, Trainieren und Bereitstellen neuer Modelle, Ausführen von des Rückschlusses oder Bereitstellen und Überwachen der Modellleistung.
Aktualisierung der Featuretabelle: Diese Pipeline liest Daten, berechnet Features und Schreibt in Featurespeichertabellen . Sie können diese Pipeline so konfigurieren, dass sie entweder kontinuierlich im Streamingmodus ausgeführt, nach einem Zeitplan ausgeführt oder auf einem Trigger ausgeführt wird.
Modellschulung: In der Produktion können Sie die Modellschulung oder die Umschulungspipeline so konfigurieren, dass sie entweder auf einem Trigger oder einem Zeitplan ausgeführt wird, um ein neues Modell für die neuesten Produktionsdaten zu trainieren. Modelle registrieren sich automatisch im Unity-Katalog.
Modellauswertung und -heraufstufung: Wenn eine neue Modellversion registriert ist, löst die CD-Pipeline Tests aus, um sicherzustellen, dass das Modell in der Produktion gut funktioniert. Wenn das Modell Tests bestanden hat, verfolgt Unity Catalog seinen Fortschritt über Modellphasenübergänge. Zu den Tests gehören Complianceprüfungen, A/B-Tests zum Vergleichen des neuen Modells mit dem aktuellen Produktionsmodell und Infrastrukturtests. Lakehouse-Tabellen erfassen Testergebnisse und Metriken. Sie können optional manuelle Abmeldungen vor dem Übergang der Modelle zur Produktion anfordern.
Modellbereitstellung: Wenn ein Modell in die Produktion eintritt, wird es für die Bewertung oder Bereitstellung bereitgestellt. Zu den am häufigsten verwendeten Bereitstellungsmodi gehören:
Batch- oder Streamingbewertung: Bei Latenzen von Minuten oder länger sind Batch und Streaming die kostengünstigsten Optionen. Die Bewertungspipeline liest die neuesten Daten aus dem Featurespeicher, lädt die neueste Produktionsmodellversion aus Unity Catalog und führt eine Ableitung in einem Databricks-Auftrag durch. Es kann Vorhersagen für Lakehouse-Tabellen, eine JAVA-Datenbankkonnektivitätsverbindung (DATABASE Connectivity, DATABASE Connectivity, FLAT Files, Nachrichtenwarteschlangen oder andere nachgeschaltete Systeme) veröffentlichen.
Online-Bereitstellung (REST-APIs): Für Anwendungsfälle mit geringer Latenz benötigen Sie in der Regel Onlinebereitstellung. MLflow kann Modelle für Mosaik AI Model Serving, Cloudanbieter für Systeme und andere Systeme bereitstellen. In allen Fällen initialisiert das Dienstsystem mit dem neuesten Produktionsmodell aus dem Unity-Katalog. Für jede Anforderung ruft sie Features aus einem Onlinefeaturespeicher ab und macht Vorhersagen.
Überwachung: Laufende oder regelmäßige Workflows überwachen Eingabedaten und Modellvorhersagen auf Drift, Leistung und andere Metriken. Sie können das Delta Live Tables-Framework verwenden, um die Überwachung für Pipelines zu automatisieren und die Metriken in Lakehouse-Tabellen zu speichern. Databricks SQL, Power BI und andere Tools können Daten dieser Tabellen lesen, um Dashboards und Warnungen zu erstellen. Um Anwendungsmetriken, Protokolle und Infrastruktur zu überwachen, können Sie Azure Monitor auch in Azure Databricks integrieren.
Drift detection and model retraining: This architecture supports both manual and automatic retraining. Planen Sie Umschulungsaufträge, um Modelle frisch zu halten. Nachdem eine erkannte Abweichung einen vorkonfigurierten Schwellenwert überschreitet, den Sie im Überwachungsschritt festgelegt haben, analysieren die Umschulungspipelines die Drift und lösen die Umschulung aus. Sie können Pipelines so konfigurieren, dass sie automatisch ausgelöst werden, oder Sie können eine Benachrichtigung erhalten und dann die Pipelines manuell ausführen.
Komponenten
Eine Data Lakehouse-Architektur vereint die Elemente von Data Lakes und Data Warehouses. Verwenden Sie ein Seehaus, um Datenverwaltungs- und Leistungsfunktionen abzurufen, die in der Regel in Data Warehouses gefunden werden, aber mit den kostengünstigen, flexiblen Objektspeichern, die datenseen bieten.
- Delta Lake ist das empfohlene Open-Source-Datenformat für ein Seehaus. Azure Databricks speichert Daten in Data Lake Storage und bietet ein leistungsstarkes Abfragemodul.
MLflow ist ein Open-Source-Projekt für die lückenlose Verwaltung des Machine Learning-Lebenszyklus. MLflow verfügt über die folgenden Komponenten:
Das Tracking-Feature verfolgt Experimente, sodass Sie Parameter, Metriken und Modellartefakte aufzeichnen und vergleichen können.
- Databricks autologging erweitert die automatische MLflow-Protokollierung , um Machine Learning-Experimente nachzuverfolgen und automatisch Modellparameter, Metriken, Dateien und Linieninformationen zu protokollieren.
Das MLflow-Modell ist ein Format, das Sie zum Speichern und Bereitstellen von Modellen aus einer beliebigen Machine Learning-Bibliothek auf verschiedenen Modellbereitstellungs- und Rückschlussplattformen verwenden können.
Unity Catalog bietet zentrale Zugriffssteuerungs-, Überwachungs-, Linien- und Datenermittlungsfunktionen in Azure Databricks-Arbeitsbereichen.
Mosaik-KI-Modell, das MLflow-Modelle als REST-Endpunkte bedient.
Azure Databricks bietet einen verwalteten MLflow-Dienst mit Unternehmenssicherheitsfeatures, hoher Verfügbarkeit und Integrationen mit anderen Azure Databricks-Arbeitsbereichsfeatures.
Databricks Runtime for Machine Learning automatisiert die Erstellung eines Clusters, der für maschinelles Lernen optimiert ist und beliebte Machine Learning-Bibliotheken wie TensorFlow, PyTorch und XGBoost vorinstalliert. Außerdem werden Azure Databricks für Machine Learning-Tools wie AutoML und Featurespeicherclients vorinstalliert.
Ein Featurespeicher ist ein zentrales Repository von Features. Verwenden Sie den Featurespeicher, um Features zu ermitteln und freizugeben, und verhindern Sie, dass Daten zwischen Modellschulungen und Rückschlüssen verzerren.
Databricks SQL ist in eine Vielzahl von Tools integriert, sodass Sie Abfragen und Dashboards in Ihren bevorzugten Umgebungen erstellen können, ohne sich an eine neue Plattform anzupassen.
Git-Ordner bieten die Integration mit Ihrem Git-Anbieter im Azure Databricks-Arbeitsbereich, wodurch die Notizbuch- oder Codezusammenarbeit und die IDE-Integration verbessert wird.
Workflows und Aufträge bieten eine Möglichkeit, nicht interaktiven Code in einem Azure Databricks-Cluster auszuführen. Beim maschinellen Lernen ermöglichen Aufträge die Automatisierung von Datenaufbereitung, Featurisierung, Training, Rückschluss und Überwachung.
Alternativen
Sie können diese Lösung an Ihre Azure-Infrastruktur anpassen. Berücksichtigen Sie die folgenden Anpassungen:
Verwenden Sie mehrere Entwicklungsarbeitsbereiche, die einen gemeinsamen Produktionsarbeitsbereich gemeinsam nutzen.
Exchange eine oder mehrere Architekturkomponenten für Ihre vorhandene Infrastruktur. Sie können Databricks-Aufträge beispielsweise mit Azure Data Factory orchestrieren.
Integrieren Sie ihre vorhandenen CI/CD-Tools über Git- und Azure Databricks-REST-APIs.
Verwenden Sie Microsoft Fabric oder Azure Synapse Analytics als alternative Dienste für maschinelle Lernfunktionen.
Szenariodetails
Diese Lösung bietet einen robusten MLOps-Prozess, der Azure Databricks verwendet. Sie können alle Elemente in der Architektur ersetzen, sodass Sie andere Azure-Dienste und Partnerdienste nach Bedarf integrieren können. Diese Architektur und Beschreibung wurden dem E-Book The Big Book of MLOps entnommen. Das E-Book untersucht diese Architektur ausführlicher.
MLOps trägt dazu bei, das Risiko von Fehlern in Machine Learning- und KI-Systemen zu reduzieren und die Effizienz der Zusammenarbeit und tools zu verbessern. Eine Einführung in MLOps und eine Übersicht über diese Architektur finden Sie unter Architect MLOps am Seehaus.
Verwenden Sie diese Architektur, um:
Verbinden Sie Projektbeteiligte mit Machine Learning- und Data Science-Teams. Verwenden Sie diese Architektur, um Notizbücher und IDEs für die Entwicklung zu integrieren. Geschäftsbeteiligte können Metriken und Dashboards in Databricks SQL anzeigen, alles innerhalb derselben Lakehouse-Architektur.
Gestalten Sie Ihre Infrastruktur für maschinelles Lernen datenorientiert. Diese Architektur behandelt Machine Learning-Daten genau wie andere Daten. Machine Learning-Daten umfassen Daten aus Feature engineering, Schulungen, Rückschlüssen und Überwachung. Diese Architektur verwendet Tools für Produktionspipelinen, Dashboarding und andere allgemeine Datenverarbeitungen für die Maschinelle Lerndatenverarbeitung.
Implementieren Sie MLOps in Module und Pipelines. Wie bei jeder Softwareanwendung verwenden Sie die modularisierten Pipelines und Code in dieser Architektur, um einzelne Komponenten zu testen und die Kosten für zukünftige Umgestaltung zu verringern.
Automatisieren Sie Ihre MLOps-Prozesse nach Bedarf. In dieser Architektur können Sie Schritte automatisieren, um die Produktivität zu verbessern und das Risiko von menschlichem Fehler zu verringern, aber Sie müssen nicht jeden Schritt automatisieren. Azure Databricks lässt neben den APIs zur Automatisierung auch Benutzeroberflächen- und manuelle Prozesse zu.
Mögliche Anwendungsfälle
Diese Architektur eignet sich für alle Arten von maschinellem Lernen, Deep Learning und erweiterten Analysen. Allgemeine Maschinelles Lernen und KI-Techniken in dieser Architektur umfassen:
- Klassisches maschinelles Lernen wie lineare Modelle, baumbasierte Modelle und Boosting.
- Modernes Deep Learning wie TensorFlow und PyTorch.
- Benutzerdefinierte Analysen, z. B. Statistiken, bayessche Methoden und Graphenanalysen.
Die Architektur unterstützt sowohl kleine Datenmengen (Einzelcomputer) als auch große Daten (verteiltes Computing und GPU-beschleunigt). In jeder Phase der Architektur können Sie Computeressourcen und Bibliotheken auswählen, um sich an die Daten und Problemdimensionen Ihres Szenarios anzupassen.
Die Architektur eignet sich für alle Branchen und geschäftlichen Anwendungsfälle. Azure Databricks-Kunden, die diese Architektur verwenden, umfassen kleine und große Organisationen in den folgenden Branchen:
- Konsumgüter und Dienstleistungen für den Einzelhandel
- Finanzdienstleistungen
- Gesundheitswesen und Biowissenschaften
- IT
Beispiele finden Sie unter Databricks-Kunden.
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautoren:
- Brandon Cowen | Senior Cloud Solution Architect
- Prabal Deb | Principal Software Engineer
Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.