Terrayform 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ı ve yönetmeyi öğreneceksiniz. Terraform'un ş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 eder.

Terraform yapılandırması, dağıtım için gereken kaynakları tanımlayan bir belgedir. Ayrıca dağıtım değişkenlerini de belirtebilir. Değişkenler, yapılandırma kullanılırken giriş değerleri sağlamak için kullanılır.

Ön koşullar

  • Bir Azure aboneliği. Yoksa Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.
  • Azure CLI'nın yüklü bir sürümü.
  • Terraform'u yapılandırma: Bu makaledeki yönergeleri ve Terraform'u ve Azure erişimini yapılandırma makalesini izleyin.

Sınırlamalar

  • Yeni bir çalışma alanı oluştururken, ç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ğinden bir depolama hesabı kullanan bir çalışma alanı oluştururken, depolama hesabını çalışma alanıyla kullanabilmeniz 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ı ve nasıl kaydedildiğini görme hakkında bilgi için Azure kaynak sağlayıcıları ve türleri makalesine bakın.

    Önemli

    Bu yalnızca çalışma alanı oluşturma sırasında sağlanan kaynaklar için geçerlidir; Azure Depolama Hesapları, Azure Container Register, Azure Key Vault ve Uygulama Analizler.

Bahşiş

Çalışma alanını oluşturduğunuzda bir Azure Uygulaması Analizler örneği oluşturulur. İsterseniz küme oluşturulduktan sonra Application Analizler ö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 Analizler örneğini silerseniz, çalışma alanını silip yeniden oluşturmadan yeniden oluşturamazsınız.

Bu Uygulama Analizler örneğini kullanma hakkında daha fazla bilgi için bkz. Machine Learning web hizmeti uç noktalarındaki verileri izleme ve toplama.

Azure sağlayıcısını tanımlama

Azure sağlayıcısını bildiren Terraform yapılandırma dosyasını oluşturun:

  1. main.tf adlı yeni bir dosya oluşturun. Azure Cloud Shell ile çalışıyorsanız bash komutunu kullanın:

    code main.tf
    
  2. Aşağıdaki kodu düzenleyiciye yapıştırın:

    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
    }
    
  3. Dosyayı kaydedin (Ctrl S) ve düzenleyiciden çıkın (<Ctrl>Q).><

Çalışma alanı dağıtma

Azure Machine Learning çalışma alanı oluşturmak için aşağıdaki Terraform yapılandırmaları kullanılabilir. Azure Machine Learning çalışma alanı oluşturduğunuzda, bağımlılık olarak farklı hizmetler gerekir. Şablon, çalışma alanıyla ilişkili bu kaynakları da belirtir. gereksinimlerinize bağlı olarak, ortak veya özel ağ bağlantısıyla kaynak oluşturan şablonu kullanmayı seçebilirsiniz.

Azure'daki bazı kaynaklar genel olarak benzersiz adlar gerektirir. Aşağıdaki şablonları kullanarak kaynaklarınızı dağıtmadan önce değişkenini name benzersiz bir değere ayarlayın.

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

Sorun giderme

Kaynak sağlayıcısı hataları

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. Depolama 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.

Sonraki adımlar