Delen via


Azure Machine Learning-werkruimten beheren met behulp van Terraform

In dit artikel leert u hoe u een Azure Machine Learning-werkruimte maakt met behulp van Terraform-configuratiebestanden. Met op Terraform-sjablonen gebaseerde configuratiebestanden kunt u Azure-resources op een herhaalbare en voorspelbare manier definiëren, maken en configureren. Terraform houdt de resourcestatus bij en kan resources opschonen en vernietigen.

Een Terraform-configuratiebestand is een document dat de resources definieert die nodig zijn voor een implementatie. De Terraform-configuratie kan ook implementatievariabelen opgeven die moeten worden gebruikt om invoerwaarden op te geven wanneer u de configuratie toepast.

Vereisten

  • Een Azure-abonnement met een gratis of betaalde versie van Azure Machine Learning. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
  • Terraform geïnstalleerd en geconfigureerd volgens de instructies in quickstart: Terraform installeren en configureren.

Beperkingen

  • Wanneer u een nieuwe werkruimte maakt, kunt u automatisch services maken die nodig zijn voor de werkruimte of bestaande services gebruiken. Als u bestaande services van een ander Azure-abonnement wilt gebruiken dan de werkruimte, moet u de Azure Machine Learning-naamruimte registreren in het abonnement dat deze services bevat. Als u bijvoorbeeld een werkruimte maakt in abonnement A die gebruikmaakt van een opslagaccount in abonnement B, moet de Azure Machine Learning-naamruimte zijn geregistreerd in abonnement B voordat de werkruimte het opslagaccount kan gebruiken.

    De resourceprovider voor Azure Machine Learning is Microsoft.MachineLearningServices. Zie Azure-resourceproviders en -typen voor meer informatie over het registreren of registreren ervan.

    Belangrijk

    Deze informatie is alleen van toepassing op resources die worden verstrekt tijdens het maken van de werkruimte: Azure Storage-accounts, Azure Container Registry, Azure Key Vault en Application Insights.

  • De volgende beperking geldt voor het Application Insights-exemplaar dat is gemaakt tijdens het maken van de werkruimte:

    Tip

    Er wordt een Azure-toepassing Insights-exemplaar gemaakt wanneer u de werkruimte maakt. U kunt het Application Insights-exemplaar verwijderen nadat het cluster is gemaakt. Als u deze verwijdert, worden de gegevens die zijn verzameld uit de werkruimte beperkt en kan het lastiger zijn om problemen op te lossen. Als u het Application Insights-exemplaar verwijdert dat door de werkruimte is gemaakt, kunt u deze alleen opnieuw maken door de werkruimte te verwijderen en opnieuw te maken.

    Zie Gegevens van Machine Learning-webservice-eindpunten bewaken en verzamelen voor meer informatie over het gebruik van het Application Insights-exemplaar.

De werkruimte maken

Maak een bestand met de naam main.tf met de volgende code.

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
}

Declareer de Azure-provider in een bestand met de naam providers.tf met de volgende code.

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

Configureer de werkruimte

Als u een Azure Machine Learning-werkruimte wilt maken, gebruikt u een van de volgende Terraform-configuraties. Voor een Azure Machine Learning-werkruimte zijn verschillende andere services als afhankelijkheden vereist. De sjabloon geeft deze gekoppelde resources op. Afhankelijk van uw behoeften kunt u ervoor kiezen om een sjabloon te gebruiken waarmee resources worden gemaakt met een openbare of particuliere netwerkverbinding.

Notitie

Voor sommige resources in Azure zijn wereldwijd unieke namen vereist. Voordat u uw resources implementeert, moet u variabelen instellen name op unieke waarden.

Met de volgende configuratie maakt u een werkruimte met een openbare netwerkverbinding.

Definieer de volgende variabelen in een bestand met de naam 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"
}

Definieer de volgende werkruimteconfiguratie in een bestand met de naam 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"
  }
}

Het plan maken en toepassen

Voer de volgende code uit om de werkruimte te maken:

terraform init

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

terraform apply "demo.tfplan"

Resourceproviderfouten oplossen

Wanneer u een Azure Machine Learning-werkruimte maakt of een resource die door de werkruimte wordt gebruikt, ontvangt u mogelijk een foutbericht die op een van de volgende berichten lijkt:

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

De meeste resourceproviders worden automatisch geregistreerd, maar niet allemaal. Als u dit bericht ontvangt, moet u de vermelde provider registreren.

De volgende tabel bevat een lijst met de resourceproviders die vereist zijn voor Azure Machine Learning:

Resourceprovider Waarom dit nodig is
Microsoft.MachineLearningServices De Azure Machine Learning-werkruimte maken.
Microsoft.Storage Azure Storage-account wordt gebruikt als de standaardopslag voor de werkruimte.
Microsoft.ContainerRegistry Azure Container Registry wordt door de werkruimte gebruikt om Docker-installatiekopieën te bouwen.
Microsoft.KeyVault Azure Key Vault wordt door de werkruimte gebruikt om geheimen op te slaan.
Microsoft.Notebooks Geïntegreerde notebooks in een Azure Machine Learning-rekenproces.
Microsoft.ContainerService Als u van plan bent getrainde modellen te implementeren in Azure Kubernetes Services.

Als u van plan bent om een door de klant beheerde sleutel te gebruiken met Azure Machine Learning, moeten de volgende serviceproviders zijn geregistreerd:

Resourceprovider Waarom dit nodig is
Microsoft.DocumentDB Azure CosmosDB-exemplaar dat metagegevens voor de werkruimte registreert.
Microsoft.Search Azure Search biedt indexeringsmogelijkheden voor de werkruimte.

Als u van plan bent om een beheerd virtueel netwerk te gebruiken met Azure Machine Learning, moet de resourceprovider Microsoft.Network worden geregistreerd. Deze resourceprovider wordt door de werkruimte gebruikt bij het maken van privé-eindpunten voor het beheerde virtuele netwerk.

Zie Fouten oplossen voor de registratie van de resourceprovider voor informatie over het registreren van resourceproviders.