Snowflake ウェアハウスにおける推論

Snowflake Model Registry はデフォルトでウェアハウスでモデルメソッドを実行します。ウェアハウスでモデルを実行するのは、Snowflake condaチャネルで利用可能なパッケージで依存関係を満たすことができる小~中規模のモデル(CPU)に適しています。

注釈

また、 Snowpark Container Services (SPCS) コンピュートプール上でモデルを実行することもできます。このアプローチは、分散推論が有効な大容量モデルに適しています。詳細については、 Snowpark Container Servicesのモデルサービス をご参照ください。

開始するには、モデルレジストリの モデルをログに記録します。レジストリにログされたモデルのみが推論に利用可能です。registry.get_model(...).version(...) によって、モデルをログに記録したり、レジストリから既存のモデルをロードしたりすると、 ModelVersion オブジェクトが返され、このオブジェクトに対して run メソッドを呼び出すことができます。

Pythonからの推論

モデルのバージョンのメソッドを呼び出すには、 mv.run を使います。 mvModelVersion オブジェクトです。呼び出される関数の名前を指定し、推論データを含む Snowpark または pandas DataFrame と必要なパラメーターを渡します。このメソッドは、Snowflakeウェアハウスで実行されます。

メソッドの戻り値は、渡された DataFrame のタイプにマッチする Snowpark または pandas DataFrame です。Snowpark DataFrames は遅延評価されるため、DataFrame の collectshowto_pandas メソッドが呼び出されたときのみメソッドが実行されます。

注釈

メソッドを起動すると、レジストリへの接続に使用しているセッションで指定されたウェアハウスでメソッドが実行されます。 ウェアハウスサイズの指定 をご参照ください。

次の例は、モデルの predict メソッドの実行を示しています。このモデルの predict メソッドは、推論データ(ここでは test_features)以外にパラメーターを必要としません。必要な場合は、推論データの後に追加の引数として渡されることになります。

remote_prediction = mv.run(test_features, function_name="predict")
remote_prediction.show()   # assuming test_features is Snowpark DataFrame
Copy

指定されたモデルでどのメソッドが呼び出せるかを確認するには、 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>;
Copy

モデルの特定のバージョンからメソッドを呼び出すには、モデルの特定のバージョンへのエイリアスを作成し、エイリアスを介してメソッドを呼び出します。

モデルの特定のバージョンからメソッドを呼び出すには、以下の構文を使います。

WITH <model_version_alias> AS MODEL <model_name> VERSION <version_or_alias_name>
    SELECT <model_version_alias>!<method_name>(...) FROM <table_name>;
Copy

次の例では、 LAST のエイリアスを使用して、モデルの最新バージョンを呼び出しています。

WITH latest AS MODEL my_model VERSION LAST
    SELECT latest!predict(...) FROM my_table;
Copy

Tip

全モデルを見る SQL API リファレンスは こちら