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

Dans cet article, vous apprenez à créer et à gérer un espace de travail Azure Machine Learning à l’aide des fichiers config de Terraform. Les fichiers config basés sur un modèle de Terraform vous permettent de définir, créer et configurer des ressources Azure de manière reproductible et prévisible. Terraform suit l’état des ressources et est capable de les nettoyer et de les détruire.

Une configuration Terraform est un document qui définit les ressources nécessaires à un déploiement. Elle peut également spécifier des variables de déploiement. Les variables permettent de fournir des valeurs d’entrée lorsque vous utilisez la configuration.

Prérequis

Limites

  • Lors de la création d’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, la création d’un espace de travail dans l’abonnement A qui utilise un compte de stockage de l’abonnement B, l’espace de noms Azure Machine Learning doit être inscrit dans l’abonnement B pour que vous puissiez utiliser le compte de stockage avec l’espace de travail.

    Le fournisseur de ressources pour Azure Machine Learning est Microsoft.MachineLearningServices. Pour plus d’informations sur la façon de déterminer s’il est inscrit et de l’inscrire, consultez l’article Fournisseurs et types de ressources Azure.

    Important

    Cela s’applique uniquement aux ressources fournies lors de la création de l’espace de travail : comptes de stockage Azure, registre de conteneurs Azure, Azure Key Vault et 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. Sa suppression limite les informations collectées à partir de l’espace de travail, et peut compliquer la résolution des problèmes. Si vous supprimez l’instance Application Insights créée par l’espace de travail, vous ne pouvez pas la recréer sans supprimer et recréer l’espace de travail.

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

Déclarer le fournisseur Azure

Créez le fichier config Terraform qui déclare le fournisseur Azure :

  1. Créez un nouveau fichier appelé main.tf. Si vous utilisez Azure Cloud Shell, utilisez Bash :

    code main.tf
    
  2. Collez le code suivant dans l’éditeur :

    main.tf :

    data "azurerm_client_config" "current" {}
    
    resource "azurerm_resource_group" "default" {
      name     = "${random_pet.prefix.id}-rg"
      location = var.location
    }
    
    resource "random_pet" "prefix" {
      prefix = var.prefix
      length = 2
    }
    
    resource "random_integer" "suffix" {
      min = 10000000
      max = 99999999
    }
    
  3. Enregistrez le fichier (<Ctrl>S) et quittez l’éditeur (<Ctrl>Q).

Déployer un espace de travail

Les configurations Terraform suivantes peuvent être utilisées pour créer un espace de travail Azure Machine Learning. Lorsque vous créez un espace de travail Azure Machine Learning, divers autres services sont requis en tant que dépendances. Le modèle spécifie également ces ressources associées à l’espace de travail. En fonction de vos besoins, vous pouvez choisir d’utiliser le modèle qui crée des ressources avec une connectivité au réseau public ou privé.

Certaines ressources dans Azure nécessitent des noms uniques au niveau mondial. Avant de déployer vos ressources à l’aide des modèles suivants, définissez la variable name sur une valeur unique.

variables.tf :

variable "environment" {
  type        = string
  description = "Name of the environment"
  default     = "dev"
}

variable "location" {
  type        = string
  description = "Location of the resources"
  default     = "eastus"
}

variable "prefix" {
  type        = string
  description = "Prefix of the resource name"
  default     = "ml"
}

workspace.tf :

# Dependent resources for Azure Machine Learning
resource "azurerm_application_insights" "default" {
  name                = "${random_pet.prefix.id}-appi"
  location            = azurerm_resource_group.default.location
  resource_group_name = azurerm_resource_group.default.name
  application_type    = "web"
}

resource "azurerm_key_vault" "default" {
  name                     = "${var.prefix}${var.environment}${random_integer.suffix.result}kv"
  location                 = azurerm_resource_group.default.location
  resource_group_name      = azurerm_resource_group.default.name
  tenant_id                = data.azurerm_client_config.current.tenant_id
  sku_name                 = "premium"
  purge_protection_enabled = false
}

resource "azurerm_storage_account" "default" {
  name                            = "${var.prefix}${var.environment}${random_integer.suffix.result}st"
  location                        = azurerm_resource_group.default.location
  resource_group_name             = azurerm_resource_group.default.name
  account_tier                    = "Standard"
  account_replication_type        = "GRS"
  allow_nested_items_to_be_public = false
}

resource "azurerm_container_registry" "default" {
  name                = "${var.prefix}${var.environment}${random_integer.suffix.result}cr"
  location            = azurerm_resource_group.default.location
  resource_group_name = azurerm_resource_group.default.name
  sku                 = "Premium"
  admin_enabled       = true
}

# Machine Learning workspace
resource "azurerm_machine_learning_workspace" "default" {
  name                          = "${random_pet.prefix.id}-mlw"
  location                      = azurerm_resource_group.default.location
  resource_group_name           = azurerm_resource_group.default.name
  application_insights_id       = azurerm_application_insights.default.id
  key_vault_id                  = azurerm_key_vault.default.id
  storage_account_id            = azurerm_storage_account.default.id
  container_registry_id         = azurerm_container_registry.default.id
  public_network_access_enabled = true

  identity {
    type = "SystemAssigned"
  }
}

Dépannage

Erreurs du 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.

Étapes suivantes