Gérer des espaces de travail Azure Machine Learning à l’aide d’Azure CLI

S’APPLIQUE À : Extension ml Azure CLI v2 (actuelle)

Cet article explique comment créer et gérer un espace de travail Azure Machine Learning à l’aide d’Azure CLI. Azure CLI fournit des commandes pour la gestion des ressources Azure, et est conçu pour vous permettre de commencer rapidement à utiliser Azure en mettant l’accent sur l’automatisation. L’extension Machine Learning Azure CLI fournit des commandes pour travailler avec des ressources Azure Machine Learning.

Vous pouvez également appliquer les méthodes suivantes pour créer et gérer des espaces de travail Azure Machine Learning :

Prérequis

  • Un abonnement Azure avec une version gratuite ou payante d’Azure Machine Learning. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

  • Azure CLI installé, si vous souhaitez exécuter les commandes Azure CLI de cet article localement.

    Si vous exécutez les commandes Azure CLI dans Azure Cloud Shell, vous n’avez pas besoin d’installer quoi que ce soit. Le navigateur accède à la dernière version cloud d’Azure CLI et à l’extension Azure Machine Learning.

Limites

  • Lorsque vous créez un espace de travail, vous pouvez soit créer automatiquement les services nécessaires à l’espace de travail, soit utiliser des services existants. Si vous voulez utiliser des services existants d’un autre abonnement Azure que l’espace de travail, vous devez inscrire l’espace de noms Azure Machine Learning dans l’abonnement qui contient ces services. Par exemple, si vous créez un espace de travail dans l’abonnement A qui utilise un compte de stockage dans l’abonnement B, l’espace de nom Azure Machine Learning doit être inscrit dans l’abonnement B pour que l’espace de travail puisse utiliser le compte de stockage.

    Le fournisseur de ressources pour Azure Machine Learning est Microsoft.MachineLearningServices. Pour plus d’informations sur la vérification de l’inscription ou sur l’inscription, consultez Fournisseurs de ressources et types de ressources Azure.

    Important

    Ces informations s’appliquent uniquement aux ressources fournies lors de la création de l’espace de travail : comptes Stockage Azure, Azure Container Registry, Azure Key Vault et Application Insights.

Connectez-vous à un abonnement Azure

Si vous utilisez Azure Cloud Shell à partir du portail Azure, vous pouvez ignorer cette section. Cloud Shell vous authentifie automatiquement à l’aide de l’abonnement Azure avec lequel vous êtes connecté.

Il existe plusieurs façons de s’authentifier localement auprès de votre abonnement Azure à partir d’Azure CLI. La plus simple consiste à utiliser un navigateur.

Pour vous authentifier de manière interactive, ouvrez une ligne de commande ou un terminal et exécutez az login. Si l’interface CLI peut ouvrir votre navigateur par défaut, elle le fait et charge une page de connexion. Sinon, suivez les instructions de la ligne de commande pour ouvrir un navigateur à l’adresse https://aka.ms/devicelogin et entrez un code d’autorisation d’appareil.

Conseil

Une fois que vous vous êtes connecté, la liste des abonnements associés à votre compte Azure s’affiche. Les informations d’abonnement avec isDefault: true correspond à l’abonnement actuellement activé pour les commandes Azure CLI. Cet abonnement doit être le même que celui qui contient votre espace de travail Azure Machine Learning. Vous trouverez les informations relatives à l’abonnement dans la page de vue d’ensemble de votre espace de travail dans le portail Azure.

Pour sélectionner un autre abonnement à utiliser pour les commandes Azure CLI, exécutez la commande az account set -s <subscription> et indiquez le nom ou l’ID de l’abonnement vers lequel vous voulez basculer. Pour plus d’informations sur la sélection d’abonnements, consultez Utiliser plusieurs abonnements Azure.

Pour les autres méthodes d’authentification, consultez Se connecter avec Azure CLI.

Créer un groupe de ressources

