Snowpark ML: Snowflake用機械学習ツールキット¶
注釈
Snowpark ML ライブラリは、パッケージバージョン1.1.1で一般公開されます。まだ開発中の機能には、プレビュー機能としてマークされているものがあります。近日提供予定のSnowpark ML 特徴量のドキュメントをいち早く入手するには、Snowflakeの担当者にお問い合わせください。
Snowpark ML は、機械学習モデルの構築と展開のための SDKs と基になるインフラストラクチャを含むツールのセットです。Snowpark ML を使用すると、データの前処理とトレーニング、管理、そして ML モデルの展開をすべてSnowflake内で実行できます。機械学習ワークフローのあらゆるステージで、Snowflakeの実証済みのパフォーマンス、スケーラビリティ、安定性、ガバナンスのメリットを享受できます。
Snowpark ML はSnowpark Pythonと連動しており、Snowpark DataFrames を使用してトレーニングデータやテストデータを保持し、予測結果を受け取ることができます。
互換性のある任意の IDE でSnowpark Pythonクライアントアプリケーションを記述する場合に、Snowpark ML を使用することができます。
Snowpark ML の主な構成要素¶
Snowpark ML は、 APIs によりエンドツーエンドの機械学習開発および展開プロセスの各ステージをサポートし、Snowpark ML DevelopmentとSnowpark ML Opsの2つの主要コンポーネントを含んでいます。
Snowpark ML Development¶
Snowpark ML Development には、Snowflake内で効率的にモデルを開発するために使用できるPython APIs のコレクションが含まれています。
モデリングパッケージ (
snowflake.ml.modeling
)は、データ前処理、特徴量エンジニアリング、モデルトレーニングのための APIs を提供します。このパッケージには、 Snowpark用に最適化されたウェアハウス が提供するコンピューティングリソースを使用してスケーラブルなデータ変換を実現する APIs を備えた前処理モジュールも含まれています。これらの APIs は、scikit-learn、xgboost、lightgbmなどのおなじみの ML ライブラリに基づいています。フレームワークコネクタ のセットは、ネイティブデータローダー形式で、PytorchとTensorflowフレームワーク用に最適化された安全で高パフォーマンスのデータプロビジョニングを提供します。
Snowpark ML Ops¶
Snowpark ML Opsは、モデル管理機能とSnowflakeへの統合展開を提供して、Snowpark ML Development API を補完します。
FileSetAPI は、 Python fsspec 準拠の API により、クエリやSnowpark DataFrame からSnowflake内部ステージにデータを具体化するためのもので、データで作業し、 PyTorch または TensorFlow にデータをフィードする ための複数の便利なメソッドを提供します。
モデルレジストリは、Snowflake内でモデルを管理し、ベクトル化されたユーザー定義関数(UDFs)としてSnowflakeウェアハウスに展開するためのPython API です。モデルレジストリをいち早く入手するには、Snowflakeの担当者にお問い合わせください。
Snowpark ML のインストール¶
重要
Snowpark Connector for Python ライブラリへの最近の変更により、 PyArrow への依存関係が削除されました。Snowpark ML は PyArrow を必要としますが、Snowpark ML 1.1.2以前では明示的な依存関係はありません。Snowpark MLをインストールした場合や、Snowpark Connector for Pythonを最近アップグレードした場合は、 PyArrow を手動でインストールする必要が生じる場合があります。これを行うには、プロジェクトでcondaとpipのどちらを使用しているかによって、以下のコマンドのいずれかを使用します。
conda install pyarrow
python -m pip install pyarrow
Snowpark ML のすべての特徴量は、単一のパッケージ、 snowflake-ml-python
で提供されます。
Snowpark ML は、Snowflake condaチャネルから conda
コマンドを使用するか、Python Package Index(PyPI)から pip
を使用してインストールすることができます。Condaがお勧めです。
Snowflake condaチャネルからのSnowpark ML のインストール¶
Snowpark MLをインストールするconda環境を作成します。既存の環境を使用する場合は、このステップをスキップします。
conda create --name snowpark-ml
Conda環境をアクティブにします。
conda activate snowpark-ml
Snowflake condaチャネルからSnowpark MLをインストールします。
conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ snowflake-ml-python
ちなみに
Snowpark ML を操作する場合は、可能な限りSnowflakeリポジトリからパッケージをインストールして、Snowpark ML で検証済みのパッケージを確実に受け取れるようにしてください。
PyPI からのSnowpark ML のインストール¶
標準のPythonパッケージマネージャー、 pip
を使用して、Pythonパッケージインデックス(PyPI)からSnowpark ML パッケージをインストールできます。
警告
conda環境を使用している場合は、このインストール手順を使用しないでください。代わりに condaの命令 を使用します。
プロジェクトディレクトリに移動し、Python仮想環境を有効にします。
cd ~/projects/ml source .venv/bin/activate
Snowpark ML パッケージをインストールします。
python -m pip install snowflake-ml-python
オプションのモデリング依存関係のインストール¶
Snowpark ML Modeling APIs には、Snowpark ML の依存関係としてインストールされていない依存関係を必要とするものがあります。scikit-learnとxgboostパッケージは、Snowpark ML Modelingをインストールするとデフォルトでインストールされますが、lightgbmはオプションの依存関係です。 snowflake.ml.modeling.lightgbm
名前空間のクラスを使う予定の場合は、ご自身でlightgbmをインストールしてください。
以下のコマンドを使用してconda環境をアクティブ化し、Snowflake condaチャンネルからlightgbmをインストールします。
conda activate snowpark-ml
conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ lightgbm
以下のコマンドを使用して仮想環境をアクティブ化し、pipを使用してlightgbmをインストールします。
.venv/bin/activate
python -m pip install 'snowflake-ml-python[lightgbm]'
SnowflakeはSnowpark ML にオプションの依存関係を追加することがあります。pipを使ってオプションの依存関係をすべてインストールするには
.venv/bin/activate
python -m pip install 'snowflake-ml-python[all]'
Snowpark Pythonの設定¶
Snowpark PythonはSnowpark ML の依存関係であり、Snowpark ML をインストールすると自動的にインストールされます。ご使用のシステムにSnowpark Pythonが設定されていない場合は、追加の構成ステップが必要になることがあります。Snowpark Pythonの設定手順については、 Snowpark Pythonの開発環境の設定 をご参照ください。
Snowflakeに対する認証¶
Snowpark ML の一部では、Snowflakeでの認証コードが必要です。これは、 Python用Snowflakeコネクタ Connection
オブジェクトまたは Snowpark Python Session
のいずれかで実行できます。どちらの方法でも同じであるため、アプリケーションに最適な方法をご使用ください。
snowflake.ml.utils.connection_params
モジュールの SnowflakeLoginOptions
関数を使用して、接続またはセッションを作成するための構成設定を取得します。この関数は、 SnowSQL 構成ファイル内の名前付き接続から、または設定した環境変数から、接続のパラメーターを読み取ることができます。これらのパラメーターを含むディクショナリを返し、それを使用して接続やセッションを作成することができます。以下の例では、 SnowSQL 構成ファイルの名前付き接続 myaccount
から接続パラメーターを読み取っています。
Python用Snowflakeコネクタの接続を作成するには、 connection_params
が返す構成情報を snowflake.connector.connect
に渡します。
from snowflake import connector
from snowflake.ml.utils import connection_params
params = connection_params.SnowflakeLoginOptions("myaccount")
sf_connection = connector.connect(**params)
Snowpark Pythonセッションを作成するには、 Session
クラスのビルダーを作成し、ビルダーの configs
メソッドに接続情報を渡します。
from snowflake.snowpark import Session
from snowflake.ml.utils import connection_params
params = connection_params.SnowflakeLoginOptions("myaccount")
sp_session = Session.builder.configs(params).create()
これで、接続やセッションを必要とするSnowpark ML 関数に渡すことができるようになります。
ちなみに
既存のPython用Snowflakeコネクタ接続からSnowpark Pythonセッションを作成するには、セッションビルダーに接続オブジェクトを渡します。
session = Session.builder.configs({"connection": connection}).create()
コストの考慮事項¶
Snowflakeでモデルをトレーニングして使用すると、仮想ウェアハウスでコードを実行することになり、コンピューティングコストが発生します。これらのコストは、モデルの型や学習予測に使用するデータ量によって異なります。
Snowflakeのコンピューティングコストに関する一般的な情報については、 コンピューティングコストについて をご参照ください。
参考文献¶
Snowpark ML ModelingおよびSnowpark ML Opsに関する情報については、以下のリソースをご参照ください。
Modeling
Snowpark ML Googleドライブ のExamplesフォルダーには、Snowpark ML の特徴量を探索するためのJupyterノートブックが含まれています。
Ops
Snowflakeの担当者にお問い合わせいただくと、近日提供予定の特徴量に関するドキュメントをいち早く入手できます。
API 参照情報¶
Snowpark ML API リファレンス には、一般に公開されているすべての機能に関するドキュメントが含まれています。インタラクティブなPythonセッションでPythonの help
関数を使用すると、どのクラスの API の詳細なドキュメントも取得できます。例:
from snowflake.ml.modeling.preprocessing import OneHotEncoder
help(OneHotEncoder)