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
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:
- Streamingdaten stammen von IoT-Sensoren, bei denen in häufigen Intervallen neue Ereignisse gestreamt werden.
- 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:
- 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.
- 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:
- Die erfassten, aggregierten 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.
- 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.
- 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.
- 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.
- Visualisieren: Die gespeicherten Modellergebnisse können über Benutzeroberflächen wie Power BI-Dashboards oder über benutzerdefinierte Webanwendungen genutzt werden.
Komponenten
- Azure Event Hubs
- Azure Stream Analytics
- Azure SQL-Datenbank
- Azure Synapse Analytics
- Azure Data Lake-Speicher
- Azure Data Factory
- Azure Machine Learning
- Azure Machine Learning-Endpunkte
- Microsoft Power BI in Azure
- Azure-Web-Apps
Ü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.
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 (Grafikprozessoren) 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:
- Carlos Alexandre Santos | Senior Specialized AI Cloud Solution Architect
- Said Bleik | Principal Applied Scientist Manager
Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.
Nächste Schritte
Produktdokumentation:
- Was ist Azure Blob Storage?
- Einführung in private Docker-Containerregistrierungen in Azure
- Azure Event Hubs
- Was ist Azure Machine Learning?
- Was ist Azure SQL-Datenbank?
- Willkommen bei Azure Stream Analytics
Microsoft Learn-Module:
- Bereitstellen von Azure SQL-Datenbank
- Aktivieren von zuverlässigem Messaging für Big Data-Anwendungen mit Azure Event Hubs
- Erkunden von Azure Event Hubs
- Implementieren einer Datenstreaminglösung mit Azure Stream Analytics
- Einführung in maschinelles Lernen
- Verwalten von Containerimages in Azure Container Registry