ML 및 딥 러닝 학습 실행 추적

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

실험 및 실행을 사용한 MLflow 추적

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

참고 항목

2024년 3월 27일부터 MLflow는 모든 기존 및 새 실행에 대한 총 매개 변수, 태그 및 메트릭 단계 수와 모든 기존 및 새 실험에 대한 총 실행 수에 할당량 제한을 적용합니다. 리소스 제한을 참조 하세요. 실험 할당량당 실행에 도달한 경우 Databricks는 더 이상 Python에서 삭제 실행 API를 사용할 필요가 없는 실행을 삭제하는 것이 좋습니다. 다른 할당량 한도에 도달하면 Databricks는 로깅 전략을 조정하여 제한을 유지하는 것이 좋습니다. 이 제한을 늘려야 하는 경우 사용 사례, 제안된 완화 방법이 작동하지 않는 이유 및 요청하는 새 제한에 대해 간략하게 설명하여 Databricks 계정 팀에 문의하세요.

  • MLflow 실험은 MLflow 실행을 위한 액세스 제어 및 조직의 기본 단위입니다. 모든 MLflow 실행은 실험에 속합니다. 실험을 통해 실행을 시각화, 검색 및 비교할 수 있을 뿐만 아니라 실행 아티팩트 및 다른 도구에서 분석하기 위한 메타데이터를 다운로드할 수 있습니다.

  • MLflow 실행은 모델 코드의 단일 실행에 해당합니다.

  • MLflow 실험을 사용하여 학습 실행 구성

  • MLflow 실행을 사용하여 학습 코드 관리

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

참고 항목

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 실험에 기록됩니다.

실험을 실행 중인 작업 영역이 아닌 다른 작업 영역에서 원격으로 호스트된 MLflow 추적 서버에 실험 결과를 기록하려면 mlflow.set_tracking_uri()를 사용하여 원격 작업 공간을 참조하도록 추적 URI를 설정하고 mlflow.set_experiment()를 사용하여 원격 작업 공간에서 실험 경로를 설정합니다.

mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")

실험을 로컬로 실행하고 실험 결과를 Databricks MLflow 추적 서버에 기록하려면 Databricks 작업 영역 인스턴스() 및 Databricks 개인용 액세스 토큰(DATABRICKS_HOSTDATABRICKS_TOKEN)을 제공합니다. 다음으로, 추적 URI를 설정하여 작업 영역을 mlflow.set_tracking_uri()참조하고 , 를 사용하여 mlflow.set_experiment()실험 경로를 설정할 수 있습니다. 및 환경 변수에 대한 값을 찾을 수 있는 위치에 대한 자세한 내용은 Azure Databricks 개인용 액세스 토큰 인증 수행을 DATABRICKS_TOKENDATABRICKS_HOST 참조하세요.

다음 코드 예제에서는 이러한 값을 설정하는 방법을 보여 줍니다.


os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"

mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")

로깅 예제 Notebook

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

Log MLflow는 Notebook을 실행합니다.

전자 필기장 가져오기

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

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

예를 들어 MLflow CLI를 사용하여 Azure Databricks 외부에서 추적 서버에 쓰고 읽을 수도 있습니다. Azure Databricks 외부에서 MLflow 추적 서버에 액세스하는 것을 참조 하세요.

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

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

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

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

모델 학습 메트릭 및 출력이 다를 수 있는 이유

ML에 사용되는 대부분의 알고리즘에는 알고리즘 자체 내에서 샘플링 또는 임의 초기 조건과 같은 임의 요소가 있습니다. 이러한 알고리즘 중 하나를 사용하여 모델을 학습하는 경우 동일한 조건으로 실행을 시작하더라도 각 실행에서 결과가 동일하지 않을 수 있습니다. 많은 라이브러리는 이러한 확률적 요소에 대한 초기 조건을 수정하는 시드 메커니즘을 제공합니다. 그러나, 씨앗에 의해 제어 되지 않는 변이의 다른 소스 있을 수 있습니다. 일부 알고리즘은 데이터의 순서에 민감하며 분산된 ML 알고리즘은 데이터가 분할되는 방식의 영향을 받을 수도 있습니다. 일반적으로 이러한 변형은 중요하지 않으며 모델 개발 프로세스에서 중요하지 않습니다.

순서 및 분할의 차이로 인한 변형을 제어하려면 PySpark 함수 를 다시 분할 하고 sortWithinPartitions를 사용합니다.

MLflow 추적 예제

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