Share via


Python SDK(v1)를 사용하여 Azure Machine Learning 작업 영역 관리

적용 대상:Python SDK azureml v1

이 문서에서는 Python용 SDK를 사용하여 Azure Machine LearningAzure Machine Learning 작업 영역을 만들고 보고 삭제합니다.

변경이 필요하거나 자동화 요구 사항이 증가하면 CLI를 사용하거나 VS Code 확장을 통해 작업 영역을 관리할 수도 있습니다.

필수 구성 요소

제한 사항

  • 새 작업 영역을 만들 때 작업 영역에 필요한 서비스를 자동으로 만들거나 기존 서비스를 사용할 수 있습니다. 작업 영역과 다른 Azure 구독의 기존 서비스를 사용하려면 해당 서비스가 포함된 구독에 Azure Machine Learning 네임스페이스를 등록해야 합니다. 예를 들어, 구독 B의 스토리지 계정을 사용하는 구독 A에서 작업 영역을 만드는 경우 작업 영역에서 스토리지 계정을 사용하려면 먼저 Azure Machine Learning 네임스페이스를 구독 B에 등록해야 합니다.

    Azure Machine Learning의 리소스 공급자는 Microsoft.MachineLearningServices입니다. 등록 여부를 확인하는 방법 및 등록하는 방법에 대한 자세한 내용은 Azure 리소스 공급자 및 형식 문서를 참조하세요.

    Important

    이는 Azure Storage Accounts, Azure Container Register, Azure Key Vault 및 Application Insights 등의 작업 영역을 만드는 동안 제공된 리소스에만 적용됩니다.

  • 기본적으로 작업 영역을 만들면 ACR(Azure Container Registry)도 만들어집니다. ACR은 현재 리소스 그룹 이름에서 유니코드 문자를 지원하지 않으므로 이러한 문자를 포함하지 않는 리소스 그룹을 사용합니다.

  • Azure Machine Learning은 작업 영역의 기본 스토리지 계정에 대해 계층 구조 네임스페이스(Azure Data Lake Storage Gen2 기능)를 지원하지 않습니다.

Azure Application Insights 인스턴스는 작업 영역을 만들 때 만들어집니다. 원하는 경우 클러스터를 만든 후 Application Insights 인스턴스를 삭제할 수 있습니다. 이 인스턴스를 삭제하면 작업 영역에서 수집되는 정보가 제한되며, 문제를 해결하기가 더 어려워질 수 있습니다. 작업 영역에서 만든 Application Insights 인스턴스를 삭제하는 경우 작업 영역을 삭제하고 다시 만들어야만 인스턴스를 다시 만들 수 없습니다.

이 Application Insights 인스턴스 사용에 대한 자세한 내용은 Machine Learning 웹 서비스 엔드포인트에서 데이터 모니터링 및 수집을 참조하세요.

작업 영역 만들기