L’espace de travail Azure Machine Learning doit être créé à l’intérieur d’un groupe de ressources nouveau ou existant. Pour créer un groupe de ressources, exécutez la commande suivante. Remplacez <resource-group-name> par le nom et <location> par la région Azure que vous souhaitez utiliser pour ce groupe de ressources.

Remarque

Veillez à sélectionner une région où Azure Machine Learning est disponible. Pour plus d’informations, consultez Disponibilité des produits par région.

az group create --name <resource-group-name> --location <azure-region>

La réponse à cette commande ressemble au JSON suivant. Vous pouvez utiliser les valeurs de sortie pour localiser les ressources créées, ou les transmettre comme entrée à d’autres commandes Azure CLI ou à l’automatisation.

{
  "id": "/subscriptions/<subscription-GUID>/resourceGroups/<resourcegroupname>",
  "location": "<location>",
  "managedBy": null,
  "name": "<resource-group-name>",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": null
}

Pour plus d’informations sur l’utilisation des groupes de ressources, consultez az group.

Créer un espace de travail

Un espace de travail Azure Machine Learning déployé nécessite différents autres services en tant que ressources associées dépendantes. Lorsque vous utilisez Azure CLI pour créer un espace de travail, l’interface CLI peut créer les nouvelles ressources associées, ou vous pouvez attacher des ressources existantes.

Pour créer un espace de travail avec de nouveaux services dépendants créés automatiquement, exécutez la commande suivante :

az ml workspace create -n <workspace-name> -g <resource-group-name>

Pour créer un espace de travail qui utilise des ressources existantes, vous définissez d’abord les ressources dans un fichier de configuration YAML, comme décrit dans la section suivante. Vous référencez ensuite le fichier YAML dans la commande Azure CLI de création de l’espace de travail comme suit :

az ml workspace create -g <resource-group-name> --file <configuration-file>.yml

La sortie de la commande de création d’espace de travail ressemble au JSON suivant. Vous pouvez utiliser les valeurs de sortie pour localiser les ressources créées, ou les transmettre comme entrée à d’autres commandes Azure CLI.

{
  "applicationInsights": "/subscriptions/<subscription-GUID>/resourcegroups/<resource-group-name>/providers/microsoft.insights/components/<application-insight-name>",
  "containerRegistry": "/subscriptions/<subscription-GUID>/resourcegroups/<resource-group-name>/providers/microsoft.containerregistry/registries/<container-registry-name>",
  "creationTime": "2019-08-30T20:24:19.6984254+00:00",
  "description": "",
  "friendlyName": "<workspace-name>",
  "id": "/subscriptions/<subscription-GUID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-id>",
  "identityPrincipalId": "<GUID>",
  "identityTenantId": "<GUID>",
  "identityType": "SystemAssigned",
  "keyVault": "/subscriptions/<subscription-GUID>/resourcegroups/<resource-group-name>/providers/microsoft.keyvault/vaults/<key-vault-name>",
  "location": "<location>",
  "name": "<workspace-name>",
  "resourceGroup": "<resource-group-name>",
  "storageAccount": "/subscriptions/<subscription-GUID>/resourcegroups/<resource-group-name>/providers/microsoft.storage/storageaccounts/<storage-account-name>",
  "type": "Microsoft.MachineLearningServices/workspaces",
  "workspaceid": "<GUID>"
}

Fichier de configuration YAML

Pour utiliser des ressources existantes pour un nouvel espace de travail, vous définissez les ressources dans un fichier de configuration YAML. L’exemple suivant montre un fichier de configuration d’espace de travail YAML :

$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: mlw-basicex-prod
location: eastus
display_name: Bring your own dependent resources-example
description: This configuration specifies a workspace configuration with existing dependent resources
storage_account: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT>
container_registry: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ContainerRegistry/registries/<CONTAINER_REGISTRY>
key_vault: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>
application_insights: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.insights/components/<APP_INSIGHTS>
tags:
  purpose: demonstration

