Snowflake ML モデルの作成、学習、アプリでの使用¶
このトピックでは、 scikit-learn Python パッケージを使用して、 Snowflake Native App 内で Snowflake ML モデルをトレーニングする方法の例を示します。このトピックの例は、コンシューマーまたはプロバイダーアカウントのデータでモデルをトレーニングするために使用できます。
ストアドプロシージャを保持するバージョンスキーマを作成します。¶
次の例に示すように、セットアップ・スクリプト内で、ストアドプロシージャを含むバージョンスキーマを作成します。
ストアドプロシージャのバージョンスキーマを作成します。
モデルを作成し、訓練するためのストアドプロシージャを作成します。¶
次の例に示すように、モデルの学習に使用する Python 関数のストアドプロシージャを作成します。
この例では、
py_log_modelというストアドプロシージャを作成し、scikit-learnを使用してモデルを学習するために必要な Python パッケージを宣言します。
snowflake-snowpark-python
scikit-learn
snowflake-ml-python
pandas
numpy
xgboost
ストアドプロシージャを作成したら、ストアドプロシージャの本文に以下のコードを追加します。
ストアドプロシージャの本文にPythonコードを追加します。
log_model関数のパフォーマンスは以下の通りです。
pandasとnumpyを使って、モデルの学習データとなる DataFrame を作成します。データの学習アルゴリズムとして使用する XGBoost のインスタンスを作成します。
XGBoost の
fit()関数を呼び出してモデルを作成し、データセットで学習させます。Snowflake Model Registry の
log_model()関数を呼び出し、モデルをモデルレジストリに追加します。注釈
アプリによって作成された Modeling は、モデルレジストリに保存する必要があります。ステージングされたモデルにはアクセスできません。
オプション: コンシューマーがストアドプロシージャを実行してモデルを学習できるようにするには、ストアドプロシージャに USAGE 権限を付与します。
モデルを実行するストアドプロシージャの作成¶
モデルを呼び出すために使用する Python 関数のストアドプロシージャを作成します。
モデルを呼び出すために使用するPythonコードを追加します。
run_model関数は次のような働きをします。
load_iris()関数を実行し、 アイリス機械学習データセット を読み込みます。
pandasを使用して、アイリスデータセットに基づいて DataFrame を作成します。
get_model()関数を実行してモデルのレジストリを取得します。モデルに対してpredict関数を実行します。
結果を返します。
オプション: コンシューマーがストアドプロシージャを実行してモデルを学習できるようにするには、ストアドプロシージャに USAGE 権限を付与します。
ストアドプロシージャの実行¶
アプリケーションがこれらのストアドプロシージャの USAGE 権限をアプリケーションロールに付与した場合、コンシューマーは以下の例に示すように、ストアドプロシージャを呼び出してモデルの学習と実行を行うことができます。
このコマンドは、 py_log_model ストアドプロシージャを呼び出してモデルを訓練します。
このコマンドは、 py_call_predict ストアドプロシージャを呼び出し、モデルのpredict関数を呼び出します。