search
LoginSignup
3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Azure SQL & Synapse Analytics Advent Calendar 2020 Day 7

posted at

updated at

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

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
What you can do with signing up
3
Help us understand the problem. What are the problem?