Aracılığıyla paylaş


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

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.