In diesem Artikel wird eine Multi-Model-Architektur mit Machine Learning und Computeclustern beschrieben. Diese Architektur bietet große Flexibilität für Situationen, die ein komplexes Setup erfordern.
Der Begleitartikel Multi-Model-Machine Learning im großen Stil in Azure mit Spark verwendet Apache Spark in Azure Databricks bzw. Azure Synapse Analytics.
Aufbau
Laden Sie eine Visio-Datei dieser Architektur herunter.
Workflow
Datenaufnahme:
- Azure Data Factory ruft Daten aus einer Quelldatenbank ab und kopiert sie in Azure Data Lake Storage.
- Die Daten werden dann in einem Machine Learning-Datenspeicher als tabellarisches Dataset gespeichert.
Model-Training Pipeline:
-
Vorbereiten von Daten:
- Die Schulungspipeline ruft die Daten aus dem Datenspeicher ab und transformiert sie bei Bedarf weiter.
- Die Daten werden in Datasets für die Schulung der Modelle gruppiert.
-
Zugmodelle:
- Die Pipeline trainiert Modelle für alle Datasets, die während der Datenvorbereitung erstellt wurden.
- Es verwendet die
ParallelRunStep
Klasse, um mehrere Modelle parallel zu trainieren. - Nach dem Training registriert die Pipeline die Modelle in Machine Learning zusammen mit ihren Testmetriken.
-
Vorbereiten von Daten:
Model-Promotion Pipeline:
-
Auswerten von Modellen:
- Die Förderpipeline 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 (z. B. überprüfung, ob die Genauigkeit der Testdaten 80%überschreitet).
-
Registrieren von Modellen:
- Die Förderpipeline registriert qualifizierende Modelle im Produktions-Machine Learning-Arbeitsbereich.
-
Auswerten von Modellen:
Model Batch-Scoring Pipeline:
-
Vorbereiten von Daten:
- Die Batchbewertungspipeline ruft Daten aus dem Datenspeicher ab und transformiert jede Datei bei Bedarf weiter.
- Die Daten werden zur Bewertung in Datasets gruppiert.
-
Bewertungsmodelle:
- Die Pipeline verwendet die
ParallelRunStep
Klasse, um mehrere Datasets parallel zu scoren. - Es identifiziert das entsprechende Modell für jedes Dataset in Machine Learning durch Durchsuchen von Modelltags.
- Das Modell wird heruntergeladen und zum Scoren des Datasets verwendet.
- Die
DataTransferStep
-Klasse wird verwendet, um die Ergebnisse zurück in Azure Data Lake zu schreiben. - Vorhersagen werden dann von Azure Data Lake an Synapse SQL zur Bereitstellung übergeben.
- Die Pipeline verwendet die
-
Vorbereiten von Daten:
Real-Time Bewertung:
- Verwalteter Onlineendpunkt wird verwendet, um echtzeitbasierte Bewertungen bereitzustellen.
- Aufgrund der großen Anzahl von Modellen werden sie bei Bedarf geladen und nicht vorab geladen.
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 Data Factory ist ein cloudbasierter Datenintegrationsdienst, mit dem datengesteuerte Workflows für die Orchestrierung und Automatisierung von Datenbewegungen und Transformationen erstellt werden können. In dieser Architektur wird Azure Data Factory verwendet, um Unternehmensdaten und Metadaten von Drittanbietern in Azure Data Lake Storage aufzunehmen.
Azure Stream Analytics ist ein Echtzeitanalyse- und komplexer Ereignisverarbeitungsdienst, der für die Analyse und Verarbeitung hoher Mengen schneller Streamingdaten entwickelt wurde. In dieser Architektur könnte Azure Stream Analytics möglicherweise für die Echtzeitdatenverarbeitung verwendet werden, obwohl sie nicht explizit im Workflow angezeigt wird.
Azure Machine Learning ist ein professioneller Dienst für maschinelles Lernen, mit dem Sie schnell Modelle erstellen und bereitstellen können. Es bietet Benutzern auf allen Qualifikationsebenen Tools wie einen Low-Code-Designer, automatisierte ML (AutoML) und eine gehostete Jupyter-Notizbuchumgebung, die verschiedene IDEs unterstützt. In dieser Architektur wird Azure Machine Learning verwendet, um den Lebenszyklus von Machine Learning-Modellen zu verwalten, einschließlich Schulungen, Evaluierung, Bereitstellung und Orchestrierung von Pipelines wie Schulungen, Werbung und Bewertung.
managed Online Endpoint ist ein Feature von Azure Machine Learning, das für die Echtzeitbewertung verwendet wird. In dieser Architektur bietet es eine skalierbare und sichere Möglichkeit, Vorhersagen in nahezu Echtzeit zu bedienen, indem machine Learning-Modelle bei Bedarf geladen werden.
ParallelRunStep ist eine Komponente von Azure Machine Learning-Pipelines, die für die effiziente Ausführung paralleler Aufträge verwendet werden. Sie ermöglicht die skalierbare Ausführung von Batchprozessen, z. B. Schulungen oder gleichzeitiges Bewerten vieler Modelle. In dieser Architektur wird die
ParallelRunStep
sowohl in den Modellschulungs- als auch batchbewertungspipelinen verwendet, um mehrere Datasets oder Modelle parallel zu trainieren oder zu bewerten, wodurch die Laufzeit dieser Vorgänge erheblich reduziert wird.Azure Data Lake Storage ist ein hochgradig skalierbarer und sicherer Speicherdienst für Hochleistungs-Analyseworkloads. In dieser Architektur dient Azure Data Lake Storage als primäre Speicherebene für rohe und transformierte Datasets sowie zum Speichern von Ergebnissen aus Bewertungspipelines.
Azure Synapse Analytics ist ein Analysedienst, der Datenintegration, Data Warehousing für Unternehmen und Big Data-Analysen vereint. Es wird in dieser Architektur verwendet, um Batchbewertungsergebnisse zu speichern, sodass effiziente Abfragen und Abrufen von Vorhersagen für Berichte oder Analysen ermöglicht werden. Synapse SQL wird speziell verwendet, um Vorhersagen für nachgeschaltete Anwendungen zu bedienen und Visualisierungstools wie Power BI für den Zugriff auf aggregierte Ergebnisse zu ermöglichen.
Azure SQL-Datenbank ist eine vollständig verwaltete relationale Datenbank als Dienst. In dieser Architektur wird die Azure SQL-Datenbank verwendet, um strukturierte Daten zu speichern, die als Teil der Datenpipeline abgefragt oder analysiert werden können.
Azure DevOps ist eine Gruppe von Entwicklerdiensten, die eine umfassende Lebenszyklusverwaltung für Anwendungen und Infrastrukturen bereitstellt. Es umfasst Tools für die Arbeitsnachverfolgung, Quellcodeverwaltung, Build und CI/CD, Paketverwaltung und Testlösungen. In dieser Architektur wird Azure DevOps verwendet, um CI/CD-Pipelines zum Automatisieren von Modellförderung, Tests und Bereitstellung in Produktionsumgebungen 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 stellt Power BI eine Verbindung mit Synapse SQL zusammen, um Vorhersagen und aggregierte Metriken über interaktive Dashboards abzurufen und darzustellen.
Alternativen
- Die Quelldaten können aus einer beliebigen Datenbank stammen.
- Sie können Azure Kubernetes Service (AKS) für echtzeitbasierte Ableitungen anstelle von verwalteten Onlineendpunkten verwenden. AKS ermöglicht die Bereitstellung containerisierter Modelle und bietet mehr Kontrolle über die Bereitstellung und ermöglicht das dynamische Laden von Modellen, eingehende Anforderungen zu verarbeiten, ohne Ressourcen zu erschöpfen.
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 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.
- 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.
- ParallelRunStep-Klasse: Die Python-Klasse ParallelRunStep ist eine leistungsstarke Option zum Ausführen vieler Modelle für das Training und das Ziehen von Rückschlüssen. Sie kann Ihre Daten auf verschiedene Weisen partitionieren und Ihr Machine Learning-Skript parallel auf mehrere Elemente der Partition anwenden. Wie bei anderen Formen des Machine Learning-Trainings können Sie eine benutzerdefinierte Trainingsumgebung mit Zugriff auf PyPI-Pakete (Python Package Index) angeben – für Konfigurationen, die mehr als das standardmäßige PyPI erfordern, aber auch eine erweiterte benutzerdefinierte Docker-Umgebung. Es stehen viele CPUs und GPUs zur Auswahl.
- 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.
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
- Konfigurieren eines Kubernetes-Clusters für Azure Machine Learning
- Viele Modelle Solution Accelerator GitHub-Repository
- ParallelRunStep-Klasse
- DataTransferStep-Klasse
- Herstellen einer Verbindung mit Speicherdiensten in Azure
- Was ist Azure Synapse Analytics?
- Bereitstellen eines Modells in einem Azure Kubernetes Service-Cluster