Partager via


Gérer des espaces de travail Azure Machine Learning en utilisant Terraform

Dans cet article, vous apprenez à créer un espace de travail Azure Machine Learning en utilisant des fichiers config de Terraform. Les fichiers config basés sur un modèle 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 peut les nettoyer et les détruire.

Un fichier de configuration Terraform est un document qui définit les ressources nécessaires à un déploiement. La configuration Terraform peut également spécifier des variables de déploiement à utiliser pour fournir des valeurs d'entrée lorsque vous appliquez la configuration.

Prérequis

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.

  • La limitation suivante s'applique à l'instance Application Insights créée lors de la création de l'espace de travail :

    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.

Créer l’espace de travail

Créez un fichier nommé main.tf qui possède le code suivant.

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
}

Déclarez le fournisseur Azure dans un fichier nommé providers.tf qui a le code suivant.

terraform {
  required_version = ">= 1.0"

  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 3.0, < 4.0"
    }
    random = {
      source  = "hashicorp/random"
      version = ">= 3.0"
    }
  }
}

provider "azurerm" {
  features {
    key_vault {
      recover_soft_deleted_key_vaults    = false
      purge_soft_delete_on_destroy       = false
      purge_soft_deleted_keys_on_destroy = false
    }
    resource_group {
      prevent_deletion_if_contains_resources = false
    }
  }
}

Configurer l’espace de travail

Pour créer un espace de travail Azure Machine Learning, utilisez un des configurations Terraform suivantes. Un espace de travail Azure Machine Learning nécessite différents autres services en tant que dépendances. Le modèle spécifie ces ressources associées. En fonction de vos besoins, vous pouvez choisir d’utiliser un modèle qui crée des ressources avec une connectivité au réseau public ou privé.

Remarque

Certaines ressources dans Azure nécessitent des noms uniques au niveau mondial. Avant de déployer vos ressources, veillez à définir des variables name sur des valeurs uniques.

La configuration suivante crée un espace de travail avec une connectivité réseau publique.

Définissez les variables suivantes dans un fichier appelé 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"
}

Définissez la configuration de l’espace de travail suivante dans un fichier appelé 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"
  }
}

Créer et appliquer un plan

Pour créer l’espace de travail, exécutez la commande suivante :

terraform init

terraform plan \
        # -var <any of the variables set in variables.tf> \
          -out demo.tfplan

terraform apply "demo.tfplan"

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.