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

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:

  1. Cree un nuevo archivo llamado main.tf. Si trabaja con Azure Cloud Shell, use bash:

    code main.tf
    
  2. Pegue el siguiente código en el editor:

    main.tf:

    terraform {
      required_version = ">=1.0"
    
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "=2.76.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    data "azurerm_client_config" "current" {}
    
    resource "azurerm_resource_group" "default" {
      name     = "rg-${var.name}-${var.environment}"
      location = var.location
    }
    
  3. 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 "name" {
  type        = string
  description = "Name of the deployment"
}

variable "environment" {
  type        = string
  description = "Name of the environment"
  default     = "dev"
}

variable "location" {
  type        = string
  description = "Location of the resources"
  default     = "East US"
}

workspace.tf:

# Dependent resources for Azure Machine Learning
resource "azurerm_application_insights" "default" {
  name                = "appi-${var.name}-${var.environment}"
  location            = azurerm_resource_group.default.location
  resource_group_name = azurerm_resource_group.default.name
  application_type    = "web"
}

resource "azurerm_key_vault" "default" {
  name                     = "kv-${var.name}-${var.environment}"
  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                     = "st${var.name}${var.environment}"
  location                 = azurerm_resource_group.default.location
  resource_group_name      = azurerm_resource_group.default.name
  account_tier             = "Standard"
  account_replication_type = "GRS"
}

resource "azurerm_container_registry" "default" {
  name                = "cr${var.name}${var.environment}"
  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                    = "mlw-${var.name}-${var.environment}"
  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

  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/NotebookProxies 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/databaseAccounts Instancia de Azure Cosmos DB que registra los metadatos del área de trabajo.
Microsoft.Search/searchServices Azure Search proporciona funcionalidades de indexación para el área de trabajo.

Para obtener más información sobre cómo registrar un proveedor de recursos, consulte Registro del proveedor de recursos.

Pasos siguientes