Gestire aree di lavoro di Azure Machine Learning usando Terraform
Questo articolo illustra come creare un’area di lavoro di Azure Machine Learning usando i file di configurazione di Terraform. I file di configurazione basati su modelli di Terraform consentono di definire, creare e configurare le risorse di Azure in modo ripetibile e prevedibile. Terraform tiene traccia dello stato delle risorse e può pulire ed eliminare risorse.
Un file di configurazione di Terraform è un documento che definisce le risorse necessarie per una distribuzione. La configurazione di Terraform può anche specificare le variabili di distribuzione da usare per fornire valori di input quando si applica la configurazione.
Prerequisiti
- Una sottoscrizione di Azure con una versione gratuita o a pagamento di Azure Machine Learning. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- Terraform installato e configurato in base alle istruzioni riportate in Avvio rapido: installare e configurare Terraform.
Limiti
Quando si crea una nuova area di lavoro, è possibile creare automaticamente i servizi necessari per l’area di lavoro o usare i servizi esistenti. Se si vogliono usare i servizi esistenti di una sottoscrizione di Azure diversa rispetto all'area di lavoro, è necessario registrare lo spazio dei nomi di Azure Machine Learning nella sottoscrizione che contiene tali servizi. Ad esempio, se si crea un’area di lavoro nella sottoscrizione A che usa un account di archiviazione nella sottoscrizione B, lo spazio dei nomi di Azure Machine Learning deve essere registrato nella sottoscrizione B prima che l’area di lavoro possa usare l’account di archiviazione.
Il provider di risorse per Azure Machine Learning è Microsoft.MachineLearningServices. Per informazioni sul controllo di una registrazione o per eseguire una registrazione, vedere Provider e tipi di risorse di Azure.
Importante
Queste informazioni si applicano solo alle risorse fornite durante la creazione dell’area di lavoro: account di Archiviazione di Azure, Registro Azure Container, Azure Key Vault e Application Insights.
La limitazione seguente si applica all’istanza di Application Insights creata durante la creazione dell’area di lavoro:
Suggerimento
Quando si crea l'area di lavoro, viene creata un'istanza di Azure Application Insights. Se necessario, è possibile eliminare l'istanza di Application Insights dopo la creazione del cluster. L’eliminazione limita le informazioni raccolte dall’area di lavoro e potrebbe rendere più difficile la risoluzione dei problemi. Se si elimina l’istanza di Application Insights creata dall’area di lavoro, l’unico modo per ricrearla consiste nell’eliminare e ricreare l’area di lavoro.
Per altre informazioni sull’uso dell’istanza di Application Insights, vedere Monitorare e raccogliere dati dagli endpoint del servizio Web di Machine Learning.
Creare l'area di lavoro
Creare un file chiamato main.tf con il codice seguente.
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
}
Dichiarare il provider di Azure in un file chiamato providers.tf con il codice seguente.
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
}
}
}
Configurare l'area di lavoro
Per creare un’area di lavoro di Azure Machine Learning, usare una delle configurazioni di Terraform seguenti. Un’area di lavoro di Azure Machine Learning richiede diversi altri servizi come dipendenze. Il modello specifica queste risorse associate. A seconda delle esigenze, è possibile scegliere di usare un modello che crea risorse con connettività di rete pubblica o privata.
Nota
Alcune risorse in Azure richiedono nomi univoci globali. Prima di distribuire le risorse, assicurarsi di impostare variabili name
su valori univoci.
La configurazione seguente crea un’area di lavoro con connettività di rete pubblica.
Definire le variabili seguenti in un file chiamato 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"
}
Definire la configurazione dell’area di lavoro seguente in un file chiamato 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"
}
}
Creare e applicare il piano
Per creare l’area di lavoro, eseguire il codice seguente:
terraform init
terraform plan \
# -var <any of the variables set in variables.tf> \
-out demo.tfplan
terraform apply "demo.tfplan"
Risolvere gli errori del provider di risorse
Quando si crea un'area di lavoro di Azure Machine Learning o una risorsa usata dall'area di lavoro, è possibile che venga visualizzato un errore simile ai messaggi seguenti:
No registered resource provider found for location {location}
The subscription is not registered to use namespace {resource-provider-namespace}
Molti provider di risorse vengono registrati automaticamente, ma non tutti. Se si riceve questo messaggio, è necessario registrare il provider indicato.
La tabella seguente contiene un elenco dei provider di risorse richiesti da Azure Machine Learning:
Provider di risorse | Perché è necessario |
---|---|
Microsoft.MachineLearningServices | Creazione dell'area di lavoro di Azure Machine Learning. |
Microsoft.Storage | L'account di Archiviazione di Azure viene usato come risorsa di archiviazione predefinita per l'area di lavoro. |
Microsoft.ContainerRegistry | Registro Azure Container viene usato dall'area di lavoro per compilare immagini Docker. |
Microsoft.KeyVault | Azure Key Vault viene usato dall'area di lavoro per archiviare i segreti. |
Microsoft.Notebooks | Notebook integrati nell'istanza di ambiente di calcolo di Azure Machine Learning. |
Microsoft.ContainerService | Se si prevede di distribuire modelli sottoposti a training nei servizi Azure Kubernetes. |
Se si prevede di usare una chiave gestita dal cliente con Azure Machine Learning, è necessario registrare i provider di servizi seguenti:
Provider di risorse | Perché è necessario |
---|---|
Microsoft.DocumentDB | Istanza di Azure CosmosDB che registra i metadati per l'area di lavoro. |
Microsoft.Search | Ricerca cognitiva di Azure offre funzionalità di indicizzazione per l'area di lavoro. |
Se si prevede di usare una rete virtuale gestita con Azure Machine Learning, è necessario registrare il provider di risorse Microsoft.Network. Questo provider di risorse viene usato dall'area di lavoro quando si creano endpoint privati per la rete virtuale gestita.
Per informazioni sulla registrazione dei provider di risorse, vedere Risoluzione degli errori di registrazione del provider di risorse.
Risorse correlate
Per altre informazioni sul supporto di Terraform in Azure, vedere la documentazione di Terraform in Azure.
Per informazioni dettagliate sul provider di Azure di Terraform e sul modulo di Machine Learning, vedere Provider di Azure Resource Manager del registro Terraform.
Per trovare esempi di modelli di avvio rapido per Terraform, vedere i modelli di avvio rapido di Azure Terraform.
- 101: area di lavoro e calcolo di Machine Learning fornisce il set minimo di risorse necessarie per iniziare a usare Azure Machine Learning.
- 201: area di lavoro, calcolo e un set di componenti per l’isolamento rete di Machine Learning fornisce tutte le risorse necessarie per creare un ambiente pilota di produzione da usare con dati HBI (High Business Impact o alto impatto aziendale).
- 202: simile a 201, ma con l’opzione per portare componenti di rete esistenti.
- 301: area di lavoro di Machine Learning (gruppo a ruota sicuro con firewall).
Per altre informazioni sulle opzioni di configurazione di rete, vedere Proteggere le risorse dell’area di lavoro di Azure Machine Learning usando reti virtuali.
Per distribuzioni alternative basate su modelli di Azure Resource Manager, vedere Distribuire risorse con i modelli di Resource Manager e l'API REST di Resource Manager.
Per informazioni su come mantenere aggiornata l’area di lavoro di Azure Machine Learning con gli aggiornamenti di sicurezza più recenti, vedere Gestione delle vulnerabilità.