データブリックス ML ランタイム対スノーパーク ML

第 2 章: フルスプリント: Databricks ML ランタイム対スノーパーク ML
Kaggle からオープンにアクセス可能なデータセットを使用して、DBR ML ランタイムと Snowpark ML の比較を開始しました。データ設定プロセスは、探索的データ分析(EDA)手順を含む、前章で解明された手順を反映します。私たちは、本番稼働可能な機械学習パイプラインのあらゆる可能な側面をカバーしようとします。
データブリックのステップ:
Databricks は、データサイエンティスト/アナリスト/エンジニアがデータ関連の実験を実行できるように、ワークスペースの下にジュピターのようなノートブックを提供します
この比較の一部として評価された機能:
実験を追跡するための MLFlow 統合 | 変更履歴を提供します。 |
リアルタイムのコラボレーション。 | ライブラリエクスプローラ |
LLM パワードアシスタント。 | SQL、Python、PySpark、Scala をサポートします |
データカタログブラウザ。 | ローカルマシンとの接続。 |
コメントをサポートします。 |
1
まず、DBFS にデータをアップロードし、「ノートブックにテーブルを作成」ボタンをクリックしてそれを使用します'
2
自動生成されたコードで新しいノートブックが作成されました
3
これにより、自動的にスキーマが推測され、データフレームが作成されました。
4
モデルの説明のために、サードパーティのライブラリをインストールする「Sharp」ライブラリをインストールしようとします
5
また、パイプラインに必要なネイティブの pyspark ライブラリもインストールします
6
また、データ型をより適切に制御するために、スキーマを課してデータフレームを作成することもできます
7
これでデータに満足です
8
ビューまたはテーブルを作成するオプションもあります
9
SQL を使用して、マジック %sql インラインを使用してテーブルをクエリします
10
データフレームからテーブルを作成することもできます。保存されると、このテーブルはクラスタの再起動後も保持され、異なるノートブックのさまざまなユーザーがこのデータをクエリできるようになります
11
スペースを持つ列名はほとんどないため、修正します
12
次に、いくつかの列の名前を変更する関数を作成し、‘Engine’ から基本的な変換を行います。たとえば、正規表現を使用して立方体容量を抽出し、他の列の場合は整数などに変換します
13
当社のデータフレームには、次の列とデータ型があります
14
関連する詳細が抽出されたら、‘Engine’、‘Max-Power’、および ‘Max_Torque’ を整数にキャストします
15
Databricks ノートブックは、データサイエンティストやデータアナリストなどの開発者が一変量および二変量プロットを実行するためのプラットフォームを提供します。これは、Seaborn や Matplotlib などのライブラリを利用してノートブックのチャートを更新することで実現できます。
16
17
また、いくつかの二変量解析も見られます
18
いくつかのサンプル出力画像

