注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
モデル実験の Python API は、メトリクスとハイパーパラメーターを実験に書き込むためのメソッドを提供します。このページでは、palantir_models.experiments パッケージで利用可能な関数とクラスについて説明します。
palantir_models.experiments.Experimentモデルのトレーニング実験を追跡するためのクラスです。実験は、任意の ModelOutput クラスから作成できます。
Copied!1model_output.create_experiment(name="experiment-name")
| 関数 | 説明 |
|---|---|
log_param(key, value) | 単一のパラメーターを実験に記録します。 |
log_params(parameter_map) | パラメーターのセットを実験に記録します。 |
log_metric(name, value, step) | 指定された系列のメトリクス値を実験に記録します。 |
log_metrics(metric_values, step) | 指定された系列のメトリクス値のセットを実験に記録します。 |
log_image(name, image, caption, step) | 指定された系列の画像を実験に記録します。 |
as_mlflow_run() | コンテキストブロックを作成し、実験に書き込むようにアクティブな MLflow 実行を設定します。 |
palantir_models.experiments.ErrorHandlerType実験コードの実行時にエラーをどのように処理するかを制御する列挙型です。具体的には、メトリクスの書き込み時のネットワークエラーや実験のサイズ超過など、ユーザーコード以外に起因するエラーを制御します。
| バリアント | 説明 |
|---|---|
ErrorHandlerType.FAIL | いずれかのエラーが発生すると失敗します。呼び出し元に対してエラーを再送出します。 |
ErrorHandlerType.WARN | 最初のエラーについて警告し、その後のエラーを抑制します。 |
ErrorHandlerType.SUPPRESS | 何もログに記録しません。 |
以下に示すように、実験の作成時に、目的のエラーハンドラーの種類を ModelOutput.create_experiment に渡すことができます。
Copied!1 2 3 4 5from palantir_models.experiments import ErrorHandlerType model_output.create_experiment( name="mnist-experiment", error_handler_type=ErrorHandlerType.WARN )
Experiment.log_parampalantir_models.experiments.Experiment.log_param(key: str, value: Union[bool, date, datetime, float, int, str])
value を、指定された key に記録します。Copied!1experiment.log_param(key="learning_rate", value=1e-3)
key: str
value: Union[bool, date, datetime, float, int, str]
Experiment.log_paramspalantir_models.experiments.Experiment.log_params(parameter_map: Dict[str, Union[bool, date, datetime, float, int, str]])
log_param のバッチ処理バージョンです。Copied!1 2 3 4experiment.log_params(parameter_map={ "learning_rate": 1e-3, "model_type": "CNN" })
parameter_map: Dict[str, Union[bool, date, datetime, float, int, str]]
Experiment.log_metricpalantir_models.experiments.Experiment.log_metric(metric_name: str, metric_value: float, step: Optional[int] = None)
step が指定されている場合は、そのステップへの記録が試行されます。そのステップにすでに記録されている場合は、エラーが送出されます。step が指定されていない場合は、系列の現在のステップが自動的に1増加します。Copied!1 2experiment.log_metric(metric_name="train/loss", metric_value=1.5) experiment.log_metric(metric_name="train/loss", metric_value=0.9) # ステップが自動的にインクリメントされます
metric_name: str
metric_value: float
step: Optional[int]
Experiment.log_metricspalantir_models.experiments.Experiment.log_metrics(values: Dict[str, float], step: Optional[int] = None)
log_metric のバッチ処理バージョンです。step が指定されている場合は、そのステップへの記録が試行されます。いずれかの系列でそのステップにすでに記録されている場合は、エラーが送出されます。step が指定されていない場合は、すべての系列の現在のステップが、それぞれ独立して自動的に1増加します。Copied!1 2 3 4experiment.log_metrics(values={ "train/loss": 1.5, "train/acc", 0.7 })
values: Dict[str, float]
step: Optional[int]
Experiment.log_imagepalantir_models.experiments.Experiment.log_image(series_name: str, image: Union[str, bytes, "PIL.Image.Image"], caption: Optional[str] = None, step: Optional[int] = None)
step が指定されている場合は、そのステップへの記録が試行されます。そのステップにすでに記録されている場合は、エラーが送出されます。step が指定されていない場合は、系列の現在のステップが自動的に1増加します。Copied!1experiment.log_image("bounding_boxes", image="/path/to/image.png", caption="My caption", step=1)
series_name: str
image: Union[str, bytes, "PIL.Image.Image"]
caption: Optional[str]
step: Optional[str]
Experiment.log_plotpalantir_models.experiments.Experiment.log_plot(series_name: str, plot_data: "plotly.graph_objects.Figure", caption: Optional[str] = None, step: Optional[int] = None)
plotly.graph_objects.Figure である必要があります。step が指定されている場合は、そのステップへの記録が試行されます。そのステップにすでに記録されている場合は、エラーが送出されます。step が指定されていない場合は、系列の現在のステップが自動的に1増加します。Copied!1 2 3 4import 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)
series_name: str
plot_data: "plotly.graph_objects.Figure"
caption: Optional[str]
step: Optional[int]
Experiment.log_tablepalantir_models.experiments.Experiment.log_table(table_name: str, table: Union["polars.DataFrame", "pandas.DataFrame"], description: Optional[str] = None)
Copied!1 2 3 4 5 6 7 8 9import 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)
table_name: str
table: Union["polars.DataFrame", "pandas.DataFrame"]
description: Optional[str]
Experiment.as_mlflow_runpalantir_models.experiments.Experiment.as_mlflow_run()
MLflow >= 2.0.0 が必要です。Copied!1 2with experiment.as_mlflow_run() as run: ...