기계 학습 모델의 학습 실행 추적

MLflow 추적 구성 요소를 사용하면 기계 학습 모델 학습과 관련된 원본 속성, 매개 변수, 메트릭, 태그 및 아티팩트를 기록할 수 있습니다. MLflow를 시작하려면 MLflow 빠른 시작 자습서 중 하나를 시도해 보세요.

MLflow 추적은 실험실행이라는 두 가지 개념을 기반으로 합니다.

  • MLflow 실험은 MLflow 실행을 위한 액세스 제어 및 조직의 기본 단위입니다. 모든 MLflow 실행은 실험에 속합니다. 실험을 통해 실행을 시각화, 검색 및 비교할 수 있을 뿐만 아니라 실행 아티팩트 및 다른 도구에서 분석하기 위한 메타데이터를 다운로드할 수 있습니다.
  • MLflow 실행은 모델 코드의 단일 실행에 해당합니다. 각 실행은 다음 정보를 기록합니다.
    • 원본: 실행을 시작한 Notebook의 이름 또는 실행을 위한 프로젝트 이름 및 진입점입니다.
    • 버전: Notebook에서 실행되는 경우 Notebook 수정 버전이며 MLflow 프로젝트에서 실행되는 경우 Git 커밋 해시입니다.
    • 시작 & 종료 시간: 실행의 시작 및 종료 시간입니다.
    • 매개 변수: 키-값 쌍으로 저장된 모델 매개 변수입니다. 키와 값은 모두 문자열입니다.
    • 메트릭: 키-값 쌍으로 저장된 모델 평가 메트릭입니다. 값은 숫자입니다. 각 메트릭은 실행 과정 동안 업데이트될 수 있으며(예: 모델의 손실 함수가 수렴되는 방식을 추적하기 위해) MLflow는 메트릭의 기록을 기록하고 시각화할 수 있습니다.
    • 태그: 키-값 쌍으로 저장된 메타데이터를 실행합니다. 실행 중 및 완료 후에 태그를 업데이트할 수 있습니다. 키와 값은 모두 문자열입니다.
    • 아티팩트: 모든 형식의 파일을 출력합니다. 예를 들어 이미지, 모델(예: pickle 형식의 scikit-learn 모델) 및 데이터 파일(예: Parquet 파일)을 아티팩트로 기록할 수 있습니다.

MLflow 추적 API는 모델 실행의 매개 변수, 메트릭, 태그 및 아티팩트를 기록합니다. 추적 API는 MLflow 추적 서버와 통신합니다. Databricks를 사용하면 Databricks에서 호스팅하는 추적 서버에서 데이터를 기록합니다. 호스팅된 MLflow 추적 서버에는 Python, Java 및 R API가 있습니다.

실험에 대한 액세스를 제어하는 방법을 알아보려면 MLflow 실험 권한실험 권한 변경을 참조하세요.

참고

MLflow는 Databricks Runtime ML 클러스터에 설치됩니다. Databricks Runtime 클러스터에서 MLflow를 사용하려면 mlflow 라이브러리를 설치해야 합니다. 클러스터에 라이브러리를 설치하는 방법에 대한 지침은 클러스터에 라이브러리 설치를 참조하세요. MLflow용으로 설치할 특정 패키지는 다음과 같습니다.

  • Python의 경우 라이브러리 원본 PyPI를 선택하고 패키지 필드에 mlflow를 입력합니다.
  • R의 경우 라이브러리 원본 CRAN을 선택하고 패키지 필드에 mlflow를 입력합니다.
  • Scala의 경우 다음 두 패키지를 설치합니다.
    • 라이브러리 원본 Maven을 선택하고 좌표 필드에 org.mlflow:mlflow-client:1.11.0을 입력합니다.
    • 라이브러리 원본 PyPI를 선택하고 패키지 필드에 mlflow를 입력합니다.

이 문서의 내용

MLflow 실행이 로그되는 위치

