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)를 참고하세요.
본문
문법
모델 버전 모니터(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)
)