Gerir áreas de trabalho do Azure Machine Learning com o Terraform

Neste artigo, aprende a criar e gerir um espaço de trabalho de Aprendizagem automática Azure utilizando ficheiros de configuração Terraform. Os ficheiros de configuração baseados no modelo do Terraform permitem-lhe definir, criar e configurar recursos Azure de uma forma repetível e previsível. Terraform rastreia o estado de recursos e é capaz de limpar e destruir recursos.

Uma configuração Terraform é um documento que define os recursos necessários para uma implantação. Também pode especificar variáveis de implantação. As variáveis são utilizadas para fornecer valores de entrada ao utilizar a configuração.

Pré-requisitos

Limitações

  • Ao criar um novo espaço de trabalho, pode criar automaticamente serviços necessários pelo espaço de trabalho ou utilizar os serviços existentes. Se pretender utilizar os serviços existentes a partir de uma subscrição Azure diferente do espaço de trabalho, tem de registar o espaço de nomeS Azure Machine Learning na subscrição que contém esses serviços. Por exemplo, criar um espaço de trabalho na subscrição A que utiliza uma conta de armazenamento a partir da subscrição B, o espaço de nomes Azure Machine Learning deve ser registado na subscrição B antes de poder utilizar a conta de armazenamento com o espaço de trabalho.

    O fornecedor de recursos para Azure Machine Learning é o Microsoft.MachineLearningServices. Para obter informações sobre como ver se está registado e como registá-lo, consulte os fornecedores e tipos de artigos da Azure .

    Importante

    Isto aplica-se apenas aos recursos fornecidos durante a criação do espaço de trabalho; Contas de armazenamento Azure, Registo de Contentores Azure, Azure Key Vault e Insights de Aplicação.

Dica

Uma Aplicação Azure exemplo insights é criada quando cria o espaço de trabalho. Pode eliminar a instância 'Insights de Aplicação' após a criação do cluster, se quiser. A sua eliminação limita a informação recolhida do espaço de trabalho, podendo dificultar a resolução de problemas. Se eliminar a instância Application Insights criada pelo espaço de trabalho, não poderá recriá-la sem eliminar e recriar o espaço de trabalho.

Para obter mais informações sobre a utilização desta instância Application Insights, consulte o Monitor e recolha dados dos pontos finais do serviço web Machine Learning.

Declarar o fornecedor do Azure

Crie o ficheiro de configuração Terraform que declara o fornecedor Azure:

  1. Crie um novo ficheiro com o nome main.tf. Se trabalhar com a Azure Cloud Shell, use a festa:

    code main.tf
    
  2. Cole o seguinte código no editor:

    main.tf:

    terraform {
      required_version = ">=1.0"
    
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "=2.76.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    data "azurerm_client_config" "current" {}
    
    resource "azurerm_resource_group" "default" {
      name     = "rg-${var.name}-${var.environment}"
      location = var.location
    }
    
  3. Guarde o ficheiro (<Ctrl>S) e saia do editor (<Ctrl>Q).

Implementar um espaço de trabalho

As seguintes configurações terraform podem ser usadas para criar um espaço de trabalho de Aprendizagem de Máquinas Azure. Quando cria um espaço de trabalho de Aprendizagem automática Azure, vários outros serviços são necessários como dependências. O modelo também especifica estes recursos associados ao espaço de trabalho. Dependendo das suas necessidades, pode optar por utilizar o modelo que cria recursos com conectividade de rede pública ou privada.

Alguns recursos em Azure requerem nomes globalmente únicos. Antes de utilizar os seus recursos utilizando os seguintes modelos, desloque a name variável para um valor único.

variables.tf:

variable "name" {
  type        = string
  description = "Name of the deployment"
}

variable "environment" {
  type        = string
  description = "Name of the environment"
  default     = "dev"
}

variable "location" {
  type        = string
  description = "Location of the resources"
  default     = "East US"
}

workspace.tf:

# Dependent resources for Azure Machine Learning
resource "azurerm_application_insights" "default" {
  name                = "appi-${var.name}-${var.environment}"
  location            = azurerm_resource_group.default.location
  resource_group_name = azurerm_resource_group.default.name
  application_type    = "web"
}

resource "azurerm_key_vault" "default" {
  name                     = "kv-${var.name}-${var.environment}"
  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                     = "st${var.name}${var.environment}"
  location                 = azurerm_resource_group.default.location
  resource_group_name      = azurerm_resource_group.default.name
  account_tier             = "Standard"
  account_replication_type = "GRS"
}

resource "azurerm_container_registry" "default" {
  name                = "cr${var.name}${var.environment}"
  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                    = "mlw-${var.name}-${var.environment}"
  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

  identity {
    type = "SystemAssigned"
  }
}

Resolução de problemas

Erros do fornecedor de recursos

Ao criar um espaço de trabalho Azure Machine Learning ou um recurso utilizado pelo espaço de trabalho, poderá 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 fornecedores de recursos estão automaticamente registados, mas não todos. Se receber esta mensagem, tem de registar o fornecedor mencionado.

A tabela a seguir contém uma lista dos fornecedores de recursos exigidos pela Azure Machine Learning:

Fornecedor de recursos Por que é necessário
Microsoft.MachineLearningServices Criar o espaço de trabalho de Aprendizagem automática Azure.
Microsoft.Storage A conta de armazenamento Azure é utilizada como o armazenamento predefinido para o espaço de trabalho.
Microsoft.ContainerRegistry Azure Container Registry é usado pelo espaço de trabalho para construir imagens docker.
Microsoft.KeyVault Azure Key Vault é usada pelo espaço de trabalho para armazenar segredos.
Microsoft.Notebooks/NotebookProxies Cadernos integrados no caso do cálculo Azure Machine Learning.
Microsoft.ContainerService Se planeia implementar modelos treinados para os Serviços Azure Kubernetes.

Se planeia utilizar uma chave gerida pelo cliente com a Azure Machine Learning, então os seguintes prestadores de serviços devem estar registados:

Fornecedor de recursos Por que é necessário
Microsoft.DocumentDB/databaseSacons Exemplo de Azure CosmosDB que regista metadados para o espaço de trabalho.
Microsoft.Search/searchServices A Azure Search fornece capacidades de indexação para o espaço de trabalho.

Para obter informações sobre o registo de fornecedores de recursos, consulte Os erros de Resolução para o registo do fornecedor de recursos.

Passos seguintes