모든 MLflow 실행은 다음 방법 중 하나를 사용하여 설정할 수 있는 활성 실험에 기록됩니다.

활성 실험이 설정되지 않은 경우 실행은 Notebook 실험에 기록됩니다.

예제 Notebook

이 Notebook은 Notebook 실험과 작업 영역 실험에 대한 실행을 기록하는 방법을 보여 줍니다. Notebook 내에서 시작된 MLflow 실행만 Notebook 실험에 기록할 수 있습니다. 모든 Notebook 또는 API에서 시작된 MLflow 실행은 작업 영역 실험에 기록될 수 있습니다. 기록된 실행 보기에 대한 자세한 내용은 Notebook 실험 보기작업 영역 실험 보기를 참조하세요.

Log MLflow는 Notebook을 실행합니다.

Notebook 가져오기

MLflow Python, Java 또는 Scala 및 R API를 사용하여 실행을 시작하고 실행 데이터를 기록할 수 있습니다. 자세한 내용은 MLflow 빠른 시작 Notebook을 참조하세요.

실험

실험에는 작업 영역과 Notebook의 두 가지 유형이 있습니다.

  • Databricks Machine Learning UI 또는 MLflow API에서 작업 영역 실험을 만들 수 있습니다. 작업 영역 실험은 Notebook과 연결되어 있지 않으며 모든 Notebook은 실험 ID 또는 실험 이름을 사용하여 이러한 실험에 대한 실행을 기록할 수 있습니다.
  • Notebook 실험은 특정 Notebook과 연결되어 있습니다. Azure Databricks는 mlflow.start_run()을 사용하여 실행을 시작할 때 활성 실험이 없는 경우 Notebook 실험을 자동으로 만듭니다.

작업 영역의 모든 실험을 보려면 사이드바에서 Experiments Icon실험을 클릭합니다. 이 아이콘은 기계 학습 페르소나에 있을 때만 나타납니다. 표에서 실험 이름을 클릭하면 실험 페이지가 표시됩니다.

View experiment

실험 페이지에는 실험과 관련된 모든 실행이 나열됩니다. 표에서 시작 시간을 클릭하여 실험과 연결된 모든 실행의 실행 페이지를 열 수 있습니다. 원본 열은 실행을 만든 Notebook 버전에 대한 액세스를 제공합니다. 메트릭 또는 매개 변수 설정별로 실행을 검색하고 필터링할 수도 있습니다.

실험 만들기

작업 영역 실험 만들기

이 섹션에서는 Azure Databricks UI를 사용하여 작업 영역 실험을 만드는 방법을 설명합니다. MLflow API를 사용할 수도 있습니다.

작업 영역 실험에 대한 실행 로깅에 대한 지침은 예제 Notebook를 참조하세요.

  1. 사이드바에서 Workspace Icon작업 영역을 클릭합니다.

  2. 실험을 만들 폴더로 이동합니다.

  3. 다음 중 하나를 수행합니다.

    • 폴더 옆에 있는 텍스트 오른쪽에 있는 Menu Dropdown을 클릭하고 >MLflow 실험 만들기를 선택합니다.

      Create experiment

    • 작업 영역 또는 사용자 폴더에서 Down Caret을 클릭하고 >MLflow 실험 만들기를 선택합니다.

  4. MLflow 실험 만들기 대화 상자에서 실험 이름과 아티팩트 위치(선택 사항)를 입력합니다. 아티팩트 위치를 지정하지 않으면 아티팩트가 dbfs:/databricks/mlflow-tracking/<experiment-id>에 저장됩니다.

    Azure Databricks는 DBFS 및 Azure Blob Storage 아티팩트 위치를 지원합니다.

    Azure Blob Storage에 아티팩트를 저장하려면 wasbs://<container>@<storage-account>.blob.core.windows.net/<path> 형식의 URI를 지정합니다. Azure Blob Storage에 저장된 아티팩트는 MLflow UI에 표시되지 않습니다. Blob Storage 클라이언트를 사용하여 다운로드해야 합니다.

    참고

    DBFS 이외의 위치에 아티팩트를 저장하면 MLflow UI에 아티팩트가 표시되지 않습니다. DBFS 이외의 위치에 저장된 모델은 모델 레지스트리에 등록할 수 없습니다.

  5. 만들기를 클릭합니다. 빈 실험이 나타납니다.

