クラウドエンジニアブログ

Azure ML Studio と Azure ML Services の紹介

御手洗 拓真

御手洗 拓真

はじめに

Azure の機械学習サービスにはさまざまなものがありますが、皆さん、どのサービスをどのような時に使うのかが良く分からない、と思ったことはないでしょうか。私はあります。特に私が混乱したのが、昔からある Azure Machine Learning Studio(以下、Azure ML Studio )と、新たにできた Azure Machine Learning Services(以下、Azure ML Services )の関係です。「私が混乱したのだから世界の人々も悩んでいるに違いない!」という憶測のもと、本記事では2つのサービスの概要と違いについて解説します。なお、各サービスの具体的な使い方などについてはまた別途ご紹介する予定です。

Azure ML Studio と Azure ML Services の簡単な比較

まず、はじめに強調したいことは、 Azure ML Studio と Azure ML Services は機能連携なども無い完全に別々のサービスということです。(2018/6月現在)しかし、サービスとしての共通点もあります。それは、双方とも機械学習システムを構築するためのサービスで、「データの収集、モデル構築、モデルデプロイ」までを一気通貫に行うことができるという点です。

▼ 機械学習モデル構築のステップ

機械学習モデル構築のステップ


また、この2つのサービスには異なった特徴もあります。それぞれの特徴を表現するために、「柔軟性」「分かりやすさ」「開発スピード」という観点から2つのサービスを比較すると、以下のようなイメージとなります。

▼ Azure ML Studio と Azure ML Services の比較表

左右にスクロールしてご覧ください。

Azure ML Studio Azure ML Services
柔軟性 ★★★★
  • アルゴリズムは選択制
  • 環境は固定
  • Python でモデル構築ができる
  • 環境が柔軟に変えられる
  • モデルの管理ができる
分かりやすさ ★★★
  • GUI ベース
  • ファイルを直接編集
開発スピード ★★★ ★★
  • Web サービス化機能あり
  • 環境準備、設定ファイル編集が不要
  • Web サービス化機能あり
  • 環境準備、設定ファイル編集が必要

以降の記事では、Azure ML Studio と Azure ML Services の特徴を「柔軟性」「分かりやすさ」「開発スピード」という観点からより詳しくご説明していきます。

Azure ML Studio の概要

Azure ML Studio は、「機械学習システムを構築するためのサービス」で、その特徴は「柔軟性:★、分かりやすさ:★★★、開発スピード:★★★」と表現できることを冒頭で述べました。ここでは改めて、「柔軟性」「分かりやすさ」「開発スピード」という観点から、Azure ML Studio の特徴を紹介していきます。

柔軟性

Azure ML Studio は、ユーザーの選択を制限することによって分かりやすさとスピード感を強調するサービスとなっています。具体的には、以下の2点が制限されています。

  • 実行環境のスペックが固定で、スケールすることが出来ない
  • 使えるアルゴリズムは Azure ML Studio に用意されているパーツから選ぶ


Azure ML Studio では下図のような描画領域(エクスペリメントと呼びます)のワークフローが実行される形で、データの前処理、モデルの学習、学習済みモデルによる予測を行います。このエクスペリメントの実行速度はユーザーを変更することが出来ません。これは、環境のスペックについて頭を悩ませなくても良い、というメリットとも言えます。

▼ Azure ML Studio のエクスペリメント
Azure ML Studio のエクスペリメント

また、アルゴリズムは下図のようなパーツ(モジュール)の中から選択する必要があります。なお、時系列モデリングやディープラーニングを除く一般的に使うアルゴリズムは一通り揃っているため、アルゴリズムに不足を感じることはそれほど無いでしょう。使えるアルゴリズムについては、下記に纏められています。

Microsoft Azure Machine Learning におけるアルゴリズム一覧
https://docs.microsoft.com/ja-jp/azure/machine-learning/studio/algorithm-choice#special-cases

▼ アルゴリズム選択
アルゴリズム選択


分かりやすさ

