Verwalten von Azure Machine Learning-Arbeitsbereichen mithilfe von Terraform

In diesem Artikel erfahren Sie, wie Sie einen Azure Machine Learning-Arbeitsbereich mithilfe von Terraform-Konfigurationsdateien erstellen und verwalten. Die vorlagenbasierten Konfigurationsdateien von Terraform ermöglichen es Ihnen, Azure-Ressourcen in wiederholbarer und vorhersagbarer Weise zu definieren, zu erstellen und zu konfigurieren. Terraform verfolgt den Ressourcenzustand nach und kann Ressourcen bereinigen und zerstören.

Eine Terraform-Konfiguration ist ein Dokument, das die Ressourcen definiert, die für eine Bereitstellung benötigt werden. Sie kann auch Variablen für die Bereitstellung angeben. Variablen werden verwendet, um Eingabewerte bereitzustellen, wenn die Konfiguration verwendet wird.

Voraussetzungen

Einschränkungen

  • Wenn Sie einen neuen Arbeitsbereich erstellen, können Sie die vom Arbeitsbereich benötigten Dienste automatisch erstellen oder vorhandene Dienste verwenden. Wenn Sie vorhandene Dienste aus einem anderen Azure-Abonnement als dem des Arbeitsbereichs verwenden möchten, müssen Sie den Azure Machine Learning-Namespace in dem Abonnement mit diesen Dienst registrieren. Wenn Sie z. B. einen Arbeitsbereich in Abonnement A erstellen, der ein Speicherkonto aus Abonnement B verwendet, muss der Azure Machine Learning-Namespace in Abonnement B registriert werden, damit Sie das Speicherkonto mit dem Arbeitsbereich verwenden können.

    Der Ressourcenanbieter für Machine Learning ist Microsoft.MachineLearningServices. Informationen zum Überprüfen und Durchführen der Registrierung finden Sie im Artikel Azure-Ressourcenanbieter und -typen.

    Wichtig

    Dies betrifft für Ressourcen, die beim Erstellen des Arbeitsbereichs bereitgestellt werden, also Azure Storage-Konten, Azure Container Registry, Azure Key Vault und Application Insights.

Tipp

Eine Azure Application Insights-Instanz wird erstellt, wenn Sie den Arbeitsbereich erstellen. Wenn Sie möchten, können Sie die Application Insights-Instanz nach der Clustererstellung löschen. Durch das Löschen werden die aus dem Arbeitsbereich gesammelten Informationen eingeschränkt, und die Problembehandlung ist möglicherweise schwieriger. Wenn Sie die vom Arbeitsbereich erstellte Application Insights-Instanz löschen, können Sie sie nicht neu erstellen, ohne den Arbeitsbereich zu löschen und neu zu erstellen.

Weitere Informationen zur Verwendung dieser Application Insights-Instanz finden Sie unter Überwachen und Erfassen von Daten von ML-Webdienst-Endpunkten.

Deklarieren des Azure-Anbieters

Erstellen Sie die Terraform-Konfigurationsdatei, die den Azure-Anbieter deklariert:

  1. Erstellen Sie eine neue Datei mit dem Namen main.tf. Wenn Sie mit Azure Cloud Shell arbeiten, verwenden Sie Bash:

    code main.tf
    
  2. Fügen Sie den folgenden Code in den Editor ein:

    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. Speichern Sie die Datei (<STRG+S>), und beenden Sie den Editor (STRG+Q<)>.

Bereitstellen eines Arbeitsbereichs

Die folgenden Terraform-Konfigurationen können verwendet werden, um einen Azure Machine Learning-Arbeitsbereich zu erstellen. Wenn Sie einen Azure Machine Learning-Arbeitsbereich erstellen, werden verschiedene andere Dienste als Abhängigkeiten benötigt. Die Vorlage gibt auch diese zugeordneten Ressourcen für den Arbeitsbereich an. Je nach Bedarf können Sie die Vorlage verwenden, die Ressourcen mit öffentlicher oder privater Netzwerkkonnektivität erstellt.

Einige Ressourcen in Azure erfordern global eindeutige Namen. Bevor Sie Ihre Ressourcen mithilfe der folgenden Vorlagen bereitstellen, legen Sie die name-Variable auf einen eindeutigen Wert fest.

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

Problembehandlung

Fehler der Ressourcenanbieter

Wenn Sie einen Azure Machine Learning-Arbeitsbereich oder eine vom Arbeitsbereich verwendete Ressource erstellen, erhalten Sie möglicherweise eine Fehlermeldung ähnlich der folgenden:

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

Die meisten Ressourcenanbieter werden automatisch registriert, aber nicht alle. Wenn Sie diese Meldung erhalten, müssen Sie den erwähnten Anbieter registrieren.

Die folgende Tabelle enthält eine Liste der Ressourcenanbieter, die für Azure Machine Learning erforderlich sind:

Ressourcenanbieter Zweck
Microsoft.MachineLearningServices Erstellen des Azure Machine Learning-Arbeitsbereichs
Microsoft.Storage Das Azure Storage-Konto wird als Standarddatenspeicher für den Arbeitsbereich verwendet.
Microsoft.ContainerRegistry Azure Container Registry wird vom Arbeitsbereich zum Erstellen von Docker-Images verwendet.
Microsoft.KeyVault Azure Key Vault wird vom Arbeitsbereich zum Speichern von Geheimnissen verwendet.
Microsoft.Notebooks/NotebookProxies Integrierte Notebooks in einer Azure Machine Learning-Compute-Instanz
Microsoft.ContainerService Wenn Sie die Bereitstellung trainierter Modelle in Azure Kubernetes Services planen

Wenn Sie einen kundenseitig verwalteten Schlüssel mit Azure Machine Learning verwenden möchten, müssen die folgenden Dienstanbieter registriert werden:

Ressourcenanbieter Zweck
Microsoft.DocumentDB/databaseAccounts Azure CosmosDB-Instanz, die Metadaten für den Arbeitsbereich protokolliert
Microsoft.Search/searchServices Azure Search bietet Indizierungsfunktionen für den Arbeitsbereich.

Weitere Informationen zum Registrieren eines Ressourcenanbieters finden Sie unter Beheben von Fehlern bei der Ressourcenanbieterregistrierung.

Nächste Schritte