Gerenciar workspaces do Azure Machine Learning usando o Terraform
Neste artigo, você aprenderá a criar um workspace do Azure Machine Learning usando arquivos de configuração do Terraform. Os arquivos de configuração com base em modelo do Terraform permitem definir, criar e configurar recursos do Azure de forma repetível e previsível. O Terraform rastreia o estado do recurso e pode limpar e destruir recursos.
Um arquivo de configuração do 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 ao aplicar a configuração.
Pré-requisitos
- Uma assinatura do Azure com uma versão gratuita ou paga do Azure Machine Learning. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
- Terraform instalado e configurado de acordo com as instruções no Início Rápido: Instalar e configurar o Terraform.
Limitações
Ao criar um novo workspace, é possível criar automaticamente os serviços necessários para o workspace ou usar os serviços existentes. Se você quiser usar os serviços existentes de uma assinatura do Azure diferente do espaço de trabalho, deverá registrar o namespace Azure Machine Learning na assinatura que contém esses serviços. Por exemplo, se criar um workspace na assinatura A que utiliza uma conta de armazenamento na assinatura B, o namespace do Azure Machine Learning deve ser registrado na assinatura B antes que o workspace possa usar a conta de armazenamento.
O provedor de recursos do Azure Machine Learning é o Microsoft. MachineLearningServices. Para obter informações sobre como ver se isso já está registrado ou em processo de registro, confira Provedores e tipos de recursos do Azure.
Importante
Essas informações se aplicam somente aos recursos fornecidos durante a criação do workspace: contas de Armazenamento do Microsoft Azure, Registro de Contêiner do Azure, Azure Key Vault e Application Insights.
A seguinte limitação se aplica à instância do Application Insights criada durante a criação do workspace:
Dica
Uma instância do Azure Application Insights é criada quando você cria o espaço de trabalho. Se quiser, você pode excluir a instância do Application Insights após a criação do cluster. Essa exclusão limita as informações coletadas do workspace e pode dificultar a solução de problemas. Se você excluir a instância do Application Insights criada pelo workspace, a única maneira de recriá-la é excluindo e recriando o workspace.
Para obter mais informações sobre como usar a instância do Application Insights, confira Monitorar e coletar dados de pontos de extremidade de serviço Web do Machine Learning.
Criar o workspace
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 o workspace
Para criar um workspace do Azure Machine Learning, use uma das configurações do Terraform a seguir. Um workspace 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.
Observação
Alguns recursos no Azure exigem nomes globalmente exclusivos. Antes de implantar seus recursos, defina as variáveis name
como valores exclusivos.
A configuração a seguir cria um workspace com conectividade de rede pública.
Defina as variáveis a seguir 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 workspace 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 workspace, 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 problemas de erros do provedor de recursos
Ao criar um workspace do Azure Machine Learning ou um recurso usado pelo workspace, 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 é automaticamente registrada, mas não todos. Se você receber essa mensagem, será necessário registrar o provedor mencionado.
A seguinte tabela contém uma lista dos provedores de recursos exigidos pelo Azure Machine Learning:
Provedor de recursos | Por que ele é necessário |
---|---|
Microsoft.MachineLearningServices | Criar o Workspace do Azure Machine Learning. |
Microsoft.Storage | A conta de Armazenamento do Azure é usada como o armazenamento padrão do workspace. |
Microsoft.ContainerRegistry | O Registro de Contêiner do Azure é usado pelo workspace para criar imagens do Docker. |
Microsoft.KeyVault | O Azure Key Vault é usado pelo workspace para armazenar segredos. |
Microsoft.Notebooks | Notebooks integrados na instância de computação do Azure Machine Learning. |
Microsoft.ContainerService | Se você planeja implantar modelos treinados nos Serviços de Kubernetes do Azure. |
Se você planeja usar uma chave gerenciada pelo cliente com o Azure Machine Learning, registre os seguintes provedores de serviços:
Provedor de recursos | Por que ele é necessário |
---|---|
Microsoft.DocumentDB | Instância do Azure CosmosDB que registra metadados do workspace. |
Microsoft.Search | O Azure Search oferece funcionalidades de indexação para o workspace. |
Se você planeja usar uma rede virtual gerenciada com o Azure Machine Learning, registre o provedor de recursos Microsoft.Network. Esse provedor de recursos é usado pelo workspace ao criar pontos de extremidade privados para a rede virtual gerenciada.
Para obter informações sobre o registro de provedores de recursos, confira Resolver erros de registro de provedor de recursos.
Recursos relacionados
Para saber mais sobre o suporte do Terraform no Azure, confira a Documentação do Terraform no Azure.
Para obter detalhes sobre o provedor do Terraform Azure e o módulo Machine Learning, consulte Provedor do Azure Resource Manager do Registro do Terraform.
Para encontrar exemplos de modelos de início rápido para Terraform, consulte os seguintes modelos de início rápido do Azure Terraform.
- 101: Workspace e computação do Machine Learning fornece o conjunto mínimo de recursos necessários para começar a usar o Azure Machine Learning.
- 201: Workspace e computação do Machine Learning e um conjunto de componentes de rede para isolamento de rede fornece todos os recursos necessários para criar um ambiente de 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 os componentes de rede existentes.
- 301: Workspace do Machine Learning (hub e spoke seguro com firewall).
Para saber mais sobre as opções de configuração de rede, consulte Proteger recursos do workspace do Azure Machine Learning usando redes virtuais.
Para implantações alternativas baseadas em modelo do Azure Resource Manager, confira Implantar recursos com modelos do Resource Manager e a API REST do Resource Manager.
Para obter informações sobre como manter o workspace do Azure Machine Learning em dia com as últimas atualizações de segurança, confira Gerenciamento de vulnerabilidades.