제한된 옵션을 사용하여 Azure Machine Learning 스튜디오에서 직접 작업 영역을 만들 수 있습니다. 또는 옵션을 더 많이 제어하려면 아래 방법 중 하나를 사용합니다.

  • 기본 사양. 기본적으로 종속 리소스 및 리소스 그룹이 자동으로 만들어집니다. 이 코드는 eastus2에서 이름이 myworkspace인 작업 영역과 이름이 myresourcegroup인 리소스 그룹을 만듭니다.

    적용 대상:Python SDK azureml v1

    from azureml.core import Workspace
    
    ws = Workspace.create(name='myworkspace',
                   subscription_id='<azure-subscription-id>',
                   resource_group='myresourcegroup',
                   create_resource_group=True,
                   location='eastus2'
                   )
    

    작업 영역에 사용하려는 기존 Azure 리소스 그룹이 있는 경우 create_resource_group을 False로 설정합니다.

  • 다중 테넌트. 계정이 여러 개인 경우 사용하려는 Microsoft Entra ID의 테넌트 ID를 추가합니다. Azure PortalMicrosoft Entra ID, 외부 ID에서 테넌트 ID를 찾습니다.

    적용 대상:Python SDK azureml v1

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(tenant_id="my-tenant-id")
    ws = Workspace.create(name='myworkspace',
                subscription_id='<azure-subscription-id>',
                resource_group='myresourcegroup',
                create_resource_group=True,
                location='eastus2',
                auth=interactive_auth
                )
    
  • 소버린 클라우드. 소버린 클라우드에서 작업하는 경우 Azure 인증을 위해 추가 코드가 필요합니다.

    적용 대상:Python SDK azureml v1

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(cloud="<cloud name>") # for example, cloud="AzureUSGovernment"
    ws = Workspace.create(name='myworkspace',
                subscription_id='<azure-subscription-id>',
                resource_group='myresourcegroup',
                create_resource_group=True,
                location='eastus2',
                auth=interactive_auth
                )
    
  • 기존 Azure 리소스 사용. Azure 리소스 ID 형식으로 기존 Azure 리소스를 사용하는 작업 영역을 만들 수도 있습니다. Azure Portal 또는 SDK를 사용하여 특정 Azure 리소스 ID를 찾습니다. 이 예제에서는 리소스 그룹, 스토리지 계정, 키 자격 증명 모음, App Insights 및 컨테이너 레지스트리가 이미 있다고 가정합니다.

    적용 대상:Python SDK azureml v1

    import os
    from azureml.core import Workspace
    from azureml.core.authentication import ServicePrincipalAuthentication
    
    service_principal_password = os.environ.get("AZUREML_PASSWORD")
    
    service_principal_auth = ServicePrincipalAuthentication(
        tenant_id="<tenant-id>",
        username="<application-id>",
        password=service_principal_password)
    
                          auth=service_principal_auth,
                               subscription_id='<azure-subscription-id>',
                               resource_group='myresourcegroup',
                               create_resource_group=False,
                               location='eastus2',
                               friendly_name='My workspace',
                               storage_account='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.storage/storageaccounts/mystorageaccount',
                               key_vault='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.keyvault/vaults/mykeyvault',
                               app_insights='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.insights/components/myappinsights',
                               container_registry='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.containerregistry/registries/mycontainerregistry',
                               exist_ok=False)
    

자세한 내용은 작업 영역 SDK 참조를 확인하세요.

구독 액세스에 문제가 있는 경우 Azure Machine Learning 리소스 및 워크플로에 대한 인증 설정Azure Machine Learning의 인증 Notebook을 참조하세요.

네트워킹

Important

작업 영역에서 프라이빗 엔드포인트 및 가상 네트워크를 사용하는 방법에 대한 자세한 내용은 가상 네트워크 격리 및 프라이버시를 참조하세요.

Azure Machine Learning Python SDK는 프라이빗 엔드포인트를 사용하는 작업 영역을 만들 때 Workspace.create()와 함께 사용할 수 있는 PrivateEndpointConfig 클래스를 제공합니다. 이 클래스를 사용하려면 기존 가상 네트워크가 필요합니다.

고급

기본적으로 작업 영역에 대한 메타데이터는 Microsoft에서 유지 관리하는 Azure Cosmos DB 인스턴스에 저장됩니다. 이 데이터는 Microsoft 관리형 키를 사용하여 암호화됩니다.

Microsoft에서 작업 영역에 대해 수집하는 데이터를 제한하려면 포털에서 높은 비즈니스 영향 작업 영역을 선택하거나 Python에서 hbi_workspace=true 를 설정합니다. 이 설정에 대한 자세한 내용은 저장 데이터 암호화를 참조하세요.

Important

높은 비즈니스 영향을 선택하는 작업은 작업 영역을 만들 때만 수행할 수 있습니다. 작업 영역을 만든 후에는 이 설정을 변경할 수 없습니다.

자체 데이터 암호화 키 사용

데이터 암호화를 위해 사용자 고유의 키를 제공할 수 있습니다. 이렇게 하면 Azure 구독에 메타데이터를 저장하는 Azure Cosmos DB 인스턴스가 만들어집니다. 자세한 내용은 Azure Machine Learning용 고객 관리형 키를 참조하세요.

다음 단계를 사용하여 사용자 고유 키를 제공합니다.

Important

