Gerenciar espaços de trabalho do Azure Machine Learning usando o Terraform
Neste artigo, você aprenderá a criar um espaço de trabalho do Azure Machine Learning usando arquivos de configuração do Terraform. Os arquivos de configuração baseados em modelo Terraform permitem definir, criar e configurar recursos do Azure de maneira repetível e previsível. Terraform rastreia o estado dos recursos e pode limpar e destruir recursos.
Um arquivo de configuração Terraform é um documento que define os recursos necessários para uma implantação. A configuração do Terraform também pode especificar variáveis de implantação a serem usadas para fornecer valores de entrada quando você aplicar a configuração.
Pré-requisitos
- Uma subscrição do Azure com uma versão gratuita ou paga do Azure Machine Learning. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Terraform instalado e configurado de acordo com as instruções em Guia de início rápido: instalar e configurar Terraform.
Limitações
Ao criar um novo espaço de trabalho, você pode criar automaticamente os serviços necessários para o espaço de trabalho ou usar serviços existentes. Se você quiser usar serviços existentes de uma assinatura do Azure diferente do espaço de trabalho, deverá registrar o namespace do Azure Machine Learning na assinatura que contém esses serviços. Por exemplo, se você criar um espaço de trabalho na assinatura A que usa uma conta de armazenamento na assinatura B, o namespace do Azure Machine Learning deverá ser registrado na assinatura B antes que o espaço de trabalho possa usar a conta de armazenamento.
O provedor de recursos para o Azure Machine Learning é Microsoft.MachineLearningServices. Para obter informações sobre como ver se está registado ou registado, consulte Fornecedores e tipos de recursos do Azure.
Importante
Essas informações se aplicam somente aos recursos fornecidos durante a criação do espaço de trabalho: Contas de Armazenamento do Azure, Registro de Contêiner do Azure, Cofre da Chave do Azure e Application Insights.
A limitação a seguir se aplica à instância do Application Insights criada durante a criação do espaço de trabalho:
Gorjeta
Uma instância do Azure Application Insights é criada quando você cria o espaço de trabalho. Você pode excluir a instância do Application Insights após a criação do cluster, se desejar. Excluí-lo limita as informações coletadas do espaço de trabalho e pode dificultar a solução de problemas. Se você excluir a instância do Application Insights criada pelo espaço de trabalho, a única maneira de recriá-la é excluir e recriar o espaço de trabalho.
Para obter mais informações sobre como usar a instância do Application Insights, consulte Monitorar e coletar dados de pontos de extremidade de serviço Web do Machine Learning.
Crie a área de trabalho
Crie um arquivo chamado main.tf que tenha o código a seguir.
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
}
Declare o provedor do Azure em um arquivo chamado providers.tf que tenha o código a seguir.
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
}
}
}
Configurar a área de trabalho
Para criar um espaço de trabalho do Azure Machine Learning, use uma das seguintes configurações do Terraform. Um espaço de trabalho do Azure Machine Learning requer vários outros serviços como dependências. O modelo especifica esses recursos associados. Dependendo de suas necessidades, você pode optar por usar um modelo que cria recursos com conectividade de rede pública ou privada.
Nota
Alguns recursos no Azure exigem nomes globalmente exclusivos. Antes de implantar seus recursos, certifique-se de definir name
variáveis para valores exclusivos.
A configuração a seguir cria um espaço de trabalho com conectividade de rede pública.
Defina as seguintes variáveis em um arquivo chamado 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"
}
Defina a seguinte configuração de espaço de trabalho em um arquivo chamado 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"
}
}
Criar e aplicar o plano
Para criar o espaço de trabalho, execute o seguinte código:
terraform init
terraform plan \
# -var <any of the variables set in variables.tf> \
-out demo.tfplan
terraform apply "demo.tfplan"
Solucionar erros do provedor de recursos
Ao criar um espaço de trabalho do Azure Machine Learning ou um recurso usado pelo espaço de trabalho, você pode receber um erro semelhante às seguintes mensagens:
No registered resource provider found for location {location}
The subscription is not registered to use namespace {resource-provider-namespace}
A maioria dos provedores de recursos são registrados automaticamente, mas não todos. Se receber esta mensagem, terá de registar o fornecedor mencionado.
A tabela a seguir contém uma lista dos provedores de recursos exigidos pelo Azure Machine Learning:
Fornecedor de recursos | Por que motivo é necessária |
---|---|
Microsoft.MachineLearningServices | Criando o espaço de trabalho do Azure Machine Learning. |
Microsoft.Armazenamento | A Conta de Armazenamento do Azure é usada como o armazenamento padrão para o espaço de trabalho. |
Microsoft.ContainerRegistry | O Registro de Contêiner do Azure é usado pelo espaço de trabalho para criar imagens do Docker. |
Microsoft.KeyVault | O Azure Key Vault é usado pelo espaço de trabalho para armazenar segredos. |
Microsoft.Notebooks | Blocos de anotações integrados na instância de computação do Azure Machine Learning. |
Microsoft.ContainerService | Se você planeja implantar modelos treinados nos Serviços Kubernetes do Azure. |
Se você planeja usar uma chave gerenciada pelo cliente com o Azure Machine Learning, os seguintes provedores de serviços devem ser registrados:
Fornecedor de recursos | Por que motivo é necessária |
---|---|
Microsoft.Banco de Dados de Documentos | Instância do Azure CosmosDB que registra metadados para o espaço de trabalho. |
Microsoft.Pesquisa | O Azure Search fornece recursos de indexação para o espaço de trabalho. |
Se você planeja usar uma rede virtual gerenciada com o Azure Machine Learning, o provedor de recursos Microsoft.Network deve ser registrado. Este fornecedor de recursos é utilizado pelo espaço de trabalho ao criar endpoints privados para a rede virtual gerida.
Para obter informações sobre como registrar provedores de recursos, consulte Resolver erros para registro de provedor de recursos.
Recursos relacionados
Para saber mais sobre o suporte ao Terraform no Azure, consulte a documentação do Terraform no Azure.
Para obter detalhes sobre o provedor do Terraform Azure e o módulo de Machine Learning, consulte Terraform Registry Azure Resource Manager provider.
Para encontrar exemplos de modelos de início rápido para o Terraform, consulte os seguintes modelos de início rápido do Azure Terraform.
- 101: O espaço de trabalho e a computação do Machine Learning fornecem o conjunto mínimo de recursos necessários para começar a usar o Azure Machine Learning.
- 201: O espaço de trabalho de aprendizado de máquina, a computação e um conjunto de componentes de rede para isolamento de rede fornecem todos os recursos necessários para criar um ambiente piloto de produção para uso com dados de alto impacto nos negócios (HBI).
- 202: Semelhante ao 201, mas com a opção de trazer componentes de rede existentes.
- 301: Espaço de trabalho de Machine Learning (hub seguro e spoke com firewall).
Para saber mais sobre as opções de configuração de rede, consulte Proteger recursos do espaço de trabalho do Azure Machine Learning usando redes virtuais.
Para implantações alternativas baseadas em modelo do Azure Resource Manager, consulte Implantar recursos com modelos do Resource Manager e API REST do Resource Manager.
Para obter informações sobre como manter seu espaço de trabalho do Azure Machine Learning atualizado com as atualizações de segurança mais recentes, consulte Gerenciamento de vulnerabilidades.