19
20
21
データクリーニングや前処理などの手順は、サードパーティのインピュテーションツールを使用できるため、データブリックを使用する際に非常に簡単です。単純なロジックを構築することで機能エンジニアリングを実現し、実行することができます ユーザー定義関数のヘルプの有無にかかわらず。
22
さらに機能エンコーディングを行うために、データブリックは、python およびネイティブ pyspark でのカテゴリエンコーディングのパッケージを提供します。
23
Databricks は、設計された機能を格納するために設計された統合機能ストアサービスを提供しています。これらの機能は、データサイエンティストのチーム間で効率的に利用および共有できます。このプラットフォームはオンラインとオフラインの両方の機能ストアをサポートしており、モデル トレーニングから推論(リアルタイム、バッチ、ストリーミング)までのニーズに対応します。Databricks は、その印象的なユーザーインターフェイスに加えて、貴重なデータリネージの洞察もユーザーに提供します
24
25
自動生成されたコードで新しいノートブックが作成されました
26
Databricks では、ノートブックインターフェイスで sklearn モデルと spark’s MLlib モデルをトレーニングできます。MLlib モデルは、分散データに対して動作するように最適化されています, ビッグデータのシナリオに適しており、分散計算を実行します(これは、クラスター内の複数のノードにまたがるデータのパーティショニングと処理を処理できることを意味します)。このデータを使用して、ネイティブ MLlib パッケージを使用して、RandomForest、Adaboost、GradientBoosting などのモデルを実行および比較しました。次の関数は、ネイティブの spark ライブラリを使用してモデルを作成して実行します。
27
同じノートブックの sklearn パッケージを使用して、同様のモデリングを試すことができます。
28
Databricks は、最先端の HYPEROPT – をベイズ最適化に裏打ちされたハイパーパラメータチューニング手法を統合した「SparkTrials」機能による並列ハイパーパラメータトレーニングの組み込みサポートを提供します。あるいは、OPTUNA のようなライブラリは、カスタマイズされたハイパーパラメータチューニングにも使用できます。出力を使用して、最適なモデルと比較できます
29
最良のモデルのパラメータは次のとおりです
30
Databricks には独自の組み込み MLFlow ‘Experimentation’ タブがあり、データ サイエンスのライフサイクルを追跡するためにすぐに利用できます
31
ML のすべての実験/バージョンは、同じ ‘Experiments’ タブで実行されます。
32
モデルの説明に関しては、Databricks ノートブックはどの Jupyter ノートブックにも同様の機能を提供します。SHAP ライブラリを使用して機械学習モデルを説明することができ、Pyspark および Pandas UDFs を使用して SHAP 計算を強化することもできます。さらに、Databricks では、LIME などのサードパーティライブラリも利用できます。
33
モデルの説明のために、シェイプリープロットを作成できるようになりました
34
自動生成されたコードで新しいノートブックが作成されました
35
Databricks では、あらゆるユースケースに対応するリアルタイム、バッチ、ストリーミングの展開戦略をサポートしています。当面は、リアルタイム推論用のエンドポイントとしてモデルを展開しました。
36
Databricks は、コードの保存とバージョン管理のための複数の git プロバイダーとの接続を備えたリポジトリサービスも提供します。
スノーパーク ステップ -
Snowflake は、データサイエンティスト/アナリスト/エンジニアのためのデータサイエンスアクティビティと実験を実行するためのワークシートをすぐに提供します。
- SQL および Python ワークシートのサポート。
- 変更履歴を提供します
- データエクスプローラ
- 事前定義パッケージエクスプローラー
- ローカルマシンへの接続(jupyter のようなインターフェイスを使用する方法のみ)
特徴
1
シナリオ 1 と同じ方法で、Snowpark にデータをアップロードできます。
2
Snowpark では、ユーザーは環境によって事前に提供されたライブラリの使用に制限されています。サードパーティのパッケージを使用するには、ユーザーは Jupyter Notebook インターフェイスを使用して、クラスターとローカル環境間の接続を確立する必要があります, または、記事に詳述されているように、面倒な回避策をナビゲートします。
3
ワークシートは py ファイルであるためグラフィカル出力を提供しないため、ユーザーには次の選択肢が残ります。プロットを保存し、ワークシートの外で手動で表示します。ワークシートの “chart” 機能を使用します。ワークシートは、データを視覚化するための “chart” オプションを提供しますが、組み込みチャートは 4 種類のみに制限されています。
4
自動生成されたコードで新しいノートブックが作成されました
5
Snowpark では、設定に名前を貼り付けて実行することで、機能を実行するための潜在的な問題があります。この厄介な機能は開発中に問題を引き起こす可能性があり、追加するのを忘れてしまう傾向があります。データクレンジングを簡単に実行する機能があります。Databricks との主な違いは、ワークシート内でのサードパーティパッケージの利用が潜在的に問題を引き起こす可能性があることです。snowflake。ml。preprocessing 内に存在する組み込みライブラリを使用することで、snowpark データフレームを使用できます ユーザーは anaconda-python ライブラリを使用できます。多くのライブラリをインポートすることで、テストに成功しました。
6
Snowpark’s ネイティブデータフレームと pandas データフレームの違いをテストするために、多くの関数を作成してテストすることができました。2 つのコード サンプルは、スノーパークのデータフレームとパンダのデータフレーム間で同じ種類の変換を使用し、次のようにして、pandas(tempPdDf['ENGINE' のサブ設定機能の使用に若干の違いがあります'])対スノーパークデータフレーム(with_column)。UDF fix_values を使用してクリーンなモジュラーコードを取得する Snowpark データフレーム変換コード:
7
帰属 ‘na’ を ‘Empty’ として関数を作成しようとすると、同様の違いが観察されました。Snowpark のデータフレームでは、辞書を使用してパラメーターを渡す必要があります。例: cat_column_dictonary = {feature:'Empty' pandas の feature_list[0]} の機能については、さらに簡潔にすることができます 提供された置換値のデータ型が列のデータ型と一致しない場合, filna は警告を生成し、その列をスキップします。これは、辞書を使用して、各列に置換値を指定することで回避できます
8
組み込みの ‘median’ 関数を使用して中央値を加入しようとしているときに見つかったもう 1 つの違いは、最終値を抽出する前に変換を収集して使用する必要があるビューを返すことです。中央値(特徴)。as_(特徴)。collect()[0]。as_dict()。get(特徴)
9
カテゴリやフィーチャーエンジニアリングなどの機能はスムーズで、問題なく実現しました。しかし、pyspark とパンダ対スノーパークのデータセットの使用方法には違いがあります
10
11
Snowpark はリンクとリンクに基づいてフィーチャーストアをサポートしていますが、これはスノーサイト/ワークシートの一部ではなく、ローカル開発中にのみ利用可能であることがわかりました。これは、Databricks の一環として調査したものとは対照的です。
12
スノーパークでは、スノーフレーク’s ml モデリングパッケージが提供する sklearn とモデルをトレーニングできます
13
Snowpark のワークシートは hyperopt の使用に限定されていますが、これは pandas データフレームでの使用に限定されており、snowpark ネイティブデータフレームでは使用できません。OPTUNA のようなサードパーティライブラリのインストールは面倒であることがわかります。さらに、並列/分散ハイパーパラメータチューニングの組み込みサポートは存在しません。それにもかかわらず、これを達成することは、拡張されたアプローチを通じて行うことができます。このアプローチでは、pyspark で hyperopt を持つ関数を使用した Databricks と比較して、UDTF(ユーザー定義テーブル関数)を作成する必要があります。
14
このアプローチに基づいて、分散ハイパーパラメーターチューニングも試すことができましたが、スノーパークネイティブデータフレームを使用できず、1 つのモデル RandomForestRegressor であるが範囲を持つパンダに変更する必要がありました ハイパーパラメータの結果と結果は満足のいくものでした。
15
MLflow を試してみたところ、Snowpark はスノーパーク/アナコンダを介して mlflow を利用していることがわかりました。つまり、MLflow を使用して Python ストアドプロシージャからトレーニングジョブを記録できます。リンク 1 とリンク 2 への参照。ただし、実験の追跡や、モデルのアーティファクト/実行とそれに対応するメトリクスの確認には、Azure が使用されます。スノーパークのデータフレームだけを使うことに興味があったので、pyspark Mllib は MLflow をネイティブにサポートしているので、これを深く掘り下げませんでした。
16
ワークシートでは、ユーザーは SHAP ライブラリを使用して計算を実行できますが、ユーザーがプロットを保存して手動で表示する必要があるプロットを確認できます。これを回避するために、ユーザーはローカル環境との接続のサポートを使用して、VS コードで jupyter ノートブックを実行し、プロットをリアルタイムで表示できます。
17
モデルはバッチ推論にのみ展開でき、リアルタイム展開やストリーミング展開はサポートされません。バッチ展開では、次の 2 つのアプローチが発見されました:
18
モデルをローカルでトレーニングし、ステージにアップロードして、UDF が呼び出されたステージからロードできます。
19
20
スノーパークでは、スノーフレークの ml モデリングパッケージによって提供される Sklearn とモデルを訓練することができます
21
モデル出力を SPROC に変換するために使用される基礎となるコードを示す ‘procedure definition’ が利用可能であることがわかります。
22
Git サポートは snowflake’s Snowpark では利用できません。Databricks のリポジトリとは異なり、チームは環境上で git を直接サポートすることはできませんでした。スノーパークの展開では、リンクから新たに利用できる Snowpark コンテナサービスが登場しました。Snowpark コンテナサービス(SPCS)は、簡単に展開、管理、管理できる完全に管理されたコンテナサービスです, また、コンテナ化されたサービス、ジョブ、機能をすべて Snowflake のセキュリティとガバナンスの境界内で拡張し、データの移動をゼロにする必要があります。これは、プライベートビューとして顧客のサブセットにのみ利用可能であったため、それ以上探索することはできませんでした。注: VS Code などのプラットフォームでローカルの Jupyter ノートブックを使用して接続することで、この問題を克服し、ローカルマシンから GitHub にコードをプッシュできます。
Databricks は、CSV ファイルをすばやくアップロードして分析するプロセスを簡素化します。ノートブックは直感的なインターフェイスと、さまざまな一般的な Python プロットライブラリを活用する機能を提供します。
対照的に、Snowflake では、データアップロードの前にテーブルを最初に作成する必要があり、開始するだけの複数の手順を導入しています。ワークシートは、複数のコードブロックの処理に関してはあまりユーザーフレンドリーではなく、ノートブックの好まれるユーザーエクスペリエンスからの大きな逸脱を表しています。プロットライブラリがどの程度利用できるかは不明なままであり、解決が難しい課題につながることがよくあります。
タスク | スノーパーク(データフレーム) | Databricks(pyspark データフレーム) |
---|---|---|
データ読み込み | データセットをアップロードする前にテーブルを作成する必要があります。 | データセットをローカル ファイル システムから Databricks ファイル システム(DBFS)に転送します。テーブルの作成はオプションです |
環境 セットアップ | 既存のライブラリに限って、ワークシートに新しいライブラリを直接インストールすることはできません。回避策が利用可能。 | 必要なライブラリを問題なくインストールするのは簡単です。 |
データクリーニング | ![]() | ![]() |
EDA | 単変量、二変量、多変量 | グラフをプロットできないため、プロットが限られているワークシートのチャート機能を使用する必要があります。 | Databricks ノートブックに seaborn や matplotlib などのライブラリを使用してエンドツーエンドの EDA を実行できます。 |
データ 変換 | ![]() | ![]() |
Null 値インピュテーション | ![]() | ![]() |
カテゴリーエンコーディング | ![]() | ![]() |
特徴 エンジニアリング | ![]() | ![]() |
フィーチャーストア | ネイティブにご利用いただけない機能ストア。回避策に必要な外部サービス。 | 社内機能ストアもご利用いただけます。 |
列車テストスプリット | ![]() | ![]() |
モデル トレーニング | Snowflake。ml。modeling、sklearn、テンソルフロー、pytorch モデルをサポートしています。 | Spark MLlib、テンソルフロー、ピトーチモデルをサポート。 |
オート ML | 自動 ML のサポートはありません | 自動機械学習実験を構築するための組み込み自動 ML サービスを提供します。 |
ハイパーパラメータチューニング | 分散型ハイパーパラメータチューニング | Snowflake。ml。modeling モデルの場合、GridSearch または RandomSearch を独占的に利用できます。Sklearn や tensorflow などの他のライブラリを使用すると、ハイパーパラメーターのチューニングに hyperopt の追加の利点が得られます。 | Hyperopt、Optuna、GridSearchCV、および RandomSearchCV を活用して、MLlib、sklearn、またはテンソルフロー モデルを微調整する機能があります。Hyperopt による分散/並列ハイパーパラメータチューニングもサポートしています。 |
MLflow と実験追跡。 | MLflow サポートが組み込まれていないため、AML 実験などの外部サーバーに接続できます | MLflow 実験サポート。 |
モデルの説明可能性 | SHAP をサポートしていますが、ワークシートでプロットを生成できません。 | 分散 SHAP をサポートする SHAP とライムをサポート。 |
エンドポイントでのモデル展開 | デプロイサービスは現在、Snowpark コンテナサービスとしてプライベートプレビュー中です。 | Databricks モデルサービングを使用して利用できます。 |
モデルの展開 | バッチ展開が利用可能 | Databricks モデルサービングを使用して利用できます。 |
LLMs | No inbuilt LLM, can support open source | Databricks モデルサービングを使用して利用できます。 |