Terraform kullanarak Azure Machine Learning çalışma alanlarını yönetme
Bu makalede Terraform yapılandırma dosyalarını kullanarak Azure Machine Learning çalışma alanı oluşturmayı öğreneceksiniz. Terraform şablon tabanlı yapılandırma dosyaları, Azure kaynaklarını yinelenebilir ve öngörülebilir bir şekilde tanımlamanıza, oluşturmanıza ve yapılandırmanıza olanak tanır. Terraform kaynak durumunu izler ve kaynakları temizleyip yok edebilir.
Terraform yapılandırma dosyası, dağıtım için gereken kaynakları tanımlayan bir belgedir. Terraform yapılandırması, yapılandırmayı uyguladığınızda giriş değerleri sağlamak için kullanılacak dağıtım değişkenlerini de belirtebilir.
Önkoşullar
- Azure Machine Learning'in ücretsiz veya ücretli sürümüne sahip bir Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Terraform, Hızlı Başlangıç: Terraform'u yükleme ve yapılandırma başlığı altındaki yönergelere göre yüklenip yapılandırılır.
Sınırlamalar
Yeni bir çalışma alanı oluşturduğunuzda, çalışma alanı için gereken hizmetleri otomatik olarak oluşturabilir veya mevcut hizmetleri kullanabilirsiniz. Çalışma alanından farklı bir Azure aboneliğindeki mevcut hizmetleri kullanmak istiyorsanız, Azure Machine Learning ad alanını bu hizmetleri içeren aboneliğe kaydetmeniz gerekir. Örneğin, A aboneliğinde B aboneliğinde depolama hesabı kullanan bir çalışma alanı oluşturursanız, çalışma alanının depolama hesabını kullanabilmesi için önce Azure Machine Learning ad alanının B aboneliğine kaydedilmesi gerekir.
Azure Machine Learning için kaynak sağlayıcısı Microsoft.MachineLearningServices'tir. Kayıtlı olup olmadığını veya kaydedip kaydetmediğini görme hakkında bilgi için bkz . Azure kaynak sağlayıcıları ve türleri.
Önemli
Bu bilgiler yalnızca çalışma alanı oluşturma sırasında sağlanan kaynaklar için geçerlidir: Azure Depolama Hesapları, Azure Container Registry, Azure Key Vault ve Application Insights.
Aşağıdaki sınırlama, çalışma alanı oluşturma sırasında oluşturulan Application Insights örneği için geçerlidir:
İpucu
Çalışma alanını oluşturduğunuzda bir Azure Uygulaması lication Insights örneği oluşturulur. İsterseniz küme oluşturma işleminden sonra Application Insights örneğini silebilirsiniz. Silme, çalışma alanından toplanan bilgileri sınırlar ve sorunları gidermeyi zorlaştırabilir. Çalışma alanı tarafından oluşturulan Application Insights örneğini silerseniz, yeniden oluşturmanın tek yolu çalışma alanını silmek ve yeniden oluşturmaktır.
Application Insights örneğini kullanma hakkında daha fazla bilgi için bkz . Machine Learning web hizmeti uç noktalarını izleme ve veri toplama.
Çalışma alanını oluşturun
Aşağıdaki koda sahip main.tf adlı bir dosya oluşturun.
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
}
Azure sağlayıcısını aşağıdaki koda sahip providers.tf adlı bir dosyada bildirin.
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
}
}
}
Çalışma alanını yapılandırın
Azure Machine Learning çalışma alanı oluşturmak için aşağıdaki Terraform yapılandırmalarından birini kullanın. Azure Machine Learning çalışma alanı, bağımlılık olarak farklı hizmetler gerektirir. Şablon bu ilişkili kaynakları belirtir. Gereksinimlerinize bağlı olarak, ortak veya özel ağ bağlantısına sahip kaynaklar oluşturan bir şablon kullanmayı seçebilirsiniz.
Not
Azure'daki bazı kaynaklar genel olarak benzersiz adlar gerektirir. Kaynaklarınızı dağıtmadan önce değişkenleri benzersiz değerlere ayarladığınızdan name
emin olun.
Aşağıdaki yapılandırma, genel ağ bağlantısına sahip bir çalışma alanı oluşturur.
variables.tf adlı bir dosyada aşağıdaki değişkenleri tanımlayın.
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 adlı bir dosyada aşağıdaki çalışma alanı yapılandırmasını tanımlayın:
# 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"
}
}
Planı oluşturma ve uygulama
Çalışma alanını oluşturmak için aşağıdaki kodu çalıştırın:
terraform init
terraform plan \
# -var <any of the variables set in variables.tf> \
-out demo.tfplan
terraform apply "demo.tfplan"
Kaynak sağlayıcısı hatalarını giderme
Azure Machine Learning çalışma alanı veya çalışma alanı tarafından kullanılan bir kaynak oluştururken aşağıdaki iletilere benzer bir hata alabilirsiniz:
No registered resource provider found for location {location}
The subscription is not registered to use namespace {resource-provider-namespace}
Çoğu kaynak sağlayıcısı otomatik olarak kaydedilir, ancak tümü kaydedilmez. Bu iletiyi alırsanız, bahsedilen sağlayıcıyı kaydetmeniz gerekir.
Aşağıdaki tabloda Azure Machine Learning tarafından gereken kaynak sağlayıcılarının listesi yer alır:
Kaynak sağlayıcısı | Neden gereklidir? |
---|---|
Microsoft.MachineLearningServices | Azure Machine Learning çalışma alanını oluşturma. |
Microsoft.Storage | Azure Depolama Hesabı, çalışma alanı için varsayılan depolama alanı olarak kullanılır. |
Microsoft.ContainerRegistry | Azure Container Registry, çalışma alanı tarafından Docker görüntüleri oluşturmak için kullanılır. |
Microsoft.KeyVault | Azure Key Vault, çalışma alanı tarafından gizli dizileri depolamak için kullanılır. |
Microsoft.Notebooks | Azure Machine Learning işlem örneğindeki tümleşik not defterleri. |
Microsoft.ContainerService | Eğitilmiş modelleri Azure Kubernetes Services'e dağıtmayı planlıyorsanız. |
Azure Machine Learning ile müşteri tarafından yönetilen bir anahtar kullanmayı planlıyorsanız aşağıdaki hizmet sağlayıcılarının kaydedilmesi gerekir:
Kaynak sağlayıcısı | Neden gereklidir? |
---|---|
Microsoft.DocumentDB | Çalışma alanı için meta verileri günlüğe kaydeden Azure CosmosDB örneği. |
Microsoft.Search | Azure Search, çalışma alanı için dizin oluşturma özellikleri sağlar. |
Azure Machine Learning ile yönetilen bir sanal ağ kullanmayı planlıyorsanız Microsoft.Network kaynak sağlayıcısının kayıtlı olması gerekir. Bu kaynak sağlayıcısı, yönetilen sanal ağ için özel uç noktalar oluştururken çalışma alanı tarafından kullanılır.
Kaynak sağlayıcılarını kaydetme hakkında bilgi için bkz . Kaynak sağlayıcısı kaydı hatalarını çözme.
İlgili kaynaklar
Azure'da Terraform desteği hakkında daha fazla bilgi edinmek için Bkz . Azure'da Terraform belgeleri.
Terraform Azure sağlayıcısı ve Machine Learning modülü hakkında ayrıntılı bilgi için bkz . Terraform Registry Azure Resource Manager sağlayıcısı.
Terraform için hızlı başlangıç şablonu örneklerini bulmak için aşağıdaki Azure Terraform hızlı başlangıç şablonlarına bakın.
- 101: Makine öğrenmesi çalışma alanı ve işlem , Azure Machine Learning'i kullanmaya başlamak için gereken en düşük kaynak kümesini sağlar.
- 201: Ağ yalıtımı için makine öğrenmesi çalışma alanı, işlem ve ağ bileşenleri kümesi, yüksek iş etkisi (HBI) verileriyle kullanılmak üzere bir üretim pilotu ortamı oluşturmak için gereken tüm kaynakları sağlar.
- 202: 201'e benzer, ancak mevcut ağ bileşenlerini getirme seçeneğiyle.
- 301: Machine Learning çalışma alanı (güvenlik duvarı ile güvenli merkez ve uç).
Ağ yapılandırma seçenekleri hakkında daha fazla bilgi edinmek için bkz . Sanal ağları kullanarak Azure Machine Learning çalışma alanı kaynaklarının güvenliğini sağlama.
Alternatif Azure Resource Manager şablon tabanlı dağıtımlar için bkz . Resource Manager şablonları ve Resource Manager REST API'siyle kaynakları dağıtma.
Azure Machine Learning çalışma alanınızı en son güvenlik güncelleştirmeleriyle güncel tutma hakkında bilgi için bkz . Güvenlik açığı yönetimi.