Azure の機械学習サービスにはさまざまなものがありますが、皆さん、どのサービスをどのような時に使うのかが良く分からない、と思ったことはないでしょうか。私はあります。特に私が混乱したのが、昔からある Azure Machine Learning Studio(以下、Azure ML Studio )と、新たにできた Azure Machine Learning Services(以下、Azure ML Services )の関係です。「私が混乱したのだから世界の人々も悩んでいるに違いない!」という憶測のもと、本記事では2つのサービスの概要と違いについて解説します。なお、各サービスの具体的な使い方などについてはまた別途ご紹介する予定です。
まず、はじめに強調したいことは、 Azure ML Studio と Azure ML Services は機能連携なども無い完全に別々のサービスということです。(2018/6月現在)しかし、サービスとしての共通点もあります。それは、双方とも機械学習システムを構築するためのサービスで、「データの収集、モデル構築、モデルデプロイ」までを一気通貫に行うことができるという点です。
▼ 機械学習モデル構築のステップまた、この2つのサービスには異なった特徴もあります。それぞれの特徴を表現するために、「柔軟性」「分かりやすさ」「開発スピード」という観点から2つのサービスを比較すると、以下のようなイメージとなります。
▼ Azure ML Studio と Azure ML Services の比較表左右にスクロールしてご覧ください。
Azure ML Studio | Azure ML Services | |
---|---|---|
柔軟性 | ★ | ★★★★ |
|
|
|
分かりやすさ | ★★★ | ★ |
|
|
|
開発スピード | ★★★ | ★★ |
|
|
以降の記事では、Azure ML Studio と Azure ML Services の特徴を「柔軟性」「分かりやすさ」「開発スピード」という観点からより詳しくご説明していきます。
Azure ML Studio は、「機械学習システムを構築するためのサービス」で、その特徴は「柔軟性:★、分かりやすさ:★★★、開発スピード:★★★」と表現できることを冒頭で述べました。ここでは改めて、「柔軟性」「分かりやすさ」「開発スピード」という観点から、Azure ML Studio の特徴を紹介していきます。
Azure ML Studio は、ユーザーの選択を制限することによって分かりやすさとスピード感を強調するサービスとなっています。具体的には、以下の2点が制限されています。
また、アルゴリズムは下図のようなパーツ(モジュール)の中から選択する必要があります。なお、時系列モデリングやディープラーニングを除く一般的に使うアルゴリズムは一通り揃っているため、アルゴリズムに不足を感じることはそれほど無いでしょう。使えるアルゴリズムについては、下記に纏められています。
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 サービス化されたモデルを使うプログラムを作成することができます。
個人的には、「開発」の速さが Azure ML Studio の最大の魅力だと考えています。「分かりやすさ」でも紹介したように、 GUI でシステム化とモデル構築が一気に行えるため、とてもスピーディに機械学習システムを構築することができます。尚、 Azure ML Studio の公式サイトでは、以下のように「数分でデプロイ」ということが謳われています。
▼ Azure ML Studio の公式これまで紹介した特徴を考慮すると、 Azure ML Studio が向いているのは、以下のような要望に対応するケースであると考えられます。
逆に、以下のような要望があるケースには適さないかもしれません。
続いて、 Azure ML Services です。 Azure ML Services は、「柔軟性:★★★★、分かりやすさ:★、開発スピード:★★」という特徴を持ったサービスであると冒頭でご紹介しました。ここでも、「柔軟性」「分かりやすさ」「開発スピード」という3つの観点から、 Azure ML Services の特徴をより詳しくご紹介します。
まず、柔軟性についてです。この解説は多少長めになりますので、ざっくり理解したい方は、以下の3点だけ、認識しておいて頂ければと思います。
Azure ML Services のモデル構築は GUI ではなく、Python のコードを書く形で行います。これによって「分かりやすさ」が犠牲になっている面はあるのですが、Python で構築可能な範囲であれば、どのようなモデルでも構築できます。Python のコードは、以下のように Notebook に書くことや VS Code に書くことが可能なため、機械学習エンジニアが通常モデル構築を行う時と同様にモデル構築を行うことができる、ということになります。
▼ Notebook のイメージAzure ML Services ではモデル学習の環境や、モデルデプロイ先の環境を柔軟に変更することができます。さらに、環境が Azure 上のリソースであればスケールアップ・スケールアウトすることも可能です。
この嬉しさを、具体的なケースで考えてみましょう。例えば、CPU の仮想マシンでモデルの学習を始めたところ、「学習に時間がかかるなー」と感じたとします。このとき、Azure ML Services なら学習環境を GPU の仮想マシンや、Spark などの分散処理環境に途中で変更することができます。また、メモリなどのシステムリソースがひっ迫しているようであれば、環境をスケールアップすることも可能です。もちろん、ローカル環境で学習することもできます。 学習環境は、下図のようにして一覧から選択することができます。
デフォルトでモデルを管理する機能がついているため、機械学習プロジェクトにとって重要な運用・保守までを見据えたシステムを構築できるのが、Azure ML Services です。モデルの管理機能は、「モデル学習の実行履歴管理」機能と、「デプロイしたモデルのバージョン管理」機能に分けられます。
また、デプロイしたモデルのバージョン管理も可能です。Azure ML Services では、Web サービス化したモデルの過去バージョンを保持しておけるため、間違えてデプロイした場合も過去のバージョンに戻すことができます。
▼ デプロイされているモデルのバージョン管理画面少し長くなりましたが、ここまでが「柔軟性」という観点における Azure ML Services の特徴です。改めてまとめると、以下のようになります。
上記で紹介した Azure ML Services の「柔軟性」は、プログラムや config ファイルを細かく書き換えられることで実現されています。逆に言えば、細かく設定する必要があるため、直感的な理解はしづらいかもしれません。
また、Azure ML Services は、「実験サービス」と「モデル管理サービス」という 2 つのサービスから構成されており、全体像が把握しづらいという面もあります。しかしながら、Azure ML Services はまだまだ出たばかりのサービスです。現在は直接ファイルに書き込んでいる部分も、将来的には GUI で操作できるようになるかもしれません。また、少しとっつきにくさを感じるかもしれませんが、設計自体はすっきりしているので Python の経験があれば、理解自体はそこまで難しくはありません。
Azure ML Services にも学習済みモデルの Web サービス化機能がついているため、スピーティに機械学習システムの構築が可能です。予めデプロイ先の環境を作っておいたり config ファイルを設定したりする必要はありますが、そこの準備さえできればモデルのデプロイ自体は PowerShell のコマンド一発で行うことができます。
逆に、以下のようなケースであれば Azure ML Studio を選んだほうが良いかもしれません。
最後に、ここまででご紹介した Azure ML Studio と Azure ML Services の特徴を比較表にして掲載しておきます。
▼ Azure ML Studio と Azure ML Services の比較表左右にスクロールしてご覧ください。
Azure ML Studio | Azure ML Services | |
---|---|---|
柔軟性 | ★ | ★★★★ |
|
|
|
分かりやすさ | ★★★ | ★ |
|
|
|
開発スピード | ★★★ | ★★ |
|
| |
向いているケース |
|
|
向いていないケース |
|
|
いかがでしょうか。 Azure ML Studio と、 Azure ML Services の違いのイメージが少しでもついたでしょうか。今回は、両者の違いに重点を置いてご説明しました。次回の記事では Azure ML Services の詳しい構成や使い方に踏み込んでご説明したいと思います。