AzureとAWSの自動機械学習


はじめに

初めまして。おとです。
ecbeingに入社して1年ちょっと、日々データサイエンスや機械学習について学びつつ業務に勤しんでおります。

機械学習について学び始めてから半年ほど経ちます。その中で、
・Microsoftが提供するAzure Machine Learning
・AWSが提供するAmazon SageMaker
2つの機械学習サービスのチュートリアルを何度か行いました。
その中でも自動機械学習機能が機械学習初心者である私にとってとても便利だと感じたのでご紹介したいと思います。

自動機械学習

通常、機械学習モデルを生成するには、

  1. 学習用に大量のデータを用意する
  2. 特徴を整形する
  3. 目的に合ったアルゴリズムを複数テストして多くのモデルパラメーターを調整する
  4. 期待された推論が行われるか検証する
  5. モデルに精度や偏りの問題があれば1~4を繰り返す

といった開発プロセスが繰り返されます。
この開発プロセスには機械学習に対する専門知識も必要とされます。

開発プロセス

自動機械学習では、ある程度整形されたデータを用意していくつかのパラメータを設定するだけで、機械学習の深い専門知識がなくとも機械学習モデルを生成することができます。
(生成されたモデルの評価についてはある程度の専門知識が必要です。)

Azure Machine Learning の自動機械学習

Azure Machine Learning(以下、AzureML)とは、Azureのサービスのひとつで、データの準備・機械学習モデルのトレーニング・検証・デプロイ・運用管理までエンドツーエンドで機械学習ライフサイクルを管理できるサービスです。
その中の機能のひとつとして、自動機械学習機能(以下、AutoML)が提供されています。
AutoMLは、時間のかかる反復的な機械学習モデルの開発タスクを自動化することができます。

AutoMLでは、Azure Machine Learning Python SDK または Azure Machine Learning Studioを使用して機械学習モデルを簡単に作成することができます。
今回は機械学習やPythonに詳しくなくてもモデル作成ができるAzure Machine Learning Studioでモデルの作成からデプロイまでをやっていきます。

データの選択

Azure Machine Learning Studioを開いて「自動ML」メニューから、「新規の自動機械学習ジョブ」を選択すると、まずデータの選択画面が表示されます。
AutoMLで指定できるのは、2022年6月現在では表形式データのみとなっています。
データは、ローカルファイル、データストア(AzureMLの機能のひとつ。データをAzure BlobやDataLakeに保存し使用できる)、Webファイル、Open Datasetsの4つから選択できます。
(今回はあらかじめデータアセットに登録しておいたデータを使用)

データアセット選択
ジョブの構成

データアセットを選択すると、表データが自動解析され、トレーニングで予測対象とするカラム名を指定できます。
コンピューティングインスタンスまたはコンピューティングクラスターを選択します。

ジョブ構成
タスクと設定の選択

次に学習タスクを選択します。AutoMLではタスクとして、分類、回帰、時系列予測、NLP(自然言語処理)、Computer Vision(画像分類や物体検出)が選択できます。
NLPやComputer Visionはプレビュー段階であり、コンピューティング対象としてGPUが必要となっています。

タスクと設定
検証とテスト

最後にトレーニングしたモデルの検証方法と、モデルをテストするためのデータアセットを指定できます。
テストデータはトレーニングデータから分割指定できます。

検証とテスト
実験

すべての設定が完了し、終了を押すと実験が開始されます。
AzureMLに用意されているアルゴリズムでそれぞれモデルが作成・評価され、実験完了後、最適なモデルが選択できます。
それぞれのモデルのメトリックが確認でき、プレビュー機能としてデータ変換やテスト結果も確認することができます。

モデル一覧
モデル詳細
データ変換
モデルデプロイ

実験で生成されたモデルを選択して、デプロイ(エンドポイントを作成)することができます。
ここではAzureコンテナーインスタンス(ACI)をコンピューティング先としてデプロイします。

デプロイ
エンドポイント

デプロイが完了するとエンドポイントが作成されます。
テスト実行や呼び出しのサンプルソースコードが確認できます。
(フォームエディターだと真偽値カラムの入力ができないようなのでJsonエディターがおすすめ)

エンドポイント

Amazon SageMaker の自動機械学習

Amazon SageMaker(以下、SageMaker) は、フルマネージドインフラストラクチャ、ツール、ワークフローを使用して、あらゆるユースケース向けの機械学習モデルを構築、トレーニング、デプロイするフルマネージドサービスです。

Amazon SageMaker Autopilot は、機械学習モデルを構築する手間を省き、データに基づいて最適な 機械学習モデルを自動的に構築、トレーニング、および調整するのに役立ちます。SageMaker Autopilot では、表形式のデータセットを提供し、予測するターゲット列を選択するだけで回帰または分類タスクのモデルを生成できます。また、生成されたモデルはワンクリックでデプロイすることができます。

実験

入力データとしてAmazon S3に表形式データを用意しておく必要があります。
出力もAmazonS3を指定します。
データを指定すると自動解析され、トレーニングで予測対象とするカラム名を指定できます。
「Auto Deploy」をOnにしておくと、実験で生成された多数のモデルの中から最適なモデルを選択してデプロイまで自動で行うことができます。

実験の作成
モデル

実験が完了すると、150以上のモデルが自動生成され、それぞれ詳細を確認できます。

モデル一覧
モデル詳細
エンドポイント

デプロイが完了するとエンドポイントが作成されテスト実行できますが、
XGBoostで生成されたモデルは推論APIのリクエストとしてtext/csvのコンテンツしか受け付けないため、Test inferenceのJSON editorで直接推論APIを呼び出して結果を取得することはできませんでした。
推論APIの結果を確認したい場合、JupyterNoteBookなどでエンドポイントにリクエストを投げることで確認できます。

エンドポイント
推論APIの呼び出し

おわりに

簡単ではありますが、Azure Machine Leaning の AutoML と、Amazon SageMaker Autopilot について紹介しました。

使ってみた所感としては、
AutoMLは、手順はSageMakerに比べて多いですが、モデルの詳細としてデータ変換の過程やテスト結果が確認できたり、エンドポイントのテストが簡単にでき、C#などのサンプルコードが生成されるところが良いと思いました。
まだプレビュー段階の機能が多いのでGAされるのを楽しみにしています。
SageMaker Autopilotは、モデルによってはエンドポイントのテストに少し手間がかかりますが、数クリックでモデルのデプロイまでできるところが良いと思いました。
入力データにもよりますが、150以上のモデルの学習にはそれなりに時間がかかるので注意が必要です。(今回は約半日かかりました)

どちらも利用にあたり、タスクの選択や生成されたモデルの評価には機械学習の専門知識が必要な点に注意が必要ですが、どちらも表形式データを読み込んで多数のアルゴリズムでモデルを簡単に自動生成できるとても便利なサービスです。
ぜひ一度チュートリアルなどで触ってみてください。


ecbeingではモダンを追い求めるエンジニアを募集しています!!
careers.ecbeing.tech