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
- En Azure-prenumeration med en kostnadsfri eller betald version av Azure Mašinsko učenje. Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
- Terraform har installerats och konfigurerats enligt anvisningarna i Snabbstart: Installera och konfigurera Terraform.
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.
Relaterade resurser
Mer information om Terraform-support i Azure finns i Terraform i Azure-dokumentationen.
Mer information om Terraform Azure-providern och Mašinsko učenje-modulen finns i Terraform Registry Azure Resource Manager-providern.
Information om hur du hittar snabbstartsmallsexempel för Terraform finns i följande Azure Terraform-snabbstartsmallar.
- 101: Maskininlärningsarbetsyta och beräkning ger den minimala uppsättning resurser som behövs för att komma igång med Azure Mašinsko učenje.
- 201: Maskininlärningsarbetsyta, beräkning och en uppsättning nätverkskomponenter för nätverksisolering ger alla resurser som behövs för att skapa en produktionspilotmiljö för användning med HBI-data (high business impact).
- 202: Liknar 201, men med alternativet att ta med befintliga nätverkskomponenter.
- 301: Mašinsko učenje arbetsyta (säker hubb och eker med brandvägg).
Mer information om alternativ för nätverkskonfiguration finns i Skydda Azure Mašinsko učenje arbetsyteresurser med hjälp av virtuella nätverk.
Alternativa Azure Resource Manager-mallbaserade distributioner finns i Distribuera resurser med Resource Manager-mallar och Resource Manager REST API.
Information om hur du håller din Azure Mašinsko učenje-arbetsyta uppdaterad med de senaste säkerhetsuppdateringarna finns i Sårbarhetshantering.