Snowflake ウェアハウスにおける推論¶
Snowflake Model Registry はデフォルトでウェアハウスでモデルメソッドを実行します。ウェアハウスでモデルを実行するのは、Snowflake condaチャネルで利用可能なパッケージで依存関係を満たすことができる小~中規模のモデル(CPU)に適しています。
注釈
また、 Snowpark Container Services (SPCS) コンピュートプール上でモデルを実行することもできます。このアプローチは、分散推論が有効な大容量モデルに適しています。詳細については、 Snowpark Container Servicesのモデルサービス をご参照ください。
開始するには、モデルレジストリの モデルをログに記録します。レジストリにログされたモデルのみが推論に利用可能です。registry.get_model(...).version(...)
によって、モデルをログに記録したり、レジストリから既存のモデルをロードしたりすると、 ModelVersion
オブジェクトが返され、このオブジェクトに対して run
メソッドを呼び出すことができます。
Pythonからの推論¶
モデルのバージョンのメソッドを呼び出すには、 mv.run
を使います。 mv
は ModelVersion
オブジェクトです。呼び出される関数の名前を指定し、推論データを含む Snowpark または pandas DataFrame と必要なパラメーターを渡します。このメソッドは、Snowflakeウェアハウスで実行されます。
メソッドの戻り値は、渡された DataFrame のタイプにマッチする Snowpark または pandas DataFrame です。Snowpark DataFrames は遅延評価されるため、DataFrame の collect
、 show
、 to_pandas
メソッドが呼び出されたときのみメソッドが実行されます。
注釈
メソッドを起動すると、レジストリへの接続に使用しているセッションで指定されたウェアハウスでメソッドが実行されます。 ウェアハウスサイズの指定 をご参照ください。
次の例は、モデルの predict
メソッドの実行を示しています。このモデルの predict
メソッドは、推論データ(ここでは test_features
)以外にパラメーターを必要としません。必要な場合は、推論データの後に追加の引数として渡されることになります。
remote_prediction = mv.run(test_features, function_name="predict")
remote_prediction.show() # assuming test_features is Snowpark DataFrame
指定されたモデルでどのメソッドが呼び出せるかを確認するには、 mv.show_functions
を呼び出します。このメソッドの返り値は、 ModelFunctionInfo
オブジェクトのリストです。これらの各オブジェクトには以下の属性が含まれます。
name
: Pythonまたは SQL から呼び出せる関数名。target_method
:元のログモデルのPythonメソッド名。
SQL からの推論¶
モデルのメソッドを呼び出すには、 model_name!method_name(...)
構文を使います。モデルで利用可能なメソッドは、Pythonのモデルクラスによって決定されます。例えば、多くのタイプのモデルでは、推論にpredictというメソッドを使用します。
デフォルトモデルのメソッドを呼び出すには、以下の構文を使います。括弧内にメソッドの引数を含め、 FROM
句で推論データを含むテーブルを指定します。
SELECT <model_name>!<method_name>(...) FROM <table_name>;
モデルの特定のバージョンからメソッドを呼び出すには、モデルの特定のバージョンへのエイリアスを作成し、エイリアスを介してメソッドを呼び出します。
モデルの特定のバージョンからメソッドを呼び出すには、以下の構文を使います。
WITH <model_version_alias> AS MODEL <model_name> VERSION <version_or_alias_name>
SELECT <model_version_alias>!<method_name>(...) FROM <table_name>;
次の例では、 LAST
のエイリアスを使用して、モデルの最新バージョンを呼び出しています。
WITH latest AS MODEL my_model VERSION LAST
SELECT latest!predict(...) FROM my_table;
Tip
全モデルを見る SQL API リファレンスは こちら。