중요합니다
MLflow 시스템 테이블은 공개 미리 보기로 제공됩니다.
시스템 테이블은 mlflowMLflow 추적 서비스 내에서 관리되는 실험 메타데이터를 캡처합니다. 이러한 테이블을 사용하면 권한 있는 사용자가 지역 내의 모든 작업 영역에서 MLflow 데이터에 대한 Databricks Lakehouse 도구를 활용할 수 있습니다. 테이블을 사용하여 사용자 지정 AI/BI 대시보드를 빌드하거나, SQL 경고를 설정하거나, 대규모 분석 쿼리를 수행할 수 있습니다.
mlflow 사용자는 시스템 테이블을 통해 다음과 같은 질문에 대답할 수 있습니다.
- 안정성이 가장 낮은 실험은 무엇입니까?
- 다양한 실험의 평균 GPU 사용률은 무엇인가요?
비고
시스템 테이블은 mlflow 2025년 9월 2일에 모든 지역의 MLflow 데이터를 기록하기 시작했습니다. 해당 날짜 이전의 데이터를 사용할 수 없습니다.
사용 가능한 테이블
스키마에는 mlflow 다음 테이블이 포함됩니다.
-
system.mlflow.experiments_latest: 실험 이름 및 일시 삭제 이벤트를 기록합니다. 이 데이터는 MLflow UI의 실험 페이지와 비슷합니다. -
system.mlflow.runs_latest: 실행 수명 주기 정보, 각 실행과 연결된 매개 변수 및 태그, 모든 메트릭의 최소, 최대 및 최신 값의 집계된 통계를 기록합니다. 이 데이터는 실행 검색 또는 실행 세부 정보 페이지와 유사합니다. -
system.mlflow.run_metrics_history: 실행에 로그온한 모든 메트릭의 이름, 값, 타임스탬프 및 단계를 기록하며, 실행에서 자세한 타임스탬프를 그리는 데 사용할 수 있습니다. 이 데이터는 실행 세부 정보 페이지의 메트릭 탭과 유사합니다.
다음은 대시보드를 사용하여 실행 정보를 그리는 예제입니다.
테이블 스키마
다음은 설명 및 예제 데이터가 있는 테이블 스키마입니다.
system.mlflow.experiments_latest
| 열 이름 | 데이터 형식 | Description | Example | 널러블 |
|---|---|---|---|---|
account_id |
문자열 | MLflow 실험을 포함하는 계정의 ID | "bd59efba-4444-4444-443f-44444449203" |
아니오 |
update_time |
시간표시 | 실험이 마지막으로 업데이트된 시스템 시간 | 2024-06-27T00:58:57.000+00:00 |
아니오 |
delete_time |
시간표시 | 사용자가 MLflow 실험을 일시 삭제한 시스템 시간 | 2024-07-02T12:42:59.000+00:00 |
Yes |
experiment_id |
문자열 | MLflow 실험의 ID | "2667956459304720" |
아니오 |
workspace_id |
문자열 | MLflow 실험을 포함하는 작업 영역의 ID | "6051921418418893" |
아니오 |
name |
문자열 | 사용자가 제공한 실험 이름 | "/Users/first.last@databricks.com/myexperiment" |
아니오 |
create_time |
시간표시 | 실험을 만든 시스템 시간 | 2024-06-27T00:58:57.000+00:00 |
아니오 |
system.mlflow.runs_latest
| 열 이름 | 데이터 형식 | Description | Example | 널러블 |
|---|---|---|---|---|
account_id |
문자열 | MLflow 실행을 포함하는 계정의 ID입니다. | "bd59efba-4444-4444-443f-44444449203" |
아니오 |
update_time |
시간표시 | 실행이 마지막으로 업데이트된 시스템 시간 | 2024-06-27T00:58:57.000+00:00 |
아니오 |
delete_time |
시간표시 | 사용자가 MLflow 실행을 일시 삭제한 시스템 시간 | 2024-07-02T12:42:59.000+00:00 |
Yes |
workspace_id |
문자열 | MLflow 실행을 포함하는 작업 영역의 ID입니다. | "6051921418418893" |
아니오 |
run_id |
문자열 | MLflow 실행의 ID | "7716d750d279487c95f64a75bff2ad56" |
아니오 |
experiment_id |
문자열 | MLflow 실행을 포함하는 MLflow 실험의 ID | "2667956459304720" |
아니오 |
created_by |
문자열 | MLflow 실행을 만든 Databricks 보안 주체 또는 사용자의 이름 | "<user>@<domain-name>" |
Yes |
start_time |
시간표시 | MLflow 실행이 시작된 사용자 지정 시간입니다. | 2024-06-27T00:58:57.000+00:00 |
아니오 |
end_time |
시간표시 | MLflow 실행이 종료된 사용자 지정 시간입니다. | 2024-07-02T12:42:59.000+00:00 |
Yes |
run_name |
문자열 | MLflow 실행의 이름 |
"wistful-deer-932", "my-xgboost-training-run" |
아니오 |
status |
문자열 | MLflow 실행의 실행 상태입니다. | "FINISHED" |
아니오 |
params |
map<문자열, 문자열> | MLflow 실행의 키-값 매개 변수 | {"n_layers": "5", "batch_size": "64", "optimizer": "Adam"} |
아니오 |
tags |
map<문자열, 문자열> | MLflow 실행에 설정된 키-값 태그 | {"ready_for_review": "true"} |
아니오 |
aggregated_metrics |
list<구조체<문자열, double, double, double>> | run_metrics_history 메트릭을 요약하는 집계된 뷰 | [{"metric_name": "training_accuracy", "latest_value": 0.97, "min_value": 0.8, "max_value": 1.0}, ...] |
아니오 |
aggregated_metrics.metric_name |
문자열 | 사용자가 지정한 메트릭 이름 | "training_accuracy" |
아니오 |
aggregated_metrics.latest_value |
더블 | run_metrics_history 이 (실행, metric_name) 조합의 시계열에 있는 metric_name 최신 값입니다. | 0.97 |
아니오 |
aggregated_metrics.max_value |
더블 | run_metrics_history 이 (실행, metric_name) 조합의 시계열에 있는 metric_name 최대값입니다. 메트릭에 대해 기록된 NaN 값이 있으면 값은 NaN이 됩니다. | 1.0 |
아니오 |
aggregated_metrics.min_value |
더블 | run_metrics_history 이 (실행, metric_name) 조합의 시계열에 있는 metric_name 최소값입니다. 메트릭에 대해 기록된 NaN 값이 있으면 값은 NaN이 됩니다. | 0.8 |
아니오 |
system.mlflow.run_metrics_history
| 열 이름 | 데이터 형식 | Description | Example | 널러블 |
|---|---|---|---|---|
account_id |
문자열 | 메트릭이 기록된 MLflow 실행을 포함하는 계정의 ID입니다. | "bd59efba-4444-4444-443f-44444449203" |
아니오 |
insert_time |
시간표시 | 메트릭이 삽입된 시스템 시간 | 2024-06-27T00:58:57.000+00:00 |
아니오 |
record_id |
문자열 | 동일한 값을 구분하는 메트릭의 고유 식별자입니다. | "Ae1mDT5gFMSUwb+UUTuXMQ==" |
아니오 |
workspace_id |
문자열 | 메트릭이 기록된 MLflow 실행을 포함하는 작업 영역의 ID입니다. | "6051921418418893" |
아니오 |
experiment_id |
문자열 | 메트릭이 기록된 MLflow 실행을 포함하는 MLflow 실험의 ID입니다. | "2667956459304720" |
아니오 |
run_id |
문자열 | 메트릭이 기록된 MLflow 실행의 ID입니다. | "7716d750d279487c95f64a75bff2ad56" |
아니오 |
metric_name |
문자열 | 메트릭 이름 | "training_accuracy" |
아니오 |
metric_time |
시간표시 | 메트릭이 계산된 사용자 지정 시간입니다. | 2024-06-27T00:55:54.1231+00:00 |
아니오 |
metric_step |
빅인트 (bigint) | 메트릭이 기록된 모델 학습 또는 에이전트 개발의 단계(예: epoch) | 10 |
아니오 |
metric_value |
더블 | 메트릭 값 | 0.97 |
아니오 |
사용자와 액세스 공유
기본적으로 계정 관리자만 시스템 스키마에 액세스할 수 있습니다. 추가 사용자에게 테이블에 대한 액세스 권한을 부여하려면 계정 관리자가 스키마에 대한 SELECT USE 및 system.mlflow. 권한을 부여해야 합니다.
Unity 카탈로그 권한 및 보안 개체을 참조하세요.
이러한 테이블에 액세스할 수 있는 모든 사용자는 계정의 모든 작업 영역에 대한 모든 MLflow 실험에서 메타데이터를 볼 수 있습니다. 개별 사용자가 아닌 지정된 그룹에 대한 테이블 액세스를 구성하려면 Unity 카탈로그 모범 사례를 참조하세요.
모든 사용자에게 테이블에 대한 액세스 권한을 부여하는 것보다 세분화된 제어가 필요한 경우 사용자 지정 기준이 있는 동적 보기를 사용하여 그룹에 특정 액세스 권한을 부여할 수 있습니다. 예를 들어 특정 실험 ID 집합의 레코드만 표시하는 뷰를 만들 수 있습니다. 사용자 지정 보기를 구성한 후 사용자에게 보기 이름을 지정하여 시스템 테이블이 아닌 동적 보기를 직접 쿼리할 수 있도록 합니다.
비고
MLflow 실험 권한을Unity 카탈로그 사용 권한과 직접 동기화할 수 없습니다.
MLflow 메타데이터의 예제 사용 사례
다음 섹션에서는 MLflow 시스템 테이블을 사용하여 MLflow 실험 및 실행에 대한 질문에 답변하는 방법에 대한 예제를 제공합니다.
낮은 실험 안정성에 대한 SQL 경고 구성
Databricks SQL 경고(공개 미리 보기)를 사용하여 정기적으로 되풀이되는 쿼리를 예약하고 특정 제약 조건이 더 이상 충족되지 않는 경우 알림을 받을 수 있습니다.
이 예제에서는 작업 영역 내에서 가장 자주 실행되는 실험을 검사하여 안정성이 낮고 특별한 주의가 필요한지 여부를 확인하는 경고를 만듭니다. 쿼리는 테이블을 사용하여 runs_latest 완료된 것으로 표시된 실험당 실행을 총 실행 수로 나눈 값으로 계산합니다.
비고
SQL 경고 기능은 현재 공개 미리 보기로 제공되며 레거시 경고 도 사용할 수 있습니다.
사이드바에서
경고를 클릭하고 경고 만들기를 클릭합니다.쿼리 편집기에서 다음 쿼리를 복사하여 붙여넣습니다.
SELECT experiment_id, AVG(CASE WHEN status = 'FINISHED' THEN 1.0 ELSE 0.0 END) AS success_ratio, COUNT(status) AS run_count FROM system.mlflow.runs_latest WHERE status IS NOT NULL GROUP BY experiment_id ORDER BY run_count DESC LIMIT 20;조건 필드에서 조건을
MIN success_ratio < 0.9.로 설정합니다. 이렇게 하면 상위 20개 실험(실행 수 기준) 중 성공률이 90개 미만인 경우%경고가 트리거됩니다.
또한 조건을 테스트하고, 일정을 설정하고, 알림을 구성할 수 있습니다. 경고 구성에 대한 자세한 내용은 SQL 경고 설정을 참조하세요. 다음은 쿼리를 사용하는 예제 구성입니다.
샘플 쿼리
다음 샘플 쿼리를 사용하여 Databricks SQL을 사용하여 계정에서 MLflow 활동에 대한 정보를 가져올 수 있습니다. Spark를 사용하여 Python Notebook과 같은 도구를 활용할 수도 있습니다.
에서 실행 정보 가져오기 runs_latest
SELECT
run_name,
date(start_time) AS start_date,
status,
TIMESTAMPDIFF(MINUTE, start_time, end_time) AS run_length_minutes
FROM system.mlflow.runs_latest
WHERE
experiment_id = :experiment_id
AND run_id = :run_id
LIMIT 1
그러면 지정된 실행에 대한 정보가 반환됩니다.
다음에서 experiments_latest 실험 및 실행 정보 가져오기 runs_latest
SELECT
runs.run_name,
experiments.name,
date(runs.start_time) AS start_date,
runs.status,
TIMESTAMPDIFF(MINUTE, runs.start_time, runs.end_time) AS run_length_minutes
FROM system.mlflow.runs_latest runs
JOIN system.mlflow.experiments_latest experiments ON runs.experiment_id = experiments.experiment_id
WHERE
runs.experiment_id = :experiment_id
AND runs.run_id = :run_id
LIMIT 1
에서 지정된 실행에 대한 요약 통계를 가져옵니다. run_metrics_history
SELECT
metric_name,
count(metric_time) AS num_data_points,
ROUND(avg(metric_value), 1) AS avg,
ROUND(max(metric_value), 1) AS max,
ROUND(min(metric_value), 1) AS min,
ROUND(PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY metric_value), 1) AS pct_25,
ROUND(PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY metric_value), 1) AS median,
ROUND(PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY metric_value), 1) AS pct_75
FROM
system.mlflow.run_metrics_history
WHERE
run_id = :run_id
GROUP BY
metric_name, run_id
LIMIT 100
그러면 지정된 run_id메트릭에 대한 요약이 반환됩니다.
실험 및 실행을 위한 대시보드
MLflow 시스템 테이블 데이터를 기반으로 대시보드를 빌드하여 전체 작업 영역에서 MLflow 실험 및 실행을 분석할 수 있습니다.