Snowflake ML Model Development

Snowflake ML は、オープンソース(OSS)のコードを使用して、データ上で直接機械学習モデルをトレーニングできる、柔軟性の高いプラットフォームです。このアプローチでは、複雑なデータ移動の必要性を排除すると同時に、お好みの ML ライブラリ、ツール、開発プロセスを使用することができます。

Snowflake ML はSnowflake互換のデータソースと統合し、最適化されたデータ取り込みパイプラインを使用して ML ワークフローを高速化します。高度な分散 APIs により、モデルのトレーニングとチューニングの効率的なスケーリングが可能になります。ML ランタイムイメージを使用するノートブック環境からSnowflake ML の全機能にアクセスできるため、パッケージやインフラストラクチャを管理する必要がありません。

モデルのトレーニングとチューニング

Container RuntimeでNotebooksを使ってビルド

ML のContainer Runtime は、一般的なパッケージが含まれたビルド済みの ML 環境を提供します。パブリックまたはプライベートの PyPI リポジトリからライブラリをセキュアに追加して、環境をカスタマイズできます。その分散型 APIs により、データを変換し、 AI/ML ワークフローを大規模に実行することができます。

Snowflakeの分散 APIs を使用してワークフローを拡張するだけでなく、Rayを使用することもできます。Rayは、Pythonアプリケーションをスケールするためのシンプルで柔軟な方法を提供するオープンソースのフレームワークです。複数のノードで並列にコードを実行することができます。Snowflake ML でRayを使用する方法の詳細については、 Ray入門ガイド を参照してください。

Snowflake ML Container Runtime Notebooksダイアグラム

Container Runtime Notebooks は、Container Runtimeと統合されたSnowflake Notebooksです。ビルド済みの ML ランタイムイメージ、分散処理、 CPU コンピューティングプール、 GPU コンピューティングプールなどの機能を提供します。データサイエンティストや ML エンジニアの場合、Container Runtime Notebooksは ML の開発タスクに特に役立ちます。

外部 IDE からのリモート実行

また、Visual Studio CodeやクラウドベースのJupyter Notebookなど、お好みの外部 IDE を使用し、Container Runtimeで ML ワークフローをリモート実行することもできます。ワークフローをリモートで実行するには、Pythonコード、関数、ファイルにアノテーションを付け、Container Runtimeインスタンスで実行します。詳細については、 Python関数をSnowflake ML ジョブとして実行する をご参照ください。

コードの開発

オープンソースオブジェクトに直接データを取り込む

Data Connector を使用して、Snowflakeテーブルおよびステージからpandasデータフレーム、 PyTorch データセット、 TensorFlow データセットなどのオープンソースオブジェクトへのデータのロードを最適化します。Data ConnectorはContainer Runtimeの分散処理を使用して取り込みを高速化します。データのロード後、どのオープンソースライブラリでもデータを使用できます。

Data Connectorを使用して、複数のソースから構造化データおよび非構造化データをロードできます。汎用性に加え、大容量データセットの読み込みにおいて、 to_pandas よりもパフォーマンスが向上しています。

OSS フレームワークを使ったトレーニング

既存のオープンソースコードを使用するか、オープンソースライブラリを使用してSnowflakeで直接モデルをトレーニングすることをお勧めします。

Snowflake ML のワークフローでは、以下の機能を使用できます。

  • Snowflake特徴ストア で構築および管理されるインポート機能。

  • Snowparkを使用 して、データの前処理と変換を拡張します。

  • Data Connector APIs でデータをメモリに取り込みます。

  • 最新の OSS フレームワークを活用して、機能の設計、モデルのトレーニング、評価を行います。

分散 APIs によるワークロードの拡張

ML モデルの大容量データセットでのトレーニングは、単一ノードのリソースを超えることがあります。Snowflakeの分散 APIs で、機能エンジニアリングとトレーニングのワークフローを複数のノードに拡張してパフォーマンスを向上させることができます。分散 APIs で、以下のことができます。

分散 HPO によるハイパーパラメーターのチューニング

Snowflakeに保存されているデータに最適化された Snowflake ML の分散 HPO で、ハイパーパラメーターのチューニングを高速化します。hyperoptやoptunaのようなオープンソースのライブラリを使うこともできます。

トレーニングワークフローの運用

Snowflake MLのジョブ を使用すると、Pythonベースの ML ワークロードをリモートで実行できるため、Snowflake Notebooksのような環境でインタラクティブに開発した作業を簡単に運用できます。これにより、セキュアで再現性のある ML トレーニングとスコアリングが保証され、 CI/CD パイプラインとシームレスに統合されます。

ML ジョブやパイプラインを定期的に実行するスケジュール

タスクの紹介 を使用して、複雑な DAGs を構築し、各タスクがワークフローのフェーズに対応する ML トレーニングパイプラインを表現します。これらのパイプラインはスケジュールで実行することも、イベントでトリガーすることもできます。必要に応じて各ステップにリソースを割り当て、パイプラインを最適化できます。Snowsightには、これらのパイプラインを表示、管理、変更するためのツールが組み込まれています。

Snowflakeの組み込みgit統合では、gitフックを設定して、 CI/CD の構成に最適な ML パイプラインを構築してトリガーすることもできます。