다음을 통해 공유


MLflow를 사용하여 모델 개발 추적

MLflow 추적을 사용하면 기계 학습 또는 딥 러닝 모델 학습과 관련된 노트북 및 학습 데이터 세트, 매개 변수, 메트릭, 태그, 그리고 아티팩트를 기록할 수 있습니다. MLflow를 시작하기 위한 예제 노트북은 자습서: Azure Databricks에서의 엔드 투 엔드 전통적 ML 모델을 참조하십시오.

MLflow에서 실험과 실행을 통한 추적

모델 개발 프로세스는 반복적이며 모델을 개발하고 최적화할 때 작업을 추적하기가 어려울 수 있습니다. Azure Databricks에서 MLflow 추적 을 사용하여 시도한 매개 변수 설정 또는 조합 및 모델 성능에 미치는 영향을 포함하여 모델 개발 프로세스를 추적할 수 있습니다.

MLflow 추적은 실험실행을 사용하여 ML 및 딥 러닝 모델 개발을 기록하고 추적합니다. 실행은 모델 코드의 단일 실행입니다. MLflow를 실행하는 동안 모델 매개 변수 및 결과를 기록할 수 있습니다. 실험은 관련 실행의 컬렉션입니다. 실험에서 실행을 비교하고 필터링하여 모델의 성능이 매개 변수 설정, 입력 데이터 등에 따라 어떻게 달라지는지 이해할 수 있습니다.

비고

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

MLflow 추적 API

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

MLflow는 Databricks Runtime ML 클러스터에 미리 설치됩니다. Databricks 런타임 클러스터에서 MLflow를 사용하려면 라이브러리를 mlflow 설치해야 합니다. 클러스터에 라이브러리를 설치하는 방법에 대한 지침은 클러스터 에 라이브러리 설치를 참조하세요.

MLflow 실행이 기록되는 위치

모든 MLflow 실행은 활성 실험에 기록되며 다음 방법 중 원하는 방법으로 설정할 수 있습니다.

활성 실험이 설정되지 않으면 실행 기록이 노트북 실험에 저장됩니다.

실험을 실행 중인 작업 영역 이외의 작업 영역에서 원격으로 호스트된 MLflow 추적 서버에 실험 결과를 기록하려면 추적 URI를 설정하여 원격 작업 영역을 참조하고 원격 작업 영역에서 mlflow.set_tracking_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_HOSTDATABRICKS_TOKEN 참조하세요.

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


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")

로그 실행을 실험에 기록

MLflow는 많은 기계 학습 및 딥 러닝 프레임워크로 작성된 학습 코드를 자동으로 기록할 수 있습니다. MLflow 추적을 시작하기에 가장 쉬운 방법입니다. 예제 노트북을 참조하세요.

기록되는 매개 변수 및 메트릭을 더 자세히 제어하거나 CSV 파일 또는 플롯과 같은 추가 아티팩트를 기록하려면 MLflow 로깅 API를 사용합니다. 예제 노트북을 참조하세요.

자동 로깅을 사용하여 모델 개발 추적

이 예제 Notebook에서는 scikit-learn자동 로깅을 사용하는 방법을 보여 줍니다. 다른 Python 라이브러리를 사용한 자동 로깅에 대한 자세한 내용은 MLflow 자동 로깅 설명서참조하세요.

MLflow 자동 로깅 Python Notebook

노트북 받기

로깅 API를 사용하여 모델 개발 추적

이 예제 Notebook에서는 Python 로깅 API사용하는 방법을 보여 줍니다. MLflow에는 REST, R 및 Java API있습니다.

MLflow 로깅 API 파이썬 노트북

노트북 받기

작업 공간 실험에 로그 기록하기

기본적으로 Databricks 노트북에서 모델을 학습하면 실행이 노트북 실험에 기록됩니다. Notebook 내에서 시작된 MLflow 실행만 Notebook 실험에 기록할 수 있습니다.

모든 Notebook 또는 API에서 시작된 MLflow 실행은 작업 영역 실험에 기록할 수 있습니다. 노트북이나 API 호출에서 작업 영역 실험에 실행을 기록하려면 다음과 유사한 코드를 사용하세요.

experiment_name = "/Shared/name_of_experiment/"
mlflow.set_experiment(experiment_name)

작업 영역 실험을 만드는 방법에 대한 지침은 작업 영역 실험 만들기참조하세요. 기록된 실행을 보는 방법에 대한 자세한 내용은 Notebook 실험 보기작업 영역 실험 보기를 참조하세요.

프로그래밍 방식으로 MLflow 실행 기록 분석

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

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

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

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

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

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

MLflow 추적 예제

다음 노트북에서는 MLflow를 사용하여 모델의 개발을 추적하는 방법을 보여 줍니다.