Batchbewertung von Python-Modellen in Azure

Container Registry
Event Hubs
Machine Learning
SQL-Datenbank
Stream Analytics

Dieser Architekturleitfaden veranschaulicht, wie Sie mit Azure Machine Learning eine skalierbare Lösung für die Batchbewertung von Modellen erstellen. Die Lösung kann als Vorlage genutzt und für unterschiedliche Probleme generalisiert werden.

Architektur

Architekturdiagramm: Batchbewertung von Python-Modellen in Azure

Laden Sie eine Visio-Datei dieser Architektur herunter.

Workflow

Dieser Architekturleitfaden gilt sowohl für Streaming- als auch für statische Daten, sofern der Erfassungsprozess an den Datentyp angepasst ist. Die folgenden Schritte und Komponenten beschreiben die Erfassung dieser beiden Datentypen.

Streamingdaten:

  1. Streamingdaten stammen von IoT-Sensoren, bei denen in häufigen Intervallen neue Ereignisse gestreamt werden.
  2. Eingehende Streamingereignisse werden mit Azure Event Hubs in eine Warteschlange gestellt und dann mit Azure Stream Analytics vorverarbeitet.
    • Azure Event Hubs: Mit diesem Dienst für die Nachrichtenerfassung können Millionen von Ereignismeldungen pro Sekunde erfasst werden. In dieser Architektur senden Sensoren einen Datenstrom an den Event Hub.
    • Azure Stream Analytics: Ein Modul für die Ereignisverarbeitung. Ein Stream Analytics-Auftrag liest die Datenströme aus dem Event Hub und führt die Datenstromverarbeitung durch.

Statische Daten:

  1. Statische Daten können als Dateien in Azure Data Lake Storage oder in tabellarischer Form in Azure Synapse oder in der Azure SQL-Datenbank gespeichert werden.
  2. Azure Data Factory kann zum Aggregieren oder Vorverarbeiten des gespeicherten Dataset verwendet werden.

Die nach der Datenerfassung verbleibende Architektur ist für Streaming- und statische Daten gleich und besteht aus den folgenden Schritten und Komponenten:

  1. Die erfassten, aggregierten und/oder vorverarbeiteten Daten können als Dokumente in Azure Data Lake Storage oder in tabellarischer Form in Azure Synapse oder in der Azure SQL-Datenbank gespeichert werden. Diese Daten werden dann von Azure Machine Learning genutzt.
  2. Azure Machine Learning wird zum Trainieren, Bereitstellen und Verwalten von Machine Learning-Modellen im großen Stil verwendet. Im Kontext der Batch-Bewertung erstellt Azure Machine Learning einen VM-Cluster mit automatischer Skalierungsoption, in dem Aufträge parallel zu Python-Skripten ausgeführt werden.
  3. Modelle werden als verwaltete Batchendpunkte bereitgestellt, die dann für die Durchführung von Batch-Rückschlüssen auf große Datenmengen innerhalb eines bestimmten Zeitraums verwendet werden. Mit Batchendpunkten werden Zeiger auf Daten empfangen und Aufträge asynchron ausgeführt, um die Daten in Computeclustern parallel zu verarbeiten.
  4. Die Rückschlussergebnisse können als Dokumente in Azure Data Lake Storage oder in tabellarischer Form in Azure Synapse oder in der Azure SQL-Datenbank gespeichert werden.
  5. Visualisieren: Die gespeicherten Modellergebnisse können über Benutzeroberflächen wie Power BI-Dashboards oder über benutzerdefinierte Webanwendungen genutzt werden.

Komponenten

Überlegungen

Diese Überlegungen setzen die Säulen des Azure Well-Architected Framework um, das eine Reihe von Leitprinzipien enthält, die zur Verbesserung der Qualität eines Workloads verwendet werden können. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.

Leistung

Für Python-Standardmodelle sind CPUs, die zum Bewältigen der Workload ausreichen, in der Regel akzeptabel. In dieser Architektur werden CPUs verwendet. Bei Deep Learning-Workloads bieten GPUs aber eine deutlich bessere Leistung als CPUs. In der Regel wird ein großer Cluster mit CPUs benötigt, um eine vergleichbare Leistung zu erzielen.

Vergleich des Parallelisierens auf VMs und Kernen

