Verwalten von Azure Machine Learning-Umgebungen mit Befehlszeilenschnittstelle und SDK (v2)

GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

Mithilfe von Azure Machine Learning-Umgebungen werden die Ausführungsumgebungen für Ihre Aufträge oder Bereitstellungen definiert und die Abhängigkeiten für Ihren Code gekapselt. Azure Machine Learning verwendet die Umgebungsspezifikation, um den Docker-Container zu erstellen, in dem Ihr Trainings- oder Bewertungscode auf dem angegebenen Computeziel ausgeführt wird. Sie können eine Umgebung in einer Conda-Spezifikation, einem Docker-Image oder einem Docker-Buildkontext definieren.

In diesem Artikel erfahren Sie, wie Sie Azure Machine Learning-Umgebungen mithilfe von SDK und CLI (v2) erstellen und verwalten.

Voraussetzungen

Stellen Sie vor dem Ausführen der Schritte in diesem Artikel sicher, dass Sie über die folgenden erforderlichen Komponenten verfügen:

  • Ein Azure Machine Learning-Arbeitsbereich. Wenn keiner vorliegt, führen Sie die Schritte unter Schnellstart: Erstellen von Arbeitsbereichsressourcen aus, um einen Arbeitsbereich zu erstellen.

  • Die Azure CLI und die ml-Erweiterung oder das Azure Machine Learning Python SDK v2:

    • Informationen zum Installieren der Azure CLI und der Erweiterung finden Sie unter Installieren, Einrichten und Verwenden der CLI (v2).

      Wichtig

      In den CLI-Beispielen in diesem Artikel wird davon ausgegangen, dass Sie die Bash-Shell (oder eine kompatible Shell) verwenden, beispielsweise über ein Linux-System oder ein Windows-Subsystem für Linux.

    • Verwenden Sie zum Installieren des Python SDK v2 den folgenden Befehl:

      pip install azure-ai-ml azure-identity
      

      Verwenden Sie den folgenden Befehl, um eine vorhandene Installation des SDK auf die neueste Version zu aktualisieren:

      pip install --upgrade azure-ai-ml azure-identity
      

      Weitere Informationen finden Sie unter Installieren des Python SDK v2 für Azure Machine Learning.

Tipp

Verwenden Sie für eine umfassende Entwicklungsumgebung Visual Studio Code und die Azure Machine Learning-Erweiterung, um Azure Machine Learning-Ressourcen zu verwalten und Machine Learning-Modelle zu trainieren.

Repository für Klonbeispiele

Klonen Sie zum Ausführen der Trainingsbeispiele zunächst das Repository mit den Beispielen. Wechseln Sie für die CLI-Beispiele zum Verzeichnis cli. Wechseln Sie für die SDK-Beispiele zum Verzeichnis sdk/python/assets/environment:

git clone --depth 1 https://github.com/Azure/azureml-examples

Beachten Sie, dass --depth 1 nur den neuesten Commit in das Repository klont, wodurch die Zeit zum Abschließen des Vorgangs reduziert wird.

Herstellen einer Verbindung mit dem Arbeitsbereich

Tipp

Wählen Sie über die folgenden Registerkarten unten die Methode aus, die Sie für die Arbeit mit Umgebungen verwenden möchten. Wenn Sie eine Registerkarte auswählen, werden automatisch alle Registerkarten in diesem Artikel auf die gleiche Registerkarte umgestellt. Sie können jederzeit eine andere Registerkarte auswählen.

Bei Verwendung der Azure CLI benötigen Sie Bezeichnerparameter – ein Abonnement, eine Ressourcengruppe und einen Arbeitsbereichsnamen. Sie können diese Parameter für jeden Befehl angeben, können aber auch Standardeinstellungen festlegen, die für alle Befehle verwendet werden. Verwenden Sie die folgenden Befehle, um Standardwerte festzulegen. Ersetzen Sie <subscription ID>, <Azure Machine Learning workspace name> und <resource group> durch die Werte für Ihre Konfiguration:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Zusammengestellte Umgebungen

