Snowflake Datasets¶
データセットは、機械学習ワークフロー用に特別に設計された新しいSnowflakeスキーマレベルのオブジェクトです。Snowflake Datasetsは、バージョンごとに整理されたデータのコレクションを保持します。各バージョンは、データのマテリアライズされたスナップショットを保持し、保証された不変性、効率的なデータアクセス、一般的な深層学習フレームワークとの相互運用性を備えています。
Snowflake Datasetsは次のような場合に使用します。
再現性のある機械学習モデルのトレーニングとテストのために、大規模なデータセットを管理し、バージョン管理する必要があります。
分散トレーニングやデータストリーミングには、きめ細かいファイルレベルのアクセスやデータシャッフリングが必要です。
外部の機械学習フレームワークやツールと統合する必要があります。
ML モデルの作成に使用された系統を追跡する必要があります。
データセットはマテリアライズドデータオブジェクトです。Snowflake ML または SQL コマンドを使用してやりとりできます。Snowsightデータベースオブジェクトエクスプローラーには表示されません。
注釈
データセットにはストレージコストがかかります。コストを最小化するために未使用のデータセットを削除します。
2025年3月20日 の一般公開リリース以前に作成されたデータセットは、複製をサポートしていません。詳細については、 複数のアカウント間にわたる複製とフェールオーバーの概要 をご参照ください。
インストール¶
Dataset Python SDK はバージョン1.7.5からSnowpark ML (Pythonパッケージ snowflake-ml-python)に含まれています。インストール手順については、 Snowflake ML をローカルで使用する をご参照ください。
必要な権限¶
データセットの作成には、 CREATE DATASET スキーマレベルの権限が必要です。Datasetsのバージョンの追加や削除など、データセットを変更するには、Datasetに OWNERSHIP が必要です。データセットからの読み込みに必要なのは、そのデータセット(または OWNERSHIP)の USAGE 権限のみです。Snowflakeでの権限付与の詳細については、 GRANT <権限> ... TO ROLE をご参照ください。
Tip
setup_feature_store メソッドまたは 権限設定 SQL スクリプト のいずれかを使用して、Snowflake機能ストアの権限を設定すると、データセットの権限も設定されます。これらのいずれかの方法で機能ストアの権限をすでに設定している場合は、これ以上の操作は必要ありません。
Datasetsの作成および使用¶
データセットの作成と管理は、 SQL またはPythonのどちらでも可能です。SQL コマンドの使用情報については、 SQL コマンド を参照してください。Python API の使用情報については、 snowflake.ml.dataset を参照してください。
snowflake.ml.dataset.create_from_dataframe 関数にSnowpark DataFrame を渡してデータセットを作成します。
Datasetsはバージョン管理されています。各バージョンは、データセットが管理するデータの、不変の、ポイントインタイムのスナップショットです。Python APIには、与えられたデータセットが使用するために選択されているかどうかを示す Dataset.selected_version プロパティが含まれています。このプロパティは、 dataset.create_from_dataframe および dataset.load_dataset ファクトリーメソッドによって自動的に設定されます。したがって、データセットを作成すると、作成されたバージョンが自動的に選択されます。Dataset.select_version および Dataset.create_version メソッドを使用して、明示的にバージョンを切り替えることもできます。データセットからの読み込みは、アクティブな選択バージョンから読み込みます。
Datasetsからのデータの読み込み¶
データセットのバージョンデータは、Apache Parquetフォーマットの均等サイズのファイルとして保存されます。APIは、カスタムフレームワークコネクタをサポートするために拡張可能です。
Datesetからの読み込みには、アクティブな選択バージョンが必要です。
TensorFlowに接続する¶
Datasetsを TensorFlow の tf.data.Dataset に変換し、バッチでストリーミングすることで、効率的な学習と評価を行うことができます。
PyTorchに接続する¶
Datasetsは、PyTorchDataPipesへの変換もサポートしており、効率的なトレーニングと評価のためにバッチでストリーミングできます。
Snowpark MLに接続する¶
データセットをSnowpark DataFramesに変換して、Snowpark ML Modelingと統合することもできます。変換されたSnowpark DataFrame は、Dataset作成時に提供された DataFrame と同じではなく、Datasetバージョンのマテリアライズされたデータを指しています。
ファイルへ直接アクセスする¶
Dataset API は、 fsspec インターフェースも公開します。このインターフェースは、PyArrowや Daskなどの外部ライブラリや、 fsspec をサポートし、分散および/またはストリームベースのモデル学習を可能にするその他のパッケージとのカスタム統合を構築するために使用できます。
データセット、Feature Store、モデルレジストリ、 ML リネージ¶
データセットは、Snowflake ML のエコシステムに深く統合されており、Snowflake内でシームレスなエンドツーエンドのモデル開発と MLOps エクスペリエンスを提供します。
FeatureStore.generate_datasetAPI を使用して、Snowflake Feature Storeの機能からデータセットを作成できます。データセットはSnowpark DataFrames に変換され、モデルトレーニングのためにSnowpark ML Modelingに渡されます。学習されたモデルはSnowflakeモデルレジストリに記録され、ソースデータ、機能ビュー、データセット、モデルをリンクする ML リネージグラフを自動的に完成させ、完全なエンドツーエンドのガバナンスを実現することができます。
SQL を使ってデータセットのバージョンから読み込む¶
標準的なSnowflake SQL コマンドを使用して、データセットバージョンからデータを読み込むことができます。SQL コマンドを使用して、以下の操作を行うことができます。
ファイルのリスト
スキーマの推測
ステージから直接データをクエリします。
重要
データセットから読み込むには、 USAGE または OWNERSHIP の権限が必要です。
データセットバージョンからファイルをリストする¶
データセットバージョンに含まれるファイルをリストするには、 LIST snow_url コマンドを使用します。データセットバージョン内のすべてのファイルをリストするには、次の SQL 構文を使います。
ファイルの分析と列定義の取得¶
INFER_SCHEMA 関数を使用して、データセットバージョンのファイルを分析し、列定義を取得します。データセットバージョンに含まれるすべてのファイルをリストするには、次の SQL の例を使用してください。
データセットバージョンの場所を取得するには、例で指定したパターンを使用する必要があります。
FILE_FORMAT の場合は PARQUET を指定してください。
次の例では、ファイル形式を作成し、 INFER_SCHEMA 関数を実行しています。
ステージクエリ¶
外部テーブルへのクエリと同様に、データセットバージョンに保存されているファイルから直接データをクエリします。次の SQL の例を参考にしてください。
SQL コマンド¶
データセットの作成と管理には、 SQL コマンドを使用できます。詳細については、次をご参照ください。
現在の制限事項と既知の問題¶
データセット名は SQL の識別子であり、 Snowflakeの識別子要件 に従います。
データセットバージョンは文字列で、最大長は128文字です。一部の文字は許可されていないため、エラーメッセージが表示されます。
広いスキーマ(約4,000列以上)を持つデータセットに対する一部のクエリ操作は、完全に最適化されません。今後のリリースでは改善される予定です。