LoginSignup
2

More than 3 years have passed since last update.

Azure Synapse Analyticsで機械学習を利用しよう ①モデル学習からスコアリングの流れ

Last updated at Posted at 2020-12-06

AzureSynapseAnalyticsで機械学習を利用しよう①モデル学習からスコアリングの流れ

はじめに

Azure Synapse Analytics(以下、Synapse)上での機械学習の利用についてAzure Synapse Analytics の Machine Learning 機能 (ワークスペース プレビュー)に記載されているような概要で機能が形になってきました。

分析に関わるワークロードを集約する環境として開発が進みついにGAが発表されたSynapseですが、今回はMLワークロードの中でもDWHデータに対するスコアリングができるチュートリアル:Synapse SQL プール向けの機械学習モデル スコアリング ウィザードで案内されているウィザードを使った結果を記載したいと思います。

※すんなりいかなかった箇所も含めて紹介します。

(2020/12時点の情報)

スコアリング ウィザードについて

GUIでT-SQLのスコアリングスクリプトが生成されます。
特に、モデルへのInput、Outputが定義されている場合、テーブルの列とモデルへのマッピングがGUIでガイドされます。

イメージ

スコアリング ウィザード利用時に必要な仕様理解

注意しておくべき仕様をまとめました。MLflowの利用については私もさほど詳しくないので、ここでは割愛します。

  1. 現状、Synapseから認識できるAzureMLのモデルはonnx形式のみです。ONNXモデル以外は選択肢として表示されません。
  2. 現状 Azure MLの Auto MLではGUIでonnxモデルの作成ができません。
  3. テーブルの列とモデルへのマッピングを使うためにはモデル登録にML Flowを利用する必要があります。

2については、GUIでもできるようにしてほしいところです。「ONNX モデルの互換性を有効または無効にする」が対応していない状況となっています。

モデルの設定

Python SDK Studio Web エクスペリエンス
最適なモデルの登録、デプロイ、説明可能性
投票アンサンブルとスタック アンサンブル モデルを有効にする
プライマリ メトリック以外に基づいて最適なモデルを表示する
ONNX モデルの互換性を有効または無効にする
モデルのテスト

モデル構築環境について

スコアリングウィザードを利用する際のモデルの訓練から登録について、チュートリアルのモデル学習~登録のNotebookを実行する環境として以下のパターンで試しました。

  1. Azure ML Compute Instance上でモデル学習~登録(チュートリアル通り)
  2. Spark Notebook上でモデル学習~登録

2については実際にSynapseを利用する際にはあるパターンかなと思って試しています。データの準備からモデル構築までをシームレスに実行できるようなイメージです。

準備

それぞれ環境を準備して、linked Serviceを作成しておきます。

クイック スタート:Synapse ワークスペースを作成する

クイック スタート:Azure portal を使用して新しい Apache Spark プールを作成する

クイック スタート:Azure portal を使用して Synapse SQL プール (プレビュー) を作成する
チュートリアル:Jupyter Notebook で Azure Machine Learning の作業を開始する

クイック スタート:Synapse で Azure Machine Learning のリンクされたサービスを新規作成する※コンピューティングインスタンスを作成するのみです。

チュートリアル通りにやってみる

Azure ML Compute Instance上でモデル学習~登録(チュートリアル通り)

pip list 上のscikit-learnのversionが指定と違ったので、importしなおして、カーネル再起動をかけて実行します。

ちなみにversion変更をせずに実行するとエラーが出ます。

onnx_model = convert_sklearn(clf, "nyc_taxi_tip_predict", model_inputs)

sklearn_onnxConvertError.png

Spark Notebook上でモデル学習~登録

Synapse上でもやってみました。
もしかしたらSynapse studioでやるほうが推奨なのかも?

ライブラリのバージョンは一旦無視します。

ただし、Spark Poolの作成時期によってはmlflowがビルトインされていないようなので、以下の内容のrequirements.txtを用意してSynapse Sparkのパッケージ追加を行います。
※2020/12 現在はビルトインされています

azureml-mlflow
mlflow

Azure ML にonnxモデルが登録されました。

一覧
mlmodel_summary.png

詳細
mlmodel_top.png

成果物
mlmodel_artifact.png

このinput_exampleや、signatureが用意されていることが非常に重要でした。

これがないと上述のマッピング機能が利用できません。MLFlowでの登録はこの作成をしてくれるようです。

スコアリングウィザード

さて、スコアリングウィザード の確認ですが、この状態であれば、SQL Poolからも利用ができ、マッピングも用意されています。

手順通りテーブルを作成して、右クリックでウィザードを起動します。


wizard1.png

モデルを選択します。バージョン情報が出ていて親切です。

wizard2.png

スコアリング用のスクリプトはストアドプロシージャとして作成されます。

wizard3.png

内容はこんな感じ.

PREDICT関数が利用されています。

PREDICT (Transact-SQL)

wizard4.png

実行すると、output labelとして、スコアリング結果が表示されます。

wizard5.png

おわり

Synapse Studio上で実行すれば非常に簡単になっていました。

次回は、AutoMLの利用の紹介とともに、Synapseを中心としたモデル学習について紹介してみようと思います

追記

2020/12/07
Compute Instanceでの実行でカーネル再起動忘れをしていたので修正しました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2