이러한 단계를 수행하기 전에 먼저 다음 작업을 수행해야 합니다.

고객 관리형 키 구성의 단계에 따라 다음을 수행합니다.

  • Azure Cosmos DB 공급자 등록
  • Azure Key Vault 만들기 및 구성
  • 키 생성

cmk_keyvaultresource_cmk_uri를 사용하여 고객 관리형 키를 지정합니다.

from azureml.core import Workspace
   ws = Workspace.create(name='myworkspace',
               subscription_id='<azure-subscription-id>',
               resource_group='myresourcegroup',
               create_resource_group=True,
               location='eastus2'
               cmk_keyvault='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.keyvault/vaults/<keyvault-name>', 
               resource_cmk_uri='<key-identifier>'
               )

구성 파일 다운로드

작업 영역에서 컴퓨팅 인스턴스를 사용하여 코드를 실행할 경우 이 단계를 건너뜁니다. 컴퓨팅 인스턴스는 이 파일의 복사본을 만들고 저장합니다.

이 작업 영역(ws)을 참조하는 로컬 환경에서 코드를 사용하려면 다음 구성 파일을 작성합니다.

적용 대상:Python SDK azureml v1

ws.write_config()

Python 스크립트 또는 Jupyter Notebook을 사용하여 파일을 디렉터리 구조에 배치합니다. 동일한 디렉터리, .azureml이라는 하위 디렉터리 또는 부모 디렉터리에 있을 수 있습니다. 컴퓨팅 인스턴스를 만들 때 이 파일이 VM의 정확한 디렉터리에 추가됩니다.

작업 영역에 연결

Python 코드에서 작업 영역에 연결할 작업 영역 개체를 만듭니다. 이 코드는 구성 파일의 콘텐츠를 읽어 작업 영역을 찾습니다. 아직 인증되지 않은 경우 로그인하라는 메시지가 표시됩니다.

적용 대상:Python SDK azureml v1

from azureml.core import Workspace

ws = Workspace.from_config()
  • 다중 테넌트. 계정이 여러 개인 경우 사용하려는 Microsoft Entra ID의 테넌트 ID를 추가합니다. Azure PortalMicrosoft Entra ID, 외부 ID에서 테넌트 ID를 찾습니다.

    적용 대상:Python SDK azureml v1

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(tenant_id="my-tenant-id")
    ws = Workspace.from_config(auth=interactive_auth)
    
  • 소버린 클라우드. 소버린 클라우드에서 작업하는 경우 Azure 인증을 위해 추가 코드가 필요합니다.

    적용 대상:Python SDK azureml v1

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(cloud="<cloud name>") # for example, cloud="AzureUSGovernment"
    ws = Workspace.from_config(auth=interactive_auth)
    

구독 액세스에 문제가 있는 경우 Azure Machine Learning 리소스 및 워크플로에 대한 인증 설정Azure Machine Learning의 인증 Notebook을 참조하세요.

작업 영역 찾기

사용할 수 있는 모든 작업 영역 목록을 참조하세요.

Azure Portal의 구독 페이지에서 구독을 찾습니다. ID를 복사하고 아래 코드에 사용하여 해당 구독에 사용할 수 있는 모든 작업 영역을 확인합니다.

적용 대상:Python SDK azureml v1

from azureml.core import Workspace

Workspace.list('<subscription-id>')

Workspace.list(..) 메서드는 전체 작업 영역 개체를 반환하지 않습니다. 구독의 기존 작업 영역에 대한 기본 정보만 포함합니다. 특정 작업 영역의 전체 개체를 가져오려면 Workspace.get(..)을 사용합니다.

작업 영역 삭제

작업 영역이 더 이상 필요하지 않으면 삭제합니다.

Warning

작업 영역에 대해 일시 삭제가 사용하도록 설정된 경우 삭제 후 복구할 수 있습니다. 일시 삭제가 사용하도록 설정되지 않았거나 작업 영역을 영구적으로 삭제하는 옵션을 선택하면 복구할 수 없습니다. 자세한 내용은 삭제된 작업 영역 복구를 참조하세요.