Vous n’avez pas besoin de spécifier toutes les ressources dépendantes associées dans le fichier de configuration. Vous pouvez spécifier une ou plusieurs des ressources, et laisser les autres être créés automatiquement.

Vous devez fournir les ID des ressources existantes dans le fichier YAML. Vous pouvez obtenir ces ID en affichant les propriétés des ressources dans le portail Azure ou en exécutant les commandes Azure CLI suivantes :

  • Azure Application Insights :
    az monitor app-insights component show --app <application-insight-name> -g <resource-group-name> --query "id"
  • Azure Container Registry :
    az acr show --name <container-registry-name> -g <resource-group-name> --query "id"
  • Azure Key Vault :
    az keyvault show --name <key-vault-name> --query "id"
  • Compte de stockage Azure :
    az storage account show --name <storage-account-name> --query "id"

Les résultats de la requête ressemblent à la chaîne suivante :
"/subscriptions/<subscription-GUID>/resourceGroups/<resource-group-name>/providers/<provider>/<subresource>/<id>".

Ressources dépendantes associées

Les considérations et limitations suivantes s’appliquent aux ressources dépendantes associées aux espaces de travail.

Application Insights

Conseil

Une instance Azure Application Insights est créée lorsque vous créez l’espace de travail. Si vous le souhaitez, vous pouvez supprimer l’instance Application Insights après la création du cluster. Leur suppression limite les informations collectées à partir de l’espace de travail, et peut rendre plus difficile la résolution des problèmes. Si vous supprimez l’instance Application Insights créée par l’espace de travail, la seule façon de la recréer consiste à supprimer et à recréer l’espace de travail.

Pour plus d’informations sur l’utilisation de l’instance Application Insights, consultez Superviser et collecter des données à partir des points de terminaison de service web Machine Learning.

Container Registry

L’espace de travail Azure Machine Learning utilise Azure Container Registry pour certaines opérations, et crée automatiquement une instance Container Registry lorsqu’il en a besoin pour la première fois.

Avertissement

Une fois qu’une instance d’Azure Container Registry a été créée pour un espace de travail, ne la supprimez pas. Cela entraînerait l’arrêt de votre espace de travail Azure Machine Learning.

Pour utiliser un registre de conteneurs Azure existant avec un espace de travail Azure Machine Learning, vous devez activer le compte d’administrateur sur le registre de conteneurs.

Compte de stockage

Si vous utilisez un compte de stockage existant pour l’espace de travail, il doit remplir les critères suivants. Ces exigences s’appliquent uniquement au compte de stockage par défaut.

  • Le compte ne peut pas être Premium_LRS ni Premium_GRS.
  • Les fonctionnalités Azure Blob et Azure File doivent être activées.
  • L’espace de noms hiérarchique doit être désactivé pour Azure Data Lake Storage.

Communications Azure CLI sécurisées

Toutes les commandes az ml Azure Machine Learning V2 communiquent des données opérationnelles, telles que des paramètres et des métadonnées YAML, à Azure Resource Manager. Certaines des commandes Azure CLI communiquent avec Azure Resource Manager via internet.

Si votre espace de travail Azure Machine Learning est public et ne se trouve pas derrière un réseau virtuel, les communications sont sécurisées à l’aide de HTTPS/TLS 1.2. Aucune configuration supplémentaire n’est requise.

Si votre espace de travail Azure Machine Learning utilise un point de terminaison privé et un réseau virtuel, vous devez choisir l’une des configurations suivantes pour utiliser Azure CLI :

  • Pour communiquer via l’Internet public, affectez la valeur Enabled au paramètre --public-network-access.

  • Pour éviter de communiquer sur l’Internet public pour des raisons de sécurité, configurez Azure Machine Learning de façon à utiliser la connectivité réseau privée avec un point de terminaison Azure Private Link, comme décrit dans la section suivante.

Connectivité de réseau privé

Selon le cas d’usage et les exigences de votre organisation, vous pouvez configurer Azure Machine Learning de façon à utiliser une connectivité de réseau privé. Vous pouvez utiliser Azure CLI pour déployer un espace de travail et un point de terminaison Private Link pour la ressource d’espace de travail.

