Partilhar via


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

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.