Управление рабочими областями Машинного обучения Azure с помощью Terraform
Из этой статьи вы узнаете, как создавать рабочие области Машинного обучения Azure и управлять ими с помощью файлов конфигурации Terraform. Файлы конфигурации на основе шаблона Terraform позволяют определить, создать и настроить ресурсы Azure повторяемым и предсказуемым образом. Terraform отслеживает состояние ресурсов и может очищать и уничтожать ресурсы.
Конфигурация Terraform представляет собой документ, в котором определены необходимые для развертывания ресурсы. Также здесь можно указать переменные развертывания. Эти переменные позволят предоставить входные значения при использовании конфигурации.
Необходимые компоненты
- Подписка Azure Если у вас ее нет, используйте бесплатную или платную версию Машинного обучения Azure.
- Установленная версия Azure CLI.
- Настройка Terraform. Следуйте указаниям из этой статьи и статьи Terraform и настройка доступа к Azure.
Ограничения
При создании рабочей области можно либо автоматически создать службы, необходимые для рабочей области, либо использовать существующие службы. Если вы хотите использовать существующие службы из подписки Azure, отличной от рабочей области, необходимо зарегистрировать пространство имен Машинного обучения Azure в подписке, которая содержит эти службы. Например, при создании рабочей области в подписке A, которая использует учетную запись хранения из подписки B, пространство имен Машинного обучения Azure должно быть зарегистрировано в подписке B, прежде чем можно будет использовать учетную запись хранения с рабочей областью.
Поставщик ресурсов для Машинного обучения Azure — Microsoft.MachineLearningServices. Сведения о том, как проверить регистрацию поставщика и зарегистрировать его, см. в разделе Поставщики и типы ресурсов Azure.
Важно!
Это относится только к ресурсам, предоставленным при создании рабочей области: учетные записи хранения Azure, реестр контейнеров Azure, Azure Key Vault и Application Insights.
Совет
Экземпляр Azure Application Insights создается при создании рабочей области. При необходимости экземпляр Application Insights можно удалить после создания кластера. При его удалении будут ограничены сведения, собираемые из рабочей области. Это также может усложнить устранение неполадок. При удалении экземпляра Application Insights, созданного рабочей областью, его будет невозможно создать повторно без удаления и повторного создания рабочей области.
Дополнительные сведения об использовании этого экземпляра Application Insights см. в разделе Мониторинг и получение данных из конечных точек службы Машинного обучения.
Объявление поставщика Azure
Создайте файл конфигурации Terraform, который объявляет поставщик Azure.
Создайте файл с именем
main.tf
. При работе с Azure Cloud Shell используйте Bash.code main.tf
Скопируйте приведенный ниже код и вставьте его в редактор.
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 }
Сохраните файл (<Ctrl>S) и закройте редактор (<Ctrl>Q).
Развертывание рабочей области
Для создания рабочей области Машинного обучения 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"
}
}
Устранение неполадок
Ошибки поставщика ресурсов
При создании рабочей области машинного обучения 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 и модуле Машинного обучения см. в разделе Поставщик диспетчера ресурсов Реестра Terraform Azure.
Чтобы найти примеры шаблонов для быстрого запуска Terraform, см. Шаблоны быстрого запуска Azure Terraform:
- 101. Рабочая область машинного обучения и вычислительные ресурсы — минимальный набор ресурсов, необходимых для начала работы с Машинное обучение Azure.
- 201: рабочая область машинного обучения, вычислительная среда и набор сетевых компонентов для сетевой изоляции — все ресурсы, необходимые для создания пилотной рабочей среды для использования с данными HBI.
- 202: аналогично 201, но с возможностью переноса существующих сетевых компонентов..
- 301: Рабочая область машинного обучения (Центр безопасности и Периферийный компонент с брандмауэром).
Дополнительные сведения о параметрах конфигурации сети см. в статье Защита ресурсов рабочей области Машинного обучения Azure с помощью виртуальных сетей.
Информацию об альтернативных развертываниях на основе шаблонов Azure Resource Manager см. в статье Развертывание ресурсов с помощью шаблонов Resource Manager и REST API Resource Manager.
Сведения о том, как поддерживать Машинное обучение Azure актуальности последних обновлений системы безопасности, см. в разделе "Управление уязвимостями".