Si vous utilisez des points de terminaison de liaison privée pour Azure Container Registry et Azure Machine Learning, vous ne pouvez pas utiliser de tâches Container Registry pour générer des images d’environnement Docker. Au lieu de cela, vous devez générer des images à l’aide d’un cluster de calcul Azure Machine Learning.

Dans votre fichier de configuration d’espace de travail YAML, vous devez définir la propriété image_build_compute sur un nom de cluster de calcul à utiliser pour la génération de l’environnement d’image Docker. Vous pouvez également spécifier que l’espace de travail de la liaison privée n’est pas accessible sur Internet en affectant la valeur Disabled à la propriété public_network_access.

Le code suivant montre un exemple de fichier de configuration d’espace de travail pour la connectivité réseau privée.

$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: mlw-privatelink-prod
location: eastus
display_name: Private Link endpoint workspace-example
description: When using private link, you must set the image_build_compute property to a cluster name to use for Docker image environment building. You can also specify whether the workspace should be accessible over the internet.
image_build_compute: cpu-compute
public_network_access: Disabled
tags:
  purpose: demonstration

Après avoir créé l’espace de travail, utilisez les commandes de l’interface CLI de mise en réseau Azure pour créer un point de terminaison de liaison privé pour l’espace de travail.

az network private-endpoint create \
    --name <private-endpoint-name> \
    --vnet-name <virtual-network-name> \
    --subnet <subnet-name> \
    --private-connection-resource-id "/subscriptions/<subscription>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>" \
    --group-id amlworkspace \
    --connection-name workspace -l <location>

Pour créer les entrées de zone DNS (Domain Name System) privée pour l’espace de travail, utilisez les commandes suivantes :

# Add privatelink.api.azureml.ms
az network private-dns zone create \
    -g <resource-group-name> \
    --name 'privatelink.api.azureml.ms'

az network private-dns link vnet create \
    -g <resource-group-name> \
    --zone-name 'privatelink.api.azureml.ms' \
    --name <link-name> \
    --virtual-network <virtual-network-name> \
    --registration-enabled false

az network private-endpoint dns-zone-group create \
    -g <resource-group-name> \
    --endpoint-name <private-endpoint-name> \
    --name <zone-group-name> \
    --private-dns-zone 'privatelink.api.azureml.ms' \
    --zone-name 'privatelink.api.azureml.ms'

# Add privatelink.notebooks.azure.net
az network private-dns zone create \
    -g <resource-group-name> \
    --name 'privatelink.notebooks.azure.net'

az network private-dns link vnet create \
    -g <resource-group-name> \
    --zone-name 'privatelink.notebooks.azure.net' \
    --name <link-name> \
    --virtual-network <virtual-network-name> \
    --registration-enabled false

az network private-endpoint dns-zone-group add \
    -g <resource-group-name> \
    --endpoint-name <private-endpoint-name> \
    --name <zone-group-name> \
    --private-dns-zone 'privatelink.notebooks.azure.net' \
    --zone-name 'privatelink.notebooks.azure.net'

Pour plus d’informations sur l’utilisation d’un point de terminaison privé et d’un réseau virtuel avec votre espace de travail, consultez les articles suivants :

Vous pouvez effectuer les étapes suivantes pour sécuriser les communications avec toutes les ressources Azure Resource Manager dans un groupe d’administration Azure à l’aide de Private Link :

  1. Créer une liaison privée pour gérer les ressources Azure.
  2. Créer un point de terminaison privé pour la liaison privée créée à l’étape précédente.

Important

Afin de configurer une liaison privée pour Azure Resource Manager, vous devez être le propriétaire de l’abonnement Azure, et un propriétaire ou un contributeur sur le groupe d’administration racine. Pour plus d’informations, consultez Créer une liaison privée pour la gestion des ressources Azure.

Configurations avancées

