다음을 통해 공유


MLflow를 사용하여 실험 및 모델 추적

추적 은 실험에 대한 관련 정보를 저장하는 프로세스입니다. 이 문서에서는 Azure Machine Learning 작업 영역에서 실험 및 실행을 추적하기 위해 MLflow를 사용하는 방법을 알아봅니다.

Azure Machine Learning에 연결된 경우 MLflow API에서 사용할 수 있는 일부 메서드를 사용하지 못할 수 있습니다. 지원되는 작업과 지원되지 않는 작업에 대한 자세한 내용은 실행 및 실험 쿼리 지원 매트릭스를 참조하세요. MLflow 및 Azure Machine Learning 문서에서 Azure Machine Learning에서 지원되는 MLflow 기능에 대해 알아볼 수도 있습니다.

참고 항목

필수 조건

  • 무료 또는 유료 버전의 Azure Machine Learning을 사용하여 Azure 구독을 갖습니다.

  • Azure CLI 및 Python 명령을 실행하려면 Python용 Azure CLI v2Azure Machine Learning SDK v2를 설치합니다. ml Azure Machine Learning CLI 명령을 처음 실행할 때 Azure CLI에 대한 확장이 자동으로 설치됩니다.

  • 다음과 같이 MLflow SDK mlflow 패키지 및 MLflow용 Azure Machine Learning azureml-mlflow 플러그 인을 설치합니다.

    pip install mlflow azureml-mlflow
    

    SQL 스토리지, 서버, UI 또는 데이터 과학 종속성이 없는 경량 MLflow 패키지인 mlflow-skinny 패키지를 사용할 수 있습니다. 이 패키지는 배포를 비롯한 전체 기능 제품군을 가져오지 않고 MLflow 추적 및 로깅 기능이 주로 필요한 사용자에게 권장됩니다.

  • Azure Machine Learning 작업 영역을 만듭니다. 작업 영역을 만들려면 시작해야 하는 리소스 만들기를 참조하세요. 작업 영역에서 MLflow 작업을 수행하는 데 필요한 액세스 권한을 검토합니다.

  • 원격 추적을 수행하거나 Azure Machine Learning 외부에서 실행되는 실험을 추적하려면 Azure Machine Learning 작업 영역의 추적 URI를 가리키도록 MLflow를 구성합니다. MLflow를 작업 영역에 연결하는 방법에 대한 자세한 내용은 Azure Machine Learning에 대한 MLflow 구성을 참조하세요.

실험을 구성합니다.

MLflow는 실험 및 실행에서 정보를 구성합니다. 실행은 Azure Machine Learning에서 작업이라고 합니다. 기본적으로 Default라는 자동으로 생성된 실험에 대한 로그를 실행하지만 추적할 실험을 구성할 수 있습니다.

Jupyter Notebook과 같은 대화형 학습의 경우 MLflow 명령 mlflow.set_experiment()를 사용합니다. 예를 들어, 다음 코드 조각은 실험을 구성합니다.

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

실행 구성

Azure Machine Learning은 MLflow 호출이 실행되는 학습 작업을 추적합니다. 실행을 사용하여 작업이 수행하는 모든 처리를 캡처합니다.

대화형으로 작업하는 경우 MLflow는 활성 실행이 필요한 정보를 기록하는 즉시 학습 루틴 추적을 시작합니다. 예를 들어 Mlflow의 자동 로깅 기능을 사용하도록 설정하면 메트릭 또는 매개 변수를 기록하거나 학습 주기를 시작할 때 MLflow 추적이 시작됩니다.

그러나 특히 기간 필드에서 실험의 총 시간을 캡처하려는 경우 실행을 명시적으로 시작하는 것이 좋습니다. 실행을 명시적으로 시작하려면 mlflow.start_run()을 사용합니다.

수동으로 실행을 시작하는지 여부에 관계없이 MLflow가 실험 실행이 완료되었음을 인식하고 실행 상태를 완료됨으로 표시할 수 있도록 결국 실행을 중지해야 합니다. 실행을 중지하려면 mlflow.end_run()을 사용합니다.

다음 코드는 수동으로 실행을 시작하고 Notebook의 끝에서 종료합니다.

mlflow.start_run()

# Your code

mlflow.end_run()

실행을 수동으로 시작하는 것이 가장 낫기 때문에 실행을 종료하는 것을 잊지 마세요. 컨텍스트 관리자 패러다임을 사용하여 실행을 종료하는 것을 기억할 수 있습니다.

with mlflow.start_run() as run:
    # Your code

새 실행을 mlflow.start_run()시작할 때 나중에 Azure Machine Learning 사용자 인터페이스에서 실행 이름으로 변환되는 매개 변수를 지정 run_name 하는 것이 유용할 수 있습니다. 이 연습은 실행을 보다 신속하게 식별하는 데 도움이 됩니다.

with mlflow.start_run(run_name="hello-world-example") as run:
    # Your code

MLflow 자동 로깅 사용

MLflow를 사용하여 메트릭, 매개 변수 및 파일을 수동으로 기록할 수 있으며 MLflow 의 자동 로깅 기능을 사용할 수도 있습니다. MLflow에서 지원하는 각 기계 학습 프레임워크는 자동으로 추적할 항목을 결정합니다.

자동 로깅을 사용하도록 설정하려면 학습 코드 앞에 다음 코드를 삽입합니다.

mlflow.autolog()

작업 영역에서 메트릭 및 아티팩트 보기

MLflow 로깅의 메트릭과 아티팩트는 작업 영역에 추적됩니다. Azure Machine Learning 스튜디오 보고 액세스하거나 MLflow SDK를 통해 프로그래밍 방식으로 액세스할 수 있습니다.

스튜디오에서 메트릭 및 아티팩트를 보려면 다음 안내를 따릅니다.

  1. 작업 영역의 작업 페이지에서 실험 이름을 선택합니다.

  2. 실험 세부 정보 페이지에서 메트릭 탭을 선택합니다.

  3. 기록된 메트릭을 선택하여 오른쪽에 차트를 렌더링합니다. 부드러운 색을 적용하거나, 색을 변경하거나, 단일 그래프에 여러 메트릭을 표시하여 차트를 사용자 지정할 수 있습니다. 레이아웃의 크기를 조정하고 다시 정렬할 수도 있습니다.

  4. 원하는 보기를 만든 후에는 나중에 사용하기 위해 저장하고 직접 링크를 사용하여 팀원과 공유합니다.

    메트릭 목록과 메트릭에서 만든 차트를 보여 주는 메트릭 보기의 스크린샷.

MLflow SDK를 통해 프로그래밍 방식으로 메트릭, 매개 변수 및 아티팩트에 액세스하거나 쿼리하려면 mlflow.get_run()를 사용합니다.

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

앞의 예제에서는 지정된 메트릭의 마지막 값만 반환합니다. 지정된 메트릭의 모든 값을 검색하려면 메서드를 mlflow.get_metric_history 사용합니다. 메트릭 값을 검색하는 방법에 대한 자세한 내용은 실행에서 매개 변수 및 메트릭 가져오기를 참조하세요.

파일 및 모델과 같이 기록한 아티팩트 다운로드하려면 mlflow.artifacts.download_artifacts()를 사용합니다.

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

MLflow를 사용하여 Azure Machine Learning에서 실험 및 실행에서 정보를 검색하거나 비교하는 방법에 대한 자세한 내용은 MLflow를 사용하여 실험 및 실행 쿼리 및 비교를 참조하세요.