Поделиться через


Управление рабочими областями Машинное обучение Azure с помощью Terraform

Из этой статьи вы узнаете, как создать рабочую область Машинное обучение Azure с помощью файлов конфигурации Terraform. Файлы конфигурации на основе шаблонов Terraform позволяют определять, создавать и настраивать ресурсы Azure в повторяемом и прогнозируемом режиме. Terraform отслеживает состояние ресурсов и может очистить и уничтожить ресурсы.

Файл конфигурации Terraform — это документ, определяющий ресурсы, необходимые для развертывания. Конфигурация Terraform также может указывать переменные развертывания для предоставления входных значений при применении конфигурации.

Необходимые компоненты

Ограничения

  • При создании новой рабочей области можно автоматически создавать службы, необходимые рабочей области, или использовать существующие службы. Если вы хотите использовать существующие службы из подписки Azure, отличной от рабочей области, необходимо зарегистрировать пространство имен Машинного обучения Azure в подписке, которая содержит эти службы. Например, если вы создаете рабочую область в подписке A, использующую учетную запись хранения в подписке B, пространство имен Машинное обучение Azure необходимо зарегистрировать в подписке B, прежде чем рабочая область сможет использовать учетную запись хранения.

    Поставщик ресурсов для Машинного обучения Azure — Microsoft.MachineLearningServices. Сведения о том, зарегистрировано ли оно или зарегистрировано, см. в разделе поставщиков ресурсов и типов Azure.

    Внимание

    Эта информация применяется только к ресурсам, предоставляемым во время создания рабочей области: учетные записи служба хранилища Azure, Реестр контейнеров Azure, Azure Key Vault и Application Insights.

  • Следующее ограничение применяется к экземпляру Application Insights, созданному во время создания рабочей области:

    Совет

    Экземпляр Azure Application Insights создается при создании рабочей области. При необходимости экземпляр Application Insights можно удалить после создания кластера. Удаление ограничивает сведения, собранные из рабочей области, и может оказаться более сложным для устранения неполадок. При удалении экземпляра Application Insights, созданного рабочей областью, единственным способом ее повторного создания является удаление и повторное создание рабочей области.

    Дополнительные сведения об использовании экземпляра Application Insights см. в статье "Мониторинг и сбор данных из Машинное обучение конечных точек веб-службы".

Создание рабочей области

Создайте файл с именем 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
}

Объявите поставщика Azure в файле с именем providers.tf со следующим кодом.

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

Настройка рабочей области

Чтобы создать рабочую область Машинное обучение Azure, используйте одну из следующих конфигураций Terraform. Для рабочей области Машинное обучение Azure требуются различные другие службы в качестве зависимостей. Шаблон указывает эти связанные ресурсы. В зависимости от потребностей можно использовать шаблон, который создает ресурсы с общедоступным или частным подключением к сети.

Примечание.

Для некоторых ресурсов в Azure требуются глобальные уникальные имена. Перед развертыванием ресурсов обязательно задайте name для переменных уникальные значения.

Следующая конфигурация создает рабочую область с подключением к общедоступной сети.

Определите следующие переменные в файле с именем 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"
  }
}

Создание и применение плана

Чтобы создать рабочую область, выполните следующий код:

terraform init

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

terraform apply "demo.tfplan"

Устранение ошибок поставщика ресурсов

При создании рабочей области Машинного обучения Azure или ресурса, используемого рабочей областью, может возникнуть ошибка, аналогичная одной из следующих:

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

Большинство поставщиков ресурсов автоматически регистрируются, но не все из них. Если вы видите это сообщение, необходимо зарегистрировать поставщика.

В следующей таблице содержится список поставщиков ресурсов, необходимых машинному обучению Azure:

Поставщик ресурсов Роль
Microsoft.MachineLearningServices Создание рабочей области машинного обучения Azure.
Microsoft.Storage Учетная запись хранения Azure используется в качестве хранилища по умолчанию для рабочей области.
Microsoft.ContainerRegistry Реестр контейнеров Azure используется рабочей областью для создания образов Docker.
Microsoft.KeyVault Azure Key Vault используется рабочей областью для хранения секретов.
Microsoft.Notebooks Вычислительный экземпляр машинного обучения Azure использует интегрированные записные книжки.
Microsoft.ContainerService Вы хотите развернуть обученные модели в службах Azure Kubernetes.

Если вы хотите использовать управляемый клиентом ключ с машинным обучением Azure, необходимо зарегистрировать следующих поставщиков услуг:

Поставщик ресурсов Роль
Microsoft.DocumentDB Экземпляр Azure Cosmos DB записывает метаданные для рабочей области.
Microsoft.Search Служба "Поиск Azure" предоставляет возможности индексирования для рабочей области.

Если вы хотите использовать управляемую виртуальную сеть с машинным обучением Azure, необходимо зарегистрировать поставщика ресурсов Microsoft.Network . Этот поставщик ресурсов используется рабочей областью при создании частных конечных точек для управляемой виртуальной сети.

Сведения о регистрации поставщиков ресурсов см. в статье Устранение ошибок регистрации поставщика ресурсов.