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
Copy
python -m pip install pyarrow
Copy

Snowpark ML のすべての特徴量は、単一のパッケージ、 snowflake-ml-python で提供されます。

Snowpark ML は、Snowflake condaチャネルから conda コマンドを使用するか、Python Package Index(PyPI)から pip を使用してインストールすることができます。Condaがお勧めです。

Snowflake condaチャネルからのSnowpark ML のインストール

  1. Snowpark MLをインストールするconda環境を作成します。既存の環境を使用する場合は、このステップをスキップします。

    conda create --name snowpark-ml
    
    Copy
  2. Conda環境をアクティブにします。

    conda activate snowpark-ml
    
    Copy
  3. Snowflake condaチャネルからSnowpark MLをインストールします。

    conda install --override-channels --channel https://repo.anaconda.com/pkgs/snowflake/ snowflake-ml-python
    
    Copy

ちなみに

Snowpark ML を操作する場合は、可能な限りSnowflakeリポジトリからパッケージをインストールして、Snowpark ML で検証済みのパッケージを確実に受け取れるようにしてください。

PyPI からのSnowpark ML のインストール

標準のPythonパッケージマネージャー、 pip を使用して、Pythonパッケージインデックス(PyPI)からSnowpark ML パッケージをインストールできます。

警告

conda環境を使用している場合は、このインストール手順を使用しないでください。代わりに condaの命令 を使用します。

  1. プロジェクトディレクトリに移動し、Python仮想環境を有効にします。

    cd ~/projects/ml
    source .venv/bin/activate
    
    Copy
  2. Snowpark ML パッケージをインストールします。

    python -m pip install snowflake-ml-python
    
    Copy

オプションのモデリング依存関係のインストール

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
Copy

以下のコマンドを使用して仮想環境をアクティブ化し、pipを使用してlightgbmをインストールします。

.venv/bin/activate
python -m pip install 'snowflake-ml-python[lightgbm]'
Copy

SnowflakeはSnowpark ML にオプションの依存関係を追加することがあります。pipを使ってオプションの依存関係をすべてインストールするには

.venv/bin/activate
python -m pip install 'snowflake-ml-python[all]'
Copy

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)
Copy

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()
Copy

これで、接続やセッションを必要とするSnowpark ML 関数に渡すことができるようになります。

ちなみに

既存のPython用Snowflakeコネクタ接続からSnowpark Pythonセッションを作成するには、セッションビルダーに接続オブジェクトを渡します。

session = Session.builder.configs({"connection": connection}).create()
Copy

コストの考慮事項

Snowflakeでモデルをトレーニングして使用すると、仮想ウェアハウスでコードを実行することになり、コンピューティングコストが発生します。これらのコストは、モデルの型や学習予測に使用するデータ量によって異なります。

Snowflakeのコンピューティングコストに関する一般的な情報については、 コンピューティングコストについて をご参照ください。

参考文献

Snowpark ML ModelingおよびSnowpark ML Opsに関する情報については、以下のリソースをご参照ください。

Modeling

Ops

Snowflakeの担当者にお問い合わせいただくと、近日提供予定の特徴量に関するドキュメントをいち早く入手できます。

API 参照情報

Snowpark ML API リファレンス には、一般に公開されているすべての機能に関するドキュメントが含まれています。インタラクティブなPythonセッションでPythonの help 関数を使用すると、どのクラスの API の詳細なドキュメントも取得できます。例:

from snowflake.ml.modeling.preprocessing import OneHotEncoder

help(OneHotEncoder)
Copy