다음을 통해 공유


MLflow 시스템 테이블 참조

중요합니다

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: 실행에 로그온한 모든 메트릭의 이름, 값, 타임스탬프 및 단계를 기록하며, 실행에서 자세한 타임스탬프를 그리는 데 사용할 수 있습니다. 이 데이터는 실행 세부 정보 페이지의 메트릭 탭과 유사합니다.

다음은 대시보드를 사용하여 실행 정보를 그리는 예제입니다.

세부 정보 대시보드 실행

테이블 스키마

다음은 설명 및 예제 데이터가 있는 테이블 스키마입니다.

ER 다이어그램

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 경고 기능은 현재 공개 미리 보기로 제공되며 레거시 경고 도 사용할 수 있습니다.

  1. 사이드바에서 경고 아이콘 경고를 클릭하고 경고 만들기를 클릭합니다.

  2. 쿼리 편집기에서 다음 쿼리를 복사하여 붙여넣습니다.

     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;
    
  3. 조건 필드에서 조건을 MIN success_ratio < 0.9.로 설정합니다. 이렇게 하면 상위 20개 실험(실행 수 기준) 중 성공률이 90개 미만인 경우%경고가 트리거됩니다.

또한 조건을 테스트하고, 일정을 설정하고, 알림을 구성할 수 있습니다. 경고 구성에 대한 자세한 내용은 SQL 경고 설정을 참조하세요. 다음은 쿼리를 사용하는 예제 구성입니다.

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 실험 및 실행을 분석할 수 있습니다.

자세한 내용은 시스템 테이블의 MLflow 메타데이터를 사용하여 대시보드 빌드를 참조하세요.