Administración de áreas de trabajo de Azure Machine Learning mediante Terraform
En este artículo aprenderá a crear un área de trabajo de Azure Machine Learning mediante archivos de configuración de Terraform. Los archivos de configuración basados en plantillas de Terraform permiten definir, crear y configurar recursos de Azure de forma repetible y predecible. Terraform realiza un seguimiento del estado de los recursos y es capaz de limpiarlos y destruirlos.
Un archivo de configuración de Terraform es un documento que define los recursos necesarios para una implementación. La configuración de Terraform también puede especificar las variables de implementación que se usarán para proporcionar los valores de entrada al aplicar la configuración.
Requisitos previos
- Una suscripción de Azure con una versión gratuita o de pago de Azure Machine Learning. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
- Terraform instalado y configurado según las instrucciones de Inicio rápido: Instalación y configuración de Terraform.
Limitaciones
Al crear una nueva área de trabajo, puede crear automáticamente los servicios necesarios para esa área de trabajo o usar los servicios ya existentes. Si quiere usar los servicios ya existentes de una suscripción de Azure diferente al área de trabajo, debe registrar el espacio de nombres de Azure Machine Learning en la suscripción que contiene esos servicios. Por ejemplo, si crea un área de trabajo en la suscripción A que usa una cuenta de almacenamiento en la suscripción B, el espacio de nombres de Azure Machine Learning debe estar registrado en la suscripción B antes de que el área de trabajo pueda usar la cuenta de almacenamiento.
El proveedor de recursos para Azure Machine Learning es Microsoft.MachineLearningService. Para obtener información sobre cómo ver si está registrado o registrarlo, consulte Tipos y proveedores de recursos de Azure.
Importante
Esta información aplica solo para los recursos proporcionados durante la creación del área de trabajo para cuentas de Azure Storage, Azure Container Registry, Azure Key Vault y Application Insights.
La siguiente limitación se aplica a la instancia de Application Insights creada durante la creación del área de trabajo:
Sugerencia
Se crea una instancia de Azure Application Insights al crear el área de trabajo. Si quiere, puede eliminar la instancia de Application Insights después de la creación del clúster. Si la elimina, se limita la información que se recopila del área de trabajo y la solución de problemas puede volverse más difícil. Si elimina la instancia de Application Insights que crea el área de trabajo, la única forma de volver a crearla es eliminar y volver a crear el área de trabajo.
Para obtener más información sobre el uso de la instancia de Application Insights, consulte Supervisión y recopilación de datos de los puntos de conexión del servicio web ML.
Creación del área de trabajo
Cree un archivo denominado main.tf que tenga el código siguiente.
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
}
Declare el proveedor de Azure en un archivo denominado providers.tf que tenga el código siguiente.
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
}
}
}
Configure el área de trabajo.
Las siguientes configuraciones de Terraform se pueden usar para crear un área de trabajo de Azure Machine Learning. Un área de trabajo de Azure Machine Learning requiere otros servicios como dependencias. La plantilla especifica estos recursos asociados. En función de sus necesidades, puede optar por usar una plantilla que crea recursos con conectividad de red pública o privada.
Nota:
Algunos recursos de Azure requieren nombres únicos globales. Antes de implementar los recursos, asegúrese de establecer las variables name
en valores únicos.
La siguiente configuración crea un área de trabajo con conectividad de red pública.
Defina las siguientes variables en un archivo denominado 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"
}
Defina la siguiente configuración del área de trabajo en un archivo denominado 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"
}
}
Creación y aplicación del plan
Para crear el área de trabajo, ejecute el código siguiente:
terraform init
terraform plan \
# -var <any of the variables set in variables.tf> \
-out demo.tfplan
terraform apply "demo.tfplan"
Solucionar errores del proveedor de recursos
Al crear un área de trabajo de Azure Machine Learning o un recurso usado por el área de trabajo, puede recibir un mensaje de error similar a los siguientes:
No registered resource provider found for location {location}
The subscription is not registered to use namespace {resource-provider-namespace}
Muchos proveedores de recursos se registran automáticamente, aunque no todos. Si recibe este mensaje, debe registrar el proveedor mencionado.
En la tabla siguiente se muestra una lista de los proveedores de recursos requeridos por Azure Machine Learning:
Proveedor de recursos | Por qué se necesita |
---|---|
Microsoft.MachineLearningServices | Creación del área de trabajo de Azure Machine Learning. |
Microsoft.Storage | La cuenta de Azure Storage se usa como el almacenamiento predeterminado del área de trabajo. |
Microsoft.ContainerRegistry | Azure Container Registry usa el área de trabajo para crear imágenes de Docker. |
Microsoft.KeyVault | El área de trabajo usa Azure Key Vault para almacenar secretos. |
Microsoft.Notebooks | Cuadernos integrados en la instancia de proceso de Azure Machine Learning. |
Microsoft.ContainerService | Si planea implementar modelos entrenados en Azure Kubernetes Services. |
Si planea usar una clave administrada por el cliente con Azure Machine Learning, se deben registrar estos proveedores de servicios:
Proveedor de recursos | Por qué se necesita |
---|---|
Microsoft.DocumentDB | Instancia de Azure Cosmos DB que registra los metadatos del área de trabajo. |
Microsoft.Search | Azure Search proporciona funcionalidades de indexación para el área de trabajo. |
Si planea usar una red virtual administrada con Azure Machine Learning, el proveedor de recursos de Microsoft.Network debe registrarse. El área de trabajo usa este proveedor de recursos al crear puntos de conexión privados para la red virtual administrada.
Para obtener más información sobre cómo registrar un proveedor de recursos, consulte Registro del proveedor de recursos.
Recursos relacionados
Para obtener más información sobre la compatibilidad de Terraform en Azure, consulte Terraform en la documentación de Azure.
Para obtener información detallada sobre el proveedor de Azure para Terraform y el módulo de Machine Learning, consulte la información sobre el Proveedor de Azure Resource Manager del registro de Terraform.
Para buscar ejemplos de la plantilla de inicio rápido para Terraform, consulte las plantillas de inicio rápido de Azure Terraform.
- 101: Área de trabajo y procesos de Machine Learning le ofrece el conjunto mínimo de recursos necesarios para empezar a trabajar con Azure Machine Learning.
- 201: Área de trabajo de Machine Learning, procesos y un conjunto de componentes de red para el aislamiento de red le ofrece todos los recursos necesarios para crear un entorno piloto de producción que se va a usar con los datos de alto impacto de negocio (HBI).
- 202: similar a 201, pero con la opción de traer componentes de red existentes.
- 301: Área de trabajo de Machine Learning (grupo radial protegido con firewall).
Para obtener más información sobre las opciones de configuración de red, consulte Protección de los recursos del área de trabajo de Azure Machine Learning con redes virtuales.
Para implementaciones basadas en plantillas de Azure Resource Manager, consulte Implementación de recursos con plantillas de Resource Manager y la API REST de Resource Manager.
Para obtener información sobre cómo mantener el área de trabajo de Azure Machine Learning actualizada con las actualizaciones de seguridad más recientes, consulte Administración de vulnerabilidades.