バッチ推論ジョブ¶
注釈
プレビュー機能 --- パブリック
snowflake-ml-pythonバージョン1.26.0以降、パブリックプレビューでサポートされています。
Snowflakeバッチ推論を使用して、静的または定期的に更新されるデータセットに対して、効率的で大規模なモデル推論を可能にします。バッチ推論 API はSnowpark Container Services(SPCS)を使用して、大規模なスループットとコスト効率に最適化された分散コンピューティングレイヤーを提供します。
バッチ推論を使用する場合¶
ワークロードに run_batch メソッドを使用すると、次のことが可能になります。
画像、音声、またはビデオファイルの処理、または非構造化データのマルチモーダルモデルの使用
数百万または数十億の行に対して推論を実行します。
パイプラインの個別の非同期ステージとして推論を実行します。
Airflow DAG 内またはSnowflakeタスクのステップとして推論を統合する。
制限事項¶
マルチモーダルのユースケースでは、暗号化はサーバー側でのみサポートされます
パーティションモデルはサポートされていません
始めましょう¶
モデルレジストリに接続¶
Snowflakeモデルレジストリに接続し、次のようにモデル参照を取得します。
バッチジョブを実行する¶
この API はSnowpark Container Services(SPCS)ジョブを使用して、推論ワークロードを起動します。推論を実行すると、コンピューティングは自動的にウィンドウダウンし、追加料金は発生しません。高レベルでは、この API は次のようになります。
ジョブ管理¶
以下のメソッドを使用して、ジョブのリストの取得、ジョブのキャンセル、ジョブのハンドルの取得、またはジョブの削除を行うことができます。
注釈
ML ジョブ APIs の``result`` 関数はバッチ推論ジョブはサポートされていません。
推論データを指定する¶
バッチ推論には構造化データまたは非構造化データを使用できます。ワークフローに構造化データを使用するには、run_batchメソッドに SQL クエリまたはデータフレームを提供します。
非構造化データの場合は、Snowflakeステージからファイルを参照できます。ファイルを参照するには、ファイルパスでデータフレームを作成します。
データフレームをrun_batchメソッドに提供します。run_batchは、モデルにファイルのコンテンツを提供します。
構造化入力¶
以下は、入力の可能性の範囲を示す例です。
非構造化入力(マルチモーダル)¶
非構造化データの場合、 run_batch メソッドは、入力データフレームで提供された完全修飾ステージパスからファイルを読み取ることができます。次の例は、構造化されていない入力データを指定する方法を示しています。
ステージ内のすべてのファイルをデータフレームとして自動的に一覧表示するには、次のようなコードを使用します。
データの型の表現¶
Run_batchは、ファイルをモデル互換の形式に自動的に変換します。
モデルは以下のいずれかの形式のデータを受け入れることができます。
RAW_BYTES
BASE64
たとえば、ステージに PNG 形式で保存された画像があり、モデルが RAW_BYTES を受け入れる場合、 input_spec 引数で、Snowflakeがデータを変換する方法を指定できます。
次のコード例は、ステージ内のファイルを RAW_BYTES に変換します。
column_handling 引数は、Xのパス列に完全なステージパスが含まれることをフレームワークに伝え、そのファイルの生バイトでモデルを呼び出します。
出力(output_spec)¶
ここに示すように、ファイル出力を格納するステージディレクトリを指定します。
Snowflakeは現在、テキストを出力しParquetファイルとして保存するモデルをサポートしています。次のようにして、ParquetファイルをSnowparkデータフレームに変換できます。
パラメーターの引き渡し¶
モデルのシグネチャに、 ParamSpec で定義されたパラメーターが含まれている場合、 InputSpec の params 引数を使って推論時にパラメーター値を渡すことができます。ディクショナリに含まれていないパラメーターは、署名のデフォルト値を使用します。
ジョブの仕様¶
バッチ推論ワークロードのジョブレベルの設定(ワーカー数、リソース割り当て、実行パラメーターなど)を構成するには、 run_batch メソッドの job_spec 引数として JobSpec インスタンスを渡します。以下に例を示します。
ベストプラクティス¶
センチネルファイルの使用¶
様々な理由で、ジョブが途中で失敗することもあります。したがって、出力ディレクトリは部分的なデータになる可能性があります。ジョブの完了をマークするために、run_batchは出力ディレクトリ内に完了ファイル _SUCCESS を書き込みます。
部分的または誤った出力を避けるには:
センチネルファイルが見つかった後にのみ、出力データを読み取ります。
始めるには、空のディレクトリを指定します。
モード = SaveMode.ERROR でrun_batchを実行します。
例¶
カスタムモデルの使用¶
Hugging Faceモデルの使用¶
vLLM でのHugging Faceモデルの使用¶
タスク:テキスト生成¶
タスク:画像テキストをテキストへ¶
サンプルノートブック¶
エンドツーエンドの実行可能な例については、GitHubの`バッチ推論サンプルノートブック<https://github.com/Snowflake-Labs/sf-samples/tree/main/samples/ml/model_serving/batch_inference>`_をご参照ください。