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
- 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.
- Terraform installé et configuré conformément aux instructions du Démarrage rapide : installer et configurer Terraform.
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.
Ressources associées
Pour en savoir plus sur la prise en charge de Terraform sur Azure, consultez la documentation Terraform sur Azure.
Pour plus d’informations sur le fournisseur Terraform Azure et le module Machine Learning, consultez Fournisseur Terraform Registry Azure Resource Manager.
Pour trouver des exemples de modèles de démarrage rapide pour Terraform, consultez les modèles de démarrage rapide Azure Terraform suivants.
- 101 : espace de travail Machine Learning et calcul : fournit l’ensemble minimal de ressources nécessaires pour prendre en main Azure Machine Learning.
- 201 : espace de travail Machine Learning, calcul et ensemble de composants réseau pour l’isolement réseau : fournit toutes les ressources nécessaires pour créer un environnement pilote de production à utiliser avec les données à fort impact commercial (HBI).
- 202 : similaire à 201, mais avec la possibilité d’apporter des composants réseau existants.
- 301 : espace de travail Machine Learning (réseau en étoile sécurisé avec pare-feu).
Pour en savoir plus sur les options de configuration du réseau, consultez Sécuriser les ressources de l’espace de travail Azure Machine Learning à l’aide de réseaux virtuels.
Pour d’autres déploiements basés sur un modèle Azure Resource Manager, consultez Déployer des ressources à l’aide de modèles Resource Manager et de l’API REST Resource Manager.
Pour plus d’informations sur la façon de maintenir votre espace de travail Azure Machine Learning à jour avec les dernières mises à jour de sécurité, consultez Gestion des vulnérabilités.