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.
Verwante resources
Zie de documentatie van Terraform in Azure voor meer informatie over terraform-ondersteuning in Azure.
Zie de volgende Azure Terraform-quickstartsjablonen voor snelstartsjablonen voor quickstarts voor quickstarts voor Terraform voor voorbeelden van quickstarts voor Terraform.
- 101: Machine learning-werkruimte en -berekening biedt de minimale set resources die nodig zijn om aan de slag te gaan met Azure Machine Learning.
- 201: Machine learning-werkruimte, rekenkracht en een set netwerkonderdelen voor netwerkisolatie biedt alle resources die nodig zijn om een productietestomgeving te maken voor gebruik met HBI-gegevens (High Business Impact).
- 202: Vergelijkbaar met 201, maar met de optie om bestaande netwerkonderdelen te gebruiken.
- 301: Machine Learning-werkruimte (beveiligde hub en spoke met firewall).
Zie Azure Machine Learning-werkruimteresources beveiligen met behulp van virtuele netwerken voor meer informatie over netwerkconfiguratieopties.
Zie Resources implementeren met Resource Manager-sjablonen en Resource Manager REST API voor alternatieve implementaties op basis van een Azure Resource Manager-sjabloon.
Zie Beveiligingsbeheer voor informatie over het up-to-date houden van uw Azure Machine Learning-werkruimte met de nieuwste beveiligingsupdates.