Notebook 실험 만들기

Notebook에서 mlflow.start_run() 명령을 사용하면 실행이 활성 실험에 메트릭과 매개 변수를 기록합니다. 활성 실험이 없으면 Azure Databricks는 Notebook 실험을 만듭니다. Notebook 실험은 해당 Notebook과 동일한 이름 및 ID를 공유합니다. Notebook ID는 Notebook URL 및 ID 끝에 있는 숫자 식별자입니다.

Notebook 실험에 대한 실행 로깅에 대한 지침은 예제 Notebook을 참조하세요.

참고

API(예: Python의 MlflowClient.tracking.delete_experiment())를 사용하여 Notebook 실험을 삭제하면 Notebook 자체가 휴지통 폴더로 이동됩니다.

실험 보기

액세스 권한이 있는 각 실험은 실험 페이지에 표시됩니다. 이 페이지에서 모든 실험을 볼 수 있습니다. 실험 이름을 클릭하면 실험 페이지가 표시됩니다.

실험 페이지에 액세스하는 추가적인 방법:

  • 작업 영역 메뉴에서 작업 영역 실험에 대한 실험 페이지에 액세스할 수 있습니다.
  • Notebook에서 Notebook 실험을 위한 실험 페이지에 액세스할 수 있습니다.

작업 영역 실험 보기

  1. 사이드바에서 Workspace Icon작업 영역을 클릭합니다.
  2. 실험이 포함된 폴더로 이동합니다.
  3. 실험 이름을 클릭합니다.

Notebook 실험 보기

Notebook 도구 모음에서 실험 아이콘 Experiment icon을 클릭합니다.

Notebook toolbar

실험 실행 사이드바가 나타나고 실행 매개 변수 및 메트릭을 포함하여 Notebook 실험과 연결된 각 실행의 요약이 표시됩니다. 사이드바 상단에는 가장 최근에 기록된 Notebook이 실행되는 실험의 이름이 있습니다(Notebook 실험 또는 작업 영역 실험).

View run parameters and metrics

사이드바에서 실험 페이지로 이동하거나 실행으로 직접 이동할 수 있습니다.

  • 실험을 보려면 실험 실행 옆의 맨 오른쪽에 있는 External Link를 클릭합니다.
  • 실행을 표시하려면 실행 날짜 및 시간 옆에 있는 External Link를 클릭합니다.

실험 관리

실험 페이지, 실험 페이지 또는 작업 영역 메뉴에서 소유한 실험에 대한 권한을 이름을 바꾸거나 삭제하거나 관리할 수 있습니다.

실험 페이지 또는 실험 페이지에서 실험 이름 바꾸기

중요

이 기능은 공개 미리 보기 상태입니다.

실험 페이지 또는 실험 페이지에서 실험 이름을 바꾸려면 three button icon을 클릭하고 이름 변경을 선택합니다.

작업 영역 메뉴에서 실험 이름 바꾸기

  1. 사이드바에서 Workspace Icon작업 영역을 클릭합니다.
  2. 실험이 포함된 폴더로 이동합니다.
  3. 실험 오른쪽에 있는 Menu Dropdown을 클릭하고 이름 바꾸기를 선택합니다.

실험 이름 복사

실험 이름을 복사하려면 실험 페이지 상단의 Copy Icon을 클릭합니다. MLflow 명령 set_experiment에서 이 이름을 사용하여 활성 MLflow 실험을 설정할 수 있습니다.

Experiment name icon

Notebook의 실험 사이드바에서 실험 이름을 복사할 수도 있습니다.

