モデルを比較および選択するための実験を実行する¶
Snowflake ML Experimentsでは、 実験 を設定して、モデルトレーニングの結果の評価を整理できます。これにより、ハイパーパラメーターの調整の結果、異なるターゲットメトリック、異なるモデルタイプの動作を整理された方法ですばやく比較し、ニーズに最適なモデルを選択することができます。各実験は、トレーニングのメタデータとアーティファクトである一連の 実行 で構成されます。Snowflakeは実行アーティファクトについて柔軟であるため、モデルの評価プロセスに役立つものを何でも送信できます。
実験が完了すると、結果は Snowsight によって表示されます。また、Pythonまたは SQL で実行アーティファクトをいつでも取得することができます。
注釈
Snowflake Experiments は snowflake-ml-python バージョン1.19.0以降を必要とします。
アクセス制御の要件¶
実験の作成には、実行アーティファクトが保存されるスキーマで CREATE EXPERIMENT 権限が必要です。実験の作成には、親データベースとスキーマで USAGE 権限が必要です。
実験を作成する¶
まず、実験を作成します。これには、実行情報を保存するために使用する既存のデータベースとスキーマが必要です。
実験サポートは snowflake.ml.experiment.ExperimentTracking クラスで利用できます。set_experiment(name: Optional[str]) メソッドを使用して、指定された名前の実験を開き、ログとアーティファクトのアクティブな実験コンテキストを設定します。まだ存在しない実験が作成されます。
次の例は、アクティブなデータベースとスキーマで My_Experiment という名前の実験を作成または開いて、既存の session を使用してアクティブな実験として設定する方法を示しています。
from snowflake.ml.experiment import ExperimentTracking
exp = ExperimentTracking(session=session)
exp.set_experiment("My_Experiment")
重要
ExperimentTracking クラスはシングルトンであり、一度にアクティブにできる実行は1つだけです。実験と実行はスレッドセーフではなく、 ExperimentTracking インスタンスが構成されたスレッドからのみ変更する必要があります。
ナビゲーションメニューで AI & ML » Experiments を選択します。
New Experiment を選択します。
実験の Name を入力します。
実験の実行アーティファクトを保存するデータベースとスキーマを選択します。
Create を選択して実験を作成します。または Cancel を選択してキャンセルします。
実験実行を開始する¶
実験の各実行には、メトリック、パラメーター、アーティファクトの独自のセットがあります。この情報は、モデルのトレーニングとその結果に関する可視化とデータを提供するために、 Snowsight で使用されます。
ExperimentTracking インスタンスで start_run(name: Optional[str]) メソッドを使用して実行を開始します。これにより新しい Run が返されます。これは with ステートメントでの使用をサポートしています。Snowflakeは、実行がクリーンに完了し、実行範囲に関する推論が容易になるよう with ステートメントの使用を推奨しています。
with exp.start_run("my_run"):
# .. Train your model and log artifacts
トレーニング情報を自動的にログに記録する¶
モデルトレーニング中に XGBoost 、 LightGBM またはKerasモデルのトレーニング情報を自動的にログに記録できます。自動ログは、トレーニングしているモデルに関する実験と情報を参照するコールバックを登録することによって実行されます。パラメーターまたはメトリックを調整する Model インスタンスでメソッドが呼び出されるたびに、アクティブな実行について実験に自動的にログが記録されます。
次の例は、サポートされているモデルのトレーニングごとに実験のコールバックを構成し、基本的なトレーニング実行を開始してアーティファクトをログに記録する方法を示しています。
# exp: ExperimentTracking
from xgboost import XGBClassifier
from snowflake.ml.experiment.callback.xgboost import SnowflakeXgboostCallback
from snowflake.ml.model.model_signature import infer_signature
sig = infer_signature(X, y)
callback = SnowflakeXgboostCallback(
exp, model_name="name", model_signature=sig
)
model = XGBClassifier(callbacks=[callback])
with exp.start_run("my_run"):
model.fit(X, y, eval_set=[(X, y)])
# exp: ExperimentTracking
from lightgbm import LGBMClassifier
from snowflake.ml.experiment.callback.lightgbm import SnowflakeLightgbmCallback
from snowflake.ml.model.model_signature import infer_signature
sig = infer_signature(X, y)
callback = SnowflakeLightgbmCallback(
exp, model_name="name", model_signature=sig
)
model = LGBMClassifier()
with exp.start_run("my_run"):
model.fit(X, y, eval_set=[(X, y)], callbacks=[callback])
# exp: ExperimentTracking
import keras
from snowflake.ml.experiment.callback.keras import SnowflakeKerasCallback
from snowflake.ml.model.model_signature import infer_signature
sig = infer_signature(X, y)
callback = SnowflakeKerasCallback(
exp, model_name="name", model_signature=sig
)
model = keras.Sequential()
model.add(keras.layers.Dense(1))
model.compile(
optimizer=keras.optimizers.RMSprop(learning_rate=0.1),
loss="mean_squared_error",
metrics=["mean_absolute_error"],
)
with exp.start_run("my_run"):
model.fit(X, y, validation_split=0.5, callbacks=[callback])
トレーニング情報とアーティファクトを手動でログに記録する¶
自動ログをサポートしていないモデルや、事前にトレーニング済みのモデルの場合は、Pythonで実験情報とアップロードアーティファクトを手動でログに記録できます。パラメーターはトレーニングモデルへの定数の入力であり、メトリックはモデル ステップ で評価されます。対応するステップとしてトレーニングエポックを表すように選択できます。次の例は、パラメーター、メトリック、アップロードアーティファクトをログに記録する方法を示しています。
注釈
デフォルトのステップ値は 0 です。
# Logging requires an active run for the exp: ExperimentTracker instance.
# Log model parameters with the log_param(...) or log_params(...) methods
exp.log_param("learning_rate", 0.01)
exp.log_params({"optimizer": "adam", "batch_size": 64})
# Log model metrics with the log_metric(...) or log_metrics(...) methods
exp.log_metric("loss", 0.3, step=100)
exp.log_metrics({"loss": 0.4, "accuracy": 0.8}, step=200)
# Log your model to the experiment's model registry with the log_model(...) method.
exp.log_model(model, model_name="my_model", signatures={"predict": model_signature})
exp.log_model(model, model_name="my_model", sample_input_data=data)
# Log local artifacts to an experiment run with the log_artifact(...) method.
exp.log_artifact('/tmp/file.txt', artifact_path='artifacts')
注釈
アーティファクトのログはWarehouse Notebooksではサポートされていません。
実行を完了する¶
実行を完了すると、変更できなくなり、 Snowsight で終了したものとして表示されます。
with ステートメントの一部として実行を開始すると、スコープを終了した時に実行が自動的に完了します。それ以外の場合は、実験の end_run(name: Optional[str]) メソッドと完了する実行の名前を呼び出して、実行を終了できます。
experiment.end_run("my_run")
実験内の実行を比較する¶
実験の評価は Snowsight によって行われます。ナビゲーションメニューで、 AI & ML » Experiments を選択し、リストから調べる実験を選択します。
実行リストには、各メトリックの Run name 、 Status 、 Created の日付、および列が表示されます。追加の列としてパラメーターを切り替えることもできます。実行ビューと実行比較ビューから、アーティファクト、メトリックチャート、リンクされたモデルバージョンなどの詳細を表示します。
注釈
リンクされたモデルのバージョンの表示は、 Modeling Lineage機能 の一部であり、Enterprise Edition以上のお客様のみ利用可能です。
実験では最大5回の実行を選択できます。実行を比較するには、:ui:`Compare`ボタンを選択します。比較ビューが表示され、実行メタデータ、パラメーター、メトリック、モデルのバージョン情報が表示されます。
実行からアーティファクトを取得する¶
実行中または実行後はいつでも、アーティファクトを取得できます。次の例は、 logs パスで実行の利用可能なアーティファクトを一覧表示し、実験 my_experiment における実行 my_run の logs/log0.txt アーティファクトをローカルディレクトリ /tmp にダウンロードする方法を示しています。
# exp: ExperimentTracking
exp.set_experiment("my_experiment")
exp.list_artifacts("my_run", artifact_path="logs")
exp.download_artifacts("my_run", artifact_path="logs/log0.txt", target_path="/tmp")
LIST snow://experiment/my_experiment/versions/my_run/logs;
GET snow://experiment/my_experiment/versions/my_run/logs/log0.txt file:///tmp;
実行と実験を削除する¶
実験の終了後、実験とそれに関連する実行アーティファクトをすべて削除することができます。次の例では、実験 my_experiment を削除しています。
# exp: ExperimentTracking
exp.delete_experiment("my_experiment")
DROP EXPERIMENT my_experiment;
実験から個々の実行を削除することもできます。次の例では、実験 my_experiment から実行 my_run を削除しています。
# exp: ExperimentTracking
exp.set_experiment("my_experiment")
exp.delete_run("my_run")
ALTER EXPERIMENT my_experiment DROP RUN my_run;
制限事項¶
Snowflake Experimentsには以下の制限があります。
各スキーマは500の実験に制限されています。
各実験は500の実行に制限されています。
実行は最大1年間保存されます。
実行は1000個の一意のパラメーターと200個の一意のメトリクスに制限されています。
コストの考慮事項¶
Snowflake Experimentsを使用するための追加コストはありません。標準的なSnowflake消費ベースのコストが発生します。これらには次が含まれます。
実行アーティファクトを保存するためのコスト。ストレージコストに関する一般情報については、 ストレージコストの調査 をご参照ください。
データログのコスト。データのログ中に発生するコストに関する一般情報については、:ref:`label-cost_exploring_viewing_credit_usage`をご参照ください。
データ可視化のコスト。UIのチャートは仮想ウェアハウスによって生成されます。詳細については、 クレジット使用状況の表示 をご参照ください。