[Azure] 機械学習のライフサイクルを一気通貫でサポートする新しいAzure Machine Learningのご紹介

2020.07.16

データアナリティクス事業本部の貞松です。
一番好きなプログラミング言語はC#です(1年ぐらいまともに触ってませんが)

今回は珍しくMicrosoft Azure関連のお話です。
ちなみにタイトルで「新しい」と書いていますが、実際のところAzure Machine Leaningがリニューアルしたのは2019年の11月と少し前の話になります。
しかしながら、以前のAzure Machine Learning StudioもMachine Learning Studio (classic)として残っており、かつ新しいAzure Machine Learningの機能の幾つかは現在プレビューとなっている為、この辺り明確に線引きをする為に敢えて「新しい」という書き方をしています。
本記事では、Azure Machine Learningの遍歴を振り返りつつ、現在の新しいAzure Machine Learningが持つ機能について概要レベルでご紹介します。

※本記事における各機能の解説はあくまで概要レベルであり、詳細な設定や手順等は含みません。予めご了承ください。

Azure Machine Learningの遍歴

他のクラウドサービス同様、Azureにも機械学習のマネージドサービスが存在します。Azure Machine Learningというそのままなネーミングですが、メジャーなクラウドプラットフォームの中でもかなり先行して公開され、グラフィカルなフロー形式で機械学習のモデルが開発できるビジュアルデザイナーを備えた強力な機械学習サービスとして知られています。

元々、上述のビジュアルデザイナーによる機械学習モデルの開発とデプロイ機能を有するWebベースのツールがAzure Machine Learning Studioと呼ばれていたのですが、徐々にMachine Learning自体の機能が拡充され、外部のPythonモジュールをインポートして再利用できるようになったり、Notebookの機能が追加になったりして、高機能ではあるものの、つぎはぎ感のあるツールに変わっていきました。

また、機械学習モデル開発の進化に伴って、MLOpsなる概念が現れて、Azure Machine Learningとしては、Azure DataFactoryとの連携することで運用を含めた機械学習のライフサイクル全体をカバーしてきました。

Machine Learning Studio (classic)の画面

新しいAzure Machine Learningの登場

そして、2019年11月に新たなAzure Machine Learningが登場しました。
新しいAzure Machine Learningでは、ビジュアルデザイナーやNotebook、実行環境のインフラ管理やMLOpsなどを統合することで、機械学習のライフサイクルを一気通貫でサポートされます。
以下、Azure Machine Learningの画面を示しつつ、それぞれの機能についてご紹介していきます。

Azure Machine Learning上で扱える機能色々

ノートブック

Azure上で動作するJupyterノートブックによる機械学習の実験、モデルの作成を実行することができます。言語として、PythonだけでなくRによる開発・実行も可能です。

画面はおなじみのエクスプローラー形式のファイル一覧とタブ表示されたエディタで構成されており、ローカルの開発環境とまではいかないかもしれませんが、そこそこ快適にファイルの編集を行うことができます。

ユーザーが作成したファイル(マイファイル)だけでなく、予め用意されたPythonとRのサンプルコードを参照することができ、それらをクローンして動作を確認したり、カスタマイズして別のモデルを作成することもできます。

ノートブックの実行には後述の「ノートブックインスタンス」が必要となっている為、予め作成しておくか、ノートブックの画面から新規作成する必要があります。

Automated ML (preview)

※Automated MLは、2020/7/16現在プレビューの機能です。

Automated MLはその名前の通り、俗に言うAutoMLの機能です。
Automated MLを使用することにより、時間のかかる反復的な機械学習モデルの開発タスクを自動化することができます。
Automated MLを使用する為に必要な操作は以下の3ステップのみです。

  • データセットの選択
    • 学習データとして使用するデータセットを選択します
  • 実行の構成
    • 学習を実行する為の実験環境を構成します。
    • 実験名の入力
    • ターゲットとなる列項目(データセットの列項目の内、目的変数となる列)の選択
    • 実験を実行するコンピューティングクラスターの選択
  • タスクの種類と設定
    • 以下の機械学習タスクの中から、この実験で対象とするタスクを選択します
    • 分類
    • 回帰
    • 時系列の予測
    • 上記以外の設定として、生成されたモデルを比較する為のメトリック(評価値)を選択、この実験では除外するアルゴリズムの選択、特徴量として使用する列項目に対する設定などが含まれます。

Automated MLを実行すると、様々なアルゴリズムとそれに対するハイパーパラメーターの組合せを試行する多数のパイプライン(実験実行の単位)を並列に作成して、効率的に学習、評価することで最終的に最も良好な学習モデルを出力します。

デザイナー (preview)

※デザイナーは、2020/7/16現在プレビューの機能です。

デザイナーは、Azure Machine Learning最大の特徴である機械学習モデルの実験・開発用ビジュアルエディターです。
モジュールという名の各種処理(データ入出力、データ前処理、学習アルゴリズム、学習実行、モデル評価、モデルデプロイ、など)を画面上に配置し、それらを線で繋げることによってフロー図を作成するように機械学習モデルを作成することができます。

利用可能なモジュールの詳細については、下記のリファレンスを参照してください。

Azure Machine Learning デザイナーのアルゴリズムとモジュールのリファレンス

データセット

データセットの画面では、学習データとして使用するデータセットを外部からインポートしたり、作成済みのデータセットを確認したりできます。

