Microsoft Azureの機械学習サービス、どれがオススメ? 主要3サービスを比較

このエントリーをはてなブックマークに追加

マイクロソフトは、データ分析や機械学習に最適なさまざまなサービスを提供している。なかでも、代表的なものは「Azure Machine Learning(アジュール・マシン・ラーニング、AML)」「Azure Databricks(アジュール・データブリックス、Databricks)」「Azure Synapse Analytics(アジュール・シナプス・アナリティクス、Synapse)」の3つだ。

たった3つと思われるかもしれないが、それぞれ強みや弱みがあるため、読者の方のなかには「最適なサービスがわからない……」といった悩みをお持ちの方も少なくないかもしれない。実際、Ledge.ai編集部が検索したところ、少なくとも、日本語ではこれらのサービスを比較した記事はとくに見当たらなかった。

そこで、この記事では、マイクロソフトが提供する「AML」「Databricks」「Synapse」の3つの特徴を簡単に紹介し、それぞれの強み・弱みなどを比較していきたい。

1.モデルを素早く構築してデプロイできる「AML」

まずは、機械学習ツール「AML」からだ。

「AML」は、機械学習モデルのトレーニングやデプロイ、自動化、管理、追跡に使用できる。また、従来の機械学習だけではなく、ディープラーニング(深層学習)、教師あり学習と教師なし学習まで、あらゆる種類の機械学習に活用できる。継続的に新機能が追加されるメリットもある。

使用言語は、SDKを使った「Python(Python SDK)」もしくは「R(R SDK)」か、「Studio」でのコード不要(または、ローコード)オプションに対応している。また、同サービスのデザイナーを使うと、ほとんどコードを記述せずにモジュールのドラッグ&ドロップで機械学習を実施することも可能だ。

また、自動機械学習(Automated ML)の機能もあり、機械学習の知識がない人でも簡単に複数のモデルを構築し、「ACI(Azure Container Instances)」や「AKS(Azure Kubernetes Services)」を使って容易なモデルのデプロイも対応している。

さらに、「Python」「R」で記述できるなら、自身が使っている外部のフレームワークなどを自由に持ち込んで連携させることもできるが、「PyTorch」「TensorFlow」「scikit-learn」「Ray RLlib」など、ポピュラーなディープラーニング(深層学習)や強化学習のためのオープンソースツールと連携する場合には、ビルトインの機能を使うこともできる。

ほかの2つのサービスと比べ、機械学習モデルのライフサイクル管理、いわゆるMLOpsの領域では「AML」がもっとも効果が高いと言える。「AML」と「Azure DevOps」の連携により、反復可能かつ再現可能なMLパイプラインの作成、モデルの変更履歴やデプロイされたログなどの管理、実験の完了やデータドリフトの検出などに対する通知やアラートといった機能が「AML」のMLOpsでは実現可能だ。加えて、前述のとおり、SDKで(デプロイなども含めた)すべての処理を記述できるため、自身が利用しているほかのCI/CDツールなどとの連携もやりやすい。

そのうえ、「AML」をほかの2つのサービスと比べた場合、メリットとしてコスト面も挙げられる。「AML」では、使用したコンピューティングやストレージ以外のいわゆる独自の追加費用は一切ないため、自身で仮想マシンやディスクをクラウド上に準備して実装することと費用面では一切違いはない。前述のデザイナーや自動機械学習などの付加価値が「タダ同然」で使えることになり、この点はほかのクラウドベンダーが提供する同様のサービスと比べても、メリットの1つと言えるだろう。

>>公式サイト

2.コラボレーション対応の「Spark」ベースで、高速で使いやすい「Databricks」

次は、オープンソースのフレームワークである「Apache Spark(アパッチ・スパーク、Spark)」ベースの分析プラットフォーム「Databricks」を紹介しよう。

「Databricks」は、あらゆるデータから分析情報を引き出し、数値統計手法(線形回帰、決定木など)に基づく分析ソリューションや、人工知能(AI)ソリューションを構築。「Spark」環境を数分のうちにセットアップして自動スケーリングし、インタラクティブなワークスペースでプロジェクトの共同作業を実現する。具体的には、クラスター作成やデータ管理、コーディングの際のユーザーコラボレーションなどが可能になる。

