MODEL_MONITOR_DRIFT_METRIC

MODEL_MONITOR_DRIFT_METRIC

MODEL_MONITOR_DRIFT_METRIC() 함수는 모델 모니터(model monitor)에서 드리프트 지표(drift metric)를 가져와요. 각 모델 모니터는 하나의 머신러닝 모델을 모니터링해요. 모델 버전 모니터는 ML 관찰성(ML Observability)을, 게이트웨이 모델 모니터는 게이트웨이 모니터링 및 A/B 테스트(Gateway Monitoring & A/B Testing)를 참고하세요.

출처: Snowflake SQL Reference

본문

문법

모델 버전 모니터(Model version monitor)

MODEL_MONITOR_DRIFT_METRIC(
  <model_monitor_name>, <drift_metric_name>, <column_name>
  [, <granularity> [, <start_time> [, <end_time> [, <extra_args> ] ] ] ]
)

게이트웨이 모델 모니터(Gateway model monitor)

MODEL_MONITOR_DRIFT_METRIC(
  <model_monitor_name>, <drift_metric_name>, <column_name>
  [, <granularity> [, <start_time> [, <end_time> ] ] ],
  SERVICE => <service_name>,
  BASE_SERVICE => <base_service_name>
)

필수 인자

모든 모니터 타입

model_monitor_name — 모델 모니터 이름이에요. drift_metric_name — 가져올 드리프트 지표 이름이에요. column_name — 드리프트를 평가할 컬럼 이름이에요.

게이트웨이 모델 모니터

service_name — 지표를 가져올 추론 서비스 이름이에요. base_service_name — 드리프트 비교 기준이 되는 기본 추론 서비스 이름이에요.

선택 인자

granularity — 지표 집계 단위예요. start_time, end_time — 시간 범위예요. extra_args — 추가 인자예요.

반환

모든 모니터 타입에 대해 반환되는 컬럼

Column Description Example values
EVENT_TIMESTAMP 시간 범위 시작의 타임스탬프예요. 2024-01-01 00:00:00.000
METRIC_VALUE 지정된 시간 범위 안의 지표 값이에요. 5
COL_COUNT_USED 지표 계산에 사용된 레코드 수예요. 100
COL_COUNT_UNUSED 지표 계산에서 제외된 레코드 수예요. 10
BASELINE_COL_COUNT_USED 지표 계산에 사용된 레코드 수예요. 10
BASELINE_COL_COUNT_UNUSED 지표 계산에서 제외된 레코드 수예요. 0
METRIC_NAME 계산된 드리프트 지표의 이름이에요. DIFFERENCE_OF_MEANS
COLUMN_NAME 드리프트 지표가 계산된 컬럼의 이름이에요. FEATURE_NAME
SEGMENT_COLUMN 지표가 계산되는 세그먼트 컬럼의 이름이에요(비세그먼트 쿼리면 NULL). CUSTOMER_TIER
SEGMENT_VALUE 지표가 계산되는 세그먼트 값이에요(비세그먼트 쿼리면 NULL). PREMIUM

게이트웨이 모델 모니터의 추가 컬럼

Column Description Example values
SERVICE 지표의 추론 서비스 이름이에요. challenger_service
BASE_SERVICE 드리프트 비교 기준이 되는 기본 추론 서비스 이름이에요. baseline_service
CI_VALUE lower 및 upper 경계를 가진 95% Wald 신뢰 구간이에요. 이진 분류 모델의 DIFFERENCE_OF_MEANS에서만 지원돼요. 다른 드리프트 지표와 지원되지 않는 모델 작업에는 NULL을 반환해요. {"lower": -0.05, "upper": 0.03}

사용 메모

드리프트 지표를 계산하려면 모델 버전 모니터에 기준(baseline)이 설정되어 있어야 해요. 대신 게이트웨이 모델 모니터는 드리프트 지표를 조회하기 위한 기본 서비스가 있어야 해요.

다음과 같은 경우 오류가 발생할 수 있어요.

  • 모델 버전 모니터에 기준을 설정하지 않았거나, 게이트웨이 모델 모니터에 기본 서비스를 제공하지 않은 경우.
  • 숫자가 아닌 특성에 숫자 드리프트 지표를 요청한 경우.
  • 모델 모니터에 존재하지 않는 드리프트 지표를 사용한 경우.
  • 게이트웨이 모델 모니터에서 세그먼트 지표에 extra_args를 전달한 경우.

column_name 또는 model_monitor_name에 지정한 값이 대소문자를 구분하거나 특수 문자나 공백을 포함하면 큰따옴표로 감싸세요. 큰따옴표를 작은따옴표 안에 넣어야 합니다(예: '"<model_monitor_name>"').

이 두 필드에 큰따옴표를 제공하지 않으면 column_name 또는 model_monitor_name은 대소문자를 구분하지 않는 것으로 간주돼요.

스키마 변경으로 인한 잠재적 영향을 최소화하려면 와일드카드(*) 대신 필요한 컬럼만 명시적으로 선택하도록 쿼리를 갱신하세요.

예제

모델 버전 모니터

다음 예제는 하루 동안 MY_MONITOR의 평균 차이(DIFFERENCE_OF_MEANS) 드리프트 지표를 가져와요.

SELECT * FROM TABLE(MODEL_MONITOR_DRIFT_METRIC(
'MY_MONITOR', 'DIFFERENCE_OF_MEANS', 'MODEL_PREDICTION', '1 DAY', TO_TIMESTAMP_TZ('2024-01-01'), TO_TIMESTAMP_TZ('2024-01-02'))
)

다음 예제는 지난 30일 동안 MY_MONITOR의 Jensen-Shannon 드리프트 지표를 가져와요.

SELECT * FROM TABLE(MODEL_MONITOR_DRIFT_METRIC(
'MY_MONITOR', 'JENSEN_SHANNON', 'MODEL_PREDICTION', '1 DAY', DATEADD('DAY', -30, CURRENT_DATE()), CURRENT_DATE())
)

게이트웨이 모델 모니터

다음 예제는 하루 동안 MY_GATEWAY_MONITOR의 Wasserstein 드리프트 지표를 가져와요.

SELECT * FROM TABLE(MODEL_MONITOR_DRIFT_METRIC(
'MY_GATEWAY_MONITOR', 'WASSERSTEIN', 'MODEL_PREDICTION', '1 DAY', TO_TIMESTAMP_TZ('2024-01-01'), TO_TIMESTAMP_TZ('2024-01-02'), SERVICE => mydb.myschema.challenger_service, BASE_SERVICE => mydb.myschema.base_service)
)

더 알아보기