Azure Machine Learning AutoMLで作成したAIモデルをプログラムから読み込む方法

本記事では、Azure Machine LearningのAutoML機能を活用して、機械学習モデルの再推論のプロセスを効率化する方法を解説します。

AutoMLはデータ前処理からモデル評価までを自動化し、専門知識が少ないユーザーでも高品質なモデルを作成できます。今回は、作成したモデルをプログラムから読み込んで再推論する手順に焦点を当て、Anaconda環境の設定やAzure Machine LearningのEnvironments機能を用いた効率的な運用方法について詳しく説明します。

概要

Azure Machine Learningには自動機械学習 (AutoML)と呼ばれる機能が用意されています。

AutoMLは、データサイエンスのプロセスを自動化することで、モデルの構築、トレーニング、評価を効率化するサービスです。これにより、専門知識が少ないユーザーでも高品質な機械学習モデルを作成できるようになります。

また、AutoMLはデータの前処理、特徴量エンジニアリング、アルゴリズムの選定、ハイパーパラメータの最適化などを自動で行います。さらに、生成されたモデルの評価結果やパフォーマンス指標を提供し、最適なモデルを選択する支援をします。

AutoMLを使用して作成したモデルで再推論を行い、機械学習のフローに組み込むためには、事前に作成されたモデルをプログラムで読み込む必要があります。モデルの読み込みと再推論を行うためのプログラムを用意することで、ローカル環境やREST APIコンテナ上で使用することが可能となります。

本記事ではAutoMLで作成したAIモデルを、プログラムから読み込む方法について解説します。またAutoMLで作成されるモデルに要求されるパッケージは常にアップデートされるため、自動アップデートに対応する方法について解説します。

前提知識

AutoMLについて

Azure Machine LearningのAutoMLは、データサイエンスと機械学習のプロセスを自動化するためのツールです。

モデルの選択、ハイパーパラメータのチューニング、データ前処理など、機械学習パイプラインの多くのステップを自動化し、ユーザーが迅速かつ効率的に高性能なモデルを作成できる基盤を提供します。

Azure Machine LearningのAutoMLは多様な機械学習タスクに対応しており、以下の主要な領域でのモデル作成を自動化します。

分類 説明
分類
(Classification)
カテゴリラベルを予測するためのモデルを生成します。例えば、スパムメールの判別や顧客の購買行動予測などに利用されます。
回帰
(Regression)
連続値を予測するモデルを作成します。住宅価格の予測や売上の予測などが典型的な例です。
時系列予測
(Time Series Forecasting)
時系列データに基づいて未来の値を予測します。例えば、需要予測や在庫管理に使用されます。
コンピュータビジョン
(Computer Vision)
画像認識や物体検出のためのモデルを自動生成します。例えば、製品の欠陥検出や顔認識に応用されます。
自然言語処理
(Natural Language Processing, NLP)
テキストデータの解析や理解を行うモデルを作成します。チャットボットや感情分析などが代表的な利用例です。

用意したデータを使ってトリガーすると、複数アルゴリズムを使用して学習を実行し、作成したモデルの学習結果と評価スコア一覧が表示されます。

ユーザーはプログラムを構築することなく、数多くのモデルの中から、結果的に評価スコアの高かったモデルを選択して使用することができます。

なぜ再推論が必要なのか

良い推論スコアのモデルが作成できた場合、それを実際のビジネスで使っていくためには、モデルを手元で継続的に利用できるようにしたり、本番環境にデプロイして新しいデータに対してリアルタイムで予測を行ったりする必要があります。

作成したモデルを使用して、学習に使用していないデータを継続的に推論するためには以下の2種類の方法があります。

  1. 作成したモデルを使用してAPIをデプロイする
  2. 作成したモデルをダウンロードして、構築した環境でロードする(プログラムが必要)

1番の方法はAzure Machine Learning経由でコンテナーをデプロイして、AIモデルを使用できるようなAPIを立てる方法です。最も簡単な方法ですが、Azure上に新規でリソースが立ち上がるため継続的なコストが発生し、また追加の処理を入れるためには一度インターネット経由でAPIにアクセスする必要があります。モデルの処理を外部に公開したくないケースなどでは、それを実現するためプログラムの知識が必要となります。

