Apache Spark による機械学習

Azure Synapse Analytics の Apache Spark では、ビッグ データを使用した機械学習が可能であるため、大量の構造化データ、非構造化データ、および高速移動データから貴重な分析情報を得る機能が提供されます。

このセクションには、探索的データ分析、特徴エンジニアリング、モデル トレーニング、モデル スコアリング、デプロイなど、機械学習ワークフローの概要とチュートリアルが含まれます。

Synapse ランタイム

Synapse ランタイムは、データ サイエンスおよび機械学習用に最適化されている、キュレーションされた環境です。 Synapse ランタイムでは、Azure Machine Learning SDK 内にさまざまな一般的オープンソースのライブラリと ビルドが既定で用意されています。 Synapse ランタイムには、PyTorch、Scikit-learn、XGBoost などの多くの外部ライブラリも含まれています。

使用可能なライブラリおよび関連するバージョンの詳細については、公開済みのAzure Synapse Analytics ランタイムを参照してください。

探索的データ分析

Azure Synapse Analytics で Apache Spark を使用する場合は、データの視覚化に役立つさまざまな組み込みオプションが用意されています。たとえば、Synapse ノートブック グラフのオプション、Seaborn や Matplotlib などの一般的なオープンソース ライブラリへのアクセス、Synapse SQL および Power BI との統合などです。

データの視覚化とデータ分析のオプションの詳細については、Azure Synapse Notebook を使用してデータを視覚化する方法に関する記事を参照してください。

機能エンジニアリング

既定では、Synapse ランタイムに、特徴エンジニアリングに一般的に使用されるライブラリのセットが含まれています。 大規模なデータセットの場合は、特徴エンジニアリングに Spark SQL、MLlib、および Koalas を使用できます。 より小規模のデータセットの場合は、Numpy、Pandas、Scikit-learn などのサードパーティ製ライブラリにも、これらのシナリオに便利な方法が用意されています。

モデルをトレーニングする

Azure Synapse Analytics で Azure Spark を使用して機械学習モデルをトレーニングする場合は、いくつかのオプションがあります。つまり、Apache Spark MLlib、Azure Machine Learning、およびその他のさまざまなオープンソース ライブラリです。

機械学習の機能の詳細については、Azure Synapse Analytics でモデルをトレーニングする方法に関する記事を参照してください。

SparkML と MLlib

Spark のメモリ内の分散計算機能により、Machine Learning とグラフ計算に使用される反復的なアルゴリズムに対して、Spark は適切な選択肢となります。 spark.ml は、ユーザーが機械学習パイプラインを作成して調整できるようにするための、一貫した高レベルの API のセットを提供します。 spark.ml の詳細については、「Apache Spark ML プログラミング ガイド」を参照してください。

Azure Machine Learning の自動 ML (非推奨)

Azure Machine Learning の自動 ML (自動機械学習) は、機械学習モデルを開発するプロセスの自動化に役立ちます。 これにより、データ サイエンティスト、アナリスト、開発は、モデルの品質を維持しながら、高いスケール、効率性、生産性で ML モデルを構築することができます。 Azure Machine Learning 自動 ML SDK を実行するためのコンポーネントは、Synapse ランタイムに直接組み込まれています。

警告

  • 2023 年 9 月 29 日より、Azure Synapse では Spark 2.4 ランタイムの公式サポートが中止となります。 2023 年 9 月 29 日の後は、Spark 2.4 に関連するサポート チケットに対応しません。 Spark 2.4 のバグやセキュリティ修正のためのリリース パイプラインはありません。 サポート終了後の Spark 2.4 の利用は自己責任で行われます。 セキュリティと機能に関する潜在的な懸念があるため、使用停止を強くお勧めしています。
  • Apache Spark 2.4 の非推奨プロセスの一環として、Azure Synapse Analytics の AutoML も非推奨になることをお知らせします。 これには、ロー コード インターフェイスと、コードを介して AutoML 試用版を作成するために使用される API の両方が含まれます。
  • AutoML 機能は Spark 2.4 ランタイムを通じて排他的に使用できました。
  • AutoML 機能を引き続き利用したいお客様には、Azure Data Lake Storage Gen2 (ADLSg2) アカウントにデータを保存することをお勧めします。 そこから、Azure Machine Learning (AzureML) を介して AutoML エクスペリエンスにシームレスにアクセスできます。 この回避策の詳細については、こちらを参照してください。

オープンソース ライブラリ

Azure Synapse Analytics のすべての Apache Spark プールには、事前に読み込まれる人気の高い機械学習ライブラリのセットが付属しています。 既定で含まれている関連する機械学習ライブラリには、次のようなものがあります。

  • Scikit-learn は、従来の ML アルゴリズム用のとても人気のある単一ノード機械学習ライブラリの 1 つです。 Scikit-learn は、教師ありおよび教師なしの学習アルゴリズムのほとんどをサポートしており、データ マイニングとデータ分析にも使用できます。

  • XGBoost は、デシジョン ツリーとランダム フォレストのトレーニング向けに最適化されたアルゴリズムを含む、人気の高い機械学習ライブラリです。

  • PyTorchTensorFlow は、Python の強力なディープ ラーニング ライブラリです。 Azure Synapse Analytics の Apache Spark プール内で、これらのライブラリを使用して、プール上の Executor の数をゼロに設定することで、単一マシンのモデルを構築できます。 この構成では Apache Spark が機能しませんが、単一マシンのモデルを作成するためのシンプルでコスト効率の高い方法です。

モデル開発の追跡

MLFlow は、機械学習の実験のライフ サイクルを管理するためのオープンソース ライブラリです。 MLflow Tracking は、トレーニング実行のメトリックとモデル成果物のログ記録と追跡を行う、MLflow のコンポーネントです。 Azure Synapse Analytics と Azure Machine Learning を介して MLFlow 追跡を使用する方法の詳細については、MLFlow の使用方法に関するこのチュートリアルを参照してください。

モデル スコアリング

モデル スコアリング (推論) は、モデルを使用して予測を行うフェーズです。 SparkML または MLLib によるモデル スコアリングの場合は、ネイティブ Spark の方法を活用して、Spark DataFrame で推論を直接実行できます。 その他のオープンソース ライブラリおよびモデルの種類では、Spark UDF を作成して、大規模なデータセットで推論をスケールアウトすることもできます。 小規模なデータセットでは、ライブラリによって提供される、ネイティブのモデル推論方法を使用することもできます。

モデルのデプロイと提供

モデルを登録すると、ワークスペース内のモデルに関するメタデータを保存、バージョン管理、および追跡できます。 モデルのトレーニングが完了したら、Azure Machine Learning モデル レジストリにモデルを登録できます。 登録した後は、ONNX モデルを使用して、専用 SQL プールに格納されているデータを強化することもできます。

次のステップ

Azure Synapse Analytics による機械学習を開始するには、次のチュートリアルを必ずご確認ください。