Snowparkを学ぶにあたりSnowpark MLについても概要を触れていきたいと思い
Snowflake はデータウェアハウスであると同時に、Snowpark ML を用いることで 機械学習モデルのトレーニングや推論も内部で実行することができる。
この記事では、Snowpark ML を用いた機械学習パイプラインの推奨構成と、その背景にある考え方の学習メモです。
推奨される機械学習パイプラインの構成
以下は、Snowflake による一般的な推奨事項です。
1. モデルのトレーニングは Snowpark 最適化済みウェアハウスで実行
Snowpark-optimized warehouse
は、Python や ML ベースのワークロードに最適化されています。
fit() 関数を呼び出すと、自動的に Stored Procedure が作成され、Snowflake 内でモデル学習が行われます。
通常の標準ウェアハウスでも実行できますが、最適化済みのものを使うことでリソース効率が向上します。
2. モデルの推論はベクトル化された Python UDF で行う
predict() 関数を実行すると、ベクトル化された一時的な Python UDF が生成されます。
推論処理は multi-node 標準ウェアハウス
上でスケーラブルに実行されるのが理想です。
UDFは軽量で高速、オンライン推論用途にも適しています。
3. モデルは Model Registry に保存・管理する
Snowflake では、Model Registry を提供しており、訓練済みモデルを保存・バージョン管理できます。
組織内での再利用や運用もこのレジストリを介して一元化して管理することができる。
よくある誤解と注意点
誤り: 「モデル推論も Snowpark-optimized warehouse で行うべき」
→ 推論処理には一般的に multi-node 標準ウェアハウス
が推奨されています。
誤り: 「Model Serving は Python UDTF を使うべき」
→ 現時点での推奨は ベクトル化 Python UDF を使った方式です(predict()で自動生成される)。
Snowpark ML が自動的に行ってくれること
- fit() → モデル学習用のストアドプロシージャを自動生成
- predict() → ベクトル化された Python UDF を自動生成
- モデルの登録 → Model Registry への保存・管理
- 特徴量の管理 → Feature Store の活用も可能
以上、snowflakeでMLを実行する際のトレーニング、推論のベストプラクティスの概要について備忘メモで記載しました。