Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Machine Learning-Umgebungen kapseln die Umgebung, in der Ihre Machine Learning-Schulung oder -Ableitung erfolgt. Sie geben die Python-Pakete und Softwareeinstellungen für Ihre Schulungs- und Bewertungsskripts an. Der Machine Learning-Arbeitsbereich verwaltet und versionst diese Umgebungen, wodurch reproduzierbare, überprüfbare und tragbare Machine Learning-Workflows für verschiedene Computeziele ermöglicht werden. Verwenden Sie ein Environment Objekt, um:
- Entwickeln Sie Ihr Trainingsskript.
- Verwenden Sie dieselbe Umgebung in Azure Machine Learning Compute für das skalierte Modelltraining wieder.
- Stellen Sie Ihr Modell in derselben Umgebung bereit.
- Überprüfen Sie die Umgebung, in der ein bestehendes Modell trainiert wurde.
Das folgende Diagramm veranschaulicht, wie Sie ein einzelnes Environment-Objekt sowohl in Ihrer Auftragskonfiguration (für Trainingszwecke) als auch in Ihrer Rückschluss- und Bereitstellungskonfiguration (für Webdienstbereitstellungen) verwenden können.
Die Umgebung, das Computeziel und das Trainingsskript bilden zusammen die Auftragskonfiguration: die vollständige Spezifikation eines Trainingsauftrags.
Typen von Umgebungen
Umgebungen sind in drei Kategorien unterteilt: kuratiert, vom Benutzer verwaltet und vom System verwaltet.
Zusammengestellte Umgebungen werden von Azure Machine Learning bereitgestellt und sind standardmäßig in Ihrem Arbeitsbereich verfügbar. Verwenden Sie sie wie folgt. Sie enthalten Sammlungen von Python-Paketen und -Einstellungen, die Ihnen bei den ersten Schritten mit verschiedenen Machine Learning Frameworks helfen. Diese vorab erstellten Umgebungen ermöglichen auch eine schnellere Bereitstellung. Azure Machine Learning hostet kuratierte Umgebungen in der AzureML-Registrierung, bei der es sich um eine von Microsoft gehostete Machine Learning-Registrierung handelt. Eine vollständige Liste finden Sie unter Umgebungen in der AzureML-Registrierung.
In benutzerverwalteten Umgebungen sind Sie für die Einrichtung Ihrer Umgebung und die Installation aller Pakete, die Ihr Trainingsskript auf dem Computeziel benötigt, verantwortlich. Stellen Sie außerdem sicher, dass Sie alle Abhängigkeiten einschließen, die für die Modellbereitstellung erforderlich sind. Die vom Benutzer verwaltete Umgebung kann BYOC-basiert (Bring Your Own Container) sein oder auf dem Docker-Buildkontext basieren, der die Imagematerialisierung an Azure Machine Learning delegiert. Ähnlich wie kuratierte Umgebungen können Sie vom Benutzer verwaltete Umgebungen über Arbeitsbereiche hinweg freigeben, indem Sie eine Machine Learning-Registrierung verwenden, die Sie erstellen und verwalten.
Verwenden Sie vom System verwaltete Umgebungen, wenn Conda die Python-Umgebung für Sie verwalten soll. Eine neue Conda-Umgebung wird aus Ihrer Conda-Spezifikation auf Grundlage eines Docker-Basisimages materialisiert.
Erstellen und Verwalten von Umgebungen
Sie können Umgebungen mit dem Python SDK für Azure Machine Learning, der Azure Machine Learning-CLI (Command Line Interface, Befehlszeilenschnittstelle), Azure Machine Learning Studio und der VS Code-Erweiterung erstellen. Mit jedem Client können Sie das Basisimage, Dockerfile und Python-Layer bei Bedarf anpassen.
Bestimmte Codebeispiele finden Sie im Abschnitt „Erstellen einer Umgebung“ unter Verwenden von Umgebungen.
Sie können Umgebungen auch über Ihren Arbeitsbereich verwalten. Mit Ihrem Arbeitsbereich haben Sie folgende Möglichkeiten:
- Registrieren von Umgebungen
- Abrufen von Umgebungen aus Ihrem Arbeitsbereich, die für das Training oder die Bereitstellung verwendet werden sollen
- Erstellen einer neuen Instanz einer Umgebung, indem Sie eine vorhandene bearbeiten
- Betrachten von Änderungen an Ihren Umgebungen im Laufe der Zeit, was die Reproduzierbarkeit sicherstellt
- Automatisches Erstellen von Docker-Images aus Ihren Umgebungen
Wenn Sie ein Experiment übermitteln, registriert der Dienst automatisch "anonyme" Umgebungen in Ihrem Arbeitsbereich. Diese Umgebungen werden nicht aufgeführt, aber Sie können die Version verwenden, um sie abzurufen.
Codebeispiele finden Sie im Abschnitt „Verwalten von Umgebungen“ unter Verwenden von Umgebungen.
Erstellen, Zwischenspeichern und Wiederverwenden von Umgebungen
Azure Machine Learning erstellt Umgebungsdefinitionen für Docker-Images. Außerdem werden die Umgebungen zwischengespeichert, sodass Sie sie in nachfolgenden Schulungsaufträgen und Dienstendpunktbereitstellungen wiederverwenden können. Die Remoteausführung eines Trainingsskripts erfordert die Erstellung eines Docker-Images. Standardmäßig verwaltet Azure Machine Learning das Ziel für die Imageerstellung mit dem verfügbaren Kontingent für serverloses Computing des Arbeitsbereichs, wenn für den Arbeitsbereich keine dedizierte Computeressource festgelegt ist.
Hinweis
Netzwerkeinschränkungen im Azure Machine Learning-Arbeitsbereich können ein dediziertes vom Benutzer verwaltetes Computesetup für die Imageerstellung erfordern. Führen Sie die Schritte aus, um Arbeitsbereichressourcen zu sichern.
Übermitteln eines Auftrags mithilfe einer Umgebung
Wenn Sie einen Remoteauftrag zuerst mithilfe einer Umgebung übermitteln oder eine Umgebungsinstanz manuell erstellen, erstellt Azure Machine Learning ein Image für die bereitgestellte Spezifikation. Das resultierende Image wird in der Containerregistrierungsinstanz zwischengespeichert, die dem Arbeitsbereich zugeordnet ist. Kuratierte Umgebungen werden bereits in der Azure Machine Learning-Registrierung zwischengespeichert. Zu Beginn der Auftragsausführung ruft das Computeziel das Image aus der relevanten Containerregistrierung ab.
Erstellen von Umgebungen als Docker-Images
Wenn das Image für eine bestimmte Umgebungsdefinition noch nicht in der Containerregistrierungsinstanz vorhanden ist, die dem Azure Machine Learning-Arbeitsbereich zugeordnet ist, erstellt der Dienst ein neues Image. Für vom System verwaltete Umgebungen besteht der Imagebuildprozess aus zwei Schritten:
- Herunterladen eines Basisimages und Ausführen beliebiger Docker-Schritte
- Erstellen einer Conda-Umgebung gemäß den in der Umgebungsdefinition angegebenen Conda-Abhängigkeiten.
Für vom Benutzer verwaltete Umgebungen verwendet der Dienst die bereitgestellten Docker-Kontextbuilds unverändert. In diesem Fall sind Sie für die Installation von Python-Paketen verantwortlich, indem Sie sie in Ihr Basisimage einschließen oder benutzerdefinierte Docker-Schritte angeben.
Zwischenspeicherung und Wiederverwendung von Images
Wenn Sie dieselbe Umgebungsdefinition für einen anderen Auftrag verwenden, verwendet Azure Machine Learning das zwischengespeicherte Image aus der Containerregistrierung, die Ihrem Arbeitsbereich zugeordnet ist.
Um die Details eines zwischengespeicherten Images anzuzeigen, besuchen Sie die Seite „Umgebungen“ in Azure Machine Learning Studio, oder verwenden Sie MLClient.environments zum Abrufen und Überprüfen der Umgebung.
Um zu bestimmen, ob ein zwischengespeichertes Image wiederverwendet oder ein neues Image erstellt werden soll, berechnet Azure Machine Learning einen Hashwert aus der Umgebungsdefinition. Anschließend wird der Hash mit den Hashes vorhandener Umgebungen verglichen. Der Hash dient als eindeutiger Bezeichner für eine Umgebung und basiert auf den Umgebungsdefinitionen:
- Basisbild
- Benutzerdefinierte Docker-Schritte
- Python-Pakete
Der Name und die Version der Umgebung haben keine Auswirkungen auf den Hash. Wenn Sie Ihre Umgebung umbenennen oder eine neue Umgebung mit den gleichen Einstellungen und Paketen wie eine andere Umgebung erstellen, bleibt der Hashwert gleich. Umgebungsdefinitionsänderungen wie das Hinzufügen oder Entfernen eines Python-Pakets oder das Ändern einer Paketversion ändern jedoch den resultierenden Hashwert. Wenn die Reihenfolge von Abhängigkeiten oder Kanälen in einer Umgebung geändert wird, ändert sich der Hash, und es muss ein neues Image erstellt werden. Ebenso führt jede Änderung an einer zusammengestellten Umgebung zur Erstellung einer benutzerdefinierten Umgebung.
Hinweis
Sie können keine lokalen Änderungen an einer kuratierten Umgebung übermitteln, ohne den Namen der Umgebung zu ändern. Die Präfixe "AzureML-" und "Microsoft" sind ausschließlich für kuratierte Umgebungen reserviert, und Ihre Auftragsübermittlung schlägt fehl, wenn der Name mit einer der Beiden beginnt.
Der berechnete Hashwert der Umgebung wird mit den Hashes in der Containerregistrierung für den Arbeitsbereich verglichen. Wenn eine Übereinstimmung vorhanden ist, wird das zwischengespeicherte Bild abgerufen und verwendet. Ansonsten wird eine Image-Erstellung ausgelöst.
Das folgende Diagramm zeigt drei Umgebungsdefinitionen. Zwei davon haben unterschiedliche Namen und Versionen, aber identische Basisimages und Python-Pakete, was zu demselben Hash und dem entsprechenden zwischengespeicherten Image führt. Die dritte Umgebung weist verschiedene Python-Pakete und -Versionen auf und führt daher zu einem anderen Hash und zwischengespeicherten Image.
Tatsächliche zwischengespeicherte Images in Ihrer Containerregistrierung für den Arbeitsbereich haben Namen wie azureml/azureml_e9607b2514b066c851012848913ba19f mit dem Hash, der am Ende angezeigt wird.
Wichtig
Wenn Sie eine Umgebung mit einer getrennten Paketabhängigkeit erstellen – z. B.
numpy–, verwendet die Umgebung die Paketversion, die beim Erstellen der Umgebung verfügbar war. Jede zukünftige Umgebung, die eine übereinstimmende Definition verwendet, verwendet die ursprüngliche Version.Geben Sie zum Aktualisieren des Pakets eine Versionsnummer an, um eine Neuerstellung des Images zu erzwingen. Ein Beispiel für diese Änderung ist das Aktualisieren von
numpyaufnumpy==1.18.1. Neue Abhängigkeiten, einschließlich geschachtelter Abhängigkeiten, werden installiert, und sie können ein zuvor funktionierendes Szenario unterbrechen.Die Verwendung eines nicht angehefteten Basisimages wie
mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04in Ihrer Umgebungsdefinition kann dazu führen, dass das Bild jedes Mal neu erstellt wird, wenn daslatestTag aktualisiert wird. Dieses Verhalten hilft dem Image, die neuesten Patches und Systemupdates zu erhalten.
Patchen von Images
Microsoft behebt die bekannten Sicherheitslücken in den Basis-Images. Updates für unterstützte Bilder werden alle zwei Wochen veröffentlicht, und die neueste Version des Images verfügt nicht über nicht gepatchte Sicherheitsrisiken, die älter als 30 Tage sind. Gepatchte Bilder werden mit einem neuen unveränderlichen Tag veröffentlicht, und das :latest Tag wird auf die neueste Version des gepatchten Images aktualisiert.
Sie müssen die zugeordneten Azure Machine Learning-Ressourcen aktualisieren, um das neu gepatchte Image zu verwenden. Wenn Sie beispielsweise mit einem verwalteten Onlineendpunkt arbeiten, müssen Sie Ihren Endpunkt erneut bereitstellen, um das gepatchte Image zu verwenden.
Wenn Sie Ihre eigenen Images bereitstellen, sind Sie für deren Aktualisierung und die Aktualisierung der Azure Machine Learning-Ressourcen verantwortlich, von denen sie verwendet werden.
Weitere Informationen zu den Basisimages finden Sie unter den folgenden Links:
- Azure Machine Learning Basisimages GitHub Repository
- Verwenden eines benutzerdefinierten Containers zum Bereitstellen eines Modells in einem Onlineendpunkt
- Verwalten von Umgebungen und Containerimages
Zugehöriger Inhalt
- Erfahren Sie, wie Sie Umgebungen in Azure Machine Learning erstellen und verwenden.
- Die Umgebungsklasse finden Sie in der Referenzdokumentation des Python SDK.