【Python SDK v2】Azure AutoMLをPythonからトレーニング

はじめに

Python SDK v2 を用いてAuto MLのトレーニングをしてみます。

v1は2025年9月をもって終了するとのことなので、それまでには移行した方が良さそうです。
前回までのAzure MLの記事ではv1を用いて行っていましたが、v2を使用してみたところ変わった部分が結構多かったのでご紹介します。

Azure CLI v2のインストールは公式に書かれている通りにインストールを行います。

でCLIのバージョンを確認できます。

SDK v2のインストールは公式に書いてあるように、pipインストールを行います。

開発環境

  • OS Windows 10(NVIDIA GTX 1650Ti,16GB RAM, i5-10300H CPU)
  • Visual Studio Code 1.73.1
  • Python 3.9

Pythonから学習

今回はKaggleのcredit cardのデータセットを使います。
データはこちらからダウンロードできます。

image.png

中身はこんな感じです。
予測対象列としてClass列を使ってトレーニングしていきます。

ワークスペースへの接続~トレーニングまで

公式の流れ通りにまずはトレーニングを行います。

ワークスペースへの接続

サブスクリプションID、リソースグループ名、そしてワークスペース名をMLClientクラスを使って接続します。

データの準備(MLTable)

次に、SDK v2で表形式の学習データを使う場合MLTableを用いる必要があります。
training-mltable-folderに次の「MLTable」という名前のyamlファイルと先ほどダウンロードした「creditcard.csv」を保存します。

最初、「MLTable.yml」と保存していたら実行時に

このように言われたので、必ず「MLTable」という名前にしないといけないようです。

コンピューティングクラスターの設定

クラスターの名前を決め、コンピューティングのサイズなどを次のように設定します。

トレーニング

computeには作成したコンピューティングクラスターを設定します。
experiment_nameには実験名を入力。
training_dataにはMLTableを使った入力データを使用します。
target_column_nameには予測対象の列名(今回の場合はClass)を入力します。
primary_metricでは最適化モデルの指標となるものを選びます。

次に、実験の終了するタイミングなどを決めます。
set_limits()を使えばいろいろ設定できるみたいです。
timeout_minutesは実験(セットアップから特徴量の選択~トレーニングまで)を最大何分まで続行できるかを決められます。設定しない場合は最大6日がデフォルトのようです。
trial_timeout_minutesは1回の試行(子ジョブ)で何分まで行えるかの設定です。デフォルトは1か月です。
max_trialsはアルゴリズムとパラメータの組み合わせを最大何回まで試すか設定します。デフォルトは1000回でenable_early_terminationを使うと試行回数を減らせます。

また、set_training関数を用いると、さらにアルゴリズムの設定を行えます。
blocked_training_algorithmsでは使わないアルゴリズムを選択でき、allowed_training_algorithmsで使うモデルを設定できます。

実行

最後はジョブを送信し、ステータスの状況を取得してみます。

トレーニング完了後

Pythonから送信したジョブは無事実行され、時間を置いて待つと完了です。
image.png

作成したモデル一覧を見ると

image.png

ジョブの終了条件で記載した通り、モデルが5個生成されています。

一番精度が良かったものは「説明の表示」で詳細を確認できます。

image.png

次回はモデルのデプロイを行ってみます。

この記事を書いた人

azure-recipe-user