Hantera Azure Machine Learning-arbetsytor med Terraform

I den här artikeln får du lära dig hur du skapar och hanterar en Azure Machine Learning-arbetsyta med hjälp av Terraform-konfigurationsfiler. Med Terraforms mallbaserade konfigurationsfiler kan du definiera, skapa och konfigurera Azure-resurser på ett repeterbart och förutsägbart sätt. Terraform spårar resurstillstånd och kan rensa och förstöra resurser.

En Terraform-konfiguration är ett dokument som definierar de resurser som behövs för en distribution. Den kan också ange distributionsvariabler. Variabler används för att ange indatavärden när du använder konfigurationen.

Förutsättningar

Begränsningar

  • När du skapar en ny arbetsyta kan du antingen automatiskt skapa tjänster som behövs av arbetsytan eller använda befintliga tjänster. Om du vill använda befintliga tjänster från en annan Azure-prenumeration än arbetsytan måste du registrera Azure Machine Learning-namnområdet i prenumerationen som innehåller dessa tjänster. Om du till exempel skapar en arbetsyta i prenumeration A som använder ett lagringskonto från prenumeration B måste Azure Machine Learning-namnområdet registreras i prenumeration B innan du kan använda lagringskontot med arbetsytan.

    Resursprovidern för Azure Machine Learning är Microsoft.MachineLearningServices. Information om hur du ser om den är registrerad och hur du registrerar den finns i artikeln Azure-resursprovidrar och -typer .

    Viktigt!

    Detta gäller endast för resurser som tillhandahålls när arbetsytan skapas. Azure Storage-konton, Azure Container Register, Azure Key Vault och Application Insights.

Dricks

En Azure Application Insights-instans skapas när du skapar arbetsytan. Du kan ta bort Application Insights-instansen när klustret har skapats om du vill. Om du tar bort den begränsas den information som samlas in från arbetsytan och kan göra det svårare att felsöka problem. Om du tar bort Application Insights-instansen som skapats av arbetsytan kan du inte återskapa den utan att ta bort och återskapa arbetsytan.

Mer information om hur du använder den här Application Insights-instansen finns i Övervaka och samla in data från Machine Learning-webbtjänstslutpunkter.

Deklarera Azure-providern

Skapa Terraform-konfigurationsfilen som deklarerar Azure-providern:

  1. Skapa en ny fil med namnet main.tf. Om du arbetar med Azure Cloud Shell använder du bash:

    code main.tf
    
  2. Klistra in följande kod i redigeringsprogrammet:

    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. Spara filen (Ctrl S) och avsluta redigeraren (<Ctrl>Q).><

Distribuera en arbetsyta

Följande Terraform-konfigurationer kan användas för att skapa en Azure Machine Learning-arbetsyta. När du skapar en Azure Machine Learning-arbetsyta krävs olika andra tjänster som beroenden. Mallen anger även dessa associerade resurser till arbetsytan. Beroende på dina behov kan du välja att använda mallen som skapar resurser med antingen offentlig eller privat nätverksanslutning.

Vissa resurser i Azure kräver globalt unika namn. Innan du distribuerar dina resurser med hjälp av följande mallar anger du variabeln name till ett värde som är unikt.

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

Felsökning

Resursproviderfel

När du skapar en Azure Machine Learning-arbetsyta eller en resurs som används av arbetsytan kan du få ett fel som liknar följande meddelanden:

  • No registered resource provider found for location {location}
  • The subscription is not registered to use namespace {resource-provider-namespace}

De flesta resursprovidrar registreras automatiskt, men inte alla. Om du får det här meddelandet måste du registrera den angivna providern.

Följande tabell innehåller en lista över de resursprovidrar som krävs av Azure Machine Learning:

Resursprovider Varför det behövs
Microsoft.MachineLearningServices Skapa Azure Machine Learning-arbetsytan.
Microsoft.Storage Azure Storage-kontot används som standardlagring för arbetsytan.
Microsoft.ContainerRegistry Azure Container Registry används av arbetsytan för att skapa Docker-avbildningar.
Microsoft.KeyVault Azure Key Vault används av arbetsytan för att lagra hemligheter.
Microsoft.Notebooks Integrerade notebook-filer på Azure Machine Learning-beräkningsinstansen.
Microsoft.ContainerService Om du planerar att distribuera tränade modeller till Azure Kubernetes Services.

Om du planerar att använda en kundhanterad nyckel med Azure Machine Learning måste följande tjänsteleverantörer registreras:

Resursprovider Varför det behövs
Microsoft.DocumentDB Azure CosmosDB-instans som loggar metadata för arbetsytan.
Microsoft.Search Azure Search tillhandahåller indexeringsfunktioner för arbetsytan.

Om du planerar att använda ett hanterat virtuellt nätverk med Azure Machine Learning måste resursprovidern Microsoft.Network vara registrerad. Den här resursprovidern används av arbetsytan när du skapar privata slutpunkter för det hanterade virtuella nätverket.

Information om hur du registrerar resursprovidrar finns i Lösa fel för registrering av resursprovider.

Nästa steg