기계 학습 실험은 모든 관련 기계 학습 실행에 대한 조직 및 제어의 기본 단위입니다. 실행은 모델 코드의 단일 실행에 해당합니다. MLflow에서 추적은 실험과 실행을 기반으로 합니다.
기계 학습 실험을 통해 데이터 과학자는 기계 학습 코드를 실행할 때 매개 변수, 코드 버전, 메트릭 및 출력 파일을 기록할 수 있습니다. 실험을 통해 실행을 시각화, 검색 및 비교할 수 있을 뿐만 아니라 실행 파일 및 다른 도구에서 분석하기 위한 메타데이터를 다운로드할 수도 있습니다.
이 문서에서는 데이터 과학자가 기계 학습 실험과 상호 작용하고 사용하여 개발 프로세스를 구성하고 여러 실행을 추적하는 방법에 대해 자세히 알아봅니다.
필수 조건
- Power BI Premium 구독. 없는 경우 Power BI Premium이란?을 참조하세요.
- 프리미엄 용량이 할당된 Power BI 작업 영역입니다.
실험 만들기
패브릭 UI(사용자 인터페이스)에서 직접 또는 MLflow API를 사용하는 코드를 작성하여 기계 학습 실험을 만들 수 있습니다.
UI를 사용하여 실험 만들기
UI에서 기계 학습 실험을 만들려면:
새 작업 영역을 만들거나 기존 작업 영역을 선택합니다.
작업 영역의 왼쪽 위에서 새 항목을 선택합니다. 데이터 분석 및 학습 아래에서 실험을 선택합니다.
세로 메뉴에서 생성을 선택하세요. ...에서 찾을 수 있습니다.
데이터 과학 아래에서 실험을 선택합니다.
실험의 이름을 입력하고 만들기를 선택합니다. 이 작업은 작업 영역 내에서 빈 실험을 만듭니다.
실험을 만든 후 실행 메트릭 및 매개 변수를 추적하는 실행 추가를 시작할 수 있습니다.
MLflow API를 사용하여 실험 만들기
mlflow.create_experiment()또는 mlflow.set_experiment() API를 사용하여 제작 환경에서 직접 기계 학습 실험을 만들 수도 있습니다. 다음 코드에서 <EXPERIMENT_NAME>을(를) 실험의 이름으로 변경합니다.
import mlflow
# This will create a new experiment with the provided name.
mlflow.create_experiment("<EXPERIMENT_NAME>")
# This will set the given experiment as the active experiment.
# If an experiment with this name does not exist, a new experiment with this name is created.
mlflow.set_experiment("<EXPERIMENT_NAME>")
실험 내에서 실행 관리
기계 학습 실험에는 간소화된 추적 및 비교를 위한 실행 컬렉션이 포함되어 있습니다. 실험 내에서 데이터 과학자는 다양한 실행을 탐색하고 기본 매개 변수 및 메트릭을 탐색할 수 있습니다. 데이터 과학자는 기계 학습 실험 내의 실행을 비교하여 원하는 모델 성능을 생성하는 매개 변수의 하위 집합을 식별할 수도 있습니다.
실험의 실행을 보려면 실험 보기에서 실행 목록을 선택합니다.
실행 목록에서 실행 이름을 선택하여 특정 실행의 세부 정보로 이동할 수 있습니다.
실행 세부 정보 추적
기계 학습 실행은 모델 코드의 단일 실행에 해당합니다. 각 실행에 대해 다음 정보를 추적할 수 있습니다.
각 실행에는 다음 정보가 포함됩니다.
- 원본: 실행을 만든 Notebook의 이름입니다.
- 등록된 버전: 실행이 기계 학습 모델로 저장되었는지를 나타냅니다.
- 시작 날짜: 실행의 시작 시간입니다.
- 상태: 실행 진행률입니다.
- 하이퍼 매개 변수: 키-값 페어링으로 저장된 하이퍼 매개 변수입니다. 키와 값은 모두 문자열입니다.
- 메트릭: 키-값 쌍으로 저장된 실행 메트릭입니다. 값은 숫자입니다.
- 출력 파일: 모든 형식의 파일을 출력합니다. 예를 들어 이미지, 환경, 모델 및 데이터 파일을 기록할 수 있습니다.
- 태그: 러닝과 연결된 키-값 쌍으로서의 메타데이터.
실행 목록 보기
실행 목록 보기에서 실험의 모든 실행을 볼 수 있습니다. 이 보기를 사용하면 최근 활동을 추적하고, 관련 Spark 애플리케이션으로 빠르게 이동하고, 실행 상태에 따라 필터를 적용할 수 있습니다.
실행 목록 보기
실행 목록 보기에서 실험의 모든 실행을 볼 수 있습니다. 이 보기를 사용하면 최근 활동을 추적하고, 관련 Spark 애플리케이션으로 빠르게 이동하고, 실행 상태에 따라 필터를 적용할 수 있습니다.
실행 비교 및 필터링
기계 학습 실행의 품질을 비교하고 평가하려면 실험 내에서 선택한 실행 간에 매개 변수, 메트릭 및 메타데이터를 비교할 수 있습니다.
실행에 태그 적용
실험 실행에 대한 MLflow 태그 지정을 사용하면 사용자가 자신의 실행에 키-값 쌍의 형태로 사용자 지정 메타데이터를 추가할 수 있습니다. 이러한 태그는 특정 특성에 따라 실행을 분류, 필터링 및 검색하는 데 도움이 되므로 MLflow 플랫폼 내에서 실험을 보다 쉽게 관리하고 분석할 수 있습니다. 사용자는 태그를 사용하여 모델 형식, 매개 변수 또는 관련 식별자와 같은 정보를 사용하여 실행에 레이블을 지정하여 실험의 전반적인 조직 및 추적 가능성을 향상시킬 수 있습니다.
이 코드 조각은 MLflow 실행을 시작하고, 일부 매개 변수 및 메트릭을 기록하며, 태그를 추가하여 실행을 분류하고 추가 컨텍스트를 제공합니다.
import mlflow
import mlflow.sklearn
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.datasets import fetch_california_housing
# Autologging
mlflow.autolog()
# Load the California housing dataset
data = fetch_california_housing(as_frame=True)
X = data.data
y = data.target
# Split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Start an MLflow run
with mlflow.start_run() as run:
# Train the model
model = LinearRegression()
model.fit(X_train, y_train)
# Predict and evaluate
y_pred = model.predict(X_test)
# Add tags
mlflow.set_tag("model_type", "Linear Regression")
mlflow.set_tag("dataset", "California Housing")
mlflow.set_tag("developer", "Bob")
태그가 적용되면 인라인 MLflow 위젯 또는 실행 세부 정보 페이지에서 직접 결과를 볼 수 있습니다.
경고
경고: 패브릭에서 MLflow 실험 실행에 태그 적용에 대한 제한 사항
- 비어있지 않은 태그: 태그 이름 또는 값은 비워 둘 수 없습니다. 빈 이름 또는 값이 있는 태그를 적용하려고 하면 작업이 실패합니다.
- 태그 이름: 태그 이름은 최대 250자까지 가능합니다.
- 태그 값: 태그 값의 길이는 최대 5,000자까지 가능합니다.
-
제한된 태그 이름: 특정 접두사로 시작하는 태그 이름은 지원되지 않습니다. 특히
synapseml,mlflow, 또는trident로 시작하는 태그 이름은 제한되어 있으며 허용되지 않습니다.
실행을 시각적으로 비교하기
기존 실험 내에서 실행을 시각적으로 비교하고 필터링할 수 있습니다. 시각적 비교를 사용하면 여러 실행 간에 쉽게 탐색하고 여러 실행 간에 정렬할 수 있습니다.
실행을 비교하는 방법:
- 여러 실행이 포함된 기존 기계 학습 실험을 선택합니다.
- 보기 탭을 선택한 다음 실행 목록 보기로 이동합니다. 또는 실행 세부 정보 보기에서 직접 실행 목록을 보는 옵션을 선택할 수 있습니다.
- 열 사용자 지정 창을 확장하여 테이블 내의 열을 사용자 지정합니다. 여기에서 보려는 속성, 메트릭, 태그 및 하이퍼 매개 변수를 선택할 수 있습니다.
- 필터 창을 확장하여 선택한 특정 조건에 따라 결과의 범위를 좁힐 수 있습니다.
- 메트릭 비교 창에서 결과를 비교하려면 여러 실행을 선택합니다. 이 창에서 차트 제목, 시각화 유형, X축, Y축 등을 변경하여 차트를 사용자 지정할 수 있습니다.
MLflow API를 사용하여 실행 비교
데이터 과학자는 MLflow를 사용하여 실험 내 실행하는 사이에 쿼리 및 검색할 수도 있습니다. MLflow 설명서를 참조하여 실행을 검색, 필터링 및 비교하기 위해 더 많은 MLflow API를 탐색할 수 있습니다.
모든 실행 가져오기
다음 코드에서 mlflow.search_runs()을(를) 실험 이름으로 바꾸거나 <EXPERIMENT_NAME>을(를) 실험 ID로 바꿔서 MLflow 검색 API <EXPERIMENT_ID>을(를) 사용하여 실험의 모든 실행을 가져올 수 있습니다.
import mlflow
# Get runs by experiment name:
mlflow.search_runs(experiment_names=["<EXPERIMENT_NAME>"])
# Get runs by experiment ID:
mlflow.search_runs(experiment_ids=["<EXPERIMENT_ID>"])
팁
experiment_ids 매개 변수에 실험 ID 목록을 제공하여 여러 실험에서 검색할 수 있습니다. 마찬가지로 experiment_names 매개 변수에 실험 이름 목록을 제공하면 MLflow가 여러 실험에서 검색할 수 있습니다. 이는 여러 실험 내의 실행 간에 비교하려는 경우에 유용할 수 있습니다.
실행 순서 및 제한
반환되는 실행 수를 제한하려면 max_results의 search_runs 매개 변수를 사용합니다.
order_by 매개 변수를 사용하면 순서에 따라 열을 나열할 수 있으며 선택적 DESC 또는 ASC 값을 포함할 수 있습니다. 예를 들어 다음 예에서는 실험의 마지막 실행을 반환합니다.
mlflow.search_runs(experiment_ids=[ "1234-5678-90AB-CDEFG" ], max_results=1, order_by=["start_time DESC"])
Fabric Notebook 내에서 실행을 비교하기
Fabric Notebook 내에서 MLFlow 작성 위젯을 사용하여 각 Notebook 셀 내에서 생성된 MLflow 실행을 추적할 수 있습니다. 위젯을 사용하면 실행, 관련 메트릭, 매개 변수 및 속성을 개별 셀 수준까지 바로 추적할 수 있습니다.
시각적 비교를 얻으려면 실행 비교 보기로 전환할 수도 있습니다. 이 보기는 데이터를 그래픽으로 표시하여 여러 실행에서 패턴 또는 편차를 빠르게 식별할 수 있습니다.
기계 학습 모델로 실행 저장
실행에서 원하는 결과가 생성되면 ML 모델로 저장을 선택하여 향상된 모델 추적 및 모델 배포를 위한 모델로 실행을 저장할 수 있습니다.
ML 실험 모니터링(미리 보기)
ML 실험은 모니터에 직접 통합됩니다. 이 기능은 Spark 애플리케이션 및 생성되는 ML 실험에 대한 더 많은 인사이트를 제공하도록 설계되어 이러한 프로세스를 보다 쉽게 관리하고 디버그할 수 있습니다.
모니터에서의 실행 확인
사용자는 모니터에서 직접 실험 실행을 추적하여 모든 활동에 대한 통합 보기를 제공할 수 있습니다. 이 통합에는 필터링 옵션이 포함되며, 사용자가 지난 30일 또는 기타 지정된 기간 내에 생성된 실험 또는 실행에 집중할 수 있습니다.
Spark 애플리케이션에서 관련 ML 실험 실행 추적
ML 실험은 모니터에 직접 통합되어 특정 Spark 애플리케이션을 선택하고 항목 스냅샷에 액세스할 수 있습니다. 여기서는 해당 애플리케이션에서 생성된 모든 실험 및 실행 목록을 찾을 수 있습니다.