Wenn Sie Bewertungsprozesse für viele Modelle im Batchmodus ausführen, müssen die Aufträge VM-übergreifend parallelisiert werden. Zwei Ansätze sind möglich:

  • Erstellen eines größeren Clusters mit kostengünstigen VMs
  • Erstellen eines kleineren Clusters mit Hochleistungs-VMs, die jeweils über mehr Kerne verfügen

Im Allgemeinen ist das Bewerten von Python-Standardmodellen nicht so anspruchsvoll wie das Bewerten von Deep Learning-Modellen. Mit einem kleinen Cluster sollte es möglich sein, eine große Zahl von in der Warteschlange befindlichen Modellen effizient zu verarbeiten. Sie können die Anzahl von Clusterknoten erhöhen, wenn die Größe der Datasets zunimmt.

Der Einfachheit halber wird in diesem Szenario für einen Azure Machine Learning-Pipelineschritt nur eine Bewertungsaufgabe übermittelt. Es kann aber auch effizienter sein, mehrere Datenblöcke innerhalb desselben Pipelineschritts zu bewerten. Schreiben Sie in diesen Fällen benutzerdefinierten Code, mit dem mehrere Datasets eingelesen werden und das entsprechende Bewertungsskript während eines einzelnen Schritts ausgeführt wird.

Verwaltung

  • Überwachen von Aufträgen: Es ist wichtig, den Fortschritt ausgeführter Aufträge zu überwachen. Es kann jedoch eine Herausforderung sein, über einen Cluster von aktiven Knoten hinweg zu überwachen. Verwenden Sie für die Untersuchung des Zustands der Knoten im Cluster das Azure-Portal, um den Machine Learning-Arbeitsbereich zu verwalten. Wenn ein Knoten inaktiv oder bei einem Auftrag ein Fehler aufgetreten ist, werden die Fehlerprotokolle im Blobspeicher gespeichert und sind auch über den Abschnitt Pipelines zugänglich. Verbinden Sie zum Durchführen einer umfassenderen Überwachung Protokolle mit Application Insights, oder führen Sie separate Prozesse aus, um den Status des Clusters und der zugehörigen Aufträge abzufragen.
  • Protokollierung: Machine Learning protokolliert alle stdout-/stderr-Vorgänge im zugeordneten Azure Storage-Konto. Verwenden Sie ein Speichernavigationstool, z. B. Azure Storage-Explorer, damit Sie die Protokolldateien leicht anzeigen können.

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“.

Die teuersten Komponenten, die in diesem Architekturleitfaden genutzt werden, sind die Computeressourcen. Die Größe des Computeclusters wird je nach den Aufträgen in der Warteschlange zentral hoch- und herunterskaliert. Aktivieren Sie die automatische Skalierung programmgesteuert über das Python SDK, indem Sie die Bereitstellungskonfiguration der Computeumgebung ändern. Sie können auch die Azure CLI verwenden, um die Parameter für die automatische Skalierung des Clusters festzulegen.

Konfigurieren Sie für Aufträge, die nicht direkt verarbeitet werden müssen, die Formel für die automatische Skalierung so, dass der Standardzustand (Minimum) ein Cluster von null Knoten ist. Bei dieser Konfiguration hat der Cluster anfangs null Knoten. Er skaliert nur dann zentral hoch, wenn er Aufträge in der Warteschlange erkennt. Wenn die Batchbewertung maximal einige Male am Tag ausgeführt wird, können Sie mithilfe dieser Einstellung eine erhebliche Kosteneinsparung erzielen.

Die automatische Skalierung ist ggf. nicht für Batchaufträge geeignet, die zeitlich zu nahe beieinander liegen. Da für die benötigte Zeit zum Erstellen und Entfernen eines Clusters ebenfalls Kosten anfallen, wenn eine Batchworkload nur wenige Minuten nach dem Ende des vorherigen Auftrags startet, ist es ggf. kosteneffizienter, den Cluster permanent auszuführen – also auch in der Zeit zwischen den Aufträgen. Diese Strategie hängt davon ab, ob die Ausführung von Bewertungsprozessen mit hoher Häufigkeit (z. B. jede Stunde) oder geringerer Häufigkeit (z. B. einmal pro Monat) geplant ist.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautoren:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte

Produktdokumentation:

Microsoft Learn-Module: