Bagikan melalui


Mengelola ruang kerja Azure Pembelajaran Mesin dengan menggunakan Terraform

Dalam artikel ini, Anda mempelajari cara membuat ruang kerja Azure Pembelajaran Mesin dengan menggunakan file konfigurasi Terraform. File konfigurasi berbasis templat Terraform memungkinkan Anda menentukan, membuat, dan mengonfigurasi sumber daya Azure dengan cara yang dapat diulang dan dapat diprediksi. Terraform melacak status sumber daya dan dapat membersihkan dan menghancurkan sumber daya.

File konfigurasi Terraform adalah dokumen yang menentukan sumber daya yang diperlukan untuk penyebaran. Konfigurasi Terraform juga dapat menentukan variabel penyebaran yang akan digunakan untuk memberikan nilai input saat Anda menerapkan konfigurasi.

Prasyarat

Batasan

  • Saat membuat ruang kerja baru, Anda dapat secara otomatis membuat layanan yang diperlukan oleh ruang kerja atau menggunakan layanan yang 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, jika Anda membuat ruang kerja di langganan A yang menggunakan akun penyimpanan di langganan B, namespace Azure Pembelajaran Mesin harus terdaftar di langganan B sebelum ruang kerja dapat menggunakan akun penyimpanan.

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

    Penting

    Informasi ini hanya berlaku untuk sumber daya yang disediakan selama pembuatan ruang kerja: Akun Azure Storage, Azure Container Registry, Azure Key Vault, dan Application Insights.

  • Batasan berikut berlaku untuk instans Application Insights yang dibuat selama pembuatan ruang kerja:

    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, satu-satunya cara untuk membuatnya kembali adalah dengan menghapus dan membuat ulang ruang kerja.

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

Membuat ruang kerja

Buat file bernama main.tf yang memiliki kode berikut.

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
}

Deklarasikan penyedia Azure dalam file bernama providers.tf yang memiliki kode berikut.

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

Konfigurasikan ruang kerja

Untuk membuat ruang kerja Azure Pembelajaran Mesin, gunakan salah satu konfigurasi Terraform berikut. Ruang kerja Azure Pembelajaran Mesin memerlukan berbagai layanan lain sebagai dependensi. Templat menentukan sumber daya terkait ini. Bergantung pada kebutuhan Anda, Anda dapat memilih untuk menggunakan templat yang membuat sumber daya dengan konektivitas jaringan publik atau privat.

Catatan

Beberapa sumber daya di Azure membutuhkan nama yang unik secara global. Sebelum menyebarkan sumber daya Anda, pastikan untuk mengatur name variabel ke nilai unik.

Konfigurasi berikut membuat ruang kerja dengan konektivitas jaringan publik.

Tentukan variabel berikut dalam file yang disebut 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"
}

Tentukan konfigurasi ruang kerja berikut dalam file yang disebut 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"
  }
}

Membuat dan menerapkan paket

Untuk membuat ruang kerja, jalankan kode berikut:

terraform init

terraform plan \
        # -var <any of the variables set in variables.tf> \
          -out demo.tfplan

terraform apply "demo.tfplan"

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