Administración de áreas de trabajo de Azure Machine Learning mediante Terraform
En este artículo aprenderá a crear y administrar un área de trabajo de Azure Machine Learning mediante archivos de configuración de Terraform. Los archivos de configuración basados en plantilla 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 limpiar y destruir estos.
Una configuración de Terraform es un documento que define los recursos que son necesarios para una implementación. También puede especificar las variables de implementación. Las variables se usan para proporcionar valores de entrada al usar la configuración.
Prerrequisitos
- Una suscripción de Azure. Si no tiene una ya, pruebe la versión gratuita o de pago de Azure Machine Learning.
- Una versión instalada de la CLI de Azure.
- Configuración de Terraform: siga las instrucciones de este artículo y del artículo sobre Terraform y la configuración del acceso a Azure.
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, al crear un área de trabajo en la suscripción A que usa una cuenta de almacenamiento de la suscripción B, el espacio de nombres de Azure Machine Learning debe estar registrado en la suscripción B para poder usar la cuenta de almacenamiento con el área de trabajo.
El proveedor de recursos para Azure Machine Learning es Microsoft.MachineLearningService. Para obtener información sobre cómo comprobar si está registrado y cómo realizar el registro, vea el artículo Tipos y proveedores de recursos de Azure.
Importante
Esta opción solo se aplica a los recursos proporcionados durante la creación del área de trabajo para cuentas de Azure Storage, el registro de contenedores de Azure, Azure Key Vault y Application Insights.
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, no podrá volver a crearla sin eliminar y volver a crear el área de trabajo.
Para obtener más información sobre el uso de esta instancia de Application Insights, consulte Supervisión y recopilación de datos de los puntos de conexión del servicio web ML.
Declaración del proveedor de Azure
Cree el archivo de configuración de Terraform que declara el proveedor de Azure:
Cree un nuevo archivo llamado
main.tf
. Si trabaja con Azure Cloud Shell, use bash:code main.tf
Pegue el siguiente código en el editor:
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 }
Guarde el archivo (<Ctrl>S) y salga del editor (<Ctrl>Q).
Implementación de un área de trabajo
Las siguientes configuraciones de Terraform se pueden usar para crear un área de trabajo de Azure Machine Learning. Al crear un área de trabajo de Azure Machine Learning, se requieren otros servicios como dependencias. La plantilla también especifica estos recursos asociados al área de trabajo. En función de sus necesidades, puede optar por usar la plantilla que crea recursos con conectividad de red pública o privada.
Algunos recursos de Azure requieren nombres únicos globales. Antes de implementar los recursos mediante las siguientes plantillas, establezca la variable name
en un valor que sea único.
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"
}
}
Solución de problemas
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.
Pasos siguientes
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 del proveedor de Azure Resource Manager del registro de Terraform.
Para buscar ejemplos de plantilla "de inicio rápido" para Terraform, consulte las plantillas de inicio rápido de Azure Terraform:
- 101: Machine learning workspace and compute (Área de trabajo y proceso de Machine Learning): el conjunto mínimo de recursos necesarios para empezar a trabajar con Azure Machine Learning.
- 201: Machine learning workspace, compute, and a set of network components for network isolation (Área de trabajo de Machine Learning, proceso y un conjunto de componentes de red para el aislamiento de red): todos los recursos que son 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 los componentes de red existentes..
- 301: Área de trabajo de Machine Learning (topología en estrella tipo hub-and-spoke protegida 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 (VNet).
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 Azure Machine Learning actualizado con las actualizaciones de seguridad más recientes, consulte Administración de vulnerabilidades.