Gerenciar os espaços de trabalho do Azure Machine Learning usando o Terraform

Neste artigo, você aprenderá a criar e gerenciar um espaço de trabalho 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 é capaz de limpar e destruir recursos.

Uma configuração do Terraform é um documento que define os recursos necessários para uma implantação. Além disso, pode especificar as variáveis de implantação. As variáveis são usadas para fornecer valores de entrada ao usar a configuração.

Pré-requisitos

Limitações

  • Ao criar um novo espaço de trabalho, é possível criar automaticamente os serviços necessários para o espaço de trabalho 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, ao criar um espaço de trabalho na assinatura A que usa uma conta de armazenamento da assinatura B, o namespace do Azure Machine Learning deverá ser registrado na assinatura B antes que você possa usar a conta de armazenamento com o espaço de trabalho.

    O provedor de recursos do Azure Machine Learning é o Microsoft. MachineLearningServices. Para mais informações sobre como verificar se ele está registrado e como registrá-lo, confira o artigo Provedores e tipos de recursos do Azure.

    Importante

    Isso se aplica somente aos recursos fornecidos durante a criação do espaço de trabalho; Contas de Armazenamento do Azure, Registro de Contêiner do Azure, Azure Key Vault e Application Insights.

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 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, não poderá recriá-la sem excluir e recriar o espaço de trabalho.

Para saber mais sobre como usar essa instância do Application Insights, confira Monitorar e coletar dados de pontos de extremidade de serviço Web do Machine Learning.

Declarar o provedor do Azure

Crie o arquivo de configuração Terraform que declara o provedor do Azure:

  1. Crie um arquivo chamado main.tf. Se estiver trabalhando com Azure Cloud Shell, use o bash:

    code main.tf
    
  2. Cole o código a seguir no 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
    }
    
  3. Salve o arquivo (<Ctrl>S) e saia do editor (<Ctrl>Q).

Implantar um espaço de trabalho

As seguintes configurações do Terraform podem ser usadas para criar um espaço de trabalho do Azure Machine Learning. Quando você cria um espaço de trabalho do Azure Machine Learning, vários outros serviços são necessários como dependências. O modelo também especifica esses recursos associados ao espaço de trabalho. Dependendo de suas necessidades, você pode optar por usar o modelo que cria recursos com conectividade de rede pública ou privada.

Alguns recursos no Azure exigem nomes globalmente exclusivos. Antes de implantar seus recursos usando os modelos a seguir, defina a variável name como um valor que seja exclusivo.

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"
  }
}

Solução de problemas

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.

Próximas etapas