Funktionsweise von Azure Machine Learning: Architektur und Konzepte (V1)
GILT FÜR:Azure CLI-ML-Erweiterung V1Python-SDK azureml V1
Dieser Artikel bezieht sich auf die erste Version (V1) der Azure Machine Learning-CLI und des SDK. Informationen zur zweiten Version (V2) finden Sie unter Funktionsweise von Azure Machine Learning (V2).
Enthält Informationen zu Architektur und Konzepten von Azure Machine Learning. In diesem Artikel erhalten Sie ein allgemeines Verständnis der Komponenten und deren Zusammenarbeit, um das Entwickeln, Bereitstellen und Warten von Machine Learning-Modellen zu unterstützen.
Arbeitsbereich
Ein Arbeitsbereich für maschinelles Lernen ist die Ressource der obersten Ebene für Azure Machine Learning.
Der Arbeitsbereich ist der zentrale Ort für:
- Verwalten von Ressourcen, die Sie für Training und Bereitstellung von Modellen wie Berechnungen verwenden.
- Speichern von Ressourcen, die Sie erstellen, wenn Sie Azure Machine Learning verwenden, einschließlich:
Ein Arbeitsbereich enthält andere Azure-Ressourcen, die er verwendet:
- Azure Container Registry (ACR): Registriert die Docker-Container, die Sie während des Trainings und bei der Modellbereitstellung verwenden. Um Kosten zu minimieren, wird ACR nur erstellt, wenn Bereitstellungsimages erstellt werden.
- Azure Storage-Konto: Wird als Standarddatenspeicher für den Arbeitsbereich verwendet. Jupyter-Notebooks, die mit Ihren Azure Machine Learning-Compute-Instanzen verwendet werden, werden ebenfalls hier gespeichert.
- Azure Application Insights: Speichert Überwachungsinformationen zu Ihren Modellen.
- Azure Key Vault: Speichert Geheimnisse, die von Computezielen verwendet werden, sowie andere vertrauliche Informationen, die vom Arbeitsbereich benötigt werden.
Sie können einen Arbeitsbereich mit anderen Benutzern teilen.
Berechnungen
Ein Computeziel ist ein Computer oder eine Computergruppe, wo Ihr Trainingsskript ausgeführt oder Ihre Dienstbereitstellung gehostet wird. Sie können Ihren lokalen Computer oder eine Remotecomputeressource als Computeziel verwenden. Mit Computezielen können Sie das Training auf dem lokalen Computer starten und dann horizontal auf die Cloud hochskalieren, ohne Ihr Trainingsskript zu ändern.
Azure Machine Learning führt zwei vollständig verwaltete, cloudbasierte virtuelle Computer (VM) ein, die für Machine Learning-Aufgaben konfiguriert sind:
Compute-Instanz: Eine VM, auf der verschiedene Tools und Umgebungen für das maschinelle Lernen installiert sind. Eine Compute-Instanz wird primär für Ihre Entwicklungsarbeitsstation verwendet. Sie können ohne Setup mit der Ausführung von Beispiel-Notebooks beginnen. Eine Compute-Instanz kann auch als Computeziel für Trainings- und Rückschlussaufträge verwendet werden.
Computecluster: Computecluster sind Cluster von VMs, in denen mehrere Knoten skaliert werden können. Computecluster eignen sich besser für Computeziele für große Aufträge und Produktion. Beim Übermitteln eines Auftrags wird der Cluster automatisch hochskaliert. Verwenden Sie ihn als Trainingscomputeziel oder zur Dev/Test-Bereitstellung.
Weitere Informationen zum Trainieren von Computezielen finden Sie unter Trainieren von Computezielen. Weitere Informationen zur Bereitstellung von Computezielen finden Sie unter Bereitstellungsziele.
Datasets und Datenspeicher
Azure Machine Learning-Datasets erleichtern Ihnen den Zugriff auf Ihre Daten und die Arbeit damit. Durch Erstellen eines Datasets erstellen Sie einen Verweis auf den Speicherort der Datenquelle sowie eine Kopie der zugehörigen Metadaten. Da die Daten an ihrem bisherigen Speicherort verbleiben, entstehen Ihnen keine zusätzlichen Speicherkosten und Sie riskieren nicht die Integrität Ihrer Datenquellen.
Weitere Informationen finden Sie unter Erstellen und Registrieren von Azure Machine Learning Datasets. Weitere Beispiele für die Verwendung von Datasets finden Sie in den Beispielnotebooks.
Datasets verwenden Datenspeicher, um eine sichere Verbindung mit ihren Azure-Speicherdiensten herzustellen. Datenspeicher speichern Verbindungsinformationen ohne Ihre Anmeldeinformationen für die Authentifizierung und die Integrität Ihrer ursprünglichen Datenquelle zu gefährden. Darin werden Verbindungsinformationen wie Ihre Abonnement-ID und die Tokenautorisierung in Ihrer mit dem Arbeitsbereich verknüpften Key Vault-Instanz gespeichert, damit Sie sicher auf Ihren Speicher zuzugreifen können, ohne diese Informationen in Ihren Skripts hartcodieren zu müssen.
Umgebungen
Arbeitsbereich>Umgebungen
Eine Umgebung ist die Kapselung der Umgebung, in der das Training oder die Bewertung Ihres Machine Learning-Modells stattfindet. Die Umgebung gibt die Python-Pakete, Umgebungsvariablen und Softwareeinstellungen bezüglich Ihrer Trainings- und Bewertungsskripts an.
Codebeispiele finden Sie im Abschnitt „Verwalten von Umgebungen“ unter Verwenden von Umgebungen.
Experimente
Arbeitsbereich>Experimente
Ein Experiment ist eine Gruppierung vieler Ausführungen aus einem bestimmten Skript. Es gehört immer zu einem Arbeitsbereich. Beim Übermitteln einer Ausführung geben Sie einen Experimentnamen an. Die Informationen für die Ausführung werden unter diesem Experiment gespeichert. Wenn der Name nicht vorhanden ist, wenn Sie ein Experiment übermitteln, wird automatisch ein neues Experiment erstellt.
Ein Beispiel zum Verwenden eines Experiments finden Sie im Tutorial: Trainieren Ihres ersten Modells.
Ausführungen
Arbeitsbereich>Experimente>Ausführen
Eine Ausführung ist eine einzelne Ausführung eines Trainingsskripts. Ein Experiment enthält in der Regel mehrere Durchläufe.
Azure Machine Learning zeichnet alle Ausführungen auf und speichert die folgenden Informationen im Experiment:
- Metadaten zur Ausführung (Zeitstempel, Dauer usw.)
- Metriken, die von Ihrem Skript protokolliert werden
- Ausgabedateien, die automatisch vom Experiment gesammelt oder explizit von Ihnen hochgeladen werden
- Eine Momentaufnahme des Verzeichnisses, in dem Ihre Skripts enthalten sind, vor der Ausführung
Eine Ausführung wird ausgelöst, wenn Sie ein Skript zum Trainieren eines Modells übermitteln. Eine Ausführung kann über null oder mehr untergeordnete Elemente verfügen. Die Ausführung der obersten Ebene weist also unter Umständen zwei untergeordnete Ausführungen auf, die beide jeweils selbst eine untergeordnete Ausführung aufweisen können.
Laufzeitkonfigurationen
Arbeitsbereich>Experimente>Ausführen>Ausführen der Konfiguration
Eine Ausführungskonfiguration definiert, wie ein Skript in einem bestimmten Computeziel ausgeführt werden sollte. Verwenden Sie die Konfiguration, um das Skript, das Computeziel und die Azure Machine Learning-Umgebung für die Ausführung sowie Konfigurationen speziell für verteilte Aufträge und einige zusätzliche Eigenschaften anzugeben. Weitere Informationen zum vollständigen Satz konfigurierbarer Optionen für Ausführungen finden Sie unter ScriptRunConfig.
Eine Laufzeitkonfiguration kann in einer Datei in dem Verzeichnis, in dem Ihr Trainingsskript enthalten ist, beständig gespeichert werden. Alternativ kann sie als Objekt im Arbeitsspeicher erstellt und zum Übermitteln einer Ausführung verwendet werden.
Beispiele für Ausführungskonfigurationen finden Sie unter Konfigurieren einer Trainingsausführung.
Momentaufnahmen
Arbeitsbereich>Experimente>Ausführen>Momentaufnahme
Beim Übermitteln einer Ausführung komprimiert Azure Machine Learning das Verzeichnis, in dem das Skript als ZIP-Datei enthalten ist, und sendet es an das Computeziel. Die ZIP-Datei wird dann extrahiert, und das Skript wird ausgeführt. Azure Machine Learning speichert die ZIP-Datei im Rahmen der Ausführungsaufzeichnung zudem als Momentaufnahme. Alle Benutzer mit Zugriff auf den Arbeitsbereich können eine Ausführungsaufzeichnung durchsuchen und die Momentaufnahme herunterladen.
Protokollierung
Standardmäßige Ausführungsmetriken werden von Azure Machine Learning automatisch protokolliert. Sie können jedoch auch das Python SDK verwenden, um beliebige Metriken zu protokollieren.
Es gibt mehrere Möglichkeiten zum Anzeigen ihrer Protokolle: Überwachen des Ausführungsstatus in Echtzeit oder Anzeigen der Ergebnisse nach Abschluss. Weitere Informationen finden Sie unter Überwachen und Anzeigen von ML-Ausführungsprotokollen.
Hinweis
Um zu verhindern, dass nicht benötigte Dateien in die Momentaufnahme eingeschlossen werden, erstellen Sie im Verzeichnis eine Ignore-Datei (.gitignore
oder .amlignore
). Fügen Sie dieser Datei die Dateien und Verzeichnisse hinzu, die ignoriert werden sollen. Weitere Informationen zur Syntax, die in dieser Datei zu verwenden ist, finden Sie unter Syntax und Muster für .gitignore
. Die .amlignore
-Datei verwendet die gleiche Syntax. Wenn beide Dateien vorhanden sind, wird die Datei .amlignore
verwendet, und die Datei .gitignore
wird nicht verwendet.
Git-Nachverfolgung und -Integration
Wenn Sie eine Trainingsausführung starten, bei der das Quellverzeichnis ein lokales Git-Repository ist, werden Informationen über das Repository im Ausführungsverlauf gespeichert. Dies funktioniert für Ausführungen, die über eine Skriptausführungskonfiguration oder eine ML-Pipeline übermittelt werden. Dies funktioniert auch für Ausführungen, die aus dem SDK oder der Machine Learning-CLI übermittelt wurden.
Weitere Informationen finden Sie unter Git-Integration für Azure Machine Learning.
Trainingsworkflow
Wenn Sie ein Experiment ausführen, um ein Modell zu trainieren, werden die folgenden Schritte ausgeführt. Diese werden im folgenden Diagramm zum Trainingsworkflow veranschaulicht:
Azure Machine Learning wird mit der Momentaufnahmen-ID für die im vorherigen Abschnitt gespeicherte Codemomentaufnahme aufgerufen.
Azure Machine Learning erstellt eine Ausführungs-ID (optional) und ein Azure Machine Learning-Token, das später von Computezielen wie Machine Learning Compute/VMs für die Kommunikation mit Machine Learning verwendet wird.
Sie können entweder ein verwaltetes Computeziel (wie Machine Learning Compute) oder ein nicht verwaltetes Computeziel (wie VMs) auswählen, um Trainingsaufträge auszuführen. Im Folgenden finden Sie die Datenflüsse für beide Szenarien:
- VMs/HDInsight, Zugriff erfolgt über SSH-Anmeldeinformationen in einem Schlüsseltresor im Microsoft-Abonnement. Azure Machine Learning führt verwalteten Code auf dem Computeziel aus, der die folgenden Aktionen ausführt:
- Vorbereiten der Umgebung (Docker ist eine Option für VMs und lokale Computer. In den folgenden Schritten für Machine Learning Compute erfahren Sie, wie die Ausführung von Experimenten in Docker-Containern funktioniert.)
- Herunterladen des Codes
- Einrichten von Umgebungsvariablen und Konfigurationen
- Ausführen von Benutzerskripts (die im vorherigen Abschnitt genannte Codemomentaufnahme)
- Machine Learning Compute, Zugriff erfolgt über eine vom Arbeitsbereich verwaltete Identität. Da Machine Learning Compute ein verwaltetes Computeziel ist (d. h. es wird von Microsoft verwaltet), wird es unter Ihrem Microsoft-Abonnement ausgeführt.
- Starten der Docker-Remotekonstruktion (sofern erforderlich)
- Schreiben des Verwaltungscodes in die Azure Files-Freigabe des Benutzers
- Starten des Containers mit einem ersten Befehl. Dies ist der Verwaltungscode, der im vorherigen Schritt beschrieben wurde.
Nachdem die Ausführung abgeschlossen ist, können Sie Ausführungen und Metriken abfragen. Im folgenden Flussdiagramm wird dieser Schritt ausgeführt, wenn das Trainingscomputeziel die Ausführungsmetriken aus dem Speicher in der Azure Cosmos DB-Datenbank an Azure Machine Learning zurückschreibt. Clients können Azure Machine Learning aufrufen. Machine Learning pullt wiederum die Metriken aus der Azure Cosmos DB-Datenbank und gibt sie an den Client zurück.
Modelle
Im einfachsten Fall ist ein Modell ein Codeabschnitt, für den eine Eingabe verwendet wird, um eine Ausgabe zu erzeugen. Die Erstellung eines Machine Learning-Modells umfasst die Auswahl eines Algorithmus, die Bereitstellung der zugehörigen Daten und die Optimierung von Hyperparametern. Das Training ist ein iterativer Prozess, bei dem ein trainiertes Modell mit den während des Trainingsprozesses erlernten Informationen erzeugt wird.
Sie können ein Modell verwenden, das außerhalb von Azure Machine Learning trainiert wurde. Oder Sie können ein Modell trainieren, indem Sie eine Ausführung eines Experiments an ein Computeziel in Azure Machine Learning übermitteln. Sobald Sie ein fertiges Modell haben, registrieren Sie es im Arbeitsbereich.
Azure Machine Learning ist „framework-agnostisch“. Wenn Sie ein Modell erstellen, können Sie alle gängigen Frameworks für maschinelles Lernen verwenden, wie Scikit-learn, XGBoost, PyTorch, TensorFlow und Chainer.
Ein Beispiel zum Trainieren eines Modells mittels Scikit-learn finden Sie im Tutorial: Trainieren eines Bildklassifizierungsmodells mit Azure Machine Learning.
Modellregistrierung
Arbeitsbereich>Modelle
Mit der Modellregistrierung können Sie alle Modelle in Ihrem Azure Machine Learning-Arbeitsbereich verfolgen.
Die Modelle werden anhand des Namens und der Version identifiziert. Jedes Mal, wenn Sie ein Modell mit dem gleichen Namen wie ein bereits vorhandenes Modell registrieren, geht die Registrierung davon aus, dass es sich um eine neue Version handelt. Die Version wird inkrementiert, und das neue Modell wird unter demselben Namen registriert.
Bei der Registrierung des Modells können Sie zusätzliche Metadatentags bereitstellen und diese Tags dann beim Suchen nach Modellen verwenden.
Tipp
Ein registriertes Modell ist ein logischer Container für eine oder mehrere Dateien, aus denen Ihr Modell besteht. Wenn Sie beispielsweise ein Modell verwenden, das in mehreren Dateien gespeichert ist, können Sie diese als einzelnes Modell in Ihrem Azure Machine Learning-Arbeitsbereich registrieren. Nach der Registrierung können Sie das registrierte Modell dann herunterladen oder bereitstellen und alle Dateien empfangen, die registriert wurden.
Sie können kein registriertes Modell löschen, das von einer aktiven Bereitstellung verwendet wird.
Ein Beispiel für das Registrieren eines Modells finden Sie unter Trainieren eines Bildklassifizierungsmodells mit Azure Machine Learning Service.
Bereitstellung
Sie stellen ein registriertes Modell als Dienstendpunkt bereit. Sie benötigen folgende Komponenten:
- Umgebung. Diese Umgebung kapselt die Abhängigkeiten, die zur Ausführung Ihres Modells für Rückschlüsse erforderlich sind.
- Bewertungscode. Dieses Skript akzeptiert Anforderungen, bewertet die Anforderungen über Verwenden des Modells und gibt die Ergebnisse zurück.
- Rückschlusskonfiguration. Die Rückschlusskonfiguration gibt die Umgebung, das Eingabeskript und andere Komponenten an, die zur Ausführung des Modells als Dienst benötigt werden.
Weitere Informationen zu diesen Komponenten finden Sie unter Bereitstellen von Modellen mit Azure Machine Learning.
Endpunkte
Arbeitsbereich>Endpunkte
Ein Endpunkt ist eine Instanziierung Ihres Modells in einem Webdienst, der in der Cloud gehostet werden kann.
Webdienst-Endpunkt
Wenn Sie ein Modell als Webdienst bereitstellen, kann der Endpunkt auf Azure Container Instances oder Azure Kubernetes Service bereitgestellt werden. Sie erstellen den Dienst aus Ihrem Modell, dem Skript und zugeordneten Dateien. Diese werden in ein Basiscontainerimage eingefügt, das die Ausführungsumgebung für das Modell enthält. Das Image verfügt über einen HTTP-Endpunkt mit Lastenausgleich, der die an den Webdienst gesendeten Bewertungsanforderungen empfängt.
Sie können Application Insights-Telemetrie oder Modelltelemetrie aktivieren, um den Webdienst zu überwachen. Die Telemetriedaten sind nur für Sie zugänglich. Sie werden in Ihren Application Insights- und Speicherkontoinstanzen gespeichert. Wenn Sie die automatische Skalierung aktiviert haben, führt Azure für Ihre Bereitstellung automatisch eine Skalierung durch.
Das folgende Diagramm zeigt den Workflow zum Ziehen von Rückschlüssen für ein Modell, das als Webdienstendpunkt bereitgestellt wird:
Es folgen die Details:
- Der Benutzer registriert ein Modell, indem er einen Client wie das Azure Machine Learning-SDK verwendet.
- Der Benutzer erstellt das Image mit einem Modell, einer Bewertungsdatei und anderen Modellabhängigkeiten.
- Das Docker-Image wird erstellt und in Azure Container Registry gespeichert.
- Der Webdienst wird auf dem Computeziel (Container Instances/AKS) mithilfe des Images bereitgestellt, das im vorherigen Schritt erstellt wurde.
- Details der Bewertung werden in Application Insights gespeichert (im Abonnement des Benutzers enthalten).
- Telemetriedaten werden ebenfalls mithilfe von Push an das Microsoft Azure-Abonnement übertragen.
Ein Beispiel für die Bereitstellung eines Modells als Webdienst finden Sie unter Tutorial: Trainieren und Bereitstellen eines Modells.
Echtzeitendpunkte
Wenn Sie ein trainiertes Modell im Designer bereitstellen, können Sie das Modell als Echtzeitendpunkt bereitstellen. Ein Echtzeitendpunkt empfängt in der Regel eine einzelne Anforderung über den REST-Endpunkt und gibt eine Vorhersage in Echtzeit zurück. Dies steht im Gegensatz zur Batchverarbeitung, bei der mehrere Werte gleichzeitig verarbeitet werden und die Ergebnisse nach Abschluss in einem Datenspeicher gespeichert werden.
Pipelineendpunkte
Mithilfe von Pipelineendpunkten können Sie Ihre ML-Pipelines programmgesteuert über einen REST-Endpunkt abrufen. Mit Pipelineendpunkten lassen sich Pipelineworkflows automatisieren.
Ein Pipelineendpunkt ist eine Sammlung veröffentlichter Pipelines. Diese logische Anordnung ermöglicht Ihnen die Verwaltung und den Aufruf mehrerer Pipelines mithilfe desselben Endpunkts. Jede veröffentlichte Pipeline in einem Pipelineendpunkt verfügt über eine Versionsangabe. Sie können eine Standardpipeline für den Endpunkt auswählen oder im REST-Befehl eine Version angeben.
Automation
Azure Machine Learning-CLI
Die Azure Machine Learning-CLI v1 ist eine Erweiterung der Azure CLI, eine plattformübergreifende Befehlszeilenschnittstelle für die Azure-Plattform. Diese Erweiterung bietet Befehle zum Automatisieren Ihrer Machine Learning-Aktivitäten.
ML-Pipelines
Machine Learning-Pipelines werden zum Erstellen und Verwalten von Workflows verwendet, die Machine Learning-Phasen zusammenfügen. Eine Pipeline kann beispielsweise eine Datenaufbereitungs-, eine Modelltrainings-, eine Modellimplementierungs- und eine Rückschluss-/Bewertungsphase enthalten. Jede Phase kann mehrere Schritte umfassen, von denen wiederum jeder Schritt auf verschiedenen Computezielen unbeaufsichtigt ausgeführt werden kann.
Pipelineschritte sind wiederverwendbar und können ohne erneute Ausführung der vorherigen Schritte ausgeführt werden, wenn sich die Ausgabe dieser Schritte nicht geändert hat. Beispielsweise können Sie ein Modell erneut trainieren, ohne teure Schritte zur Datenvorbereitung erneut auszuführen, wenn sich die Daten nicht geändert haben. Pipelines ermöglichen Data Scientists auch, bei der Arbeit an separaten Bereichen eines Machine Learning-Workflows zusammenzuarbeiten.
Überwachung und Protokollierung
Azure Machine Learning verfügt über die folgenden Funktionen für die Überwachung und Protokollierung:
- Data Scientists (Wissenschaftliche Fachkräfte für Daten) können ihre Experimente und Protokollinformationen über unsere Trainingsausführungen überwachen. Weitere Informationen finden Sie in den folgenden Artikeln:
- Administratoren können ihre Informationen zum Arbeitsbereich und zu den relevanten Azure-Ressourcen und Ereignissen, z. B. Erstellen und Löschen von Ressourcen, mit Azure Monitor überwachen. Weitere Informationen finden Sie unter Überwachen von Azure Machine Learning.
- Für DevOps bzw. MLOps können generierte Informationen von Modellen, die als Webdienste bereitgestellt werden, überwacht werden. Dies ermöglicht das Identifizieren von Problemen mit den Bereitstellungen und das Sammeln der an den Dienst übermittelten Daten. Weitere Informationen finden Sie unter Sammeln von Modelldaten und Überwachen mit Application Insights.
Interaktion mit Ihrem Arbeitsbereich
Studio
Azure Machine Learning Studio stellt eine Webansicht aller Artefakte in Ihrem Arbeitsbereich bereit. Sie können Ergebnisse und Details zu ihren Datasets, Experimenten, Pipelines, Modellen und Endpunkten anzeigen. Sie können auch Computeressourcen und Datenspeicher in Studio verwalten.
In Studio greifen Sie auch auf die interaktiven Tools zu, die Teil von Azure Machine Learning sind:
- Azure Machine Learning-Designer zur Ausführung der Workflowschritte ohne Programmierung
- Weboberfläche für automatisiertes maschinelles Lernen
- Azure Machine Learning-Notebooks zum Schreiben und Ausführen Ihres eigenen Code in integrierten Jupyter Notebook-Servern
- Datenbeschriftungsprojekte zum Erstellen, Verwalten und Überwachen von Projekten zum Beschriften von Bildern oder Text.
Programmiertools
Wichtig
Die unten markierten Tools (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Die Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
- Interagieren Sie mit dem Dienst in einer beliebigen Python-Umgebung, indem Sie das Azure Machine Learning SDK für Python verwenden.
- Verwenden Sie den Azure Machine Learning-Designer, um die Workflowschritte auszuführen – ganz ohne Programmierung.
- Verwenden Sie die Azure Machine Learning-CLI zur Automatisierung.
Nächste Schritte
Informationen zu den ersten Schritten mit Azure Machine Learning finden Sie unter: