実稼働環境でSnowflakeのオンライン特徴量ストアを使用する¶
Snowflake ML 特徴量ストアは、特徴量エンジニアリングのプロセス全体で特徴量を管理するのに役立ちます。
低レイテンシの推論を必要とするオンラインアプリケーションの場合は、オンライン特徴量ストアを使用して機能を提供します。
以下のセクションでは、Pythonアプリケーション内の特徴量を取得するプロセスを実稼働環境向けに実装する方法について説明します。これらのセクションには、次の操作を実行するコード例があります。
IrisデータセットをSnowflakeにロードする
Snowflakeへの接続を定義する
特徴量ストアと特徴量ビューを作成する
特徴量および特徴量値を取得する
モデルから予測を生成する
コード例はPythonで記述されています。他の言語で記述されたアプリケーションに対してこのワークフローを実行するには、その言語に固有のSnowflakeドライバーを使用します。詳細については、 ドライバー をご参照ください。
前提条件¶
Snowflakeでオンライン ML 特徴量の取得を実行するには、以下が必要です。
すでにSnowflakeにロードされているデータ
Snowflake特徴量ストア
特徴ビュー
各特徴量ビューでオンライン特徴量の使用が有効になっている
自分のSnowflake特徴量ストアの特徴量を使うこともできますが、まだ特徴量ストアがない場合は、以下のコードを使ってIrisデータセットをSnowflakeにロードすることができます。
データを環境に用意した後、特徴量ストアを作成します。次のコードは、特徴量ストアと、Irisデータセットからのさまざまなサンプルの id_entity エンティティを作成します。
注釈
Snowflake ML 特徴量ストアにはエンティティの概念があります。エンティティは、特徴量ビュー間の特徴量を整理するキーです。エンティティの詳細については、 エンティティの操作 をご参照ください。
特徴量ストアを作成した後、特徴量ビューを定義します。次のコードは、Irisデータセットから花弁とがく片の特徴量ビューを定義します。
特徴量値を取得する¶
特徴量ビューを登録し、各特徴量ビューのオンライン特徴量の使用を有効にすると、各特徴量ビューの特徴量値をアプリケーションに提供することができます。
特徴量値を取得するには、以下を実行します。
Snowflakeへの接続を設定する
アプリケーションの起動時に初期化するセッションとSnowflake特徴量ストアオブジェクトを作成する
特徴量ビューから特徴量を取得する
予測エンドポイントを作成し、そのエンドポイントから予測を取得する
重要
特徴量ストア API を使用するには、アプリケーションの環境に snowflake-ml-python>=1.18.0 をインストールする必要があります。
アプリケーションからSnowflakeに接続するには、認証方法として プログラムアクセストークン( PAT ) または キーペア認証 のいずれかを設定する必要があります。
クライアントを構成する¶
アプリケーションを初期化するときは、Snowflake ML 特徴量ストア API に接続して、必要な特徴量ストアPythonオブジェクトを作成する必要があります。
次のセクションを使用して、Snowflake ML 特徴量ストア API へのクライアントの接続を構成します。
プログラムアクセストークン( PAT )を構成する¶
アプリケーションからSnowflakeに接続するには、次のコードで次の接続パラメーターを指定します。
schema- Snowflake特徴量ストアの名前database- スキーマまたは特徴量ストアを含むデータベースrole- 特徴量ストアからの読み込みに必要なロール。詳細については、 オンライン特徴量の作成とサービングへのアクセスを提供する をご参照ください。password- 自分の PAT 。
アプリケーションからSnowflakeに接続するには、次のコードで次の接続パラメーターを指定します。
schema- Snowflake特徴量ストアの名前database- スキーマまたは特徴量ストアを含むデータベースrole- 特徴量ストアからの読み込みに必要なロール。詳細については、 オンライン特徴量の作成とサービング をご参照ください。private_key_file- 秘密キーファイルprivate_key_file_pwd- 秘密キーファイルへのパスワード
セッションおよび特徴量ストアオブジェクトを作成する
接続パラメーターを定義したら、アプリケーションがSnowflakeに接続するために使用するセッションと特徴量ストアオブジェクトを作成します。
次のコードは、次を実行します。
アプリケーションがSnowflakeと通信するために使用するクライアントであるSnowflakeセッションを作成します。
特徴量取得の並列処理を有効にするために、スレッドプールエグゼキューターを構成します。
特徴量ストアから取得する特徴量をリストします。
特徴量ストアリーダークライアントを初期化します。このオブジェクトは、Snowflakeセッションをラップします。これは、アプリケーションが特徴量ストアとやり取りする主な方法です。
定義した特徴量ビューを初期化します。これらを独自の特徴量に置き換えることができます。
使用中のパスのオンライン特徴量を取得する¶
アプリケーションの初期化方法を定義したら、予測エンドポイントを作成できます。
アプリケーションがリクエストを処理する方法を定義するさまざまな方法があります。次のPythonコードは、次を実行します。
アプリケーションの予測エンドポイントを定義する
JSON リクエストからキーを取得する
キーを使用して、特徴量ビューから特徴量値を取得する
これらの特徴量値をモデルに渡す
モデルから予測を取得する
応答で予測を返す
上記のコードは仮想の run_inference 関数を呼び出しています。独自の推論関数は、リモートでホストされているかアプリケーションメモリ内でホストされているかに関係なく、モデルから予測を取得できます。
上記のコードの予測エンドポイントはキーを受け取り、そのキーの予測を返します。データには、単一のサンプルを特徴付ける複数のキーがある場合があります。上記のコードは、独自のユースケースに適応できる例です。