Azure ML Studio では、モデル構築や構築したモデルの Web サービス化を GUI の操作で行うことができます。 まずモデル構築は、前述のエクスペリメント上にワークフローを作成する形で行います。そのため、行っている処理の流れをプログラムよりも分かりやすくメンバーと共有することができます。
Web サービス化も、最低限の機能であればボタンを数回クリックするだけで行うことができます。さらに、Web サービスを利用するプログラムは、以下のようなサンプルが用意されています。そのため、すぐに Web サービス化されたモデルを使うプログラムを作成することができます。

▼ 構築した Web サービスを利用するサンプルコード
構築した Web サービスを利用するサンプルコード

開発スピード

個人的には、「開発」の速さが Azure ML Studio の最大の魅力だと考えています。「分かりやすさ」でも紹介したように、 GUI でシステム化とモデル構築が一気に行えるため、とてもスピーディに機械学習システムを構築することができます。尚、 Azure ML Studio の公式サイトでは、以下のように「数分でデプロイ」ということが謳われています。

▼ Azure ML Studio の公式
Azure ML Studio の公式

https://azure.microsoft.com/ja-jp/services/machine-learning-studio/

向いているケース

これまで紹介した特徴を考慮すると、 Azure ML Studio が向いているのは、以下のような要望に対応するケースであると考えられます。

  • とにかく早く機械学習システムを作りたい
  • 学習の処理時間は長くても OK
  • 一般的なアルゴリズムが使えれば OK

向いていないケース

逆に、以下のような要望があるケースには適さないかもしれません。

  • 学習処理の時間を早くしたい(環境のスケールをしたい)
  • アルゴリズムにこだわりたい

Azure ML Services の概要

続いて、 Azure ML Services です。 Azure ML Services は、「柔軟性:★★★★、分かりやすさ:★、開発スピード:★★」という特徴を持ったサービスであると冒頭でご紹介しました。ここでも、「柔軟性」「分かりやすさ」「開発スピード」という3つの観点から、 Azure ML Services の特徴をより詳しくご紹介します。

柔軟性

まず、柔軟性についてです。この解説は多少長めになりますので、ざっくり理解したい方は、以下の3点だけ、認識しておいて頂ければと思います。

  • 柔軟性1:Python でモデル構築ができる
  • 柔軟性2:環境が柔軟に変えられる
  • 柔軟性3:モデルの管理ができる

以降では、上記3点についてさらに詳しく説明していきます。

柔軟性1:Python でモデル構築ができる

Azure ML Services のモデル構築は GUI ではなく、Python のコードを書く形で行います。これによって「分かりやすさ」が犠牲になっている面はあるのですが、Python で構築可能な範囲であれば、どのようなモデルでも構築できます。Python のコードは、以下のように Notebook に書くことや VS Code に書くことが可能なため、機械学習エンジニアが通常モデル構築を行う時と同様にモデル構築を行うことができる、ということになります。

▼ Notebook のイメージ
Notebook のイメージ


柔軟性2:環境が柔軟に変えられる

Azure ML Services ではモデル学習の環境や、モデルデプロイ先の環境を柔軟に変更することができます。さらに、環境が Azure 上のリソースであればスケールアップ・スケールアウトすることも可能です。

この嬉しさを、具体的なケースで考えてみましょう。例えば、CPU の仮想マシンでモデルの学習を始めたところ、「学習に時間がかかるなー」と感じたとします。このとき、Azure ML Services なら学習環境を GPU の仮想マシンや、Spark などの分散処理環境に途中で変更することができます。また、メモリなどのシステムリソースがひっ迫しているようであれば、環境をスケールアップすることも可能です。もちろん、ローカル環境で学習することもできます。 学習環境は、下図のようにして一覧から選択することができます。

▼ 学習環境の選択イメージ
学習環境の選択イメージ


柔軟性3:モデルの管理ができる

デフォルトでモデルを管理する機能がついているため、機械学習プロジェクトにとって重要な運用・保守までを見据えたシステムを構築できるのが、Azure ML Services です。モデルの管理機能は、「モデル学習の実行履歴管理」機能と、「デプロイしたモデルのバージョン管理」機能に分けられます。

  • モデル学習の実行履歴管理
  • デプロイしたモデルのバージョン管理

モデル学習の実行履歴管理では、下図のように、学習したモデルの情報を可視化して比較することができます。したがって、たくさんモデルを作っても、どのモデルの成績が良かったかを一目で確認することができます。

