Snowflake Notebooksからの機械学習機能の使い心地を確認してみた
データ事業本部 機械学習チームの鈴木です。
先日、Snowflake Notebooksがパブリックプレビューになりました。
Snowpark MLはじめ、Snowflakeの機械学習機能を利用するためのインターフェースとしての役割を担う機能だと思います。
機械学習機能を使う上で、どのような使い方になりそうか気になる動線を確認したのでご共有します。
Snowflake Notebooksについて
Snowflake上でいわゆるJupyter Notebookが使えるものとなります。
Snowflakeの機械学習機能としては、開発・検証向けのインターフェースの一つとして紹介されています。
(引用元:Getting Started with Snowflake ML)
DevelopersIOでは、nokomoro3さんが使い心地やGit連携機能を試してみた記事を書いてくれていました。特にSnowflake上で複数のNotebookを作成して様々な検証をすることが想定されるので、Git連携で検証した内容が保存・追跡できるのはとてもよいですね。
セルはPythonだけではなくSQLも用意されているため、Snowflake AI & MLの機能を気軽に呼び出せるのもポイントだと思います。
試してみた
以下、試した内容を記載します。内容はパブリックプレビュー段階のものになることにご留意ください。
NotebookからのSnowflakeへの接続
Notebook作成時に、デフォルトでセッションの作成方法が記載されているのでこれにしたがいます。
from snowflake.snowpark.context import get_active_session
session = get_active_session()
このセッションを使い、Snowparkのデータフレームを作成することで、Snowpark ML Modelingの入力に使うことができます。
input_tbl = f"{session.get_current_database()}.{session.get_current_schema()}.{INPUT_TABLE}"
input_df = session.table(input_tbl)
上記の例では、データベースやスキーマは、Notebook作成時に指定したものをセッションから取得しています。
Snowpark MLのインストール
Snowpark MLはPackagesよりインストールすることで利用できました。
インストール中はRun allなどセルの実行ができなくなるため、完了するまでしばらく待ちます。
例えば以下のようにインポートしてみて、インストールできていることを確認しました。
import snowflake.ml.modeling.preprocessing as snowml
SQLセルとの組み合わせ
SQLのセルがあるため、ML Functionsも気軽に実行することができました。
(Predict Ad Impressions with ML-Powered Analysisのサンプルの実行結果)
SQLセルのメリットとしては、現状Snowparkのsnowflake.snowpark.Session.sqlではML Functionsの機能が実行できないことを想像して頂けると使いやすさが分かりやすいと思います。
PythonスクリプトとSQLを組み合わせて作業をすることは、Snowflakeではよくあります。例えば以下です。
- Snowpark ML Modelingでモデルを訓練し、Model Registryに登録したあと、SQLのプロシージャにしてタスク化する
- Snowpark DataframeやSnowpark ML Modelingで生データを前処理した後、テーブルに保存し、ML Functionsで処理する
こういった作業を単一のNotebookでできるのはとても使いやすいですね。
最後に
簡単にですが、機械学習用途でSnowflake Notebooksを利用する際の気になる動線について確認してみました。
PythonとSQLの両方を使用できるため、Snowflakeを使う際の用途によく合っており、非常に使いやすいです。
一般提供開始が待ち遠しい機能ですね!