Udostępnij za pośrednictwem


Zarządzanie obszarami roboczymi usługi Azure Machine Learning przy użyciu narzędzia Terraform

Z tego artykułu dowiesz się, jak utworzyć obszar roboczy usługi Azure Machine Learning przy użyciu plików konfiguracji programu Terraform. Pliki konfiguracji oparte na szablonach programu Terraform umożliwiają definiowanie, tworzenie i konfigurowanie zasobów platformy Azure w powtarzalny i przewidywalny sposób. Narzędzie Terraform śledzi stan zasobu i może wyczyścić i zniszczyć zasoby.

Plik konfiguracji programu Terraform to dokument, który definiuje zasoby potrzebne do wdrożenia. Konfiguracja narzędzia Terraform może również określać zmienne wdrożenia, które mają być używane do podawania wartości wejściowych podczas stosowania konfiguracji.

Wymagania wstępne

Ograniczenia

  • Podczas tworzenia nowego obszaru roboczego możesz automatycznie tworzyć usługi wymagane przez obszar roboczy lub korzystać z istniejących usług. Jeśli chcesz używać istniejących usług z innej subskrypcji platformy Azure niż obszar roboczy, musisz zarejestrować przestrzeń nazw usługi Azure Machine Learning w subskrypcji zawierającej te usługi. Jeśli na przykład utworzysz obszar roboczy w subskrypcji A, który używa konta magazynu w subskrypcji B, przestrzeń nazw usługi Azure Machine Learning musi być zarejestrowana w subskrypcji B, zanim obszar roboczy będzie mógł korzystać z konta magazynu.

    Dostawca zasobów dla usługi Azure Machine Learning to Microsoft.MachineLearningServices. Aby uzyskać informacje na temat tego, czy jest on zarejestrowany, czy zarejestrowany, zobacz Dostawcy zasobów i typy platformy Azure.

    Ważne

    Te informacje dotyczą tylko zasobów udostępnianych podczas tworzenia obszaru roboczego: konta usługi Azure Storage, usługa Azure Container Registry, usługa Azure Key Vault i usługa Application Insights.

  • Następujące ograniczenie dotyczy wystąpienia usługi Application Insights utworzonego podczas tworzenia obszaru roboczego:

    Napiwek

    Wystąpienie usługi aplikacja systemu Azure Insights jest tworzone podczas tworzenia obszaru roboczego. Jeśli chcesz, możesz usunąć wystąpienie usługi Application Insights po utworzeniu klastra. Usunięcie go ogranicza informacje zebrane z obszaru roboczego i może utrudnić rozwiązywanie problemów. Jeśli usuniesz wystąpienie usługi Application Insights utworzone przez obszar roboczy, jedynym sposobem ponownego utworzenia go jest usunięcie i ponowne utworzenie obszaru roboczego.

    Aby uzyskać więcej informacji na temat korzystania z wystąpienia usługi Application Insights, zobacz Monitorowanie i zbieranie danych z punktów końcowych usługi sieci Web Machine Learning.

Tworzenie obszaru roboczego

Utwórz plik o nazwie main.tf zawierający następujący 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
}

Zadeklaruj dostawcę platformy Azure w pliku o nazwie providers.tf , który ma następujący 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
    }
  }
}

Skonfiguruj obszar roboczy

Aby utworzyć obszar roboczy usługi Azure Machine Learning, użyj jednej z następujących konfiguracji programu Terraform. Obszar roboczy usługi Azure Machine Learning wymaga różnych innych usług jako zależności. Szablon określa te skojarzone zasoby. W zależności od potrzeb możesz użyć szablonu, który tworzy zasoby z łącznością z siecią publiczną lub prywatną.

Uwaga

Niektóre zasoby na platformie Azure wymagają globalnie unikatowych nazw. Przed wdrożeniem zasobów upewnij się, że ustawiono name zmienne na unikatowe wartości.

Poniższa konfiguracja tworzy obszar roboczy z łącznością sieci publicznej.

Zdefiniuj następujące zmienne w pliku o nazwie 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"
}

Zdefiniuj następującą konfigurację obszaru roboczego w pliku o nazwie 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"
  }
}

Tworzenie i stosowanie planu

Aby utworzyć obszar roboczy, uruchom następujący kod:

terraform init

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

terraform apply "demo.tfplan"

Rozwiązywanie problemów z błędami dostawcy zasobów

Podczas tworzenia obszaru roboczego usługi Azure Machine Learning lub zasobu używanego przez obszar roboczy może wystąpić błąd podobny do następujących komunikatów:

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

Większość dostawców zasobów jest automatycznie rejestrowana, ale nie wszystkie. Jeśli zostanie wyświetlony ten komunikat, musisz zarejestrować wymienionego dostawcę.

Poniższa tabela zawiera listę dostawców zasobów wymaganych przez usługę Azure Machine Learning:

Dostawca zasobów Dlaczego jest to potrzebne
Microsoft.MachineLearningServices Tworzenie obszaru roboczego usługi Azure Machine Learning.
Microsoft.Storage Konto usługi Azure Storage jest używane jako domyślny magazyn dla obszaru roboczego.
Microsoft.ContainerRegistry Usługa Azure Container Registry jest używana przez obszar roboczy do tworzenia obrazów platformy Docker.
Microsoft.KeyVault Usługa Azure Key Vault jest używana przez obszar roboczy do przechowywania wpisów tajnych.
Microsoft.Notebooks Zintegrowane notesy w wystąpieniu obliczeniowym usługi Azure Machine Learning.
Microsoft.ContainerService Jeśli planujesz wdrażanie wytrenowanych modeli w usługach Azure Kubernetes Services.

Jeśli planujesz korzystanie z klucza zarządzanego przez klienta w usłudze Azure Machine Learning, należy zarejestrować następujących dostawców usług:

Dostawca zasobów Dlaczego jest to potrzebne
Microsoft.DocumentDB Wystąpienie usługi Azure CosmosDB, które rejestruje metadane obszaru roboczego.
Microsoft.Search Usługa Azure Search udostępnia funkcje indeksowania dla obszaru roboczego.

Jeśli planujesz korzystanie z zarządzanej sieci wirtualnej z usługą Azure Machine Learning, dostawca zasobów Microsoft.Network musi być zarejestrowany. Ten dostawca zasobów jest używany przez obszar roboczy podczas tworzenia prywatnych punktów końcowych dla zarządzanej sieci wirtualnej.

Aby uzyskać informacje na temat rejestrowania dostawców zasobów, zobacz Rozwiązywanie błędów dotyczących rejestracji dostawcy zasobów.