Notebook 실험 삭제

Notebook 실험은 Notebook의 일부이며 별도로 삭제할 수 없습니다. Notebook을 삭제하면 연결된 Notebook 실험이 삭제됩니다. API(예: Python의 MlflowClient.tracking.delete_experiment()) 또는 UI를 사용하여 Notebook 실험을 삭제하면 Notebook도 삭제됩니다.

작업 영역 메뉴에서 작업 영역 실험 삭제

  1. 사이드바에서 Workspace Icon작업 영역을 클릭합니다.
  2. 실험이 포함된 폴더로 이동합니다.
  3. 실험 오른쪽에 있는 Menu Dropdown을 클릭하고 휴지통으로 이동을 선택합니다.

실험 페이지 또는 실험 페이지에서 작업 영역 또는 Notebook 실험 삭제

중요

이 기능은 공개 미리 보기 상태입니다.

실험 페이지 또는 실험 페이지에서 실험을 삭제하려면 three button icon을 클릭하고 삭제를 선택합니다.

Notebook 실험을 삭제하면 Notebook도 삭제됩니다.

실험에 대한 사용 권한 변경

실험 페이지에서 실험에 대한 공유를 변경하려면 권한을 클릭합니다.

Experiment page permissions button

실험 페이지에서 소유한 실험에 대한 권한을 변경할 수 있습니다. 작업 열에서 three button icon을 클릭하고 권한을 선택합니다.

실험 권한에 대한 자세한 내용은 MLflow 실험 권한을 참조하세요.

실행

모든 MLflow 실행은 활성 실험에 기록됩니다. 실험을 활성 실험으로 명시적으로 설정하지 않은 경우 실행이 Notebook 실험에 기록됩니다.

실행 보기

부모 실험 페이지 또는 실행을 만든 Notebook에서 직접 실행에 액세스할 수 있습니다.

실험 페이지의 실행 표에서 실행 시작 시간을 클릭합니다.

Notebook에서 실험 실행 사이드바의 실행 날짜 및 시간 옆에 있는 External Link를 클릭합니다.

실행 화면에는 실행에 사용된 매개 변수, 실행으로 인한 메트릭, 모든 태그 또는 메모가 표시됩니다. 이 실행에 대한 참고, 매개 변수, 메트릭 또는 태그를 표시하려면 레이블 왼쪽에 right-pointing arrow를 클릭합니다.

또한 이 화면에서 실행에서 저장된 아티팩트에 액세스할 수 있습니다.

View run

예측을 위한 코드 조각

실행에서 모델을 기록하면 이 페이지의 아티팩트 섹션에 모델이 나타납니다. 모델을 로드하고 사용하여 Spark 및 pandas DataFrames에서 예측하는 방법을 보여 주는 코드 조각을 표시하려면 모델 이름을 클릭합니다.

predict code snippets

실행에 사용된 Notebook 또는 Git 프로젝트 보기

실행을 만든 Notebook 버전을 보려면 다음 단계를 따릅니다.

  • 실험 페이지에서 원본 열의 링크를 클릭합니다.
  • 실행 페이지에서 원본 옆에 있는 링크를 클릭합니다.
  • Notebook의 실험 실행 사이드바에서 해당 실험 실행 상자의 Notebook 아이콘 Notebook Version Icon을 클릭합니다.

실행과 관련된 Notebook 버전이 실행 날짜와 시간을 표시하는 강조 표시줄과 함께 주 창에 나타납니다.

실행이 Git 프로젝트에서 원격으로 시작된 경우 Git Commit 필드의 링크를 클릭하여 실행에 사용된 프로젝트의 특정 버전을 엽니다. 원본 필드의 링크는 실행에 사용된 Git 프로젝트의 기본 분기를 엽니다.

실행에 태그 추가

