Compartir vía


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

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.