Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Experiment Python API 참조

palantir_models.experiments.Experiment는 ModelOutput의 create_experiment로 생성합니다. 기록 후 모델과 함께 게시해야 모델 버전에 연결됩니다. 다음 예시의 experiment는 현재 학습 작업에서 만든 인스턴스이며 수치는 호출 형식을 보여 주는 예시 입력입니다.

생성과 오류 처리

model_output.create_experiment(name="experiment-name")으로 생성합니다. ErrorHandlerType은 사용자 코드의 일반 오류가 아니라 기록 중 네트워크 오류와 실험 크기 초과 같은 오류를 처리합니다.

FAIL은 오류를 즉시 다시 발생시키고, 기본 WARN은 첫 오류를 경고한 뒤 나머지를 억제하며, SUPPRESS는 아무 메시지도 기록하지 않습니다.

from palantir_models.experiments import ErrorHandlerType

experiment = model_output.create_experiment(
    name="mnist-experiment",
    error_handler_type=ErrorHandlerType.WARN,
)

log_param과 log_params

log_param(key: str, value: Union[bool, date, datetime, float, int, str])

key는 매개변수 이름, value는 저장할 값입니다. 같은 키로 다시 호출하면 이전 값을 덮어씁니다.

experiment.log_param(key="learning_rate", value=1e-3)

log_params(parameter_map: Dict[str, Union[bool, date, datetime, float, int, str]])

이름에서 값으로 가는 사전을 한 번에 기록합니다.

experiment.log_params(parameter_map={
    "learning_rate": 1e-3,
    "model_type": "CNN",
})

log_metric

log_metric(metric_name: str, metric_value: float, step: Optional[int] = None)

metric_name은 시리즈 이름이고 metric_value는 기록할 수치입니다. 시리즈가 없으면 만듭니다. step을 명시하면 해당 단계에 기록하며 이미 기록한 단계 또는 현재 단계보다 작은 값은 오류입니다. 생략하면 그 시리즈의 현재 단계에서 1 증가합니다.

experiment.log_metric(metric_name="train/loss", metric_value=1.5)
experiment.log_metric(metric_name="train/loss", metric_value=0.9)

log_metrics

log_metrics(values: Dict[str, float], step: Optional[int] = None)

values는 지표 이름과 값의 사전입니다. 없는 시리즈는 생성합니다. step을 명시하면 모든 시리즈에 같은 단계를 쓰며 어느 시리즈에서든 중복 또는 이전 단계이면 오류입니다. step을 생략하면 각 시리즈의 현재 단계에서 독립적으로 1씩 증가하므로 시리즈들의 단계 번호가 같아진다고 가정하지 않습니다.

experiment.log_metrics(values={
    "train/loss": 1.5,
    "train/acc": 0.7,
})

log_image

log_image(series_name: str, image: Union[str, bytes, PIL.Image.Image], caption: Optional[str] = None, step: Optional[int] = None)

series_name은 이미지 시리즈 이름입니다. image는 PNG 경로, PNG 바이트 또는 Pillow 이미지이며 caption은 선택 설명입니다. 다른 이미지 형식은 거부합니다. step의 증가, 중복 오류와 자동 증가는 지표 시리즈와 같습니다.

experiment.log_image(
    "bounding_boxes", image="/path/to/image.png",
    caption="My caption", step=1,
)

경로는 실제 PNG 파일로 바꿉니다.

log_plot

log_plot(series_name: str, plot_data: plotly.graph_objects.Figure, caption: Optional[str] = None, step: Optional[int] = None)

plot_data는 Plotly Figure여야 하며 다른 플롯 타입은 거부합니다. 이름이 없는 시리즈를 만들고 지정한 step에 기록하거나 생략하면 현재 단계를 1 증가시킵니다. 중복 또는 이전 단계는 오류입니다.

다음은 예시 좌표로 만든 플롯을 시리즈에 기록하는 호출입니다.

import plotly.express as px

fig = px.line(x=[1, 2, 3], y=[4, 3, 2])
experiment.log_plot(
    "training/accuracy", plot_data=fig,
    caption="Accuracy over epochs", step=10,
)

log_table

log_table(table_name: str, table: Union[polars.DataFrame, pandas.DataFrame], description: Optional[str] = None)

table_name은 표 이름이고 table은 pandas 또는 Polars DataFrame입니다. description은 선택 설명입니다. 다른 자료형은 거부하며 step 인자는 없습니다.

다음 표의 모델 이름, 점수와 순위는 설명용 예시 값입니다. 실제 학습에서는 계산한 비교 표를 전달합니다.

import pandas as pd

leaderboard = pd.DataFrame({
    "model_type": ["xgboost", "decision_tree", "torch_nn"],
    "score": [0.75, 0.6, 0.93],
    "rank": [2, 3, 1],
})
experiment.log_table("model_leaderboard", leaderboard)

as_mlflow_run

as_mlflow_run()은 현재 실험으로 기록할 활성 MLflow 실행을 만드는 컨텍스트 관리자입니다. MLflow 2.0.0 이상이 필요합니다. 컨텍스트 안에서 실제 학습과 기록 API를 호출합니다.

import mlflow

def fit_with_mlflow(experiment, estimator, features, targets):
    with experiment.as_mlflow_run():
        mlflow.sklearn.autolog()
        estimator.fit(features, targets)
    return estimator

실험 작성에 모델 게시 연결, Keras 콜백, MLflow 통합의 자산 및 태그 제한과 기록 한도가 있습니다.