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
- Un abonnement Azure. Si vous n’en avez pas, essayez la version gratuite ou payante d’Azure Machine Learning.
- Une version installée d’Azure CLI.
- Configuration de Terraform : suivez les instructions de cet article et de l’article Terraform et configurer l’accès à Azure.
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 :
Créez un nouveau fichier appelé
main.tf
. Si vous utilisez Azure Cloud Shell, utilisez Bash :code main.tf
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 }
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
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 Terraform Registry Azure Resource Manager Provider.
Pour trouver des exemples de modèles de « démarrage rapide » pour Terraform, consultez Modèles de démarrage rapide Azure Terraform :
- 101 : Espace de travail Machine Learning et calcul : 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 : Toutes les ressources nécessaires pour créer un environnement pilote de production à utiliser avec les données HBI.
- 202 : Similaire à 201, mais avec la possibilité d’apporter des composants réseau existants.
- 301 : Espace de travail Machine Learning (Hub-and-Spoke 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 (VNets).
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 Azure Machine Learning à jour avec les dernières mises à jour de sécurité, consultez Gestion des vulnérabilités.