Gérer les environnements Azure Machine Learning avec l’interface CLI et le Kit de développement logiciel (SDK) (v2)

S’APPLIQUE À :Extension Azure ML CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (préversion)

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 :

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 seront 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.

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 ce faire, 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 à partir des 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é seront 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

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.

Étapes suivantes