Il existe plusieurs autres configurations avancées que vous pouvez appliquer aux espaces de travail. Pour les configurations de ressources complexes, examinez également les options de déploiement basées sur un modèle, dont Azure Resource Manager.

Clés gérées par le client

Par défaut, les métadonnées de l’espace de travail sont stockées dans une instance Azure Cosmos DB gérée par Microsoft, et chiffrées à l’aide de clés gérées par Microsoft. Au lieu d’utiliser la clé gérée par Microsoft, vous pouvez fournir la clé de votre choix. L’utilisation de votre propre clé a pour effet de créer un ensemble supplémentaire de ressources dans votre abonnement Azure pour stocker vos données.

Remarque

Azure Cosmos DB n’est pas utilisé pour stocker des informations sur les performances de modèle, des informations journalisées par les expériences, ou des informations journalisées à partir de vos modèles de déploiement.

Pour créer un espace de travail qui utilise votre propre clé, utilisez le paramètre customer_managed_key dans le fichier de configuration d’espace de travail YAML et spécifiez l’ID de ressource du key_vault contenant et le key_uri de la clé dans le coffre.

$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: mlw-cmkexample-prod
location: eastus
display_name: Customer managed key encryption-example
description: This configurations shows how to create a workspace that uses customer-managed keys for encryption.
customer_managed_key: 
  key_vault: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>
  key_uri: https://<KEY_VAULT>.vault.azure.net/keys/<KEY_NAME>/<KEY_VERSION>
tags:
  purpose: demonstration

Pour en savoir plus sur les ressources créées lorsque vous utilisez votre propre clé de chiffrement, consultez Chiffrement des données avec Azure Machine Learning.

Remarque

Pour gérer les ressources de chiffrement de données ajoutées, utilisez la gestion des identités et des accès afin d’accorder à l’application Machine Learning des autorisations Contributeur sur votre abonnement.

Espaces de travail à fort impact sur l’activité

Pour limiter les données collectées par Microsoft sur votre espace de travail, vous pouvez spécifier un espace de travail à fort impact sur l’activité en affectant la valeur TRUE à la propriété hbi_workspace dans le fichier de configuration YAML. Vous pouvez définir un fort impact sur l’activité uniquement lorsque vous créez un espace de travail. Vous ne pouvez pas modifier ce paramètre une fois l’espace de travail créé.

Pour plus d’informations sur les clés gérées par le client et sur l’espace de travail High Business Impact, consultez Sécurité Enterprise pour Azure Machine Learning.

Utiliser Azure CLI pour gérer les espaces de travail

Vous pouvez utiliser les commandes az ml workspace pour gérer les espaces de travail.

Obtenir des informations sur l’espace de travail

Pour obtenir des informations sur un espace de travail, utilisez la commande suivante :

az ml workspace show -n <workspace-name> -g <resource-group-name>

Pour plus d’informations, consultez az ml workspace show.

Mettre à jour un espace de travail

Utilisez la commande suivante pour mettre à jour un espace de travail :

az ml workspace update -n <workspace-name> -g <resource-group-name>

Par exemple, la commande suivante met à jour un espace de travail de façon à activer l’accès au réseau public :

az ml workspace update -n <workspace-name> -g <resource-group-name> --public-network-access enabled

Pour plus d’informations, consultez az ml workspace update.

Synchroniser les clés pour les ressources dépendantes

Si vous changez les clés d’accès pour l’une des ressources utilisées par votre espace de travail, la synchronisation de l’espace de travail avec la nouvelle clé prend environ une heure. Pour forcer l’espace de travail à synchroniser les nouvelles clés immédiatement, utilisez la commande suivante :

az ml workspace sync-keys -n <workspace-name> -g <resource-group-name>

Déplacer un espace de travail

Le déplacement d’un espace de travail Azure Machine Learning est actuellement en préversion. Pour plus d’informations, consultez Déplacer des espaces de travail Azure Machine Learning entre des abonnements (préversion).

Supprimer un espace de travail

