Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

MetricSet의 목표 평가 호환 계약

MetricSet은 이름 있는 숫자, 차트와 이미지 지표를 모으는 기존 형식입니다. foundry_ml과 데이터셋 기반 모델은 2025년 10월 31일부터 사용할 수 없습니다. 다만 foundry_ml_metrics를 별도로 사용하여 palantir_models 모델 버전에 MetricSet을 연결하고 Modeling Objective에서 보는 호환 경로는 남아 있습니다.

MetricSet은 palantir_models 모델 자체의 페이지에는 나타나지 않습니다. 새 학습 기록은 Experiments, 게시한 모델 버전의 시험 결과는 Evaluations를 우선 검토합니다. 이 장의 경로는 기존 목표의 지표 보기를 유지할 때 사용합니다.

생성자와 추가 메서드

생성할 때 model과 input_data를 제공합니다. 현재 모델을 연결하는 방법은 아래의 모델 버전 UUID 예제를 따릅니다. input_data는 원래 평가 데이터셋의 Python TransformInput이어야 하며 Pandas 표만 전달하면 필요한 데이터 버전 메타데이터를 보존할 수 없습니다.

MetricSet.add(name, value, subset, stage)의 항목은 다음과 같습니다.

인자의미
name지표 문자열 이름입니다.
value숫자, 지원 차트 또는 이미지 객체입니다.
subset적용한 필터를 설명하는 dict[str, str]입니다. 빈 사전은 Overall입니다.
stage기존 Foundry ML 모델의 Stage 또는 stage UUID입니다. 단계가 있는 기존 모델에서는 마지막 단계가 기본값입니다. 새 모델 버전 UUID를 사용하는 경로에서는 이전 단계 구조를 새로 만들지 않습니다.

palantir_models 모델 버전 연결

저장소에 foundry_ml_metrics를 추가합니다. model_input.model_version_rid 속성은 palantir_models 0.1602.0 이상에서 사용할 수 있습니다. 모델 버전 RID 전체가 아니라 마지막 UUID 부분을 uuid.UUID로 변환하여 model에 전달합니다.

예를 들어 설명용 ri.models.main.model-version.6c0f17a8-ad73-46a4-b86e-8d0a13327ef2에서는 6c0f17a8-ad73-46a4-b86e-8d0a13327ef2를 사용합니다.

다음 예제는 실제 이진 분류 모델을 추론하고 Accuracy와 F1을 계산합니다. 평가 데이터에 0/1 정답 actual이 있고 어댑터가 그 열을 유지하면서 df_out에 prediction을 반환해야 합니다. 모델 어댑터와 의존성을 현재 저장소에서 로드할 수 있어야 하며 경로는 실제 값으로 바꿉니다.

import uuid
from sklearn.metrics import accuracy_score, f1_score
from transforms.api import transform, Input, Output
from palantir_models.transforms import ModelInput
from foundry_ml_metrics import MetricSet

@transform(
    evaluation_data_input=Input("/Models/data/binary_evaluation"),
    model_input=ModelInput("/Models/trained/binary_classifier"),
    metric_set_output=Output("/Models/metrics/binary_metrics"),
)
def compute(evaluation_data_input, model_input, metric_set_output):
    model_version_uuid = uuid.UUID(model_input.model_version_rid.rsplit(".", 1)[-1])
    metric_set = MetricSet(model=model_version_uuid, input_data=evaluation_data_input)
    frame = evaluation_data_input.dataframe().toPandas()
    scored = model_input.transform(frame).df_out
    metric_set.add(name="Accuracy", value=float(accuracy_score(scored["actual"], scored["prediction"])))
    metric_set.add(name="F1", value=float(f1_score(scored["actual"], scored["prediction"])))
    metric_set.save(metric_set_output)

평가 데이터셋을 목표의 평가 구성에 등록하고 Only show metrics produced by evaluation configuration을 끄면 해당 데이터 아래에서 지표를 확인할 수 있습니다. CBAC 환경에서는 출력 데이터셋을 미리 생성합니다.

입력 트랜잭션과 저장

MetricSet은 어떤 모델 버전이 어떤 평가 데이터 트랜잭션에 적용되었는지를 기록합니다. 여러 모델을 같은 자료로 비교하기 위한 연결입니다. Code Repositories에서는 metric_set.save(metrics_output)으로 저장합니다.

이전 Code Workbook 방식은 모델을 Object, 평가 데이터를 TransformsInput으로 가져와 MetricSet을 반환하고 데이터셋으로 저장했습니다. 입력 메타데이터는 가져온 데이터셋에서만 얻을 수 있었으므로 학습/시험 분할과 별도의 워크북에서 검증해야 했습니다. 현재는 사용할 수 없는 foundry_ml 워크북 실행을 다시 구성하지 않고 위 저장소 호환 경로나 새 평가 API로 이전합니다.

숫자 지표

Python int 또는 float를 value로 전달합니다. 예를 들어 metric_set.add(name="My numeric metric", value=1.5)는 입력값 1.5를 기록하는 형식입니다. 실제 모델 지표에는 계산한 값을 사용합니다.

차트

foundry_ml_metrics.charts의 line과 bar는 시각화할 데이터를 함께 저장하는 차트 객체를 만듭니다. 다음 좌표와 카테고리는 형식을 보여 주는 예시입니다.

from foundry_ml_metrics import charts

line_chart = charts.line(xs=[0.0, 1.0], ys=[1.0, 0.0])
bar_chart = charts.bar(xs=["category 1", "category 2"], ys=[0.56, 0.41])
metric_set.add(name="My line chart", value=line_chart)
metric_set.add(name="My bar chart", value=bar_chart)

이미지

Matplotlib 또는 호환 seaborn 이미지 객체도 지표 값으로 전달할 수 있습니다.

from matplotlib import pyplot

pyplot.plot([0, 1], [1, 0])
figure = pyplot.gcf()
metric_set.add(name="My image chart", value=figure)
pyplot.close(figure)

부분집합

subset 사전은 지표를 계산하기 위해 실제 적용한 필터를 설명합니다. 사전에 값을 넣는 것만으로 데이터를 필터링하지는 않습니다. 예를 들어 sepal_length > 3인 행에서 정확도를 계산한 뒤 {"sepal_length": "long"}으로 기록하고, sepal_length < 3인 행에는 {"sepal_length": "short"}를 붙일 수 있습니다. 값이 3인 행은 두 부분집합에 포함하지 않습니다.

여러 필드의 설명을 한 사전에 넣을 수 있습니다. 이 부분집합은 목표의 지표 탐색기에 나타납니다. 실제 회귀 지표와 부분집합 계산은 코드 평가 예제에 있습니다.

재계산

MetricSet은 데이터셋이며 Foundry Builds로 계산합니다. 모델 또는 평가 입력의 새 버전을 사용한다면 연결된 MetricSet도 다시 빌드해야 합니다. 이전 모델과 입력 버전에 연결된 지표를 그대로 두면 최신 비교에 오래된 결과가 섞이거나 기대하는 지표가 나타나지 않을 수 있습니다.