Es gibt zwei Arten von Umgebungen in Azure Machine Learning: kuratierte und benutzerdefinierte Umgebungen. Kuratierte (zusammengestellte) Umgebungen sind vordefinierte Umgebungen, die beliebte ML-Frameworks und -Tools enthalten. Benutzerdefinierte Umgebungen werden von den Benutzer*innen konfiguriert und können über az ml environment create erstellt werden.

Zusammengestellte Umgebungen werden von Azure Machine Learning bereitgestellt und sind standardmäßig verfügbar. Azure Machine Learning aktualisiert diese Umgebungen routinemäßig mit den neuesten Frameworkversionsreleases und verwaltet sie mit Fehlerbehebungen und Sicherheitspatches. Sie werden durch zwischengespeicherte Docker-Images unterstützt, wodurch sich die Kosten für die Auftragsvorbereitung und die Zeit für die Modellimplementierung reduzieren.

Sie können diese kuratierten Umgebungen unverändert für das Training oder die Bereitstellung verwenden, indem Sie auf eine bestimmte Version oder die neueste Version der Umgebung verweisen. Verwenden Sie die folgende Syntax: azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> oder azureml://registries/azureml/environment/<curated-environment-name>/labels/latest. Sie können sie auch als Verweis auf Ihre eigenen benutzerdefinierten Umgebungen verwenden, indem Sie die Dockerfiles für diese kuratierten Umgebungen ändern.

Sie können die verfügbaren kuratierten Umgebungen auf der Benutzeroberfläche von Azure Machine Learning Studio oder mithilfe der CLI (v2) über az ml environment list anzeigen.

Tipp

Beim Arbeiten mit kuratierten Umgebungen in der CLI oder dem SDK beginnt der Umgebungsname mit AzureML-, gefolgt von dem Namen der kuratierten Umgebung. Wenn Sie das Azure Machine Learning Studio verwenden, besitzen sie dieses Präfix nicht. Der Grund für diesen Unterschied besteht darin, dass die Studio-Benutzeroberfläche kuratierte und benutzerdefinierte Umgebungen auf separaten Registerkarten anzeigt, daher ist das Präfix nicht erforderlich. Die CLI und das SDK weisen diese Trennung nicht auf, sodass das Präfix verwendet wird, um zwischen kuratierten und benutzerdefinierten Umgebungen zu unterscheiden.

Erstellen einer benutzerdefinierten Umgebung

Sie können eine Umgebung auf der Grundlage eines Docker-Images, eines Docker-Buildkontexts und einer Conda-Spezifikation mit Docker-Image definieren.

Erstellen einer Umgebung aus einem Docker-Image

Um eine Umgebung aus einem Docker-Image zu definieren, geben Sie den Image-URI des Images an, das in einer Registrierung wie Docker Hub oder Azure Container Registry gehostet wird.

Das folgende Beispiel ist eine YAML-Spezifikationsdatei für eine Umgebung, die aus einem Docker-Image definiert wurde. Ein Image aus dem offiziellen PyTorch-Repository auf Docker Hub wird über die image-Eigenschaft in der YAML-Datei angegeben.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.

So erstellen Sie die Umgebung

az ml environment create --file assets/environment/docker-image.yml

Tipp

Azure Machine Learning verwaltet eine Reihe von CPU- und GPU-Basisimages auf Grundlage von Ubuntu Linux mit gemeinsamen Systemabhängigkeiten bereit. Die GPU-Images enthalten beispielsweise Miniconda, OpenMPI, CUDA, cuDNN und NCCL. Sie können diese Images für Ihre Umgebungen verwenden. Sie können auch die zugehörigen Dockerfiles als Referenz verwenden, wenn Sie eigene benutzerdefinierte Images erstellen.