Pour supprimer un espace de travail une fois qu’il n’est plus nécessaire, utilisez la commande suivante :

az ml workspace delete -n <workspace-name> -g <resource-group-name>

Le comportement par défaut d’Azure Machine Learning consiste en une suppression réversible de l’espace de travail. L’espace de travail n’est pas immédiatement supprimé, mais marqué pour suppression. Pour plus d’informations, consultez Suppression réversible.

Avertissement

Si la suppression réversible est activée pour l’espace de travail, celui-ci peut être récupéré après sa suppression. Si la suppression réversible n’est pas activée ou si vous sélectionnez l’option permettant de supprimer définitivement l’espace de travail, celui-ci ne peut plus être récupéré. Pour plus d'informations, consultez Récupérer un espace de travail supprimé.

La suppression d’un espace de travail ne supprime pas le service Application Insights, le compte de stockage, le coffre de clés ou le registre de conteneurs utilisés par l’espace de travail. Pour supprimer l’espace de travail, les ressources dépendantes et toutes les autres ressources Azure dans le groupe de ressources, vous pouvez supprimer le groupe de ressources. Pour supprimer le groupe de ressources, utilisez la commande suivante :

az group delete -g <resource-group-name>

Pour plus d’informations, consultez az ml workspace delete.

Résoudre les erreurs liées au fournisseur de ressources

Lors de la création d’un espace de travail Azure Machine Learning ou d’une ressource utilisée par l’espace de travail, vous pouvez recevoir un message d’erreur semblable aux messages suivants :

  • No registered resource provider found for location {location}
  • The subscription is not registered to use namespace {resource-provider-namespace}

Par défaut, la plupart des fournisseurs de ressources sont enregistrés automatiquement. Si vous recevez ce message, vous devez inscrire le fournisseur mentionné.

Le tableau suivant contient la liste des fournisseurs de ressources requis par Azure Machine Learning :

Fournisseur de ressources Pourquoi il est nécessaire
Microsoft.MachineLearningServices Création de l’espace de travail Azure Machine Learning.
Microsoft.Storage Un compte Stockage Azure est utilisé comme stockage par défaut pour l’espace de travail.
Microsoft.ContainerRegistry Azure Container Registry est utilisé par l’espace de travail pour créer des images Docker.
Microsoft.KeyVault Azure Key Vault est utilisé par l’espace de travail pour stocker les secrets.
Microsoft.Notebooks Notebooks intégrés sur l’instance de calcul Azure Machine Learning.
Microsoft.ContainerService Si vous envisagez de déployer des modèles entraînés sur Azure Kubernetes Service.

Si vous prévoyez d’utiliser une clé gérée par le client avec Azure Machine Learning, les fournisseurs de services suivants doivent être inscrits :

Fournisseur de ressources Pourquoi il est nécessaire
Microsoft.DocumentDB Instance Azure CosmosDB qui journalise les métadonnées de l’espace de travail.
Microsoft.Search La Recherche Azure fournit des fonctionnalités d’indexation pour l’espace de travail.

Si vous envisagez d’utiliser un réseau virtuel managé avec Azure Machine Learning, le fournisseur de ressources Microsoft.Network doit être inscrit. Ce fournisseur de ressources est utilisé par l’espace de travail lors de la création de points de terminaison privés pour le réseau virtuel managé.

Pour plus d’informations sur l’inscription d’un fournisseur de ressources, consultez Résoudre les erreurs d’inscription de fournisseurs de ressources.

  • Pour plus d’informations sur l’extension Azure CLI pour Machine Learning, consultez la documentation az ml.
  • Pour plus d’informations sur les diagnostics qui peuvent identifier et aider à résoudre les problèmes liés aux espaces de travail, consultez Guide pratique pour utiliser les diagnostics d’espace de travail.
  • Pour plus d’informations sur la façon de maintenir votre Azure Machine Learning à jour avec les dernières mises à jour de sécurité, consultez Gestion des vulnérabilités.