Dela via


Hantera Azure Mašinsko učenje-arbetsytor med hjälp av Terraform

I den här artikeln får du lära dig hur du skapar en Azure Mašinsko učenje-arbetsyta med hjälp av Terraform-konfigurationsfiler. Med Terraform-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-konfigurationsfil är ett dokument som definierar de resurser som behövs för en distribution. Terraform-konfigurationen kan också ange distributionsvariabler som ska användas för att ange indatavärden när du tillämpar 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 Mašinsko učenje-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 i prenumeration B måste Azure Mašinsko učenje-namnområdet registreras i prenumeration B innan arbetsytan kan använda lagringskontot.

    Resursprovidern för Azure Mašinsko učenje är Microsoft.MachineLearningServices. Information om hur du ser om den är registrerad eller registrerar den finns i Azure-resursprovidrar och typer.

    Viktigt!

    Den här informationen gäller endast för resurser som tillhandahålls när arbetsytan skapas: Azure Storage-konton, Azure Container Registry, Azure Key Vault och Application Insights.

  • Följande begränsning gäller för Application Insights-instansen som skapades när arbetsytan skapades:

    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 är det enda sättet att återskapa den att ta bort och återskapa arbetsytan.

    Mer information om hur du använder Application Insights-instansen finns i Övervaka och samla in data från Mašinsko učenje webbtjänstslutpunkter.

Skapa arbetsytan

Skapa en fil med namnet main.tf som har följande kod.

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
}

Deklarera Azure-providern i en fil med namnet providers.tf som har följande kod.

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

Konfigurera arbetsytan

Om du vill skapa en Azure Mašinsko učenje-arbetsyta använder du någon av följande Terraform-konfigurationer. En Azure Mašinsko učenje-arbetsyta kräver olika andra tjänster som beroenden. Mallen anger dessa associerade resurser. Beroende på dina behov kan du välja att använda en mall som skapar resurser med antingen offentlig eller privat nätverksanslutning.

Kommentar

Vissa resurser i Azure kräver globalt unika namn. Innan du distribuerar dina resurser måste du ange name variabler till unika värden.

Följande konfiguration skapar en arbetsyta med anslutning till offentliga nätverk.

Definiera följande variabler i en fil med namnet 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"
}

Definiera följande arbetsytekonfiguration i en fil med namnet 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"
  }
}

Skapa och tillämpa planen

Kör följande kod för att skapa arbetsytan:

terraform init

terraform plan \
        # -var <any of the variables set in variables.tf> \
          -out demo.tfplan

terraform apply "demo.tfplan"

Felsöka resursproviderfel

När du skapar en Azure Mašinsko učenje-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 Mašinsko učenje:

Resursprovider Varför det behövs
Microsoft.MachineLearningServices Skapa Azure Mašinsko učenje-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 i Azure Mašinsko učenje beräkningsinstans.
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 Mašinsko učenje 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 Mašinsko učenje 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.