データセットの画面にはもう一つ「Dataset Monitors (Preview)」というタブが存在します。
これはモデルの学習に使用したデータセットのデータと学習済みモデルのエンドポイントに渡す推論データを比較して、コンセプトドリフトが発生していないかを監視・通知する機能です。

コンセプトドリフトとは、デプロイされたモデルの精度に影響を及ぼす可能性のある大きな要因のひとつで、学習データと推論データの傾向が異なっている状態です。これが生じると学習済みモデルが推論データの傾向に適応できなくなり、モデルの精度が大幅に劣化してしまいます。
最近の例では、COVID-19の影響により、短期的に小売のトレンドが変化した結果、過去のデータで学習したモデルが正常に機能しなくなってしまったという話があります。

MIT Technology Review - Our weird behavior during the pandemic is messing with AI models

Dataset Monitorsの設定方法等詳細については、下記のページをご参照ください。

データセットでデータドリフトを検出する (プレビュー)

パイプライン

パイプラインはAzure Machine Learning上での実行単位であり、Autemated MLやデザイナーからモデル学習を実行するとパイプラインが作成されます。
Azure Machine Learning上のパイプラインは一般的な用語として使われるパイプラインとは少し異なる独自の概念でありわかりにくくなっていますが、1回分のジョブワークフローが一つのパイプラインに相当する、とイメージすれば多少わかりやすいかもしれません。

実験

上述のパイプラインは実行の単位でしたが、実験はそのパイプラインを束ねる一つ上の階層となっています。 デザイナーで作成したモデル学習のパイプラインをAという実験に紐づけて実行したのち、同じモデルに対してデザイナー上で変更を加えて再度Aという実験に紐づけて実行すると、実験Aの中に前述の2つのパイプラインが入った状態になります。
これにより、同一のモデルに対して実行した変更分の履歴やその時の設定やログ、メトリクスなどをひとまとめにして管理することができます。

モデル

モデルの管理画面では、Azure Machine Leraning上で作成されたモデルだけでなく、外部で作成されたモデルを登録して管理することができます。
既に登録されているモデルと同名のモデルを登録するたびに新しいバージョンとして登録され、過去のバージョンのモデルについて構成を参照、デプロイなどができます。
モデル登録時にメタデータとしてタグを付けることもできるので、バージョンの代わりにタグを使ってある時点のモデルを検索、参照することもできます。

エンドポイント

エンドポイントの画面では、Azure Machine Learning上で管理される以下の2種類のエンドポイントを管理します。

  • リアルタイムエンドポイント
    • リアルタイムエンドポイントはデプロイされた学習済みモデルのエンドポイントであり、入力パラメータを送信するとレスポンスとして推論結果を返すREST APIを提供します。
  • パイプラインエンドポイント
    • パイプラインエンドポイントは、Azure Machine Learning上で作成されたパイプラインを外部から実行する為のRESTエンドポイントを提供します。
    • パイプラインエンドポイントを利用することで、バッチスコアリング(バッチ処理による推論の一括処理)や再トレーニングについての継続的な管理・運用が可能になります。

コンピューティング

コンピューティングの画面では、ノートブックやAutomated ML、デザイナーなどでモデルの学習を実行する、あるいは学習済みモデルをデプロイしてエンドポイントとして動作させる為のコンピューティングリソースを管理します。
また、外部のコンピューティングリソースをアタッチしてAzure Machine Learningのコンピューティングリソースとして使用することも可能で、それらのリソースについてもこの画面で管理することになります。 コンピューティングは上記の用途別に以下の4種類に分かれています。

  • コンピューティングインスタンス
    • ノートブックでの実行に使用されるインスタンスです。
  • コンピューティングクラスター
    • Automated MLやデザイナーでの実行に使用されるクラスターです。
  • 推論クラスター
    • 学習済みモデルをエンドポイントとしてデプロイする為のAzure Kubernetes Service(AKS)クラスターです。
  • アタッチされたコンピューティング
    • HDInsightクラスター、仮想マシン、Databricksクラスターなどの独自のコンピューティングをアタッチして、コンピューティングリソースとして使用します。

データストア

データストアはデータセットを作成するためのデータ元となるリポジトリのような位置付けで、Azure上のストレージやデータベース、データレイクなどに対する接続を登録しておくことで、接続先にあるデータをいつでもAzure Machine Learningのデータセットとしてデータを取得することができます。

データのラベル付け

データのラベル付け機能では、画像分類や物体検出のモデル学習に使用するための画像データに対するラベル付けをアシストするためのプロジェクトを作成できます。
扱うことのできるラベル付けタスクの種類は以下の3種類です。

  • 画像分類の複数クラス
  • 画像分類の複数ラベル
  • オブジェクトID(四角形領域)

ラベル付けプロジェクトの作成から実際のラベル付けの実施、データのエクスポートまでの具体的な手順については、下記のページをご参照ください。

データのラベル付けプロジェクトを作成してラベルをエクスポートする

まとめ

単純に各種機能の概要をまとめただけでかなりのボリュームとなっていますが、それだけAzure Machine Learningがカバーする範囲が広いことがなんとなくご理解いただけたのではないかと思います。
今後は機能個別の利用手順や活用にフォーカスした記事でAzure Machine Learningのメリットをお伝えできればと思います。