Erstellen und Verwenden von benutzerdefinierten Umgebungen

Abgeschlossen

Wenn Sie ihre eigene Umgebung in Azure Machine Learning erstellen müssen, um alle erforderlichen Pakete, Bibliotheken und Abhängigkeiten zum Ausführen Ihrer Skripts auflisten zu können, können Sie benutzerdefinierte Umgebungen erstellen.

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

Erstellen einer benutzerdefinierten Umgebung aus einem Docker-Image

Der einfachste Ansatz besteht wahrscheinlich darin, eine Umgebung aus einem Docker-Image zu erstellen. Docker-Images können in einer öffentlichen Registrierung wie Docker Hub oder privat in einer Azure Container-Registrierung gehostet werden.

Viele Open-Source-Frameworks sind in öffentlichen Images gekapselt, die auf Docker Hub zu finden sind. So finden Sie beispielsweise ein öffentliches Docker-Image, das alle erforderlichen Pakete enthält, um ein Deep Learning-Modell mit PyTorch zu trainieren.

Um eine Umgebung aus einem Docker-Image zu erstellen, können Sie das Python SDK verwenden:

from azure.ai.ml.entities import Environment

env_docker_image = Environment(
    image="pytorch/pytorch:latest",
    name="public-docker-image-example",
    description="Environment created from a public Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

Sie können auch die Azure Machine Learning-Basisimages verwenden, um eine Umgebung zu erstellen (die den von kuratierten Umgebungen verwendeten Bildern ähnelt):

from azure.ai.ml.entities import Environment

env_docker_image = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    name="aml-docker-image-example",
    description="Environment created from a Azure ML Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

Erstellen einer benutzerdefinierten Umgebung mit einer Conda-Spezifikationsdatei

Obwohl Docker-Images alle erforderlichen Pakete enthalten, wenn Sie mit einem bestimmten Framework arbeiten, müssen Sie möglicherweise andere Pakete einschließen, um Ihren Code auszuführen.

Sie können z. B. ein Modell mit PyTorch trainieren und das Modell mit MLflow verfolgen.

Wenn Sie andere Pakete oder Bibliotheken in Ihre Umgebung einschließen müssen, können Sie beim Erstellen der Umgebung eine Conda-Spezifikationsdatei zu einem Docker-Image hinzufügen.

Eine Conda-Spezifikationsdatei ist eine YAML-Datei, die die Pakete auflistet, die mithilfe conda oder pipinstalliert werden müssen. Eine solche YAML-Datei kann wie folgt aussehen:

name: basic-env-cpu
channels:
  - conda-forge
dependencies:
  - python=3.7
  - scikit-learn
  - pandas
  - numpy
  - matplotlib

Tipp

Lesen Sie die Conda-Dokumentation zum manuellen Erstellen einer Umgebung, um Informationen über das Standardformat von Conda-Dateien zu erhalten.

Um eine Umgebung aus einem Docker-Basisimage und einer Conda-Spezifikationsdatei zu erstellen, können Sie den folgenden Code verwenden:

from azure.ai.ml.entities import Environment

env_docker_conda = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    conda_file="./conda-env.yml",
    name="docker-image-plus-conda-example",
    description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)

Hinweis

Da allen kuratierten Umgebungen AzureML vorangestellt ist, können Sie keine Umgebung mit demselben Präfix erstellen.

Eine Umgebung verwenden

In den meisten Fällen verwenden Sie Umgebungen, wenn Sie ein Skript als (Befehl) Auftragausführen möchten.

Wenn Sie angeben möchten, welche Umgebung zum Ausführen des Skripts verwendet werden soll, verweisen Sie auf eine Umgebung unter Verwendung der <curated-environment-name>:<version>- oder <curated-environment-name>@latest-Syntax.

Der folgende Code zeigt beispielsweise, wie Sie einen Befehlsauftrag mit dem Python SDK konfigurieren, das eine kuratierte Umgebung verwendet, einschließlich Scikit-Learn:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python train.py",
    environment="docker-image-plus-conda-example:1",
    compute="aml-cluster",
    display_name="train-custom-env",
    experiment_name="train-custom-env"
)

# submit job
returned_job = ml_client.create_or_update(job)

Wenn Sie den Auftrag übermitteln, wird die Umgebung erstellt. Wenn Sie eine Umgebung zum ersten Mal verwenden, kann es 10 bis 15 Minuten dauern, um die Umgebung zu erstellen. Sie können sich die Protokolle der Umgebungserstellung in den Protokollen des Auftrags ansehen.

Wenn Azure Machine Learning eine neue Umgebung erstellt, wird sie der Liste der benutzerdefinierten Umgebungen im Arbeitsbereich hinzugefügt. Das Bild der Umgebung wird in der Azure-Containerregistrierung gehostet, die dem Arbeitsbereich zugeordnet ist. Wenn Sie dieselbe Umgebung für einen anderen Auftrag (und ein anderes Skript) verwenden, ist die Umgebung einsatzbereit und muss nicht erneut erstellt werden.