태그는 나중에 실행을 검색하기 위해 만들고 사용할 수 있는 키-값 쌍입니다.

  1. 실행 페이지에서 아직 열려 있지 않은 경우 Tag icon을 클릭합니다. 태그 테이블이 나타납니다.

    tag table

  2. 이름 필드를 클릭하고 태그의 키와 값을 입력합니다.

  3. 추가를 클릭합니다.

    add tag

실행에 대한 태그 편집 또는 삭제

기존 태그를 편집하거나 삭제하려면 작업 열에 있는 아이콘을 사용합니다.

tag actions

실행의 소프트웨어 환경을 재현

실행 재현을 클릭하여 실행에 대한 정확한 소프트웨어 환경을 재현할 수 있습니다. 다음과 같은 대화 상자가 나타납니다.

Reproduce run dialog

기본 설정에서 확인을 클릭하면:

  • Notebook이 대화 상자에 표시된 위치에 복제됩니다.
  • 원래 클러스터가 여전히 존재하는 경우 복제된 Notebook이 원래 클러스터에 연결되고 클러스터가 시작됩니다.
  • 원래 클러스터가 더 이상 존재하지 않으면 설치된 라이브러리를 포함하여 동일한 구성의 새 클러스터가 만들어지고 시작됩니다. Notebook이 새 클러스터에 연결됩니다.

복제된 Notebook에 대해 다른 위치를 선택하고 클러스터 구성 및 설치된 라이브러리를 검사할 수 있습니다.

  • 복제된 Notebook을 저장할 다른 폴더를 선택하려면 폴더 편집을 클릭합니다.
  • 클러스터 사양을 보려면 사양 보기를 클릭합니다. 클러스터가 아닌 Notebook만 복제하려면 이 옵션을 선택 취소합니다.
  • 원래 클러스터에 설치된 라이브러리를 보려면 라이브러리 보기를 클릭합니다. 원래 클러스터와 동일한 라이브러리를 설치하는 데 신경 쓰지 않는다면 이 옵션을 선택 취소합니다.

실행 관리

실행 이름 바꾸기

런의 이름을 바꾸려면 런 페이지의 오른쪽 상단에 있는 three button icon을 클릭하고 이름 바꾸기를 선택합니다.

필터 실행

매개 변수 또는 메트릭 값을 기반으로 실행을 검색할 수 있습니다. 태그로 실행을 검색할 수도 있습니다.

  • 매개 변수 및 메트릭 값이 포함된 표현식과 일치하는 실행을 쿼리하려면 쿼리 필드에 쿼리를 입력하고 검색을 클릭합니다. 몇 가지 쿼리 구문 예는 다음과 같습니다.

    metrics.r2 > 0.3

    params.elasticNetParam = 0.5

    params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3

  • 태그로 실행을 검색하려면 tags.<key>="<value>" 형식으로 태그를 입력합니다. 문자열 값은 표시된 대로 따옴표로 묶어야 합니다.

    tags.estimator_name="RandomForestRegressor"

    tags.color="blue" AND tags.size=5

    키와 값 모두 공백을 포함할 수 있습니다. 키에 공백이 포함된 경우 그림과 같이 백틱으로 묶어야 합니다.

    tags.`my custom tag` = "my value"
    

또한 상태(활성 또는 삭제됨) 및 모델 버전이 실행과 연결되었는지 여부에 따라 실행을 필터링할 수 있습니다. 이렇게 하려면 검색 상자 오른쪽에 있는 필터를 클릭합니다. 상태연결된 모델 드롭다운 메뉴가 나타납니다. 드롭다운 메뉴에서 선택합니다.

Filter runs

실행 비교

단일 실험 또는 여러 실험에서 실행을 비교할 수 있습니다. 실행 비교 페이지에는 선택한 실행에 대한 정보가 그래픽 및 테이블 형식으로 표시됩니다.

