Créer et utiliser des environnements personnalisés

Effectué

Lorsque vous devez créer votre propre environnement dans Azure Machine Learning pour répertorier tous les packages, bibliothèques et dépendances nécessaires pour exécuter vos scripts, vous pouvez créer des environnements personnalisés.

Vous pouvez définir un environnement à partir d’une image Docker, d’un contexte de build Docker et d’une spécification conda avec une image Docker.

Créer un environnement personnalisé à partir d’une image Docker

L’approche la plus simple est probablement de créer un environnement à partir d’une image Docker. Les images Docker peuvent être hébergées dans un registre public comme Docker Hub ou stockées en privé dans un registre de conteneurs Azure.

De nombreuses infrastructures open source sont encapsulées dans des images publiques qui se trouvent sur Docker Hub. Par exemple, vous pouvez trouver une image Docker publique qui contient tous les packages nécessaires pour effectuer l'apprentissage d’un modèle de Deep Learning avec PyTorch.

Pour créer un environnement à partir d’une image Docker, vous pouvez utiliser le Kit de développement logiciel (SDK) Python :

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)

Vous pouvez également utiliser les images de base Azure Machine Learning pour créer un environnement (qui sont similaires aux images utilisées par les environnements curés) :

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)

Créer un environnement personnalisé avec un fichier de spécification conda

Bien que les images Docker contiennent tous les packages nécessaires lors de l’utilisation d’une infrastructure spécifique, il se peut que vous deviez inclure d’autres packages pour exécuter votre code.

Par exemple, vous pouvez effectuer l'apprentissage d’un modèle avec PyTorch et suivre le modèle avec MLflow.

Lorsque vous devez inclure d’autres packages ou bibliothèques dans votre environnement, vous pouvez ajouter un fichier de spécification conda à une image Docker lors de la création de l’environnement.

Un fichier de spécification conda est un fichier YAML, qui répertorie les packages qui doivent être installés à l’aide de conda ou pip. Le fichier YAML peut se présenter comme suit :

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

Conseil

Consultez la documentation conda sur la création manuelle d’un environnement pour obtenir des informations sur le format standard des fichiers conda.

Pour créer un environnement à partir d’une image Docker de base et d’un fichier de spécification conda, vous pouvez utiliser le code suivant :

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)

Notes

Étant donné que tous les environnements curés ont le prefixeAzureML-, vous ne pouvez pas créer un environnement avec le même préfixe.

Utiliser un environnement

Le plus souvent, vous utilisez des environnements lorsque vous souhaitez exécuter un script en tant que travail (commande).

Pour spécifier l’environnement que vous souhaitez utiliser pour exécuter votre script, vous référencez un environnement à l’aide de la syntaxe <curated-environment-name>:<version> ou <curated-environment-name>@latest.

Par exemple, le code suivant montre comment configurer un travail de commande avec le KIT de développement logiciel (SDK) Python, qui utilise un environnement curé, y compris 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)

Lorsque vous envoyez le travail, l’environnement est généré. La première fois que vous utilisez un environnement, la génération de l’environnement peut prendre entre 10 et 15 minutes. Vous pouvez consulter les journaux de la build de l’environnement dans les journaux du travail.

Quand Azure Machine Learning génère un nouvel environnement, il est ajouté à la liste des environnements personnalisés dans l’espace de travail. L’image de l’environnement est hébergée dans le registre de conteneurs Azure associé à l’espace de travail. Chaque fois que vous utilisez le même environnement pour un autre travail (et un autre script), l’environnement est prêt à être utilisé et n’a pas besoin d’être compilé à nouveau.