MLflow を使用してメトリックを追跡する

完了

スクリプトを使用してモデルをトレーニングする場合は、MLflow をスクリプトに含め、パラメーター、メトリック、成果物を追跡できます。 Azure Machine Learning でスクリプトをジョブとして実行すると、実行ごとにすべての入力パラメーターと出力を確認できます。

MLflow について

MLflow は、機械学習のライフサイクル全体を管理するように設計されたオープンソース プラットフォームです。 オープン ソースであるため、さまざまなプラットフォームでモデルをトレーニングするときに使用できます。 ここでは、MLflow と Azure Machine Learning ジョブを統合する方法について説明します。

MLflow を使用して機械学習ジョブを追跡するには、次の 2 つのオプションがあります。

  • を使用して自動ログ記録を有効にする mlflow.autolog()
  • ログ関数を使用してカスタム メトリックを追跡する mlflow.log_*

これらのオプションのいずれかを使用するには、MLflow を使用するように環境を設定する必要があります。

環境に MLflow を含める

トレーニング ジョブ中に MLflow を使用するには、スクリプトを実行するコンピューティングに mlflowazureml-mlflow pip パッケージをインストールする必要があります。 そのため、これら 2 つのパッケージを環境に含める必要があります。 Conda 環境を記述する YAML ファイルを参照することで、環境を作成できます。 Conda 環境の一部として、これら 2 つのパッケージを含めることができます。

たとえば、このカスタム環境では、 mlflowazureml-mlflow は pip を使用してインストールされます。

name: mlflow-env
channels:
  - conda-forge
dependencies:
  - python=3.10
  - pip
  - pip:
    - numpy
    - pandas
    - scikit-learn
    - matplotlib
    - mlflow
    - azureml-mlflow

環境を定義して登録したら、ジョブを送信するときに必ずそれを参照してください。

自動ログ記録を有効にする

機械学習用の共通ライブラリの 1 つを使用する場合は、MLflow で自動ログ記録を有効にすることができます。 自動ログ記録では、ログに記録する必要のあるものを指定する必要がなく、パラメーター、メトリック、およびモデル成果物がログに記録されます。

自動ログ記録は、次のライブラリでサポートされています。

  • Scikit-learn
  • TensorFlow と Keras
  • XGBoost
  • LightGBM
  • Spark
  • Fastai
  • Pytorch

自動ログ記録を有効にするには、トレーニング スクリプトに次のコードを追加します。

import mlflow

mlflow.autolog()

MLflow を使用してメトリックをログに記録する

トレーニング スクリプトでは、MLflow でログに記録するカスタム メトリックを決定できます。

ログに記録する値の種類に応じて、MLflow コマンドを使用して、実験の実行でメトリックを格納します。

  • mlflow.log_param(): 単一のキー値パラメーターをログに記録します。 この関数は、ログに記録する入力パラメーターに使用します。
  • mlflow.log_metric(): 単一のキー値メトリックをログに記録します。 値は数値である必要があります。 実行時に保存する出力に対して、この関数を使用します。
  • mlflow.log_figure(): matplotlib の図を成果物として直接ログに記録します。 この関数を使用すると、最初にプロットをディスクに保存せずにログに記録できます。
  • mlflow.log_image(): numpy または PIL イメージ オブジェクトを成果物としてログに記録します。 この関数を使用すると、最初にイメージをディスクに保存せずに、イメージを直接ログに記録できます。

既存のトレーニング スクリプトに MLflow を追加するには、次のコードを追加します。

import mlflow

reg_rate = 0.1
mlflow.log_param("Regularization rate", reg_rate)

ヒント

MLflow Tracking の使用方法の完全な概要については、 MLflow のドキュメントを参照してください。

ジョブを送信する

最後に、Azure Machine Learning でトレーニング スクリプトをジョブとして送信する必要があります。 トレーニング スクリプトで MLflow を使用すると、追跡されたすべてのパラメーター、メトリック、および成果物がジョブの実行と共に格納されます。 ジョブを送信した後、実行ごとにそれらを確認できます。

ジョブを通常どおり設定します。 ジョブで参照する環境に必要なパッケージが含まれていることと、ログに記録するメトリックがスクリプトに記述されていることを確認する必要があります。