In diesem Artikel wird eine Multi-Model-Architektur beschrieben, die Apache Spark in Azure Databricks oder Azure Synapse Analytics verwendet. Spark ist ein leistungsstarkes Tool für die großen und komplexen Datentransformationen, die einige Lösungen erfordern.
Hinweis
Verwenden Sie Multi-Model-Anwendungen Version 3.0 oder höher von Spark. Die Datentransformationsfunktionen und die Unterstützung für Python und pandas sind viel besser als in früheren Versionen.
Im Begleitartikel Multi-Model-Machine Learning im großen Stil mit Azure Machine Learning werden Machine Learning und Computecluster verwendet.
Aufbau
Laden Sie eine Visio-Datei dieser Architektur herunter.
Datenfluss
- Datenerfassung: Azure Data Factory pullt Daten aus einer Quelldatenbank und kopiert sie in Azure Data Lake Storage.
-
Modelltrainingspipeline:
- Vorbereiten der Daten: Die Trainingspipeline pullt die Daten aus Data Lake Storage und verwendet Spark, um sie in Datasets zum Trainieren der Modelle zu gruppieren.
- Trainieren von Modellen: Die Pipeline trainiert Modelle für alle Datasets, die während der Datenvorbereitung erstellt wurden. Sie verwendet die pandas-Funktions-API, um mehrere Modelle parallel zu trainieren. Nach dem Training eines Modells registriert die Pipeline es zusammen mit den Testmetriken in Machine Learning.
-
Pipeline zur Modellheraufstufung:
- Auswerten von Modellen: Die Heraufstufungspipeline wertet die trainierten Modelle aus, bevor sie in die Produktion verschoben werden. Eine DevOps-Pipeline wendet Geschäftslogik an, um zu bestimmen, ob ein Modell die Kriterien für die Bereitstellung erfüllt. Beispielsweise kann überprüft werden, ob die Genauigkeit der Testdaten über 80 Prozent liegt.
- Registrieren von Modellen: Die Heraufstufungspipeline registriert die Modelle, die für den Machine Learning-Produktionsarbeitsbereich qualifiziert sind.
-
Batchbewertungspipeline der Modelle:
- Vorbereiten der Daten: Die Batchbewertungspipeline pullt die Daten aus Data Lake Storage und verwendet Spark, um sie in Datasets für die Bewertung zu gruppieren.
- Bewerten der Modelle: Die Pipeline verwendet die pandas-Funktions-API, um mehrere Datasets parallel zu bewerten. Das geeignete Modell für jedes Dataset findet die Pipeline in Machine Learning anhand der Modelltags. Anschließend lädt sie das Modell herunter und verwendet es zur Bewertung des Datasets. Sie verwendet den Spark-Connector für Synapse SQL, um die Ergebnisse beizubehalten.
- Echtzeitbewertung: Azure Kubernetes Service (AKS) kann bei Bedarf eine Echtzeitbewertung durchführen. Aufgrund der großen Anzahl von Modellen sollten die Modelle bei Bedarf und nicht vorab geladen werden.
-
Ergebnisse:
- Vorhersagen: Die Batchbewertungspipeline speichert Vorhersagen in Synapse SQL.
- Metriken: Power BI stellt eine Verbindung mit den Modellvorhersagen her, um die Ergebnisse für die Präsentation abzurufen und zu aggregieren.
Komponenten
Azure Machine Learning ist ein professioneller Dienst für maschinelles Lernen, mit dem Sie schnell Modelle erstellen und bereitstellen können. Er bietet Benutzer*innen aller Qualifikationen einen Low-Code-Designer, automatisiertes maschinelles Lernen (AutoML) und eine gehostete Jupyter Notebook-Umgebung, die verschiedene IDEs unterstützt. In dieser Architektur wird Azure Machine Learning verwendet, um den End-to-End-Lebenszyklus von Machine Learning-Modellen zu verwalten, einschließlich Schulung, Auswertung und Bereitstellung.
Azure Synapse Analytics ist ein Analysedienst, der Datenintegration, Data Warehousing für Unternehmen und Big Data-Analysen vereint. In dieser Architektur wird Azure Synapse Analytics verwendet, um Modellvorhersagen zu speichern und die Abfrage und Analyse der Ergebnisse für Berichterstellung und Visualisierung zu ermöglichen.
Synapse SQL ist ein System für verteilte Abfragen für T-SQL, mit dem Data Warehousing- und Datenvirtualisierungsszenarien realisiert werden können und T-SQL auf Streaming- und Machine Learning-Szenarien erweitert wird. Es bietet sowohl serverlose als auch dedizierte Ressourcenmodelle. In dieser Architektur wird Synapse SQL verwendet, um Batchbewertungsergebnisse zu speichern und effiziente Abfragen und Datenabrufe zu ermöglichen.
Azure Data Lake Storage ist ein hochgradig skalierbarer und sicherer Speicherdienst für Hochleistungs-Analyseworkloads. In dieser Architektur wird Azure Data Lake Storage verwendet, um rohe und transformierte Daten zu speichern, die als Eingabe für Schulungs- und Bewertungspipelinen dienen.
Azure DevOps ist eine Gruppe von Entwicklerdiensten, die eine umfassende Lebenszyklusverwaltung für Anwendungen und Infrastrukturen bereitstellt. DevOps umfasst Lösungen für Arbeitsverfolgung, Quellcodeverwaltung, Builderstellung und CI/CD, Paketverwaltung und Tests. In dieser Architektur wird Azure DevOps verwendet, um die CI/CD-Pipelines für die Modellförderung und Bereitstellung in der Produktion zu verwalten.
Microsoft Power BI ist eine Sammlung von Softwarediensten, Apps und Connectors, die zusammenarbeiten, um aus unabhängigen Quellen von Daten kohärente, visuell ansprechende und interaktive Erkenntnisse zu gewinnen. In dieser Architektur wird Power BI verwendet, um eine Verbindung mit den modellvorhersagen herzustellen, die in Synapse SQL gespeichert sind, und bietet Geschäftseinblicke über interaktive Dashboards und Berichte.
Alternativen
- Sie können für Modelltraining und -bewertung auch Spark in Azure Synapse anstelle von Spark in Azure Databricks verwenden.
- Die Quelldaten können aus einer beliebigen Datenbank stammen.
- Sie können einen verwalteten Onlineendpunkt verwenden, um echtzeitbasierte Ableitungen bereitzustellen.
Szenariodetails
Viele Ansprüche an maschinelles Lernen sind zu komplex, um durch ein einziges Machine Learning-Modell gelöst zu werden. Welche Anforderung auch immer – Umsatzprognosen für jeden Artikel aller Geschäfte einer Lebensmittelkette oder Wartungsmodelle für Ölplattformen – ein spezifisches Modell für jeden Anspruch kann die Ergebnisse der meisten Probleme beim maschinellen Lernen verbessern. Dieses Multi-Model-Muster ist bereits in vielen Branchen verbreitet und lässt sich praxistauglich auf viele Anwendungsfälle übertragen. Mit Azure Machine Learning kann eine End-to-End-Multi-Model-Pipeline das Modelltraining sowie die Batch-Rückschluss- und Echtzeitbereitstellung umfassen.
Eine Multi-Model-Lösung verwendet während des Trainings und der Bewertung für jedes Modell ein eigenes Dataset. Dies wäre bei einer Umsatzprognose für jeden Artikel aller Geschäfte einer Lebensmittelkette ein eindeutiges Dataset für jede Artikel-/Geschäftskombination.
Mögliche Anwendungsfälle
- Einzelhandel: Eine Lebensmittelkette muss ein separates Umsatzprognosemodell für jeden Artikel in jedem Geschäft erstellen, insgesamt über 1.000 Modelle pro Geschäft.
- Materialbeschaffung: Für jede Kombination aus Warehouse und Produkt muss ein Verteilungsunternehmen den Bestand optimieren.
- Restaurants: Eine Restaurantkette mit tausenden Franchise-Restaurants muss den jeweiligen Bedarf prognostizieren.
Überlegungen
Diese Überlegungen beruhen auf den Säulen des Azure Well-Architected Frameworks, d. h. einer Reihe von Grundsätzen, mit denen die Qualität von Workloads verbessert werden kann. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.
- Datenpartitionen: Datenpartitionierung ist Voraussetzung für die Implementierung des Multi-Model-Musters. Bei beispielsweise einem Modell pro Geschäft würde ein Dataset sämtliche Daten eines Geschäfts enthalten, und die Anzahl der Datasets entspräche der Anzahl der Geschäfte. Dagegen gäbe es bei einer Modellierung der Artikel nach Geschäft ein Dataset für jede Artikel-/Geschäftskombination. Je nach Quelldatenformat kann die Datenpartitionierung einfach sein oder Datenverschiebung und -transformation in großem Umfang erfordern. Spark und Synapse SQL sind für solche Aufgaben sehr gut skaliert. Python pandas hingegen nicht, da es nur auf einem Knoten und mit einem Prozess ausgeführt wird.
- Modellverwaltung: Die Trainings- und Bewertungspipelines identifizieren und rufen das richtige Modell für jedes Dataset auf. Zu diesem Zweck berechnen sie Tags, die das Dataset charakterisieren, und verwenden diese Tags dann für die Identifizierung des geeigneten Modells. Die Tags identifizieren den Datenpartitionsschlüssel und die Modellversion und können darüber hinaus auch weitere Informationen bereitstellen.
-
Auswählen der richtigen Architektur:
- Spark eignet sich auch bei Trainingspipelines mit komplexen Datentransformations- und -gruppierungsanforderungen. Es bietet flexible Aufteilungs- und Gruppierungstechniken für die Gruppierung der Daten nach Merkmalkombinationen wie „Artikel-Geschäft“ oder „Standort-Artikel“. Die Ergebnisse können zur Verwendung in nachfolgenden Schritten in einem Spark-Datenrahmen (DataFrame) platziert werden.
- Wenn Ihre Machine Learning-Trainings- und Bewertungsalgorithmen einfach sind, kann die Datenpartitionierung eventuell auch mit Bibliotheken wie Scikit-learn erfolgen. In solchen Fällen benötigen Sie Spark möglicherweise nicht und würden so mögliche Schwierigkeiten bei der Installation von Azure Synapse oder Azure Databricks umgehen.
- Wenn die Trainingsdatasets bereits erstellt sind und sich z. B. in separaten Dateien oder separaten Zeilen oder Spalten befinden, benötigen Sie auch für komplexe Datentransformationen kein Spark.
- Die Machine Learning- und Computeclusterlösung bietet große Flexibilität für Situationen, die ein komplexes Setup erfordern. Beispielsweise können Sie einen benutzerdefinierten Docker-Container verwenden oder Dateien und vorab trainierte Modelle herunterladen. Deep Learning für Computer-Bildanalyse und Verarbeitung natürlicher Sprache (Natural Language Processing, NLP) sind Beispiele für Anwendungen, die eine solche Flexibilität erfordern können.
- Spark-Training und -Bewertung: Wenn Sie die Spark-Architektur verwenden, können Sie die pandas-Funktions-API von Spark für das parallele Training und die Bewertung verwenden.
- Separate Modellrepositorys: Um die bereitgestellten Modelle zu schützen, sollten Sie sie in einem eigenen Repository speichern, das aus den Trainings- und Testpipelines keinen Zugriff gestattet.
- Onlinerückschlüsse: Wenn eine Pipeline bereits beim Start alle Modelle lädt und zwischenspeichert, kann sich der Arbeitsspeicher des Containers durch die vielen Modelle erschöpfen. Laden Sie daher die Modelle nach Bedarf in der Ausführungsmethode, auch wenn damit die Latenz leicht erhöht wird.
- Trainingsskalierbarkeit: Mit Spark können Sie Hunderttausende Modelle parallel trainieren. Spark startet mehrere Trainingsprozesse auf jeder VM in einem Cluster. Jeder Kern kann einen separaten Prozess ausführen. Dies bedeutet zwar eine gute Auslastung der Ressourcen, es ist aber wichtig, den Cluster genau zu dimensionieren und die richtige SKU auszuwählen. Dies gilt insbesondere dann, wenn der Trainingsprozess aufwendig und zeitintensiv ist.
Kostenoptimierung
Bei der Kostenoptimierung geht es um die Suche nach Möglichkeiten, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung der Kostenoptimierung.
Verwenden Sie den Preisrechner, um einen besseren Überblick über die Kosten für eine Umsetzung dieses Szenarios in Azure zu erhalten. Die folgenden Annahmen eignen sich als Ausgangsgrundlage:
- Die Bereitstellungsmodelle werden täglich trainiert, um sie aktuell zu halten.
- Für ein Dataset mit 40 Millionen Zeilen und 10.000 Kombinationen aus Geschäft und Artikel dauert das Training in Azure Databricks mit einem Cluster, in dem 12 VMs mit Ls16_v2-Instanzen bereitgestellt werden, etwa 30 Minuten.
- Die Batchbewertung mit demselben Satz von Daten dauert etwa 20 Minuten.
- Sie können Machine Learning verwenden, um Echtzeitrückschlüsse bereitzustellen. Wählen Sie je nach Anforderungsvolumen einen geeigneten VM-Typ und eine ausreichende Clustergröße aus.
- Der AKS-Cluster wird bei Bedarf automatisch skaliert, sodass durchschnittlich zwei Knoten pro Monat aktiv sind.
Um zu sehen, wie sich die Preise für Ihren Anwendungsfall unterscheiden, ändern Sie die Variablen entsprechend Ihrer erwarteten Datengröße und den Anforderungen an die Bereitstellungsauslastung. Erhöhen oder verringern Sie bei größeren oder kleineren Trainingsdatenvolumen die Größe des Azure Databricks-Clusters. Um mehr gleichzeitige Benutzer*innen während der Modellverwendung zu ermöglichen, erhöhen Sie die AKS-Clustergröße.
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautor:
- James Nguyen | Principal Cloud Solution Architect
Nächste Schritte
- Was sind Computeziele in Azure Machine Learning?
- Konfigurieren eines Kubernetes-Clusters für Azure Machine Learning
- Viele Modelle Solution Accelerator GitHub-Repository
- ParallelRunStep Class
- Pandas-Funktions-APIs
- Herstellen einer Verbindung mit Speicherdiensten in Azure
- Was ist Azure Synapse Analytics?
- Bereitstellen eines Modells in einem Azure Kubernetes Service-Cluster