Azure Machine Learning의 기본 동작은 작업 영역을 일시 삭제하는 것입니다. 이는 작업 영역이 즉시 삭제되지 않고 대신 삭제 표시됨을 의미합니다. 자세한 내용은 일시 삭제를 참조하세요.

작업 영역 ws 삭제:

적용 대상:Python SDK azureml v1

ws.delete(delete_dependent_resources=False, no_wait=False)

기본 동작은 작업 영역과 연결된 리소스(컨테이너 레지스트리, 스토리지 계정, 키 자격 증명 모음 및 애플리케이션 인사이트)를 삭제하지 않는 것입니다. 이러한 리소스도 삭제하려면 delete_dependent_resources를 True로 설정합니다.

리소스 정리

Important

사용자가 만든 리소스는 다른 Azure Machine Learning 자습서 및 방법 문서의 필수 구성 요소로 사용할 수 있습니다.

사용자가 만든 리소스를 사용하지 않으려면 요금이 발생하지 않도록 해당 리소스를 삭제합니다.

  1. Azure Portal 맨 왼쪽에서 리소스 그룹을 선택합니다.

  2. 목록에서 만든 리소스 그룹을 선택합니다.

  3. 리소스 그룹 삭제를 선택합니다.

    Screenshot of the selections to delete a resource group in the Azure portal.

  4. 리소스 그룹 이름을 입력합니다. 그런 다음 삭제를 선택합니다.

문제 해결

  • Azure Machine Learning 스튜디오에서 지원되는 브라우저: 운영 체제와 호환되는 최신 브라우저를 사용하는 것이 좋습니다. 다음 브라우저가 지원됩니다.

    • Microsoft Edge(새 Microsoft Edge, 최신 버전. Microsoft Edge 레거시 아님)
    • Safari(최신 버전, Mac만 해당)
    • Chrome(최신 버전)
    • Firefox(최신 버전)
  • Azure 포털:

    • SDK 또는 Azure Portal의 공유 링크를 통해 직접 작업 영역으로 이동할 경우 확장에서 구독 정보가 포함된 표준 개요 페이지를 볼 수 없습니다. 이 시나리오에서는 다른 작업 영역으로 전환할 수도 없습니다. 다른 작업 영역을 보려면 Azure Machine Learning 스튜디오로 직접 이동하고 작업 영역 이름을 검색합니다.
    • 모든 자산(데이터, 실험, 컴퓨팅 등)은 Azure Machine Learning 스튜디오에서만 사용할 수 있습니다. Azure Portal에서는 사용할 수 없습니다.
    • Azure Portal에서 작업 영역에 대한 템플릿을 내보내려는 경우 다음 텍스트와 유사한 오류가 반환될 수 있습니다. Could not get resource of the type <type>. Resources of this type will not be exported. 해결 방법으로 https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices에서 제공된 템플릿 중 하나를 템플릿의 기반으로 사용합니다.

작업 영역 진단

Azure Machine Learning 스튜디오 또는 Python SDK에서 작업 영역에 대한 진단을 실행할 수 있습니다. 진단을 실행한 후 감지된 문제 목록이 반환됩니다. 이 목록에는 가능한 솔루션에 대한 링크가 포함되어 있습니다. 자세한 내용은 작업 영역 진단을 사용하는 방법을 참조하세요.

리소스 공급자 오류

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 Container Registry 삭제

Azure Machine Learning 작업 영역에서는 일부 작업에 ACR(Azure Container Registry)을 사용합니다. 먼저 필요한 경우 ACR 인스턴스를 자동으로 만듭니다.

Warning

작업 영역에 대해 Azure Container Registry가 만들어지면 이를 삭제하지 마세요. 삭제하면 Azure Machine Learning 작업 영역이 중단됩니다.

다음 단계

작업 영역이 있으면 모델을 학습시키고 배포하는 방법을 알아봅니다.

조직의 요구 사항에 맞게 작업 영역을 계획하는 방법에 대한 자세한 내용은 Azure Machine Learning 구성 및 설정을 참조하세요.

최신 보안 업데이트로 Azure Machine Learning을 최신 상태로 유지하는 방법에 대한 자세한 내용은 취약성 관리를 참조하세요.