Informationen zu den Basisimages und den zugehörigen Dockerfiles finden Sie im Repository „AzureML-Containers“.

Erstellen einer Umgebung aus einem Docker-Buildkontext

Anstatt eine Umgebung aus einem vordefinierten Image zu definieren, können Sie dafür auch einen Docker-Buildkontext verwenden. Geben Sie das Verzeichnis an, das als Buildkontext dient. Dieses Verzeichnis sollte eine Dockerfile-Datei (nicht größer als 1 MB) und alle anderen Dateien enthalten, die zum Erstellen des Images erforderlich sind.

Das folgende Beispiel ist eine YAML-Spezifikationsdatei für eine Umgebung, die aus einem Buildkontext definiert wurde. Der lokale Pfad zum Buildkontextordner wird im Feld build.path angegeben, und der relative Pfad zum Dockerfile innerhalb dieses Buildkontextordners wird im Feld build.dockerfile_path angegeben. Wenn build.dockerfile_path in der YAML-Datei ausgelassen wird, sucht Azure Machine Learning im Stamm des Buildkontexts nach einem Dockerfile mit dem Namen Dockerfile.

In diesem Beispiel enthält der Buildkontext ein Dockerfile namens Dockerfile und die Datei requirements.txt, auf die im Dockerfile zum Installieren von Python-Paketen verwiesen wird.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-context-example
build:
  path: docker-contexts/python-and-pip

So erstellen Sie die Umgebung

az ml environment create --file assets/environment/docker-context.yml

Azure Machine Learning beginnt mit dem Erstellen des Images aus dem Buildkontext, wenn die Umgebung erstellt wurde. Sie können den Buildstatus überwachen und die Buildprotokolle auf der Studio-Benutzeroberfläche anzeigen.

Erstellen einer Umgebung aus einer Conda-Spezifikation

Sie können eine Umgebung mithilfe einer standardmäßigen Conda-YAML-Konfigurationsdatei definieren, in der die Abhängigkeiten für die Conda-Umgebung enthalten sind. Informationen zu diesem Standardformat finden Sie unter Manuelles Erstellen einer Umgebung.

Sie müssen auch ein Docker-Basisimage für diese Umgebung angeben. Azure Machine Learning erstellt die Conda-Umgebung im bereitgestellten Docker-Image. Wenn Sie Python-Abhängigkeiten in Ihrem Docker-Image installieren, sind diese Pakete in der Ausführungsumgebung nicht vorhanden, was zu Laufzeitfehlern führt. Standardmäßig erstellt Azure Machine Learning eine Conda-Umgebung mit den von Ihnen angegebenen Abhängigkeiten und führt den Auftrag in dieser Umgebung aus, anstatt Python-Bibliotheken zu verwenden, die Sie im Basisimage installiert haben.

Das folgende Beispiel ist eine YAML-Spezifikationsdatei für eine Umgebung, die aus einer Conda-Spezifikation definiert wurde. Hier wird der relative Pfad zur Conda-Datei in der YAML-Datei der Azure Machine Learning-Umgebung über die conda_file-Eigenschaft angegeben. Alternativ können Sie die Conda-Spezifikation auch inline mithilfe der conda_file-Eigenschaft definieren, anstatt sie in einer separaten Datei anzugeben.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-plus-conda-example
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: conda-yamls/pydata.yml
description: Environment created from a Docker image plus Conda environment.

So erstellen Sie die Umgebung

az ml environment create --file assets/environment/docker-image-plus-conda.yaml

Azure Machine Learning erstellt das endgültige Docker-Image aus dieser Umgebungsspezifikation, wenn die Umgebung in einem Auftrag oder einer Bereitstellung verwendet wird. Sie können einen Build der Umgebung auch manuell auf der Studio-Benutzeroberfläche auslösen.

Verwalten von Umgebungen

