Terraform을 사용하여 Azure Machine Learning 작업 영역 관리
이 문서에서는 Terraform 구성 파일을 사용하여 Azure Machine Learning 작업 영역을 만드는 방법을 알아봅니다. Terraform의 템플릿 기반 구성 파일을 사용하면 반복 가능하고 예측 가능한 방식으로 Azure 리소스를 정의하고, 만들고, 구성할 수 있습니다. Terraform은 리소스 상태를 추적하고 리소스를 정리하고 제거할 수 있습니다.
Terraform 구성 파일은 배포에 필요한 리소스를 정의하는 문서입니다. Terraform 구성은 구성을 적용할 때 입력 값을 제공하는 데 사용할 배포 변수를 지정할 수도 있습니다.
필수 조건
- Azure Machine Learning의 무료 또는 유료 버전이 포함된 Azure 구독입니다. Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
- 빠른 시작: Terraform 설치 및 구성의 지침에 따라 Terraform을 설치하고 구성했습니다.
제한 사항
새 작업 영역을 만들 때 작업 영역에 필요한 서비스를 자동으로 만들거나 기존 서비스를 사용할 수 있습니다. 작업 영역과 다른 Azure 구독의 기존 서비스를 사용하려면 해당 서비스가 포함된 구독에 Azure Machine Learning 네임스페이스를 등록해야 합니다. 예를 들어, 구독 B의 스토리지 계정을 사용하는 구독 A의 작업 영역을 만드는 경우 작업 영역에서 스토리지 계정을 사용하려면 먼저 Azure Machine Learning 네임스페이스를 구독 B에 등록해야 합니다.
Azure Machine Learning의 리소스 공급자는 Microsoft.MachineLearningServices입니다. 등록 여부를 확인하거나 등록하는 방법에 대한 자세한 내용은 Azure 리소스 공급자 및 형식을 참조하세요.
Important
이 정보는 작업 영역 만드는 동안 제공되는 리소스(Azure Storage 계정, Azure Container Registry, Azure Key Vault 및 Application Insights)에만 적용됩니다.
작업 영역을 만드는 동안 만들어진 Application Insights 인스턴스에는 다음 제한 사항이 적용됩니다.
팁
Azure Application Insights 인스턴스는 작업 영역을 만들 때 만들어집니다. 원하는 경우 클러스터를 만든 후 Application Insights 인스턴스를 삭제할 수 있습니다. 이 인스턴스를 삭제하면 작업 영역에서 수집되는 정보가 제한되며, 문제를 해결하기가 더 어려워질 수 있습니다. 작업 영역에서 만들어진 Application Insights 인스턴스를 삭제하는 경우 이를 다시 만들 수 있는 유일한 방법은 작업 영역을 삭제하고 다시 만드는 것입니다.
이 Application Insights 인스턴스 사용에 대한 자세한 내용은 Machine Learning 웹 서비스 엔드포인트에서 데이터 모니터링 및 수집을 참조하세요.
작업 영역 만들기
다음 코드가 포함된 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
}
다음 코드가 포함된 providers.tf라는 파일에서 Azure 공급자를 선언합니다.
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
}
}
}
작업 영역 구성
Azure Machine Learning 작업 영역을 만들려면 다음 Terraform 구성 중 하나를 사용합니다. Azure Machine Learning 작업 영역에는 다양한 다른 서비스가 종속성으로 필요합니다. 템플릿은 이러한 관련 리소스를 지정합니다. 필요에 따라 공용 또는 개인 네트워크 연결로 리소스를 만드는 템플릿을 사용하도록 선택할 수 있습니다.
참고 항목
Azure의 일부 리소스에는 전역적으로 고유한 이름이 필요합니다. 리소스를 배포하기 전에 name
변수를 고유한 값으로 설정해야 합니다.
다음 구성은 공용 네트워크 연결을 통해 작업 영역을 만듭니다.
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"
}
}
계획 만들기 및 적용
작업 영역을 만들려면 다음 코드를 실행합니다.
terraform init
terraform plan \
# -var <any of the variables set in variables.tf> \
-out demo.tfplan
terraform apply "demo.tfplan"
리소스 공급자 오류 문제 해결
Azure Machine Learning 작업 영역 또는 작업 영역에서 사용하는 리소스를 만들 때 다음 메시지와 유사한 오류가 발생할 수 있습니다.
No registered resource provider found for location {location}
The subscription is not registered to use namespace {resource-provider-namespace}
대부분의 리소스 공급자는 자동으로 등록되지만, 전부는 아닙니다. 이 메시지가 표시되면 언급된 제공자를 등록해야 합니다.
다음 표에는 Azure Machine Learning에 필요한 리소스 공급자 목록이 있습니다.
리소스 공급자 | 필요한 이유 |
---|---|
Microsoft.MachineLearningServices | Azure Machine Learning 작업 영역을 만듭니다. |
Microsoft.Storage | Azure Storage 계정은 작업 영역의 기본 스토리지로 사용됩니다. |
Microsoft.ContainerRegistry | Azure Container Registry는 작업 영역이 Docker 이미지를 빌드하는 데 사용됩니다. |
Microsoft.KeyVault | Azure Key Vault는 작업 영역에서 비밀을 저장하는 데 사용됩니다. |
Microsoft.Notebooks | Azure Machine Learning 컴퓨팅 인스턴스의 통합 Notebook. |
Microsoft.ContainerService | Azure Kubernetes Services에 학습된 모델을 배포하려는 경우. |
Azure Machine Learning에서 고객 관리형 키를 사용하려는 경우 다음 서비스 공급자를 등록해야 합니다.
리소스 공급자 | 필요한 이유 |
---|---|
Microsoft.DocumentDB | 작업 영역의 메타데이터를 기록하는 Azure CosmosDB 인스턴스입니다. |
Microsoft.Search | Azure Search는 작업 영역에 대한 인덱싱 기능을 제공합니다. |
Azure Machine Learning에서 관리형 가상 네트워크를 사용하려는 경우 Microsoft.Network 리소스 공급자를 등록해야 합니다. 이 리소스 공급자는 관리형 가상 네트워크에 대한 프라이빗 엔드포인트를 만들 때 작업 영역에서 사용됩니다.
리소스 공급자 등록에 대한 자세한 내용은 리소스 공급자 등록 오류 해결을 참조하세요.
관련 참고 자료
Azure의 Terraform 지원에 대한 자세한 내용은 Azure의 Terraform 설명서를 참조하세요.
Terraform Azure 공급자 및 Machine Learning 모듈에 대한 자세한 내용은 Terraform Registry Azure Resource Manager 공급자를 참조하세요.
Terraform에 대한 빠른 시작 템플릿 예를 찾으려면 다음 Azure Terraform 빠른 시작 템플릿을 참조하세요.
- 101: 기계 학습 작업 영역 및 컴퓨팅은 Azure Machine Learning 시작에 필요한 최소 리소스 집합을 제공합니다.
- 201: 기계 학습 작업 영역, 컴퓨팅 및 네트워크 격리를 위한 네트워크 구성 요소 집합은 HBI(높은 비즈니스 영향) 데이터와 함께 사용할 프로덕션 파일럿 환경을 만드는 데 필요한 모든 리소스를 제공합니다.
- 202: 201과 비슷하지만 기존 네트워크 구성 요소를 가져오는 옵션이 있습니다..
- 301: Machine Learning 작업 영역(방화벽이 있는 보안 허브 및 스포크).
네트워크 구성 옵션에 대한 자세한 내용은 V가상 네트워크를 사용하여 Azure Machine Learning 작업 영역 리소스 보안을 참조하세요.
대체 Azure Resource Manager 템플릿 기반 배포는 Resource Manager 템플릿 및 Resource Manager REST API를 사용하여 리소스 배포를 참조하세요.
최신 보안 업데이트로 Azure Machine Learning 작업 영역을 최신 상태로 유지하는 방법에 대한 자세한 내용은 취약성 관리를 참조하세요.