Azure Databricks での Spark モデルのバッチ スコアリング

Microsoft Entra ID
Azure Databricks
Azure Data Factory
Azure Blob Storage

この参照アーキテクチャでは、Azure Databricks を使用して、スケジュールに従って Apache Spark 分類モデルをバッチ スコアリングするスケーラブルなソリューションを構築する方法を示します。 Azure Databricks は、Azure に最適化された Apache Spark ベースの分析プラットフォームです。 Azure Databricks には、Databricks SQL、Databricks Data Science & Engineering、Databricks Machine Learning という、データ集中型アプリケーションを開発するための 3 つの環境が用意されています。 Databricks Machine Learning は、実験の追跡、モデルのトレーニング、機能の開発と管理、機能とモデルの提供のための管理サービスを組み込んだ、統合されたエンドツーエンドの機械学習環境です。 この参照アーキテクチャは、他のシナリオのために一般化できるテンプレートとして使用できます。 このアーキテクチャの参照実装は、GitHub で入手できます

Apache® および Apache Spark® は、Apache Software Foundation の米国およびその他の国における登録商標です。 これらのマークを使用することが、Apache Software Foundation による保証を意味するものではありません。

アーキテクチャ

Diagram showing batch scoring of Apache Spark classification models on Azure Databricks.

このアーキテクチャの Visio ファイルをダウンロードします。

ワークフロー

このアーキテクチャでは、一連の順番に実行されるノートブックに基づいた、Azure Databricks 内に完全に含まれるデータ フローが定義されます。 これは、次のコンポーネントで構成されます。

データ ファイル 。 参照実装では、5 つの静的なデータ ファイルに含まれているシミュレートされたデータ セットが使用されます。

取り込み 。 データ取り込みノートブックでは、入力データ ファイルを Databricks データ セットのコレクションにダウンロードします。 現実のシナリオでは、IoT デバイスからのデータが、Databricks にアクセス可能なストレージ (Azure SQL や Azure Blob Storage など) にストリーミングされます。 Databricks では、複数のデータ ソースがサポートされています。

トレーニング パイプライン。 このノートブックでは、取り込まれたデータから分析データ セットを作成する特徴エンジニアリング ノートブックが実行されます。 その後、Apache Spark MLlib スケーラブル機械学習ライブラリを使用して機械学習モデルをトレーニングするモデル構築ノートブックが実行されます。

スコアリング パイプライン。 このノートブックでは、取り込まれたデータからスコアリング データ セットを作成する特徴エンジニアリング ノートブックが実行され、スコアリング ノートブックが実行されます。 スコアリング ノートブックでは、トレーニング済みの Spark MLlib モデルを使用して、スコアリング データ セットの観察に関する予測が生成されます。 予測は、結果ストアに格納され、Databricks データ ストアの新しいデータ セットになります。

スケジューラ。 スケジュールされた Databricks ジョブは、Spark モデルによるバッチ スコアリングを処理します。 このジョブでは、スコアリング パイプライン ノートブックが実行され、スコアリング データ セットを構築するための詳細と結果データ セットの格納場所を指定する変数の引数が、ノートブックのパラメーターを通して渡されます。

ソリューションの詳細

このシナリオは、パイプライン フローとして構築されます。 各ノートブックは、操作 (取り込み、特徴エンジニアリング、モデルの構築、およびモデルのスコアリング) の各操作をバッチ設定で実行するように最適化されています。 特徴エンジニアリング ノートブックは、トレーニング、較正、テスト、またはスコアリング操作のすべてにとって一般的なデータ セットを生成するように設計されています。 このシナリオでは、これらの操作に対して一時分割戦略を使用するため、ノートブックのパラメーターを使用して日付範囲フィルターが設定されます。

このシナリオでは、バッチ パイプラインを作成しているため、パイプライン ノートブックの出力を調査するための一連の調査ノートブックがオプションとして用意されています。 これらのノートブックは、GitHub リポジトリ ノートブックのフォルダーにあります。

  • 1a_raw-data_exploring.ipynb
  • 2a_feature_exploration.ipynb
  • 2b_model_testing.ipynb
  • 3b_model_scoring_evaluation.ipynb

考えられるユース ケース

資産が多い業界の企業が、予期しない機械の不具合に関連するコストとダウンタイムを最小化することを望んでいます。 機械から収集される IoT データを使用して、予知メンテナンス モデルを作成できます。 企業は、このモデルを使用して、部品を積極的に保守し、不具合が発生する前にそれらを修繕できます。 機械部品を最大限使用できるようにすることで、コストを制御し、ダウンタイムを短縮できます。

予知メンテナンス モデルでは、機械からデータが収集され、部品の不具合例の履歴が保持されます。 その後、このモデルを使用して、部品の現在の状態を監視し、特定の部品で近い将来不具合が発生するかどうかを予測します。 一般的なユース ケースとモデリング アプローチについては、「予測メンテナンス ソリューションのための Azure AI ガイド」を参照してください。

