Управление рабочими областями Машинное обучение Azure с помощью Terraform
Из этой статьи вы узнаете, как создать рабочую область Машинное обучение Azure с помощью файлов конфигурации Terraform. Файлы конфигурации на основе шаблонов Terraform позволяют определять, создавать и настраивать ресурсы Azure в повторяемом и прогнозируемом режиме. Terraform отслеживает состояние ресурсов и может очистить и уничтожить ресурсы.
Файл конфигурации Terraform — это документ, определяющий ресурсы, необходимые для развертывания. Конфигурация Terraform также может указывать переменные развертывания для предоставления входных значений при применении конфигурации.
Необходимые компоненты
- Подписка Azure с бесплатной или платной версией Машинное обучение Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
- 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 CosmosDB, который регистрирует метаданные для рабочей области. |
Microsoft.Search | Служба "Поиск Azure" предоставляет возможности индексирования для рабочей области. |
Если вы планируете использовать управляемую виртуальную сеть с Машинное обучение Azure, необходимо зарегистрировать поставщика ресурсов Microsoft.Network. Этот поставщик ресурсов используется рабочей областью при создании частных конечных точек для управляемой виртуальной сети.
Сведения о регистрации поставщиков ресурсов см. в статье Устранение ошибок регистрации поставщика ресурсов.
Связанные ресурсы
Дополнительные сведения о поддержке Terraform в Azure см. в документации по Terraform в Azure.
Дополнительные сведения о поставщике Terraform Azure и модуле Машинное обучение см. в статье о поставщике Azure Resource Manager в Terraform Registry.
Чтобы найти примеры шаблонов быстрого запуска для Terraform, ознакомьтесь со следующими шаблонами быстрого запуска Azure Terraform.
- 101. Рабочая область машинного обучения и вычислительные ресурсы предоставляют минимальный набор ресурсов, необходимых для начала работы с Машинное обучение Azure.
- 201. Рабочая область машинного обучения, вычислительные ресурсы и набор сетевых компонентов для сетевой изоляции предоставляют все ресурсы, необходимые для создания рабочей пилотной среды для использования с данными HBI.
- 202: аналогично 201, но с возможностью перенести существующие сетевые компоненты.
- 301: Машинное обучение рабочая область (безопасный концентратор и экран с брандмауэром).
Дополнительные сведения о параметрах конфигурации сети см. в статье "Безопасные ресурсы рабочей области Машинное обучение Azure" с помощью виртуальных сетей.
Информацию об альтернативных развертываниях на основе шаблонов Azure Resource Manager см. в статье Развертывание ресурсов с помощью шаблонов Resource Manager и REST API Resource Manager.
Сведения о том, как обновлять рабочую область Машинное обучение Azure с последними обновлениями системы безопасности, см. в разделе "Управление уязвимостями".