モデルを比較および選択するための実験を実行する¶
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")
ナビゲーションメニューで 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 count over time に関する情報、現在選択しているメトリックの表示、実験で利用できる実行のリストが含まれます。右上のドロップダウンは、調べる利用可能なメトリックのリストを提供します。これは実験ビューで Metric Value Range チャートを入力します。
このページの実行のリストには、 Run name 、 Status (実行が Created であった場合)、実験で利用可能な各メトリックの追加列が含まれます。パラメーターとモデルのバージョンに関する情報は、実行比較ビューで利用できます。
実験では最大5つの実行を選択でき、 Compare ボタンを選択して実行メタデータ、パラメーター、メトリック、モデルのバージョン情報を表示する比較ビューを表示できます。各メトリックは視覚的に表示され、 Metrics セクションのトグルを使用して Charts および Tables を切り替えて変更できます。
実行からアーティファクトを取得する¶
実行中または実行後はいつでも、アーティファクトを取得できます。次の例は、 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年間保存されます。
個々の実行パラメーターとメトリックは合計200 KB に制限されています。
コストの考慮事項¶
Snowflake Experimentsを使用すると、標準的なSnowflake消費ベースのコストが発生します。これらには次が含まれます。
実行アーティファクトを保存するためのコスト。ストレージコストに関する一般情報については、 ストレージコストの調査 をご参照ください。