단일 실험에서 실행 비교
  1. 실험 페이지에서 실행 왼쪽의 확인란을 클릭하여 두 개 이상의 실행을 선택하거나 열 맨 위에 있는 확인란을 선택하여 모든 실행을 선택합니다.
  2. 비교를 클릭합니다. 실행 <N> 비교 화면이 표시됩니다.
여러 실험에서 실행 비교
  1. 실험 페이지에서 실험 이름 왼쪽에 있는 상자를 클릭하여 비교할 실험을 선택합니다.
  2. 비교(n)를 클릭합니다(n은 선택한 실험 수). 선택한 실험의 모든 실행을 보여 주는 화면이 나타납니다.
  3. 실행 왼쪽의 확인란을 클릭하여 두 개 이상의 실행을 선택하거나 열 맨 위에 있는 확인란을 선택하여 모든 실행을 선택합니다.
  4. 비교를 클릭합니다. 실행 <N> 비교 화면이 표시됩니다.
실행 비교 페이지 사용

실행 비교 페이지에는 실행 결과 및 실행 정보 테이블, 실행 매개 변수 및 메트릭의 시각화가 표시됩니다.

시각화를 만들려면:

  1. 플롯 형식(병렬 좌표 플롯, 산점도 또는 윤곽선 그림)을 선택합니다.

  2. 병렬 좌표 플롯의 경우 그릴 매개 변수 및 메트릭을 선택합니다. 산점도 또는 윤곽선 그림의 경우 각 축에 표시할 매개 변수 또는 메트릭을 선택합니다.

    compare runs page visualization

매개 변수메트릭 테이블에는 선택한 모든 실행의 실행 매개 변수 및 메트릭이 표시됩니다. 이러한 테이블의 열은 바로 위의 실행 세부 정보 테이블에 의해 식별됩니다. 간단히 하기 위해 Show diff only button를 토글하여 선택한 모든 실행에서 동일한 매개 변수 및 메트릭을 숨길 수 있습니다.

compare runs page tables

다운로드 실행

  1. 하나 이상의 실행을 선택합니다.

  2. CSV 다운로드를 클릭합니다. 다음 필드가 포함된 CSV 파일이 다운로드됩니다.

    Run ID,Name,Source Type,Source Name,User,Status,<parameter1>,<parameter2>,...,<metric1>,<metric2>,...
    

실행 삭제

  1. 실험에서 실행 왼쪽에 있는 확인란을 클릭하여 하나 이상의 실행을 선택합니다.
  2. 삭제를 클릭합니다.
  3. 실행이 부모 실행인 경우 하위 실행도 삭제할지 여부를 결정합니다. 이 옵션은 기본적으로 선택됩니다.
  4. 확인하려면 삭제를 클릭하고 취소하려면 취소를 클릭합니다. 삭제된 실행은 30일 동안 저장됩니다. 삭제된 실행을 표시하려면 상태 필드에서 삭제됨을 선택합니다.

Azure Databricks 외부에서 MLflow 추적 서버에 액세스

예를 들어 MLflow CLI를 사용하여 Azure Databricks 외부에서 추적 서버에 쓰고 읽을 수도 있습니다.

프로그래매틱 방식으로 MLflow 실행 분석

다음 두 DataFrame API를 사용하여 프로그래밍 방식으로 MLflow 실행 데이터에 액세스할 수 있습니다.

  • MLflow Python 클라이언트 search_runs API는 pandas DataFrame을 반환합니다.
  • MLflow 실험 데이터 원본은 Apache Spark DataFrame을 반환합니다.

이 예에서는 MLflow Python 클라이언트를 사용하여 시간 경과에 따른 평가 메트릭의 변경 내용을 시각화하고, 특정 사용자가 시작한 실행 수를 추적하고, 모든 사용자의 총 실행 수를 측정하는 대시보드를 빌드하는 방법을 보여 줍니다.

예제

다음 Notebooks는 MLflow에서 여러 유형의 모델을 학습하고 학습 데이터를 추적하는 방법과 Delta Lake에 추적 데이터를 저장하는 방법을 보여 줍니다.