In diesem Artikel wird eine Architektur für viele Modelle beschrieben, die Azure Machine Learning und Computecluster verwenden. Es bietet Vielseitigkeit für Situationen, die ein komplexes Setup erfordern.
Aufbau
Laden Sie eine Visio-Datei dieser Architektur herunter.
Datenfluss
Der folgende Datenfluss entspricht dem vorherigen Diagramm:
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.
Modelltrainingspipeline:
Vorbereiten von Daten:
Die Schulungspipeline ruft die Daten aus dem Datenspeicher ab und transformiert sie nach Bedarf.
Die Daten werden in Datasets für die Schulung der Modelle gruppiert.
Train-Modelle:
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.Nachdem die Modelle trainiert wurden, registriert die Pipeline die Modelle und ihre Testmetriken in Machine Learning.
Pipeline zur Modellheraufstufung:
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. Beispielsweise kann überprüft werden, ob die Genauigkeit der Testdaten 80%überschreitet.
Registermodelle:
- Die Förderpipeline registriert qualifizierende Modelle im Produktions-Machine Learning-Arbeitsbereich.
Batchbewertungspipeline der Modelle:
Vorbereiten von Daten:
Die Batchbewertungspipeline ruft Daten aus dem Datenspeicher ab und transformiert jede Datei nach Bedarf.
Die Daten werden zur Bewertung in Datasets gruppiert.
Scoremodelle:
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 schreibt die Ergebnisse zurück in Azure Data Lake.Vorhersagen werden von Azure Data Lake an Synapse SQL zur Bereitstellung übergeben.
Der verwaltete Onlineendpunkt stellt die Bewertung in Echtzeit bereit.
Aufgrund der großen Anzahl von Modellen werden sie bei Bedarf anstelle vorgeladener Modelle geladen.
Ergebnisse:
Vorhersagen: Die Batchbewertungspipeline speichert Vorhersagen in Synapse SQL.
Metriken: Microsoft Power BI stellt eine Verbindung mit den Modellvorhersagen her, um 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 erfasst Azure Data Factory Unternehmensdaten und Metadaten von Drittanbietern in Data Lake Storage.
Azure DevOps ist eine Gruppe von Entwicklerdiensten, die eine umfassende Lebenszyklusverwaltung für Anwendungen und Infrastrukturen bereitstellt. Es umfasst Tools für kontinuierliche Integration und kontinuierliche Zustellung (CI/CD)-Pipelines, Arbeitsverfolgung, Quellcodeverwaltung, Buildpipelinen, 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.
Azure SQL-Datenbank ist eine vollständig verwaltete relationale Clouddatenbank. In dieser Architektur wird die SQL-Datenbank verwendet, um strukturierte Daten zu speichern, die als Teil der Datenpipeline abgefragt oder analysiert werden können.
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 kann Stream Analytics für die Echtzeitdatenverarbeitung verwendet werden.
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. Dieser Ansatz ermöglicht eine effiziente Abfrage und das Abrufen von Vorhersagen für Die Berichterstellung oder Analyse. Synapse SQL wird verwendet, um Vorhersagen für nachgeschaltete Anwendungen zu bedienen und Visualisierungstools wie Power BI für den Zugriff auf aggregierte Ergebnisse zu ermöglichen.
Data Lake Storage ist ein hochgradig skalierbarer und sicherer Speicherdienst für Hochleistungs-Analyseworkloads. In dieser Architektur dient Data Lake Storage als primäre Speicherebene für rohe und transformierte Datasets und zum Speichern von Ergebnissen aus Bewertungspipelinen.
Machine Learning ist ein maschineller Lerndienst auf Unternehmensniveau zum schnellen Erstellen und Bereitstellen von Modellen. Sie bietet Benutzern auf allen Qualifikationsstufen Tools wie einen Low-Code-Designer, automatisiertes Maschinelles Lernen und eine gehostete Jupyter-Notizbuchumgebung, die verschiedene integrierte Entwicklungsumgebungen unterstützt. In dieser Architektur wird Machine Learning verwendet, um den Lebenszyklus von Modellen zu verwalten, einschließlich Schulungen, Auswertungen und Bereitstellung. Außerdem werden Pipelines für Aufgaben wie Schulungen, Promotionen und Bewertungen orchestriert.
verwaltete Online-Endpunkte sind ein Feature von Machine Learning, das für die Echtzeitbewertung verwendet wird. In dieser Architektur bietet ein verwalteter Online-Endpunkt eine skalierbare und sichere Möglichkeit, Vorhersagen in nahezu Echtzeit zu bedienen, indem machine Learning-Modelle bei Bedarf geladen werden.
Die ParallelRunStep-Klasse ist eine Komponente von Machine Learning-Pipelines, die zum effizienten Ausführen paralleler Aufträge verwendet werden. Sie ermöglicht die skalierbare Verarbeitung von Batchaufgaben, z. B. Schulungen oder gleichzeitiges Bewerten vieler Modelle. In dieser Architektur wird die
ParallelRunStep
Klasse sowohl in der Modellschulungs- als auch in batchbewertungspipeline verwendet, um mehrere Datasets oder Modelle parallel zu trainieren oder zu bewerten, wodurch die Laufzeit dieser Vorgänge erheblich reduziert wird.
Power BI ist eine Sammlung von Softwarediensten, Apps und Connectors, die zusammenarbeiten, um nicht verwandte Datenquellen in kohärente, visuell immersive und interaktive Einblicke umzuwandeln. In dieser Architektur stellt Power BI eine Verbindung mit Synapse SQL zusammen, um Vorhersagen und aggregierte Metriken über interaktive Dashboards abzurufen und darzustellen.
Alternativen
Sie können eine beliebige Datenbank für Quelldaten verwenden.
Sie können Azure Kubernetes Service (AKS) für Echtzeit-Inferencing anstelle von verwalteten Onlineendpunkten verwenden. Mit AKS können Sie containerisierte Modelle bereitstellen und mehr Kontrolle über die Bereitstellung bieten. Diese Funktionen ermöglichen das dynamische Laden von Modellen, um eingehende Anforderungen zu verarbeiten, ohne Ressourcen zu verbrauchen.
Szenariodetails
Viele Ansprüche an maschinelles Lernen sind zu komplex, um durch ein einziges Machine Learning-Modell gelöst zu werden. Ganz gleich, ob der Umsatz für jeden Artikel jedes Ladengeschäfts vorhergesagt wird oder die Wartung von Hunderten von Ölölen modelliert werden kann, wenn ein Modell für jede Instanz die Ergebnisse vieler Machine Learning-Probleme verbessern kann. Dieses Multi-Model-Muster ist in vielen Branchen verbreitet und lässt sich praxistauglich auf viele Anwendungsfälle übertragen. Mit der Verwendung von Machine Learning kann eine End-to-End-Pipeline viele Modelle Modellschulungen, Batch-Inferencing-Bereitstellung und Echtzeitbereitstellung umfassen.
Eine Multi-Model-Lösung verwendet während des Trainings und der Bewertung für jedes Modell ein eigenes Dataset. Wenn beispielsweise der Vorgang den Umsatz für jeden Artikel in jedem Speicher vorherzusagen soll, entspricht jedes Dataset einer eindeutigen Elementspeicherkombination.
Mögliche Anwendungsfälle
Einzelhandel: Eine Lebensmittelgeschäftskette muss ein separates Umsatzprognosemodell für jede Filiale und jeden Artikel erstellen, insgesamt über 1.000 Modelle für jedes Geschäft.
Materialbeschaffung: Für jede Kombination aus Warehouse und Produkt muss ein Verteilungsunternehmen den Bestand optimieren.
Restaurants: Eine Kette mit Tausenden von Franchises muss die Nachfrage für jedes Franchise vorhersagen.
Überlegungen
Diese Überlegungen bilden die Säulen des Azure Well-Architected Framework, einer Reihe von Leitprinzipien, die Sie zur Verbesserung der Qualität eines Workloads verwenden können. Weitere Informationen finden Sie unter Well-Architected Framework.
Datenpartitionen: Das Aufteilen der Daten in Partitionen ist für die Implementierung des vielen Modellmusters unerlässlich. Wenn Sie ein Modell für jeden Speicher benötigen, enthält jedes Dataset alle Daten für einen einzelnen Speicher, sodass es so viele Datasets gibt, wie es Speicher gibt. Wenn Sie Produkte nach Store modellieren möchten, gibt es ein Dataset für jede Kombination aus Produkt und Store. Je nach Quelldatenformat kann die Datenpartitionierung einfach sein oder Datenverschiebung und -transformation in großem Umfang erfordern. Spark und Synapse SQL skalieren gut für diese Aufgaben, während Python Pandas nicht, weil sie auf einem einzelnen Knoten und Prozess ausgeführt wird.
Modellverwaltung: Die Trainings- und Bewertungspipelines identifizieren und rufen das richtige Modell für jedes Dataset auf. Dazu berechnen Sie Tags, die das Dataset charakterisieren, und verwenden dann die Tags, um das übereinstimmende Modell zu finden. Die Tags identifizieren den Datenpartitionsschlüssel und die Modellversion und können darüber hinaus auch weitere Informationen bereitstellen.
Wählen Sie die richtige Architektur aus:
Spark eignet sich, wenn Ihre Schulungspipeline komplexe Datentransformations- und Gruppierungsanforderungen aufweist. 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-Schulung und Bewertungsalgorithmen einfach sind, können Sie Möglicherweise Daten mit Bibliotheken wie scikit-learn partitionieren. In diesem Szenario benötigen Sie möglicherweise keine Spark, sodass Sie mögliche Komplexitäten vermeiden können, die auftreten, wenn Sie Azure Synapse Analytics oder Azure Databricks installieren.
Wenn Ihre Schulungsdatensätze bereits erstellt werden, z. B. wenn sie in separaten Dateien gespeichert oder in unterschiedlichen Zeilen oder Spalten organisiert sind, benötigen Sie Spark nicht für komplexe Datentransformationen.
Die Machine Learning- und Computeclusterlösung bietet Vielseitigkeit für Situationen, die eine komplexe Einrichtung erfordern. Sie können beispielsweise einen benutzerdefinierten Docker-Container verwenden, Dateien herunterladen oder vortrainierte Modelle herunterladen. Computer vision and natural language processing deep learning are examples of applications that might require this vielseitigkeit.
Separate Modell-Repositorys: Um die bereitgestellten Modelle zu schützen, sollten Sie sie in ihrem eigenen Repository speichern, auf das die Schulungs- und Testpipelinen nicht zugreifen.
ParallelRunStep-Klasse: Die Python ParallelRunStep-Klasse ist eine leistungsstarke Option zum Ausführen vieler Modelle Training und Inferencing. Sie kann Ihre Daten auf verschiedene Arten partitionieren und dann ihr Machine Learning-Skript auf Elemente der Partition parallel anwenden. Wie bei anderen Formen von Machine Learning-Schulungen können Sie eine benutzerdefinierte Schulungsumgebung angeben, die Zugriff auf Python Package Index (PyPI)-Pakete hat, oder eine erweiterte benutzerdefinierte Docker-Umgebung für Konfigurationen, die mehr als standard PyPI erfordern. Es stehen viele CPUs und GPUs zur Auswahl.
Online-Ableitung: Wenn eine Pipeline alle Modelle von Anfang an lädt und zwischenspeichert, kann der Speicher des Containers durch die Modelle verringert werden. Laden Sie daher die Modelle nach Bedarf in der Ausführungsmethode, auch wenn damit die Latenz leicht erhöht wird.
Kostenoptimierung
Die Kostenoptimierung konzentriert sich auf Möglichkeiten, unnötige Ausgaben zu reduzieren und die betriebliche Effizienz zu verbessern. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung der Kostenoptimierung.
Um die Kosten für die Ausführung dieses Szenarios in Azure besser zu verstehen, verwenden Sie den Preisrechner. Gehen Sie davon aus, dass:
Die Bereitstellungsmodelle werden täglich trainiert, um sie aktuell zu halten.
Sie benötigen ca. 30 Minuten, um ein Dataset zu verarbeiten, das 40 Millionen Zeilen mit 10 Tausend eindeutigen Kombinationen aus Store-Produkt enthält. Das Dataset trainiert auf Azure Databricks mithilfe eines Clusters, der mit 12 virtuellen Computern (VMs) bereitgestellt wird, die Ls16_v2 Instanzen verwenden. 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 Anforderungsvolume einen geeigneten Typ von VM und Clustergröße aus.
Ein AKS-Cluster skaliert automatisch nach Bedarf, was zu einem Durchschnitt von zwei aktiven Knoten pro Monat führt.
Um zu sehen, wie sich die Preise für Ihren Anwendungsfall unterscheiden, ändern Sie die Variablen im Preisrechner so, dass sie Ihrer erwarteten Datengröße entsprechen und die Lastanforderungen erfüllen. 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
Microsoft verwaltet diesen Artikel. Die folgenden Mitwirkenden haben diesen Artikel geschrieben.
Hauptautor:
- James Nguyen | Principal Cloud Solution Architect
Um nichtöffentliche LinkedIn-Profile anzuzeigen, melden Sie sich bei LinkedIn an.
Nächste Schritte
- Konfigurieren eines Kubernetes-Clusters für machine Learning-
- Viele Modelle Lösungsbeschleuniger GitHub-Repository
- ParallelRunStep-Klasse
- DataTransferStep-Klasse
- Erstellen von Datenspeichern
- Was ist Azure Synapse Analytics?
- Bereitstellen eines Modells in einem AKS-Cluster