Créer et utiliser des environnements personnalisés
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 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 consiste probablement à 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 à trouver sur Docker Hub. Par exemple, vous pouvez trouver une image Docker publique qui contient tous les packages nécessaires pour entraîner un modèle d’apprentissage profond 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 (similaire aux images utilisées par les environnements organisé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 peut être nécessaire d’inclure d’autres packages pour exécuter votre code.
Par exemple, vous pouvez entraîner 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 de pip
. Un tel fichier YAML peut ressembler à ceci :
name: basic-env-cpu
channels:
- conda-forge
dependencies:
- python=3.7
- scikit-learn
- pandas
- numpy
- matplotlib
Pourboire
Consultez la documentation conda pour savoir comment créer un environnement manuellement et 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)
Note
Étant donné que tous les environnements organisés sont préfixés avec AzureML-, vous ne pouvez pas créer d’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 (commande) tâche.
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 organisé, notamment 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 soumettez la tâche, l’environnement est construit. La première fois que vous utilisez un environnement, la génération de l’environnement peut prendre 10 à 15 minutes. Vous pouvez consulter les journaux d’activité de la construction de l'environnement dans les journaux du processus.
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 Azure Container 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 généré et n’a pas besoin d’être à nouveau généré.