Gestire le aree di lavoro di Azure Machine Learning con Terraform
Questo articolo illustra come creare e gestire un'area di lavoro di Azure Machine Learning usando i file di configurazione di Terraform. I file di configurazione basati su modello di Terraform consentono di definire, creare e configurare le risorse di Azure in modo ripetibile e prevedibile. Terraform tiene traccia dello stato delle risorse ed è in grado di pulire ed eliminare definitivamente le risorse.
Una configurazione terraform è un documento che definisce le risorse necessarie per una distribuzione. Può anche specificare le variabili di distribuzione. Le variabili vengono usate per fornire valori di input quando si usa la configurazione.
Prerequisiti
- Una sottoscrizione di Azure. Se non è disponibile, provare la versione gratuita o a pagamento di Azure Machine Learning.
- Versione installata dell'interfaccia della riga di comando di Azure.
- Configurare Terraform: seguire le istruzioni riportate in questo articolo e l'articolo Terraform e configurare l'accesso ad Azure .
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 da 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, la creazione di un'area di lavoro nella sottoscrizione A che usa un account di archiviazione dalla sottoscrizione B, lo spazio dei nomi di Azure Machine Learning deve essere registrato nella sottoscrizione B prima di poter usare l'account di archiviazione con l'area di lavoro.
Il provider di risorse per Azure Machine Learning è Microsoft.MachineLearningServices. Per informazioni su come verificare se è registrato e come registrarlo, vedere l'articolo Provider di risorse e tipi di Azure.
Importante
Questo vale solo per le risorse fornite durante la creazione dell'area di lavoro; Archiviazione di Azure account, Registro Azure Container, Azure Key Vault e Application Insights.
Suggerimento
Quando si crea l'area di lavoro, viene creata un'istanza di app Azure lication Insights. È possibile eliminare l'istanza di Application Insights dopo la creazione del cluster, se necessario. L'eliminazione limita le informazioni raccolte dall'area di lavoro e può rendere più difficile la risoluzione dei problemi. Se si elimina l'istanza di Application Insights creata dall'area di lavoro, non è possibile ricrearla senza eliminare e ricreare l'area di lavoro.
Per altre informazioni sull'uso di questa istanza di Application Insights, vedere Monitorare e raccogliere dati dagli endpoint del servizio Web di Machine Learning.
Dichiarare il provider di Azure
Creare il file di configurazione terraform che dichiara il provider di Azure:
Creare un file denominato
main.tf
. Se si usa Azure Cloud Shell, usare bash:code main.tf
Incollare il codice seguente nell'editor:
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 }
Salvare il file (<CTRL>S) e uscire dall'editor (<CTRL>Q).
Distribuire un'area di lavoro
Per creare un'area di lavoro di Azure Machine Learning, è possibile usare le configurazioni terraform seguenti. Quando si crea un'area di lavoro di Azure Machine Learning, sono necessari vari altri servizi come dipendenze. Il modello specifica anche queste risorse associate all'area di lavoro. A seconda delle esigenze, è possibile scegliere di usare il modello che crea risorse con connettività di rete pubblica o privata.
Alcune risorse in Azure richiedono nomi univoci globali. Prima di distribuire le risorse usando i modelli seguenti, impostare la name
variabile su un valore univoco.
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"
}
}
Risoluzione dei problemi
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 | Archiviazione di Azure Account 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 calcolo di Azure Machine Learning. |
Microsoft.ContainerService | Se si prevede di distribuire modelli sottoposti a training in servizio 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 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.
Passaggi successivi
Per altre informazioni sul supporto di Terraform in Azure, vedere la documentazione di Terraform in Azure.
Per informazioni dettagliate sul provider di Azure Terraform e sul modulo Machine Learning, vedere Provider di Azure Resource Manager di Registro Terraform.
Per trovare esempi di modelli di "avvio rapido" per Terraform, vedere Modelli di avvio rapido di Azure Terraform:
- 101: Area di lavoro e calcolo di Machine Learning: set minimo di risorse necessarie per iniziare a usare Azure Machine Learning.
- 201: area di lavoro di Machine Learning, calcolo e un set di componenti di rete per l'isolamento della rete: tutte le risorse necessarie per creare un ambiente pilota di produzione da usare con i dati HBI.
- 202: simile a 201, ma con l'opzione per portare i componenti di rete esistenti.
- 301: Area di lavoro di Machine Learning (Hub sicuro e spoke 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.To learn more about network configuration options, see Secure Azure Machine Learning workspace resources using virtual networks (VNets).
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 aggiornato Azure Machine Learning con gli aggiornamenti della sicurezza più recenti, vedere Gestione delle vulnerabilità.