機械学習による分析処理を複数の処理に分散化して高速化をしたいなら、「AML」「Databricks」「Synapse」のどれを使っても実現できるが、「Spark」をネイティブに持つ「Databricks」「Synapse」を使えば、絞り込み、計算列作成、ジョインなどの基本的なデータ加工も含め、すべての処理が分散して高速化できる。機械学習が必要ない場合でも、ペタバイトクラスなど大量データのデータ変換の目的のみで使用しても十分な効果を得られるだろう。

複数のユーザーが同じノートブック上で共同作業できるため、たとえば、1人のユーザーがあるブロックで「R」で作成し、別のユーザーが別の場所で「Python」と「SQL」を切り替えながら作業することも可能だ。使用する言語を柔軟に選択できるため、機械学習プロジェクトのデータの準備が容易になることが大きなメリットと言える。

また、追跡エンジンとして、「MLflow」を使用できることも利点の1つとして挙げられる。プレインストールされているオープンソースパッケージで、「Databricks」の機械学習ランタイムバージョンで有効化できる。「MLflow」を使うと、構成なしで「MLlib」実験の実行を自動的に追跡してくれる。

さらに、「Databricks」は、同社が「Spark」のコントリビュートをしているディストリビューターでもあるため、「Spark」の新しい機能が導入されたときなどに比較的早く対応できる。たとえば、2021年1月現在、「Databricks」のオススメは2020年にリリースされた「Spark 3.0」だが、後に紹介する「Synapse」はいまだに「Spark 2」だ。

なお、フレームワークおよびライブラリは「PyTorch」「TensorFlow」「scikit-learn」、プログラミング言語は「Python」「Scala」「R」「SQL」に対応する。

>>公式サイト

3.分析情報を得るまでの時間を大幅に短縮できる「Synapse」

最後に、2015年から同社が提供していた分析プラットフォーム「Azure SQL Data Warehouse」の新名称である「Synapse」を紹介しよう。

「Synapse」では、データ統合、エンタープライズ・データ・ウェアハウス、ビッグデータの分析ができる。サーバーレスまたは専用リソースのいずれかを使用し、各自の条件でデータのクエリを自由かつ大規模に実行可能だ。統合されたエクスペリエンスによってこれらの環境がまとめられているので、ETLによるデータの取り込み、探索、準備、管理、提供をすることで、差し迫った機械学習のニーズに対応できる。

「Synapse」はデータウェアハウスの機能を持ち、Amazon AWSの「Amazon Redshift」とほぼ同じようなものが入っている。両方のエンジンをバランスよく所有していることは、同サービスの強みの1つと言える。

また、「Synapse」は「Azure Synapse Link for Azure Cosmos DB」という機能があり、「Azure Cosmos DB」に入れたDBを活用し、分析が可能だ。スケーリングするような大量系のトランザクションは「Cosmos DB」を使用することが多いため、大きな魅力の1つと考えられる。

さらに、「Synapse」の強みとしては、速度の速さも挙げられる。同サービスにはSpark プールに加え、データウェアハウスの2つのエンジンが採用されている。とくに、データウェアハウスはチューニングやノードのサイズなどを適切に選択すれば、Spark プールより速い。参照系であれば、爆速と言っても良いほどだろう。

なお、使用言語はサーバーレスでも、専用リソースの場合でも、「T-SQL」「Python」「Scala」「Spark SQL」「.Net」など好みの言語に対応している。

>>公式サイト

「Databricksは開発者フレンドリーだなと思いました」

冒頭でそれぞれの強み・弱みを比較すると言ったものの、ユーザーや状況によって求めるものは異なるため、「これが1番オススメだ!」と断言することは難しい。しかし、Ledge.ai編集部としては、機械学習エンジニアやデータサイエンティストたちには「Databricks」をイチオシしたい。

実際に「Databricks」を使用した経験のある株式会社レッジのエンジニアからは「以前、AWSの『SageMaker』というJupyterノートブックを利用できるサービスを使った際、そこまで細かくノートブックごとには管理できず、運用時になったら大変だろうなと感じたのを覚えています。『Databricks』は管理者目線では、ユーザー権限を絞ってノートブックごとにアクセスを制限かけられるのが良いと思いました」とコメントしている。

また、ほかのエンジニアからは「自動でスケールしてくれるし、使わなくなったら、勝手にインスタンスが落ちてくれる(課金されなくなる)のが非常に開発者フレンドリーだなと思いました」という声もあった。

もちろん、普段から「Microsoft .NET」を使用している人は「Synapse」、「R」などのオープンソースを活用したい人は「Databricks」といった選択も可能だ。気になる人はそれぞれのサービスをチェックしてみては。