Última revisión: mayo de 2026
Crea los servicios de AWS del examen DP-100 con Terraform puro: bloque a bloque, cada uno vinculado a un dominio del examen. El mismo código funciona en OpenTofu.
Al final de este laboratorio, habrá aprovisionado, con Terraform simple, el plano de control del espacio de trabajo de Azure Machine Learning — el propio espacio de trabajo, las tres dependencias requeridas (cuenta de almacenamiento, Key Vault, Application Insights) y un clúster de cómputo de Azure ML escalado a cero cuando esté inactivo para que el laboratorio no genere costos. Esta es la configuración del espacio de trabajo de referencia DP-100; los trabajos de entrenamiento y las implementaciones de modelos se conectan a él.
Pegue los fragmentos en un único main.tf, ejecute terraform init, y luego terraform apply paso a paso.
>= 1.5 o OpenTofu >= 1.6.az login).El plano de control inactivo tiene un costo cercano a $0:
La trampa de costos de DP-100 es dejar el min_node_count > 0 del clúster de cómputo — incluso un nodo inactivo cuesta $200+/mes. Establecemos min_node_count = 0 y scale_down_nodes_after_idle_duration = PT15M (escalar a cero 15 minutos después de la inactividad). Verifique antes de ejecutar. Destruya cuando haya terminado.
Inicio estándar de Azure. Los espacios de trabajo de Azure ML son regionales; elija una región con amplia disponibilidad de SKU de GPU si va más allá del laboratorio (eastus, westus, westeurope son las opciones seguras).
terraform {
required_version = ">= 1.5"
required_providers {
azurerm = { source = "hashicorp/azurerm", version = "~> 4.0" }
random = { source = "hashicorp/random", version = "~> 3.6" }
}
}
provider "azurerm" {
features {
key_vault {
purge_soft_delete_on_destroy = true
}
}
}
resource "random_id" "suffix" {
byte_length = 3
}
data "azurerm_client_config" "current" {}
locals {
tags = {
Project = "certlabpro-dp-100"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-dp-100-rg"
location = "eastus"
tags = local.tags
}Los espacios de trabajo de Azure ML requieren tres recursos preexistentes a los que conectarse: una cuenta de almacenamiento (para conjuntos de datos, modelos, registros), un Key Vault (para credenciales) y una instancia de Application Insights (para telemetría de ejecución). DP-100 evalúa este trío repetidamente — "¿por qué no puedo crear el espacio de trabajo?" casi siempre se debe a la falta de uno de estos.
La cuenta de almacenamiento aquí obtiene las configuraciones de seguridad predeterminadas estándar; el Key Vault utiliza autorización RBAC (el valor predeterminado moderno).
resource "azurerm_storage_account" "ml" {
name = "dp100ml${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = "Standard"
account_replication_type = "LRS"
account_kind = "StorageV2"
https_traffic_only_enabled = true
min_tls_version = "TLS1_2"
allow_nested_items_to_be_public = false
tags = local.tags
}
resource "azurerm_key_vault" "ml" {
name = "kv-dp100-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
tenant_id = data.azurerm_client_config.current.tenant_id
sku_name = "standard"
enable_rbac_authorization = true
soft_delete_retention_days = 7
tags = local.tags
}
resource "azurerm_application_insights" "ml" {
name = "appi-dp100-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
application_type = "web"
tags = local.tags
}El espacio de trabajo une las tres dependencias y obtiene una identidad administrada asignada por el sistema que los destinos de cómputo, conjuntos de datos y puntos de conexión posteriores utilizarán para leer de las dependencias. El dominio Administrar recursos de Azure para ML de DP-100 evalúa esta forma exacta — espacio de trabajo + identidad + asignaciones de roles.
Establecemos public_network_access_enabled = true para mantener el laboratorio simple; los espacios de trabajo de producción suelen utilizar puntos de conexión privados (el dominio Diseñar y preparar una solución de aprendizaje automático de DP-100 evalúa variantes de enlace privado).
resource "azurerm_machine_learning_workspace" "main" {
name = "mlw-dp100-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
application_insights_id = azurerm_application_insights.ml.id
key_vault_id = azurerm_key_vault.ml.id
storage_account_id = azurerm_storage_account.ml.id
public_network_access_enabled = true
identity {
type = "SystemAssigned"
}
tags = local.tags
}Los trabajos de entrenamiento necesitan cómputo. Los clústeres de cómputo de Azure ML son grupos de VM administrados que se escalan según la profundidad de la cola de trabajos. min_node_count = 0 es la configuración obligatoria de optimización de costos de DP-100 para espacios de trabajo de laboratorio/desarrollo — cuando no hay trabajos en cola, el clúster se escala a cero nodos y factura $0 (solo metadatos).
Standard_DS3_v2 (4 vCPU, 14 GB RAM, $0.30/hora) es el valor predeterminado típico del laboratorio — lo suficientemente grande como para ejecutar trabajos de entrenamiento de sklearn o pequeños de PyTorch, lo suficientemente pequeño como para ser económico. Los clústeres de entrenamiento de producción utilizan SKU de GPU (familia Standard_NC6s_v3).
scale_down_nodes_after_idle_duration = "PT15M" (duración ISO 8601 para 15 minutos) es la pregunta recurrente de costos de DP-100: establecer esto demasiado largo deja nodos costosos en ejecución; demasiado corto causa sobrecarga. 15 minutos es el valor predeterminado documentado de Azure.
resource "azurerm_machine_learning_compute_cluster" "main" {
name = "cpu-cluster"
location = azurerm_resource_group.main.location
vm_priority = "Dedicated"
vm_size = "Standard_DS3_v2"
machine_learning_workspace_id = azurerm_machine_learning_workspace.main.id
scale_settings {
min_node_count = 0
max_node_count = 2
scale_down_nodes_after_idle_duration = "PT15M"
}
identity {
type = "SystemAssigned"
}
tags = local.tags
}terraform destroy derriba todo. Notas clave:
purge_soft_delete_on_destroy = true en las características del proveedor hace que la destrucción de Key Vault purgue realmente. La eliminación suave del espacio de trabajo es configurable en el portal, pero terraform destroy funciona de todos modos.DP-100 cubre más superficies de ML en Azure que este laboratorio no puede abarcar — Instancias de cómputo (VM IDE de un solo usuario, muy caras en inactividad), Puntos de conexión en línea (inferencia en tiempo real administrada), Puntos de conexión por lotes (inferencia por lotes administrada), trabajos de AutoML, Designer (editor visual de pipelines), integración de seguimiento de MLflow, ParallelRunStep, flujos de trabajo de promoción de registro de modelos y todo el catálogo de activos de datos / almacenes de datos.
Nos adherimos al plano de control del espacio de trabajo porque es el sustrato al que se conecta cada patrón de DP-100. Los puntos de conexión se conectan al espacio de trabajo. Los trabajos se ejecutan en el clúster de cómputo. Los modelos se registran contra el seguimiento de MLflow del espacio de trabajo. Los conjuntos de datos aterrizan en la cuenta de almacenamiento.
Para las superficies anteriores, consulte las secciones Buscar y Editorial de esta página de certificación. Los dominios Entrenar modelos de ML y Implementar y operacionalizar soluciones de ML de DP-100 se aprenden mejor ejecutando trabajos contra este espacio de trabajo — el laboratorio le proporciona el sustrato; el SDK de Python realiza el entrenamiento y la implementación reales.