▼ モデル学習の実行履歴確認イメージ
モデル学習の実行履歴確認イメージ


また、デプロイしたモデルのバージョン管理も可能です。Azure ML Services では、Web サービス化したモデルの過去バージョンを保持しておけるため、間違えてデプロイした場合も過去のバージョンに戻すことができます。

▼ デプロイされているモデルのバージョン管理画面
デプロイされているモデルのバージョン管理画面


少し長くなりましたが、ここまでが「柔軟性」という観点における Azure ML Services の特徴です。改めてまとめると、以下のようになります。

  • Python でモデル構築ができる
  • 環境が柔軟に変えられる
    • モデル学習の環境が変えられる
    • モデルデプロイ先の環境が変えられる
  • モデルの管理ができる
    • モデル学習の実行履歴管理ができる
    • デプロイしたモデルのバージョン管理ができる

分かりやすさ

上記で紹介した Azure ML Services の「柔軟性」は、プログラムや config ファイルを細かく書き換えられることで実現されています。逆に言えば、細かく設定する必要があるため、直感的な理解はしづらいかもしれません。

また、Azure ML Services は、「実験サービス」と「モデル管理サービス」という 2 つのサービスから構成されており、全体像が把握しづらいという面もあります。しかしながら、Azure ML Services はまだまだ出たばかりのサービスです。現在は直接ファイルに書き込んでいる部分も、将来的には GUI で操作できるようになるかもしれません。また、少しとっつきにくさを感じるかもしれませんが、設計自体はすっきりしているので Python の経験があれば、理解自体はそこまで難しくはありません。

開発スピード

Azure ML Services にも学習済みモデルの Web サービス化機能がついているため、スピーティに機械学習システムの構築が可能です。予めデプロイ先の環境を作っておいたり config ファイルを設定したりする必要はありますが、そこの準備さえできればモデルのデプロイ自体は PowerShell のコマンド一発で行うことができます。

向いているケース

    これまでご紹介した Azure ML Services の特徴を踏まえると、Azure ML Services は以下のような要望があるケースに向いているといえるでしょう。

  • ビッグデータを扱ってモデル構築がしたい
  • 学習処理の時間はできるだけ早くしたい
  • 環境のスケールを柔軟に行いたい
  • アルゴリズムにもこだわりたい

向いていないケース

逆に、以下のようなケースであれば Azure ML Studio を選んだほうが良いかもしれません。

  • 細かいことは置いておいて、とにかくすぐに機械学習システムを構築したい
  • ノンコードで機械学習システムを作りたい

まとめ

最後に、ここまででご紹介した Azure ML Studio と Azure ML Services の特徴を比較表にして掲載しておきます。

▼ Azure ML Studio と Azure ML Services の比較表

左右にスクロールしてご覧ください。

Azure ML Studio Azure ML Services
柔軟性 ★★★★
  • アルゴリズムは選択制
  • 環境は固定
  • Python でモデル構築ができる
  • 環境が柔軟に変えられる
  • モデルの管理ができる
分かりやすさ ★★★
  • GUI ベース
  • ファイルを直接編集
開発スピード ★★★ ★★
  • Web サービス化機能あり
  • 環境準備、設定ファイル編集が不要
  • Web サービス化機能あり
  • 環境準備、設定ファイル編集が必要
向いているケース
  • とにかく早く機械学習システムを作りたい
  • 学習の処理時間は長くてもOK
  • 一般的なアルゴリズムが使えればOK
  • ビッグデータを使ってモデル構築したい
  • 学習処理の時間は出来るだけ早くしたい
  • 環境のスケールを柔軟に行いたい
  • アルゴリズムにこだわりたい
向いていないケース
  • 学習処理の時間を早くしたい
  • 環境のスケールをしたい
  • アルゴリズムにこだわりたい
  • 細かいことは置いておいて、とにかくすぐに機械学習システムを構築したい
  • ノンコードで機械学習システムを作りたい

いかがでしょうか。 Azure ML Studio と、 Azure ML Services の違いのイメージが少しでもついたでしょうか。今回は、両者の違いに重点を置いてご説明しました。次回の記事では Azure ML Services の詳しい構成や使い方に踏み込んでご説明したいと思います。



次回予告
  • Azure AD Application Proxy を触ってみよう1



お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録