다음을 통해 공유


Azure Machine Learning용 MLflow 구성

이 문서에서는 추적, 레지스트리 관리 및 배포를 위해 Azure Machine Learning 작업 영역에 연결하도록 MLflow를 구성하는 방법을 설명합니다.

Azure Machine Learning 작업 영역은 MLflow와 호환되므로 추가 구성 없이 MLflow 서버 역할을 할 수 있습니다. 각 작업 영역에는 MLflow에서 작업 영역에 연결하기 위해 사용하는 MLflow 추적 URI가 있습니다. Azure Machine Learning 작업 영역 은 이미 MLflow에서 작동하도록 구성되어 있으므로 추가 구성이 필요하지 않습니다.

그러나 Azure Machine Learning 외부에서 작업하는 경우 작업 영역을 가리키도록 MLflow를 구성해야 합니다. 영향을 받는 환경에는 로컬 머신, Azure Synapse Analytics 및 Azure Databricks가 포함됩니다.

Important

Azure 컴퓨팅 인프라를 사용하는 경우 추적 URI를 구성할 필요가 없습니다. 자동으로 구성됩니다. 자동 구성을 사용하는 환경에는 Azure Machine Learning Notebook, Azure Machine Learning 컴퓨팅 인스턴스에서 호스트되는 Jupyter Notebook 및 Azure Machine Learning 컴퓨팅 클러스터에서 실행되는 작업이 포함됩니다.

필수 조건

  • MLflow SDK mlflow 패키지 및 MLflow용 Azure Machine Learning azureml-mlflow 플러그 인입니다. 다음 명령을 사용하여 이 소프트웨어를 설치할 수 있습니다.

    pip install mlflow azureml-mlflow
    

    대신 mlflow.mlflow-skinny 이 패키지는 SQL Storage, 서버, UI 또는 데이터 과학 종속성이 없는 경량 MLflow 패키지입니다. 주로 MLflow 추적 및 로깅 기능이 필요하지만 배포를 비롯한 전체 기능 모음을 가져오지 않으려는 사용자에게 권장됩니다.

  • Azure Machine Learning 작업 영역 작업 영역을 만들려면 시작해야 하는 리소스 만들기를 참조하세요.

  • 작업 영역에서 MLflow 작업을 수행하기 위한 액세스 권한입니다. 작업 및 필요한 권한 목록은 MLflow 작업을 참조 하세요.

MLflow 추적 URI 구성

원격 추적을 수행하거나 Azure Machine Learning 외부에서 실행되는 실험을 추적하려면 Azure Machine Learning 작업 영역의 추적 URI를 가리키도록 MLflow를 구성합니다.

MLflow를 Azure Machine Learning 작업 영역에 연결하려면 작업 영역의 추적 URI가 필요합니다. 각 작업 영역에는 프로토콜 azureml://로 시작하는 자체 추적 URI가 있습니다.

  1. 다음과 같이 작업 영역에 대한 추적 URI를 가져옵니다.

    적용 대상: Azure CLI ml 확장 v2(현재)

    1. 로그인하고 작업 영역을 구성합니다.

      az account set --subscription <subscription-ID>
      az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location> 
      
    2. 다음 명령을 사용하여 추적 URI를 가져옵니다.az ml workspace

      az ml workspace show --query mlflow_tracking_uri
      
  2. 추적 URI를 구성합니다.

    이 메서드를 set_tracking_uri() 사용하여 MLflow 추적 URI를 작업 영역의 추적 URI로 설정합니다.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    일부 시나리오에는 Azure Databricks 클러스터 또는 Azure Synapse Analytics 클러스터와 같은 공유 환경에서 작업하는 작업이 포함됩니다. 이러한 경우 각 세션이 아닌 클러스터 수준에서 환경 변수를 설정하는 MLFLOW_TRACKING_URI 것이 유용합니다. 클러스터 수준에서 변수를 설정하면 클러스터의 모든 세션에 대해 Azure Machine Learning을 가리키도록 MLflow 추적 URI가 자동으로 구성됩니다.

인증 구성

추적을 설정한 후에는 연결된 작업 영역에 대한 인증 방법도 구성해야 합니다.

기본적으로 MLflow용 Azure Machine Learning 플러그 인은 기본 브라우저를 열고 자격 증명을 묻는 메시지를 표시하여 대화형 인증을 수행합니다. 그러나 플러그 인은 다른 여러 인증 메커니즘도 지원합니다. 패키지는 azure-identity 이 지원을 제공합니다. 이 패키지는 플러그 인의 azureml-mlflow 종속성으로 설치됩니다.

인증 프로세스는 성공할 때까지 다음과 같은 메서드를 하나씩 시도합니다.

  1. 환경: 환경 변수를 통해 지정된 계정 정보를 읽고 인증에 사용합니다.
  2. 관리 ID: 애플리케이션이 관리 ID를 사용하도록 설정된 Azure 호스트에 배포되는 경우 관리 ID가 인증에 사용됩니다.
  3. Azure CLI: Azure CLI az login 명령을 사용하여 로그인하는 경우 자격 증명이 인증에 사용됩니다.
  4. Azure PowerShell: Azure PowerShell Connect-AzAccount 명령을 사용하여 로그인하는 경우 자격 증명이 인증에 사용됩니다.
  5. 대화형 브라우저: 사용자가 기본 브라우저를 통해 대화형으로 인증됩니다.

