Bearbeiten

Freigeben über


Multi-Model-Machine-Learning im großen Stil mit Azure Machine Learning

Azure Data Factory
Azure Data Lake
Azure Databricks
Azure Machine Learning
Azure Synapse Analytics

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

Architekturdiagramm für Multi-Model-Machine-Learning im großen Stil mit Azure Machine Learning.

Laden Sie eine Visio-Datei dieser Architektur herunter.

Workflow

  1. Datenerfassung: Azure Data Factory pullt Daten aus einer Quelldatenbank und kopiert sie in Azure Data Lake Storage. Anschließend werden die Daten in einem Machine Learning-Datenspeicher als tabellarisches Dataset gespeichert.
  2. Modelltrainingspipeline:
    1. Vorbereiten von Daten: Die Trainingspipeline pullt die Daten aus dem Datenspeicher und transformiert sie nach Bedarf. Außerdem werden die Daten in Datasets gruppiert, um die Modelle zu trainieren.
    2. Trainieren von Modellen: Die Pipeline trainiert Modelle für alle Datasets, die während der Datenvorbereitung erstellt wurden. Für das parallele Training mehrerer Modelle verwendet sie die Klasse ParallelRunStep. Nach dem Training eines Modells registriert die Pipeline das Modell zusammen mit den Testmetriken in Machine Learning.
  3. Pipeline zur Modellheraufstufung:
    1. 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.
    2. Registrieren von Modellen: Die Heraufstufungspipeline registriert die Modelle, die für den Machine Learning-Produktionsarbeitsbereich qualifiziert sind.
  4. Batchbewertungspipeline des Modells:
    1. Vorbereiten von Daten: Die Batchbewertungspipeline pullt Daten aus dem Datenspeicher und transformiert jede Datei nach Bedarf. Außerdem werden die Daten zur Bewertung in Datasets gruppiert.
    2. Bewertungsmodelle: Die Pipeline verwendet die Klasse ParallelRunStep, um mehrere Datasets parallel zu bewerten. Anhand der Modelltags findet die Pipeline das zutreffende Machine Learning-Modell für jedes Dataset. Anschließend lädt sie das Modell herunter und verwendet es zur Bewertung des Datasets. Sie verwendet die Klasse DataTransferStep, um die Ergebnisse zurück in Azure Data Lake zu schreiben, und übergibt die Vorhersagen dann zur Bereitstellung aus Azure Data Lake an Synapse SQL.
  5. 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.
  6. Ergebnisse:
    1. Vorhersagen: Die Batchbewertungspipeline speichert Vorhersagen in Synapse SQL.
    2. 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 Benutzern aller Qualifikationsstufen einen Low-Code-Designer, automatisiertes ML (AutoML) und eine gehostete Jupyter-Notebook-Umgebung, die verschiedene IDEs unterstützt.
  • Azure Databricks ist ein cloudbasiertes Data-Engineering-Tool, das auf Apache Spark basiert. Es kann große Datenmengen verarbeiten und transformieren und sie mithilfe von Machine Learning-Modellen untersuchen. Sie können Aufträge in R, Python, Java, Scala und Spark SQL schreiben.
  • Azure Synapse Analytics ist ein Analysedienst, der Datenintegration, Data Warehousing für Unternehmen und Big Data-Analysen vereint.
  • 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.
  • Azure Data Lake Storage ist ein hochgradig skalierbarer und sicherer Speicherdienst für Hochleistungs-Analyseworkloads.
  • Azure Kubernetes Service (AKS) ist ein vollständig verwalteter Kubernetes-Dienst für die Bereitstellung und Verwaltung von containerisierten Anwendungen. AKS vereinfacht die Bereitstellung eines verwalteten AKS-Clusters in Azure, indem der betriebliche Aufwand in Azure ausgelagert wird.
  • 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.
  • 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.

Alternativen

  • Die Quelldaten können aus einer beliebigen Datenbank stammen.
  • Zur Bereitstellung von Echtzeitrückschlüssen können Sie einen verwalteten Online-Endpunkt oder AKS verwenden.

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.
  • 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.
  • 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 Übersicht über die Säule „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:

Nächste Schritte