Последняя проверка: май 2026 г.
Разверните сервисы AWS для экзамена DP-100 с помощью чистого Terraform: пошаговое руководство с привязкой каждого блока к разделам экзамена. Код также совместим с OpenTofu.
К концу этой лабораторной работы вы развернёте, используя обычный Terraform, плоскость управления рабочей области Azure Machine Learning — саму рабочую область, три необходимые зависимости (учётную запись хранения, Key Vault, Application Insights) и вычислительный кластер Azure ML, масштабируемый до нуля при простое, чтобы избежать лишних затрат. Это эталонная настройка рабочей области для DP-100; к ней подключаются задачи обучения и развёртывания моделей.
Вставьте фрагменты кода в один файл main.tf, запустите terraform init, затем terraform apply пошагово.
>= 1.5 или OpenTofu >= 1.6.az login).Плоскость управления в режиме простоя стоит почти $0:
Основная ловушка стоимости в DP-100 — это оставление min_node_count > 0 для вычислительного кластера — даже один простаивающий узел будет стоить более 200 $/месяц. Мы устанавливаем min_node_count = 0 и scale_down_nodes_after_idle_duration = PT15M (масштабирование до нуля через 15 минут простоя). Проверьте перед запуском. Уничтожьте ресурсы по завершении.
Стандартное начало для Azure. Рабочие области Azure ML являются региональными — выберите регион с широким доступом к SKU GPU, если планируете выходить за рамки лабораторной работы (eastus, westus, westeurope — безопасный выбор).
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
}Рабочие области Azure ML требуют привязки к трём предварительно существующим ресурсам: учётной записи хранения (для наборов данных, моделей, журналов), Key Vault (для учётных данных) и экземпляру Application Insights (для телеметрии запусков). DP-100 неоднократно проверяет эту тройку — вопрос «почему я не могу создать рабочую область?» почти всегда связан с отсутствием одного из этих ресурсов.
Учётная запись хранения здесь получает стандартные безопасные настройки по умолчанию; Key Vault использует авторизацию на основе RBAC (современная настройка по умолчанию).
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
}Рабочая область связывает три зависимости и получает управляемое удостоверение, назначаемое системой, которое последующие вычислительные цели, наборы данных и конечные точки будут использовать для чтения из зависимостей. Домен DP-100 «Управление ресурсами Azure для ML» проверяет именно эту конфигурацию — рабочая область + удостоверение + назначения ролей.
Мы устанавливаем public_network_access_enabled = true для упрощения лабораторной работы; производственные рабочие области обычно используют частные конечные точки (домен DP-100 «Разработка и подготовка решения для машинного обучения» проверяет варианты с частными ссылками).
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
}Задачи обучения требуют вычислительных ресурсов. Вычислительные кластеры Azure ML — это управляемые пулы виртуальных машин, которые масштабируются в зависимости от глубины очереди заданий. min_node_count = 0 — обязательная настройка DP-100 для оптимизации затрат в лабораторных/разработческих рабочих областях — при отсутствии заданий в очереди кластер масштабируется до нуля узлов и стоит $0 (только метаданные).
Standard_DS3_v2 (4 vCPU, 14 ГБ ОЗУ, $0,30/час) является типичным значением по умолчанию для лабораторных работ — достаточно большим для выполнения обучающих задач sklearn или небольших PyTorch, и достаточно малым, чтобы быть дешёвым. Производственные обучающие кластеры используют SKU GPU (семейство Standard_NC6s_v3).
scale_down_nodes_after_idle_duration = "PT15M" (длительность ISO 8601 для 15 минут) — это повторяющийся вопрос о стоимости в DP-100: слишком длинная установка приводит к работе дорогих узлов; слишком короткая вызывает частые перезапуски. 15 минут — это документированное значение по умолчанию для 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 удаляет всё. Важные замечания:
purge_soft_delete_on_destroy = true в функциях провайдера обеспечивает полное удаление Key Vault. Обратимое удаление рабочей области настраивается на портале, но terraform destroy работает независимо от этого.DP-100 охватывает больше аспектов ML в Azure, которые не могут быть включены в эту лабораторную работу — вычислительные экземпляры (виртуальные машины IDE для одного пользователя, очень дорогие в режиме простоя), онлайн-конечные точки (управляемый вывод в реальном времени), пакетные конечные точки (управляемый пакетный вывод), задания AutoML, Designer (визуальный редактор конвейеров), интеграция отслеживания MLflow, ParallelRunStep, рабочие процессы продвижения реестра моделей и весь каталог активов/хранилищ данных.
Мы придерживаемся плоскости управления рабочей области, поскольку это основа, к которой привязывается каждый шаблон DP-100. Конечные точки привязываются к рабочей области. Задания выполняются на вычислительном кластере. Модели регистрируются в отслеживании MLflow рабочей области. Наборы данных попадают в учётную запись хранения.
Для вышеупомянутых аспектов см. разделы Просмотр и Editorial этой страницы сертификации. Домены DP-100 Обучение моделей ML и Развёртывание и эксплуатация решений ML лучше всего изучать, выполняя задания в этой рабочей области — лабораторная работа даёт вам основу; Python SDK выполняет фактическое обучение и развёртывание.