Gérer les environnements Azure Machine Learning avec l’interface CLI et le Kit de développement logiciel (SDK) (v2)
S’APPLIQUE À :Extension Azure CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)
Les environnements Azure Machine Learning définissent les environnements d’exécution pour vos travaux ou déploiements et encapsulent les dépendances de votre code. Azure Machine Learning utilise la spécification de l’environnement pour créer le conteneur Docker dans lequel votre code d’apprentissage ou de scoring s’exécute sur la cible de calcul spécifiée. Vous pouvez définir un environnement à partir d’une spécification Conda, d’une image Docker ou d’un contexte de build Docker.
Dans cet article, découvrez comment créer et gérer des environnements Azure Machine Learning en utilisant le SDK et l’interface CLI (v2).
Prérequis
Avant de suivre les étapes décrites dans cet article, vérifiez que vous disposez des composants requis suivants :
Un espace de travail Azure Machine Learning. Si vous n’en avez pas, procédez comme suit dans le Guide de démarrage rapide : Créer des ressources d’espace de travail pour en créer un.
Azure CLI et l’extension
ml
ou le Kit de développement logiciel (SDK) Python Azure Machine Learning v2 :Pour installer Azure CLI et l’extension, consultez Installer, configurer et utiliser l’interface CLI (v2).
Important
Les exemples CLI de cet article supposent que vous utilisez l’interpréteur de commandes Bash (ou compatible). Par exemple, à partir d’un système Linux ou d’un sous-système Windows pour Linux.
Pour installer le kit SDK Python v2, utilisez la commande suivante :
pip install azure-ai-ml azure-identity
Pour mettre à jour une installation existante du Kit de développement logiciel (SDK) vers la version la plus récente, utilisez la commande suivante :
pip install --upgrade azure-ai-ml azure-identity
Pour plus d’informations, consultez Installer le kit SDK Python v2 pour Azure Machine Learning.
Conseil
Pour profiter d’un environnement de développement complet, utilisez Visual Studio Code et l’extension Azure Machine Learning pour gérer les ressources Azure Machine Learning et entraîner des modèles de machine learning.
Cloner un dépôt d’exemples
Pour exécuter les exemples d’apprentissage, commencez par cloner le référentiel d’exemples. Pour les exemples de CLI, passez au répertoire cli
. Pour les exemples de SDK, passez au répertoire sdk/python/assets/environment
:
git clone --depth 1 https://github.com/Azure/azureml-examples
Notez que --depth 1
clone uniquement le dernier engagement dans le référentiel, ce qui réduit le temps nécessaire à l’exécution de l’opération.
Se connecter à l’espace de travail
Conseil
Utilisez les onglets ci-dessous pour sélectionner la méthode que vous souhaitez utiliser pour utiliser des environnements. La sélection d’un onglet bascule automatiquement tous les onglets de cet article vers le même onglet. Vous pouvez sélectionner un autre onglet à tout moment.
Lors de l’utilisation de l’Azure CLI, vous avez besoin de paramètres d’identificateur : un abonnement, un groupe de ressources et un nom d’espace de travail. Bien que vous puissiez spécifier ces paramètres pour chaque commande, vous pouvez également définir des valeurs par défaut qui sont utilisées pour toutes les commandes. Utilisez les commandes suivantes pour définir les valeurs par défaut. Remplacez <subscription ID>
, <Azure Machine Learning workspace name>
et <resource group>
par les valeurs de votre configuration :
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Environnements organisés
Il existe deux types d’environnements dans Azure Machine Learning : les environnements organisés et les environnements personnalisés. Les environnements organisés sont des environnements prédéfinis contenant des outils et infrastructures ML populaires. Les environnements personnalisés sont définis par l’utilisateur et peuvent être créés via az ml environment create
.
Les environnements organisés sont fournis par Azure Machine Learning et sont disponibles par défaut. Azure Machine Learning met régulièrement à jour ces environnements vers les versions les plus récentes de l’infrastructure et effectue la maintenance pour appliquer les correctifs de bogues et les correctifs de sécurité. Elles s’appuient sur des images Docker en cache, ce qui réduit le coût de préparation des travaux et le temps de déploiement des modèles.
Vous pouvez utiliser ces environnements organisés en dehors de la zone pour l’entraînement ou le déploiement en référençant une version spécifique ou la dernière version de l’environnement. Utilisez la syntaxe suivante : azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number>
ou azureml://registries/azureml/environment/<curated-environment-name>/labels/latest
. Vous pouvez également les utiliser comme référence pour vos propres environnements personnalisés en modifiant les fichiers Dockerfiles qui sauvegardent ces environnements organisés.
Vous pouvez voir l’ensemble des environnements organisés disponibles dans l’interface utilisateur d’Azure Machine Learning studio ou à l’aide de l’interface CLI (v2) via az ml environment list
.
Conseil
Lorsque vous travaillez avec des environnements organisés dans l’interface CLI ou le Kit de développement logiciel (SDK), le nom de l’environnement commence par AzureML-
suivi du nom de l’environnement organisé. Lorsque vous utilisez Azure Machine Learning studio, ce préfixe est omis. La raison de cette différence est que l’interface utilisateur de studio affiche des environnements organisés et personnalisés sous des onglets distincts, de sorte que le préfixe n’est pas nécessaire. L’interface CLI et le Kit de développement logiciel (SDK) ne font pas cette distinction. Le préfixe est donc utilisé pour différencier les environnements organisés et personnalisés.
Créer un environnement personnalisé
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 à partir d’une image Docker
Pour définir un environnement à partir d’une image Docker, fournissez l’URI de l’image hébergée dans un registre, comme Docker Hub ou Azure Container Registry.
L’exemple suivant est un fichier de spécification YAML pour un environnement défini à partir d’une image Docker. Une image du référentiel PyTorch officiel sur Docker Hub est spécifiée via la propriété image
dans le fichier YAML.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
Pour créer l’environnement :
az ml environment create --file assets/environment/docker-image.yml
Conseil
Azure Machine Learning assure la maintenance d’un ensemble d’images de base de processeur et GPU Ubuntu Linux avec des dépendances système communes. Par exemple, les images de GPU contiennent Miniconda, OpenMPI, CUDA, cuDNN et NCCL. Vous pouvez utiliser ces images pour vos environnements ou utiliser leur fichiers Dockerfiles correspondants comme référence lors de la création de vos propres images personnalisées.
Pour obtenir l’ensemble des images de base et les fichiers Dockerfiles correspondants, consultez le référentiel AzureML-Containers.
Créer un environnement à partir d’un contexte de build Docker
Au lieu de définir un environnement à partir d’une image prédéfinie, vous pouvez également en définir un à partir d’un contexte de build Docker. Pour cela, spécifiez le répertoire utilisé comme contexte de génération. Ce répertoire doit contenir un fichier Dockerfile (pas plus de 1Mo) et tous les autres fichiers nécessaires pour générer l’image.
L’exemple suivant est un fichier de spécification YAML pour un environnement défini à partir d’un contexte de build. Le chemin local d’accès au dossier de contexte de génération est spécifié dans le champ build.path
. Le chemin relatif d’accès au fichier Dockerfile dans ce dossier de contexte de build est spécifié dans le champ build.dockerfile_path
. Si build.dockerfile_path
est omis dans le fichier YAML, Azure Machine Learning recherche un fichier Dockerfile nommé Dockerfile
à la racine du contexte de génération.
Dans cet exemple, le contexte de build contient un fichier Dockerfile nommé Dockerfile
et un fichier requirements.txt
référencé dans le fichier Dockerfile pour l’installation des packages Python.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-context-example
build:
path: docker-contexts/python-and-pip
Pour créer l’environnement :
az ml environment create --file assets/environment/docker-context.yml
Azure Machine Learning commence à générer l’image à partir du contexte de génération lors de la création de l’environnement. Vous pouvez superviser l’état de la build et afficher les journaux de génération dans l’interface utilisateur de studio.
Créer un environnement à partir d’une spécification Conda
Vous pouvez définir un environnement à l’aide d’un fichier de configuration standard Conda YAML qui comprend les dépendances de l’environnement Conda. Pour plus d’informations sur ce format standard, consultez Création manuelle d’un environnement.
Vous devez également spécifier une image Docker de base pour cet environnement. Azure Machine Learning crée l’environnement conda au-dessus de l’image Docker fournie. Si vous installez des dépendances Python dans votre image Docker, ces packages n’existent pas dans l’environnement d’exécution, ce qui entraîne des échecs de runtime. Par défaut, Azure Machine Learning génère un environnement Conda avec les dépendances que vous avez spécifiées, puis exécute le travail dans cet environnement au lieu d’utiliser des bibliothèques Python que vous avez installées sur l’image de base.
L’exemple suivant est un fichier de spécification YAML pour un environnement défini à partir d’une spécification Conda. Le chemin d’accès relatif au fichier Conda à partir du fichier YAML de l’environnement Azure Machine Learning y est spécifié via la propriété conda_file
. Vous pouvez également définir la spécification Conda inline à l’aide de la propriété conda_file
, plutôt que de la définir dans un fichier distinct.
$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.
Pour créer l’environnement :
az ml environment create --file assets/environment/docker-image-plus-conda.yaml
Azure Machine Learning génère l’image Docker finale à partir de cette spécification de l’environnement quand l’environnement est utilisé dans un travail ou un déploiement. Vous pouvez également déclencher manuellement une génération de l’environnement dans l’interface utilisateur de studio.
Gérer les environnements
Le Kit de développement logiciel (SDK) et l’interface CLI (v2) vous permettent également de gérer le cycle de vie de vos ressources d’environnement Azure Machine Learning.
List
Répertoriez l’ensemble des environnements dans votre espace de travail :
az ml environment list
Répertoriez l’ensemble des versions de l’environnement sous un nom donné :
az ml environment list --name docker-image-example
Afficher
Obtenez les détails d’un environnement spécifique :
az ml environment show --name docker-image-example --version 1
Update
Mettez à jour les propriétés mutables d’un environnement spécifique :
az ml environment update --name docker-image-example --version 1 --set description="This is an updated description."
Important
Pour les environnements, seuls description
et tags
peuvent être mis à jour. Toutes les autres propriétés sont immuables. Si vous avez besoin de modifier l’une de ces propriétés, vous devez créer une nouvelle version de l’environnement.
Archivage
L’archivage d’un environnement le masque par défaut dans les requêtes de liste (az ml environment list
). Vous pouvez continuer à référencer et utiliser un environnement archivé dans vos flux de travail. Vous pouvez archiver soit toutes les versions d’un environnement, soit juste une version spécifique.
Si vous ne spécifiez pas de version, toutes les versions de l’environnement sous ce nom donné sont archivées. Si vous créez une nouvelle version d’environnement sous un conteneur d’environnement archivé, cette nouvelle version sera automatiquement définie comme archivée.
Archivez toutes les versions d’un environnement :
az ml environment archive --name docker-image-example
Archiver une version spécifique de l’environnement :
az ml environment archive --name docker-image-example --version 1
Important
L’archivage de la version d’un environnement ne supprime pas l’image mise en cache dans le registre de conteneurs. Si vous souhaitez supprimer l’image mise en cache associée à un environnement spécifique, vous pouvez utiliser la commande az acr repository delete sur le référentiel associé à l’environnement.
Utiliser des environnements pour l'apprentissage
Pour utiliser un environnement personnalisé pour un travail d’apprentissage, spécifiez le champ environment
de la configuration YAML du travail. Vous pouvez référencer un environnement Azure Machine Learning inscrit existant via environment: azureml:<environment-name>:<environment-version>
ou environment: azureml:<environment-name>@latest
(pour référencer la version la plus récente d’un environnement) ou définir une spécification d’environnement en ligne. Si vous définissez un environnement inclus, ne spécifiez pas les champs name
et version
, car ces environnements sont traités comme des environnements « non inscrits » et ne sont pas suivis dans le registre des ressources de votre environnement.
Quand vous soumettez un travail d’apprentissage, la génération d’un nouvel environnement peut prendre quelques minutes. La durée dépend de la taille des dépendances requises. Les environnements sont mis en cache par le service. Ainsi, tant que la définition de l'environnement reste inchangée, vous ne subissez l'intégralité du temps d'installation qu'une seule fois.
Pour plus d’informations sur l’utilisation des environnements dans les travaux, consultez Effectuer l'apprentissage des modèles.
Utiliser des environnements pour les modèles de déploiement
Vous pouvez également utiliser des environnements pour vos modèles de déploiement pour effectuer le scoring en ligne et par lot. Pour ce faire, spécifiez le champ environment
dans la configuration YAML de déploiement.
Pour plus d’informations sur l’utilisation des environnements dans les déploiements, consultez Déployer et effectuer le scoring d’un modèle d’apprentissage automatique en utilisant un point de terminaison en ligne.