一方でモデルの実ファイルを取得して、自身でスクリプトを組んでロードすることもできます。今回の記事では、こちらの2番の方法を紹介します。

またその他の方法として、学習トリガー時に任意のテストデータを読み込んで推論させることができますが、これは学習完了後に再使用できない方法となるため今回は割愛します。

AutoML モデルの再推論

AutoMLのモデルファイルダウンロード

AutoMLの学習履歴や作成した全てのモデルは、特に指定がない限りModels機能に表示されず、Jobs機能から参照する必要があります。

AutoML の設定時に入力したExperiment name、Job nameの名前で順にアクセスします。

Models + child jobsのタブを選択します。

実行後に作成されたモデル一覧が表示されるので、最もスコアの高かったモデルを選択します。上のタブから「Download」を選択することでzipファイルをダウンロードします。

zipファイルには以下3ファイルが同封されています。

  • anaconda環境yamlファイル
  • モデルファイル(.pkl形式)
  • スコア用のサンプルスクリプト

モデル読み込みに必要なanaconda環境yamlファイルは不定期でアップデートされます。都度この手順でダウンロードを行い、継続的にenvironmentsのパッケージを更新する必要があります。

またOutput+logsのタブからも生成されたファイルを確認できます。

環境構築を行う

Anacondaを使用してモデルをロードして使用するための環境を用意します。

ダウンロードしたanaconda環境yamlファイルをそのまま使用して環境を作成します。環境名などを任意に決めたい場合は、environment.yamlのname行を書き換えておきます。

conda env create -f environment.yml

Azure Machine LearningのEnvironments機能を活用する場合は、以下のように記述して仮想環境を作成します。

try:
    credential = DefaultAzureCredential()
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    credential = InteractiveBrowserCredential()

ml_client = MLClient.from_config(credential=credential)
env_docker_conda = Environment(
    image="mcr.microsoft.com/azureml/curated/azureml-automl-gpu@latest",
    conda_file="./environment.yaml",
    name="automl-environment",
    description="Environment created from a Docker image & Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)

プログラムからモデルを読み込む

conda activateなどで環境を適用した後、モデルの読み込みを行います。

上記でダウンロードした.pklファイルを、プログラムから読み込めるディレクトリに配置します。

import os
import joblib
import pickle

model_path = "[ダウンロードした.pklファイルのパス]"
try:
    model = joblib.load(model_path)
except Exception as e:
    print(e)
    raise

読み込んだモデルを使用して予測する

モデルへの入力はpandasのDataframe形式で行います。

分類・回帰の場合、予測値は以下のように受け渡します。dfにはモデルにInputしたいデータを投入します。

pred = model.predict(df)

時系列予測の場合は以下のように記述します。quantilesが分位点を示します。

#予測
pred_quantiles = model.forecast_quantiles(df, quantiles=[0.1, 0.5, 0.9])

# 予測値をDataFrameに追加
df['pred_lower'] = pred_quantiles[0.1]
df['pred_median'] = pred_quantiles[0.5]
df['pred_upper'] = pred_quantiles[0.9]

画像の予測については、以下の記事をご参照ください。 learn.microsoft.com

おわりに

本記事では、Azure Machine LearningのAutoMLを用いて作成したモデルを再推論する方法について、詳しく解説しました。

AutoMLはデータサイエンスのプロセスを大幅に簡略化し、専門知識が少ないユーザーでも高性能な機械学習モデルを作成できるツールです。しかし、実際のビジネス環境でモデルを活用するためには、モデルを再推論するための適切な方法を理解し、実装する必要があります。

モデルの再推論にはいくつかのアプローチがありますが、この記事ではモデルをダウンロードしてローカル環境で利用する方法に焦点を当てました。

この方法は、継続的なコストを抑えながら、高いカスタマイズ性を持つ環境でモデルを運用するのに適しています。また、Anaconda環境の利用やAzure Machine LearningのEnvironments機能を活用して、必要な依存関係を簡単に管理する手順も紹介しました。

本記事が、読者の皆様の機械学習プロジェクトにおける理解と実装の一助となれば幸いです。

執筆担当者プロフィール
西野 佑基

西野 佑基(日本ビジネスシステムズ株式会社)

機械学習系ソリューション開発、業務Webアプリ開発、開発環境自動化などを担当。

担当記事一覧