MODEL_MONITOR_PERFORMANCE_METRIC
MODEL_MONITOR_PERFORMANCE_METRIC
MODEL_MONITOR_PERFORMANCE_METRIC은 모델 모니터에서 성능 메트릭을 가져오는 함수예요. 각 모델 모니터는 하나의 머신러닝 모델을 모니터링해요. 모델 버전 모니터는 ML Observability를, 게이트웨이 모델 모니터는 Gateway Monitoring & A/B Testing을 참고해요.
본문
카테고리: 모델 모니터 함수
구문 (Syntax)
모델 버전 모니터
MODEL_MONITOR_PERFORMANCE_METRIC(<model_monitor_name>, <performance_metric_name>,
[, <granularity> [, <start_time> [, <end_time> [, <extra_args> ] ] ] ] )
게이트웨이 모델 모니터
MODEL_MONITOR_PERFORMANCE_METRIC(
<model_monitor_name>, <performance_metric_name>
[, <granularity> [, <start_time> [, <end_time> ] ] ],
SERVICE => <service_name>
)
필수 인자 (Required arguments)
모든 모니터 타입
<model_monitor_name> — 메트릭을 계산하는 데 사용되는 모델 모니터의 이름이에요. 유효한 값: 모델 모니터의 이름인 문자열로, 단순 이름 또는 정규화된 이름일 수 있어요.
<performance_metric_name> — 성능 메트릭의 이름이에요.
모델 모니터가 회귀(regression) 모델에 연결된 경우의 유효한 값:
'RMSE''MAE''MAPE''MSE'
모델 모니터가 이진 분류(binary classification) 모델에 연결된 경우의 유효한 값:
'ROC_AUC''CLASSIFICATION_ACCURACY''PRECISION''RECALL''F1_SCORE'
모델 모니터가 다중 클래스 분류(multi-class classification) 모델에 연결된 경우의 유효한 값:
'CLASSIFICATION_ACCURACY''MACRO_AVERAGE_PRECISION''MACRO_AVERAGE_RECALL''MICRO_AVERAGE_PRECISION''MICRO_AVERAGE_RECALL'
게이트웨이 모델 모니터
SERVICE => <service_name> — 성능 메트릭을 측정하는 추론 서비스(inference service)의 이름이에요. 유효한 값: 단순 또는 정규화된 추론 서비스 식별자예요.
선택 인자 (Optional arguments)
<granularity> — 조회하는 시간 범위의 세분화(granularity)예요. 기본값은 모델 버전 모니터의 경우 1 DAY, 게이트웨이 모델 모니터의 경우 AGGREGATION_WINDOW예요.
유효한 값:
'<num> HOUR'(게이트웨이 모델 모니터에만 유효)'<num> DAY''<num> WEEK''<num> MONTH''<num> QUARTER''<num> YEAR''ALL'NULL
<start_time> — 메트릭을 계산하는 데 사용되는 시간 범위의 시작이에요. 기본값은 모델 버전 모니터의 경우 현재 시각 60일 전, 게이트웨이 모델 모니터의 경우 현재 시각 1일 전이에요. 기본값은 함수를 호출할 때마다 계산돼요.
유효한 값: 타임스탬프 표현식 또는 NULL.
<end_time> — 메트릭을 계산하는 데 사용되는 시간 범위의 끝이에요. 기본값은 현재 시각이며, 함수를 호출할 때마다 계산돼요.
유효한 값: 타임스탬프 표현식 또는 NULL.
<extra_args> — 세그먼트별 쿼리를 위한 추가 인자예요. 이 매개변수는 선택적이며, 제공되지 않으면 쿼리는 모든 데이터에 대한 메트릭을 반환해요(비세그먼트 쿼리). 게이트웨이 모델 모니터에서는 세그먼트 쿼리가 지원되지 않아요.
유효한 값: 세그먼트 열과 값을 지정하는 JSON 형식의 문자열: '{"SEGMENTS": [{"column": "<segment_column_name>", "value": "<segment_value>"}]}'
참고: 현재 세그먼트 쿼리는 쿼리당 세그먼트 열:값 쌍 하나만 지원해요. 한 번의 함수 호출에서 여러 세그먼트를 동시에 조회할 수 없어요.
세그먼트에 대한 자세한 내용은 ML Observability: Monitoring model behavior over time을 참고해요.
반환값 (Returns)
모든 모니터 타입에서 반환되는 열
| 열 | 설명 | 예시 값 |
|---|---|---|
| EVENT_TIMESTAMP | 시간 범위 시작의 타임스탬프. | 2024-01-01 00:00:00.000 |
| METRIC_VALUE | 지정된 시간 범위 안의 메트릭 값. | 0.5 |
| COUNT_USED | 메트릭을 계산하는 데 사용된 레코드 수. | 100 |
| COUNT_UNUSED | 메트릭 계산에서 제외된 레코드 수. | 10 |
| METRIC_NAME | 계산된 메트릭의 이름. | ROC_AUC |
| SEGMENT_COLUMN | 메트릭이 계산되는 세그먼트 열의 이름(비세그먼트 쿼리에서는 NULL). | CUSTOMER_TIER |
| SEGMENT_VALUE | 메트릭이 계산되는 세그먼트 값(비세그먼트 쿼리에서는 NULL). | PREMIUM |
게이트웨이 모델 모니터의 추가 열
| 열 | 설명 | 예시 값 |
|---|---|---|
| SERVICE | 메트릭에 대한 추론 서비스 이름. | challenger_service |
| CI_VALUE | 하한과 상한이 있는 95% 신뢰 구간. CLASSIFICATION_ACCURACY, PRECISION, RECALL, F1_SCORE, MICRO_AVERAGE_PRECISION, MICRO_AVERAGE_RECALL에는 Wilson CI, MSE, RMSE, MAE에는 Wald CI. 다른 성능 메트릭에서는 NULL 반환. | {"lower": 0.85, "upper": 0.92} |
사용 시 유의사항 (Usage notes)
model_monitor_name에 지정한 값이 대소문자를 구분하거나 특수 문자·공백을 포함하면 큰따옴표로 감싸요. 큰따옴표는 작은따옴표 안에 있어야 해요. 예: '"<example_model_monitor_name>"'.
큰따옴표를 사용하지 않으면 model_monitor_name은 대소문자를 구분하지 않는 것으로 간주돼요.
스키마 변경의 잠재적 영향을 최소화하려면 와일드카드(*) 대신 필요한 열만 명시적으로 선택하도록 쿼리를 갱신해요.
일반 요구 사항
- 모델 모니터는 요청한 메트릭 타입을 지원하는 모델과 연결되어야 해요.
- 모델 모니터는 아래에 설명된 대로 각 메트릭 타입에 필요한 데이터를 담고 있어야 해요.
메트릭 요구 사항
회귀 메트릭을 얻기 위한 필수 열:
- RMSE:
prediction_score와actual_score열 필요 - MAE:
prediction_score와actual_score열 필요 - MAPE:
prediction_score와actual_score열 필요
이진 분류 메트릭을 얻기 위한 필수 열:
- ROC_AUC:
prediction_score와actual_class열 필요 - CLASSIFICATION_ACCURACY:
prediction_class와actual_class열 필요 - PRECISION:
prediction_class와actual_class열 필요 - RECALL:
prediction_class와actual_class열 필요 - F1_SCORE:
prediction_class와actual_class열 필요
다중 클래스 분류 메트릭을 얻기 위한 필수 열:
- CLASSIFICATION_ACCURACY:
prediction_class와actual_class열 필요 - MACRO_AVERAGE_PRECISION:
prediction_class와actual_class열 필요 - MACRO_AVERAGE_RECALL:
prediction_class와actual_class열 필요 - MICRO_AVERAGE_PRECISION:
prediction_class와actual_class열 필요 - MICRO_AVERAGE_RECALL:
prediction_class와actual_class열 필요
참고: 이진 분류의 경우, 마이크로 평균 정밀도와 재현율 메트릭을 다중 클래스 분류에서 분류 정확도를 사용하는 것과 비슷하게 사용할 수 있어요.
오류 상황
다음을 하면 오류가 발생할 수 있어요:
- 모니터에 해당하는 예측 또는 실제 열이 없는데 정확도 메트릭을 요청할 때(게이트웨이 모델 모니터는 생성 시 누락된 열을 가능하면 추론해요).
actual_score또는actual_class열에 데이터를 제공하지 않을 때.- 게이트웨이 모델 모니터에 세그먼트 메트릭용
extra_args를 전달할 때.
예시 (Examples)
모델 버전 모니터
다음 예시는 모델 모니터에서 하루 기간의 Root Mean Square Error(RMSE)를 가져와요.
SELECT * FROM TABLE(MODEL_MONITOR_PERFORMANCE_METRIC(
'MY_MONITOR', 'RMSE', '1 DAY', TO_TIMESTAMP_TZ('2024-01-01'), TO_TIMESTAMP_TZ('2024-01-02'))
)
다음 예시는 모델 모니터에서 최근 30일의 Root Mean Square Error(RMSE)를 가져와요:
SELECT * FROM TABLE(MODEL_MONITOR_PERFORMANCE_METRIC(
'MY_MONITOR', 'RMSE', '1 DAY', DATEADD('DAY', -30, CURRENT_DATE()), CURRENT_DATE())
)
게이트웨이 모델 모니터
다음 예시는 하루 기간 동안 MY_GATEWAY_MONITOR의 Precision을 가져와요:
SELECT * FROM TABLE(MODEL_MONITOR_PERFORMANCE_METRIC(
'MY_GATEWAY_MONITOR', 'PRECISION', '1 DAY', TO_TIMESTAMP_TZ('2024-01-01'), TO_TIMESTAMP_TZ('2024-01-02'), SERVICE => mydb.myschema.challenger_service)
)