세션에 연결된 사용자가 있는 대화형 작업의 경우 대화형 인증을 사용할 수 있습니다. 추가적인 조치가 필요하지 않습니다.

Warning

대화형 브라우저 인증은 자격 증명을 묻는 메시지가 표시되면 코드 실행을 차단합니다. 이 방법은 학습 작업과 같은 무인 환경에서 인증에 적합하지 않습니다. 이러한 환경에서 다른 인증 모드를 구성하는 것이 좋습니다.

무인 실행이 필요한 시나리오의 경우 Azure Machine Learning과 통신하도록 서비스 주체를 구성해야 합니다. 서비스 주체를 만드는 방법에 대한 자세한 내용은 서비스 주체 구성을 참조하세요.

다음 코드에서 서비스 주체의 테넌트 ID, 클라이언트 ID 및 클라이언트 암호를 사용합니다.

import os

os.environ["AZURE_TENANT_ID"] = "<Azure-tenant-ID>"
os.environ["AZURE_CLIENT_ID"] = "<Azure-client-ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<Azure-client-secret>"

공유 환경에서 작업하는 경우 컴퓨팅 수준에서 이러한 환경 변수를 구성하는 것이 좋습니다. 가능한 경우 Azure Key Vault 인스턴스에서 비밀로 관리하세요.

예를 들어 Azure Databricks 클러스터 구성에서 다음과 같은 방법으로 AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}환경 변수의 비밀을 사용할 수 있습니다. Azure Databricks에서 이 방법을 구현하는 방법에 대한 자세한 내용은 환경 변수에서 비밀 참조를 참조하거나 플랫폼에 대한 설명서를 참조하세요.

비밀 대신 인증서를 사용하려는 경우 다음 환경 변수를 구성할 수 있습니다.

  • PEM(Privacy Enhanced Mail) 또는 공개 키 암호화 표준 12(PKCS #12) 형식의 인증서 및 프라이빗 키 쌍이 포함된 파일의 경로로 설정합니다 AZURE_CLIENT_CERTIFICATE_PATH .
  • 암호를 사용하는 경우 인증서 파일의 암호로 설정합니다 AZURE_CLIENT_CERTIFICATE_PASSWORD .

권한 부여 및 권한 수준 구성

AzureML 데이터 과학자 및 기여자와 같은 일부 기본 역할은 Azure Machine Learning 작업 영역에서 MLflow 작업을 수행하도록 이미 구성되어 있습니다. 사용자 지정 역할을 사용하는 경우 다음 권한이 필요합니다.

  • MLflow 추적을 사용하려면:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • MLflow 모델 레지스트리를 사용하려면 다음을 수행합니다.

    • Microsoft.MachineLearningServices/workspaces/models/*/*

사용자가 만든 서비스 주체 또는 사용자 계정에 작업 영역에 대한 액세스 권한을 부여하는 방법을 보려면 액세스 권한 부여를 참조하세요.

인증 문제 해결

MLflow는 mlflow.set_experiment() 또는 mlflow.start_run()와 같이 서비스와 상호 작용하는 첫 번째 작업에서 Azure Machine Learning에 인증을 시도합니다. 프로세스 중에 문제 또는 예기치 않은 인증 프롬프트가 발생하는 경우 로깅 수준을 늘려 오류에 대한 자세한 내용을 확인할 수 있습니다.

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

실험 이름 설정(선택 사항)

모든 MLflow 실행은 활성 실험에 기록됩니다. 기본적으로 실행은 자동으로 만들어지는 실험 Default 에 기록됩니다. 추적에 사용되는 실험을 구성할 수 있습니다.

Azure Machine Learning CLI v2를 사용하여 작업을 제출하는 경우 작업의 YAML 정의에 있는 속성을 사용하여 experiment_name 실험 이름을 설정할 수 있습니다. 학습 스크립트에서 이를 구성할 필요가 없습니다. 자세한 내용은 YAML: 표시 이름, 실험 이름, 설명 및 태그를 참조하세요.

MLflow mlflow.set_experiment() 명령을 사용하여 실험을 구성합니다.

experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)

비공개 Azure 클라우드에 대한 지원 구성

MLflow용 Azure Machine Learning 플러그 인은 기본적으로 글로벌 Azure 클라우드에서 작동하도록 구성됩니다. 그러나 환경 변수를 설정하여 사용 중인 Azure 클라우드를 AZUREML_CURRENT_CLOUD 구성할 수 있습니다.

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

다음 Azure CLI 명령을 사용하여 사용 중인 클라우드를 식별할 수 있습니다.

az cloud list

현재 클라우드의 값 IsActiveTrue로 설정됩니다.

이제 환경이 Azure Machine Learning의 작업 영역에 연결되었으므로 작업을 시작할 수 있습니다.