Kelola ruang kerja Azure Machine Learning menggunakan Terraform

Dalam artikel ini, Anda mempelajari cara membuat dan mengelola ruang kerja Azure Machine Learning menggunakan file konfigurasi Terraform. Dengan menggunakan file konfigurasi berbasis templat Terraform Anda dapat mendefinisikan, membuat, dan mengonfigurasikan sumber daya Azure dengan cara yang dapat diulangi dan diprediksi. Terraform akan melacak status sumber daya serta mampu membersihkan dan menghancurkan sumber daya.

Konfigurasi Terraform adalah sebuah dokumen yang mendefinisikan sumber daya yang dibutuhkan untuk penyebaran. Konfigurasi ini juga dapat menentukan parameter penyebaran. Variabel digunakan untuk menyediakan nilai input saat menggunakan konfigurasi.

Prasyarat

Batasan

  • Saat membuat ruang kerja baru, Anda dapat membuat layanan yang diperlukan secara otomatis oleh ruang kerja atau menggunakan layanan yang sudah ada. Jika Anda ingin menggunakan layanan yang sudah ada dari langganan Azure yang berbeda dari ruang kerja, Anda harus mendaftarkan kumpulan nama Pembelajaran Mesin Azure dalam langganan yang berisi layanan tersebut. Misalnya, membuat ruang kerja di langganan A yang menggunakan akun penyimpanan dari langganan B, kumpulan nama Pembelajaran Mesin Azure harus terdaftar di langganan B sebelum Anda dapat menggunakan akun penyimpanan dengan ruang kerja.

    Penyedia sumber daya untuk Pembelajaran Mesin Azure adalah Microsoft.MachineLearningServices. Untuk informasi tentang cara melihat apakah sudah terdaftar dan cara mendaftarkannya, lihat artikel jenis dan penyedia sumber daya Azure.

    Penting

    Ini hanya berlaku untuk sumber daya yang disediakan selama pembuatan ruang kerja, Azure Storage Account, Azure Container Register, Azure Key Vault, dan Application Insights.

Tip

Instans Azure Application Insights dibuat saat Anda membuat ruang kerja. Anda dapat menghapus instans Application Insights setelah pembuatan kluster jika Anda mau. Menghapusnya membatasi informasi yang dikumpulkan dari ruang kerja, dan mungkin membuatnya lebih sulit untuk memecahkan masalah. Jika Anda menghapus instans Application Insights yang dibuat oleh ruang kerja, Anda tidak dapat membuatnya kembali tanpa menghapus dan membuat ulang ruang kerja.

Untuk informasi selengkapnya tentang penggunaan instans Application Insights ini, lihat Memantau dan mengumpulkan data dari titik akhir layanan web Pembelajaran Mesin.

Mendeklarasikan penyedia Azure

Buat file konfigurasi Terraform yang mendeklarasikan penyedia Azure:

  1. Buat file baru bernama main.tf. Jika bekerja dengan Azure Cloud Shell, gunakan bash:

    code main.tf
    
  2. Tempelkan kode berikut ke dalam 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
    }
    
  3. Simpan file (<Ctrl>S), dan keluar dari editor (<Ctrl>Q).

Menyebarkan ruang kerja

Konfigurasi Terraform berikut dapat digunakan untuk membuat ruang kerja Azure Machine Learning. Jika Anda membuat ruang kerja Azure Machine Learning, berbagai layanan lain diperlukan sebagai dependensi. Templat juga menentukan sumber daya terkait ini ke ruang kerja. Tergantung kebutuhan, Anda dapat memilih untuk menggunakan templat yang membuat sumber daya dengan konektivitas jaringan publik atau privat.

Beberapa sumber daya di Azure membutuhkan nama yang unik secara global. Sebelum menyebarkan sumber daya Anda menggunakan templat berikut, atur variabel name ke nilai yang unik.

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

Pemecahan Masalah

Kesalahan penyedia sumber daya

Saat membuat ruang kerja Azure Machine Learning, atau sumber daya yang digunakan oleh ruang kerja, Anda mungkin menerima kesalahan yang mirip dengan pesan berikut:

  • No registered resource provider found for location {location}
  • The subscription is not registered to use namespace {resource-provider-namespace}

Sebagian besar penyedia sumber daya secara otomatis terdaftar, tetapi tidak semua. Jika Anda menerima pesan ini, Anda perlu mendaftarkan penyedia yang disebutkan.

Tabel berikut berisi daftar penyedia sumber daya yang diperlukan oleh Azure Machine Learning:

Penyedia sumber daya Mengapa dibutuhkan
Microsoft.MachineLearningServices Membuat ruang kerja Azure Machine Learning.
Microsoft.Storage Akun Azure Storage: Digunakan sebagai penyimpanan data default untuk ruang kerja.
Microsoft.ContainerRegistry Azure Container Registry digunakan oleh ruang kerja untuk membangun gambar Docker.
Microsoft.KeyVault Azure Key Vault digunakan oleh ruang kerja untuk menyimpan rahasia.
Microsoft.Notebooks Notebook terintegrasi pada instans komputasi Azure Machine Learning.
Microsoft.ContainerService Jika Anda berencana menyebarkan model terlatih ke Azure Kubernetes Services.

Jika Anda berencana menggunakan kunci yang dikelola pelanggan dengan Azure Machine Learning, maka penyedia layanan berikut harus terdaftar:

Penyedia sumber daya Mengapa dibutuhkan
Microsoft.DocumentDB Instans Azure CosmosDB yang mencatat metadata untuk ruang kerja.
Microsoft.Search Azure Search menyediakan kemampuan pengindeksan untuk ruang kerja.

Jika Anda berencana menggunakan jaringan virtual terkelola dengan Azure Pembelajaran Mesin, penyedia sumber daya Microsoft.Network harus didaftarkan. Penyedia sumber daya ini digunakan oleh ruang kerja saat membuat titik akhir privat untuk jaringan virtual terkelola.

Untuk informasi selengkapnya tentang cara mendaftarkan penyedia sumber daya, lihat Mengatasi kesalahan untuk pendaftaran penyedia sumber daya.

Langkah berikutnya