Mit dem SDK und der CLI (v2) können Sie auch den Lebenszyklus der Objekte Ihrer Azure Machine Learning-Umgebung verwalten.

List

Auflisten aller Umgebungen in Ihrem Arbeitsbereich:

az ml environment list

Auflisten aller Umgebungsversionen unter einem bestimmten Namen:

az ml environment list --name docker-image-example

Anzeigen

Abrufen von Details zu einer bestimmten Umgebung:

az ml environment show --name docker-image-example --version 1

Aktualisieren

Aktualisieren änderbarer Eigenschaften einer bestimmten Umgebung:

az ml environment update --name docker-image-example --version 1 --set description="This is an updated description."

Wichtig

Bei Umgebungen können nur description und tags aktualisiert werden. Alle anderen Eigenschaften sind unveränderlich. Wenn Sie eine dieser Eigenschaften ändern möchten, müssen Sie eine neue Version der Umgebung erstellen.

Archivieren

Beim Archivieren einer Umgebung wird sie standardmäßig in Listenabfragen (az ml environment list) angezeigt. Sie können weiterhin auf eine archivierte Umgebung in Ihren Workflows verweisen und diese verwenden. Sie können entweder alle Versionen einer Umgebung archivieren oder nur eine bestimmte Version.

Wenn Sie keine Version angeben, werden alle Versionen der Umgebung unter dem angegebenen Namen archiviert. Wenn Sie eine neue Umgebungsversion unter einem archivierten Umgebungscontainer erstellen, wird diese neue Version automatisch auch als archiviert festgelegt.

Archiven aller Versionen einer Umgebung:

az ml environment archive --name docker-image-example

Archivieren einer bestimmten Umgebungsversion:

az ml environment archive --name docker-image-example --version 1

Wichtig

Bei der Archivierung einer Umgebungsversion wird das in der Containerregistrierung zwischengespeicherte Image nicht gelöscht. Wenn Sie das mit einer bestimmten Umgebung verknüpfte zwischengespeicherte Bild löschen möchten, können Sie den Befehl az acr repository delete verwenden, um das zugeordnete Repository der Umgebung zu löschen.

Verwenden von Umgebungen für das Training

Um eine benutzerdefinierte Umgebung für einen Trainingsauftrag zu verwenden, geben Sie das Feld „environment“ der YAML-Konfiguration des Auftrags an. Sie können entweder über environment: azureml:<environment-name>:<environment-version> oder environment: azureml:<environment-name>@latest auf eine vorhandene registrierte Azure Machine Learning-Umgebung verweisen (um auf die neueste Version einer Umgebung zu verweisen) oder eine Umgebungsspezifikation inline definieren. Wenn Sie eine Umgebung inline definieren, geben Sie die Felder name und version nicht an, da diese Umgebungen als „unregistrierte“ Umgebungen behandelt und nicht in der Ressourcenregistrierung Ihrer Umgebung nachverfolgt werden.

Wenn Sie einen Trainingsauftrag übermitteln, kann das Erstellen einer neuen Umgebung einige Minuten dauern. Die Dauer hängt von der Größe der erforderlichen Abhängigkeiten ab. Die Umgebungen werden vom Dienst zwischengespeichert. Sofern die Umgebungsdefinition unverändert bleibt, wird die gesamte Setupzeit nur einmal in Anspruch genommen.


Weitere Informationen zur Verwendung von Umgebungen in Aufträgen finden Sie unter Trainieren von Modellen.

Verwenden von Umgebungen für Modellimplementierungen

Sie können Umgebungen für Ihre Modellimplementierungen auch für die Online- und die Batchbewertung verwenden. Geben Sie dazu das Feld environment in der YAML-Konfiguration für die Bereitstellung an.

Weitere Informationen zur Verwendung von Umgebungen in Bereitstellungen finden Sie unter Bereitstellen und Bewerten eines Machine Learning-Modells mithilfe eines Onlineendpunkts.

Nächste Schritte