Azure Machine Learning service: Visual interfaceを試す

# はじめに
Microsoft Build 2019にてAzure Machine Learning service (ML service)の新機能「Visual interface」が発表されました。
これまでコーディングが必要だったML serviceにおいてMachine Learning Studio (ML Studio)のようなDrag & DropのGUI操作が可能になるというもので、ML serviceがより使いやすくなることが期待できます。
今回はML serviceに追加された「Visual interface」を試してみます。
# ワークスペースの作成
「＋リソースの作成」で「Machine Learning service workspace」を検索し、ワークスペースの作成を開始します。
![amls-0101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/9c45ee9f-d353-5671-c768-de715c0e7b6a.png)
必要な内容を入力して作成を実行します。
![amls-0102.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/cac178e5-f5aa-e8d1-8f7f-8dfeff9dc2a3.png)
# Visual interfaceの利用
作成したワークスペースのリソースに移動し、メニューの「Studioワークスペースを起動」で「ワークスペースを起動」をクリックするとVisual interfaceが開きます。
タイトルが「Machine Learning Studio」なので少し戸惑います。
![amls-0103.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/73b74d4a-24a7-fd72-5741-ce569c525d1e.png)
Visual interfaceのUIは、ただのスタイル違いといっていいほどML StudioのUIと同じつくりになっています。
![amls-0104.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/cb166cf4-b687-badd-a8be-4b3bb00a19f4.png)
試しに、サンプルの実験「Sample 1 - Regression: Automobile Price Prediction (Basic)」で実験を作成してみます。
![amls-0105.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/ac6e9bbf-91a5-d682-ed03-76bb32b04607.png)
実験の新規作成、モジュールの操作はML Studioと同じで、ML Studioを使い慣れたユーザーであれば特に追加知識なく使うことができそうです。
ただし、プレビュー段階のためか、ML Studioと比較すると使用できるモジュールの種類は少ないため、まだ完全にML Studioを置き換えられるものではない印象です。
![amls-0106.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/2f0cb336-9a9e-f55d-d08a-c5bf1017556b.png)
Visual interface とML Studioで異なるのは、実験の実行に「Compute Target」を指定する点です。
実験の内容によってスペックを変更できるのはML Studioにはなかったものです。
![amls-0107.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/d46689e0-00a8-5ef0-9541-e0965d9e8e96.png)
今回は試しなので、Visual interfaceから作成できるスペック(Standard D2 v2 / 0~2ノード)でCompute Targetを作成して実験を実行します。
プリセット以外のスペックを使用する場合は、あらかじめAzureポータルでCompute Targetを作成しておく必要があります。
![amls-0108.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/52041c3e-bf71-75d4-10c5-38533011dec4.png)
Compute Targetの作成が入るため、初回の学習は約13分がかかりました。
![amls-0109.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/cf12ab45-482d-ff22-4315-fcd9c9d6bc4b.png)
Evaluate Modelで精度を見るとML Studioより若干精度は低いものの、概ね同等の精度となっていることがわかります。
![amls-0110.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/bc4c3bbc-805e-69eb-b4fb-a99051fcffa7.png)
実行結果に関しては、Azure ポータルでも確認できるようになっています。
今のところEvaluate Modelの内容は反映されず、試行ごとの精度を横並びで比較することまではできないようです。
![amls-0111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/3ffcb775-42cc-f9dc-1d9b-aee6569f9dd6.png)

# Web Serviceのデプロイ
作成したモデルをWeb Serviceとしてデプロイします。
モデルのデプロイも「Compute Target」を指定する以外はML Studioと大きく変わりません。
実行が完了した実験のメニューから「Create Predictive Experiment」をクリックします。
![amls-0112.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/dcec93e3-0153-81cb-f6eb-7cc1800fc4bf.png)
ML Studioと同様に作成されたモデルが1つのモジュールに変化し、「Predictive Experiment」が新たに作成されます。
これを再度実行して、実験を完了させます。
![amls-0113.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/6384f7d7-8678-6ce5-f816-b4d4153511be.png)
この段階で、Azure ポータル側の「モデル」を確認しても学習済みモデルは表示されませんでした。
![amls-0114.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/de3234af-0b55-542c-a822-0742344a3807.png)
実験が完了するとグレーアウトしていた「Deploy Web Service」がクリックできるようになります。
![amls-0115.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/a01d883d-d613-34b3-6659-dfceda286d5b.png)
「Deploy Web Service」をクリックするとCompute Targetの選択ウィンドウが表示されます。
まだWeb Service用Compute Targetがないため、「Create New」を選択するとCompute Targetの作成手順が表示されます。
Azureポータルで作成する必要があるようなので、一度Azureポータルに戻って作成を行います。
![amls-0116.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/fc7a0d2f-818c-f68b-53f9-33b3aeb8b54a.png)
ワークスペースの「コンピューティング」で「＋コンピューティングの追加」をクリックします。
![amls-0117.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/5cb128c7-c8e6-49b0-1238-a332e89e7080.png)
作成手順に沿って「Kubernetes Service」のCompute Targetを作成します。
Kubernetes ServiceのCompute Target は12 コア以上でないと作成できないため、「インスタンスのコア数×ノード数」が12以上となるように設定して作成を行います。
12 コアの環境はちょっとした検証にはなかなかヘビーなので、Azure Container Instancesで簡単に検証できるオプションも欲しいところです。
![amls-0118.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/9a1b628f-132f-1252-dcb3-19a083debdea.png)
作成に成功するとVisual interfaceのCompute Targetの選択ウィンドウでもリソースが表示され、デプロイできるようになります。
![amls-0119.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/1ab349f9-f718-0e10-3f3f-d5ccde444b89.png)
デプロイを行うと、Visual interface上の学習済みモデルからイメージが作成され、Web Serviceが作成されます。
![amls-0120.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/718cd33e-44bc-9b32-09ca-bb4fa5053c12.png)
この段階でAzure ポータル側の「モデル」を確認すると、学習済みモデルが登録されていることが確認できました。
![amls-0121.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/598d1325-c08a-8738-fe04-87b0c7363834.png)
Web Serviceのエンドポイント、APIリファレンスもVisual interfaceから確認できます。
![amls-0122.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/b145f11c-7f16-e84a-e48c-c0f000fce694.png)
テスト画面で予測を実行してみます。サンプルデータがあらかじめ入力さえているのでそのまま実行すると、JSONデータのレスポンスがあり、Web Serviceが正常に稼働していることがわかりました。
データは実価格$13495の自動車のものですが、「Scored Label」が13903.18とそれらしい値が出てきました。
![amls-0123.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322093/acc093f0-30bb-f52c-db86-6c3e261e1555.png)
# まとめ
思っていた以上にML StudioそのままのUIで、ML Studioは使ってきた身としては何不自由なく扱うことができました。
コーディングが必要でML serviceに手を出し辛かったユーザーにとっては、ML serviceに手を出す良いきっかけになりそうです。
まだプレビューが公開されたばかりで、モジュールが少なかったり、Web Serviceのデプロイが少し面倒だったりと洗練されていない部分はありますが、ML serviceに最適化された機能が追加され、使いやすくなっていくことに期待したいです。