この参照アーキテクチャは、機械部品の新しいデータの存在によってトリガーされるワークロード用に設計されています。 処理には次の手順が含まれます。

  1. 外部データ ストアから Azure Databricks データ ストアにデータを取り込みます。

  2. データをトレーニング データセットに変換した後、Spark MLlib モデルを構築して、機械学習モデルをトレーニングします。 MLlib は、最も一般的な機械学習アルゴリズムと、Spark のデータ スケーラビリティ機能を活用するように最適化されたユーティリティで構成されています。

  3. データをスコアリング データセットに変換することで、部品の不具合を予測 (分類) するトレーニング済みモデルを適用します。 Spark MLLib モデルを使用してデータをスコア付けします。

  4. 処理後の使用のために、Databricks データ ストアに結果を格納します。

これらの各タスクを実行するためのノートブックが GitHub で提供されています。

Recommendations

Databricks は、お客様がご自身でトレーニングしたモデルを読み込んでデプロイし、新しいデータを使用して予測を行えるようにセットアップされています。 Databricks には、他にも次の利点があります。

  • Microsoft Entra 資格情報を使用したシングル サインオンのサポート。
  • 運用パイプライン用のジョブを実行するジョブ スケジューラ。
  • コラボレーション、ダッシュボード、REST API による完全対話型ノートブック。
  • 任意のサイズにスケーリングできる制限のないクラスター。
  • 高度なセキュリティ、ロールベースのアクセス制御、および監査ログ。

Azure Databricks サービスを操作するには、Web ブラウザーまたはコマンド ライン インターフェイス (CLI) で Databricks ワークスペース インターフェイスを使用します。 Databricks CLI には、Python 2.7.9 から 3.6 をサポートするプラットフォームからアクセスします。

このリファレンス実装では、ノートブックを使用して、タスクを順番に実行します。 各ノートブックでは、入力データと同じデータ ストアに、中間データ成果物 (トレーニング、テスト、スコアリング、または結果データ セット) が格納されます。 目標は、お客様固有のユース ケースで、必要に応じて簡単に使用できるようにすることです。 実際には、お使いのデータ ソースをノートブックの Azure Databricks インスタンスに接続して、ストレージとの読み取りと書き込みを直接的に実行します。

必要に応じて、Databricks ユーザー インターフェイス、データ ストア、または Databricks CLI 経由でジョブの実行を監視します。 Databricks が提供するイベント ログやその他のメトリックを使用してクラスターを監視します。

考慮事項

以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

パフォーマンス

Azure Databricks クラスターは、既定で自動スケールが可能になっているため、実行時に Databricks によってお客様のジョブの特性を構成するワーカーが動的に再割り当てされます。 パイプラインの特定の部分で、その計算負荷が他の部分よりも高くなる場合があります。 Databricks では、ジョブのこれらのフェーズ中にワーカーが追加されます (不要になったときには削除されます)。 自動スケーリングでは、ワークロードに適合するようにクラスターをプロビジョニングする必要がないため、高いクラスター使用率を簡単に実現できます。

Azure Data Factory を Azure Databricks と共に使用して、より複雑なスケジュールされたパイプラインを開発します。

Storage

この参照実装では、単純化するために、データは Databricks ストレージ内に直接格納されます。 ただし、運用環境の設定では、Azure Blob Storage などのクラウド データ ストレージにデータを格納できます。 Databricks では、Azure Data Lake StoreAzure Synapse AnalyticsAzure Cosmos DBApache Kafka、および Apache Hadoop もサポートされています。

コストの最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。

一般的に、コストを見積もるには、Azure 料金計算ツールを使用します。 その他の考慮事項については、Microsoft Azure Well-Architected Framework のコストに関するセクションに説明されています。

Azure Databricks は、優れた Spark サービスであり、関連するコストがあります。 さらに、Databricks の価格レベルには、Standard と Premium があります。

このシナリオでは、Standard 価格レベルで十分です。 ただし、特定のアプリケーションで、大規模なワークロードまたは Databricks の対話型ダッシュボードを処理するために、自動的にスケーリングされるクラスターが必要な場合は、Premium レベルの使用によってコストが増加する可能性があります。

このソリューションのノートブックは、Databricks 固有のパッケージを削除するという最小限の編集によって、任意の Spark ベースのプラットフォームで実行できます。 次のさまざまな Azure プラットフォーム向けの類似するソリューションを参照してください。

このシナリオのデプロイ

この参照アーキテクチャをデプロイするには、GitHub リポジトリで説明されている手順に従って、Azure Databricks 上でバッチで Spark モデルをスコア付けするためのスケーラブルなソリューションを構築します。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次の手順