MODEL_MONITOR_PERFORMANCE_METRIC

MODEL_MONITOR_PERFORMANCE_METRIC

MODEL_MONITOR_PERFORMANCE_METRIC은 모델 모니터에서 성능 메트릭을 가져오는 함수예요. 각 모델 모니터는 하나의 머신러닝 모델을 모니터링해요. 모델 버전 모니터는 ML Observability를, 게이트웨이 모델 모니터는 Gateway Monitoring & A/B Testing을 참고해요.

출처: Snowflake SQL Reference

본문

카테고리: 모델 모니터 함수

구문 (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)
)

더 알아보기