Azure Machine Learning-werkruimten beheren met behulp van Terraform
In dit artikel leert u hoe u een Azure Machine Learning-werkruimte maakt en beheert met behulp van Terraform-configuratiebestanden. Met de op sjablonen gebaseerde configuratiebestanden van Terraform 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-configuratie is een document dat de resources definieert die nodig zijn voor een implementatie. Het kan ook implementatievariabelen opgeven. Variabelen worden gebruikt om invoerwaarden op te geven bij het gebruik van de configuratie.
Vereisten
- Een Azure-abonnement. Als u nog geen versie hebt, kunt u de gratis of betaalde versie van Azure Machine Learning proberen.
- Een geïnstalleerde versie van de Azure CLI.
- Terraform configureren: volg de aanwijzingen in dit artikel en de Terraform en configureer de toegang tot het Azure-artikel .
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 van abonnement B, moet de Azure Machine Learning-naamruimte zijn geregistreerd in abonnement B voordat u het opslagaccount met de werkruimte kunt gebruiken.
De resourceprovider voor Azure Machine Learning is Microsoft.MachineLearningServices. Zie het artikel Azure-resourceproviders en typen voor informatie over hoe u kunt zien of deze is geregistreerd en hoe u deze registreert.
Belangrijk
Dit geldt alleen voor resources die worden geleverd tijdens het maken van de werkruimte; Azure Storage-accounts, Azure Container Register, Azure Key Vault en Application Insights.
Fooi
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 niet opnieuw maken zonder 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 dit Application Insights-exemplaar.
De Azure-provider declareren
Maak het Terraform-configuratiebestand dat de Azure-provider declareert:
Maak een nieuw bestand met de naam
main.tf
. Als u met Azure Cloud Shell werkt, gebruikt u bash:code main.tf
Plak de volgende code in de editor:
main.tf:
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 }
Sla het bestand (<Ctrl>S) op en sluit de editor (<Ctrl>Q).
Een werkruimte implementeren
De volgende Terraform-configuraties kunnen worden gebruikt om een Azure Machine Learning-werkruimte te maken. Wanneer u een Azure Machine Learning-werkruimte maakt, zijn verschillende andere services vereist als afhankelijkheden. De sjabloon geeft ook deze gekoppelde resources aan de werkruimte op. Afhankelijk van uw behoeften kunt u ervoor kiezen om de sjabloon te gebruiken waarmee resources worden gemaakt met een openbare of persoonlijke netwerkverbinding.
Voor sommige resources in Azure zijn wereldwijd unieke namen vereist. Voordat u uw resources implementeert met behulp van de volgende sjablonen, stelt u de name
variabele in op een waarde die uniek is.
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"
}
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"
}
}
Problemen oplossen
Fouten met resourceprovider
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.
Volgende stappen
Zie de documentatie van Terraform in Azure voor meer informatie over terraform-ondersteuning in Azure.
Zie Terraform Registry Azure Resource Manager Provider voor meer informatie over de Terraform Azure-provider en machine learning-module.
Zie QuickStart-sjablonen voor Azure Terraform om voorbeelden van snelstartsjablonen voor Terraform te vinden:
- 101: Machine learning-werkruimte en -berekening : de minimale set resources die nodig zijn om aan de slag te gaan met Azure Machine Learning.
- 201: Machine learning-werkruimte, berekening en een set netwerkonderdelen voor netwerkisolatie : alle resources die nodig zijn om een productietestomgeving te maken voor gebruik met HBI-gegevens.
- 202: Vergelijkbaar met 201, maar met de optie om bestaande netwerkonderdelen te brengen..
- 301: Machine Learning-werkruimte (Beveiligde hub en spoke met firewall).
Zie Azure Machine Learning-werkruimteresources beveiligen met behulp van virtuele netwerken (VNets) 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 Beheer van beveiligingsproblemen voor informatie over het up-to-date houden van Azure Machine Learning met de nieuwste beveiligingsupdates.