追跡は、実験に関する関連情報を保存するプロセスです。 この記事では、MLflow を使用して Azure Machine Learning ワークスペースで実験と実行を追跡する方法について説明します。
Azure Machine Learning を使用している場合、MLflow API で使用できる一部のメソッドは使用できない場合があります。 サポートされている操作とサポートされていない操作の詳細については、「実行と実験のクエリを実行するためのサポートマトリックス」をご覧ください。 また、Azure Machine Learning でサポートされている MLflow 機能については、 MLflow と Azure Machine Learning に関する記事を参照してください。
注記
- Azure Databricks で実行されている実験を追跡するには、「 MLflow と Azure Machine Learning を使用して Azure Databricks 機械学習実験を追跡する」を参照してください。
- Azure Synapse Analytics で実行されている実験の追跡する方法については、「MLflow と Azure Machine Learning を使用して Azure Synapse Analytics ML の実験を追跡する」をご覧ください。
前提条件
Azure サブスクリプションと Azure Machine Learning の無料または有料バージョンを用意します。
Azure CLI と Python のコマンドを実行するには、Azure CLI v2 と Azure Machine Learning SDK v2 for Python をインストールします。 Azure CLI の
ml拡張機能は、Azure Machine Learning CLI コマンドを初めて実行したときに自動的にインストールされます。
MLflow SDK
mlflowパッケージと、MLflow 用の Azure Machine Learningazureml-mlflowプラグインをインストールします。pip install mlflow azureml-mlflowヒント
SQL ストレージ、サーバー、UI、またはデータ サイエンスの依存関係のない軽量 MLflow パッケージであるパッケージ
mlflow-skinnyを使用できます。 このパッケージは、MLflowの追跡とログ記録機能のみを主に必要とし、デプロイを含む機能の完全なスイートを必要としないユーザーにお勧めします。Azure Machine Learning ワークスペースを作成します。 ワークスペースを作成するには、「開始する必要があるリソースを作成する」を参照してください。 ワークスペースで MLflow 操作を実行するために必要な アクセス許可 を確認します。
リモート追跡を行う (つまり、Azure Machine Learning の外部で実行されている実験を追跡する) 場合は、Azure Machine Learning ワークスペースの追跡 URI を指すように MLflow を構成します。 MLflow をワークスペースに接続する方法の詳細については、「Azure Machine Learning 用に MLflow を構成する」を参照してください。
実験を構成する
MLflow により実験と実行の情報が整理されます。 実行は Azure Machine Learning ではジョブと呼ばれています。 既定では、実行は「既定」という名前の自動的に作成される実験にログされますが、追跡する実験を構成できます。
Jupyter Notebook などで対話形式でトレーニングする場合は、MLflow コマンド mlflow.set_experiment() を使用します。 たとえば、次のコード スニペットで実験を構成します。
experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)
実行を設定する
Azure Machine Learning は、MLflow 呼び出しが実行される内容でトレーニング ジョブを追跡 します。 実行を使用して、ジョブが実行するすべての処理をキャプチャします。
対話形式で作業するとき、アクティブな実行を必要とする情報をログすると、すぐに MLflow によってトレーニング ルーチンの追跡が開始されます。 たとえば、MLflow の自動ログ機能が有効になっている場合、メトリックまたはパラメーターをログに記録したり、トレーニング サイクルを開始したりすると、MLflow 追跡が開始されます。
ただし、実験の合計時間を [期間] フィールドにキャプチャする場合は特に、通常は、実行を明示的に開始すると便利です。 実行を明示的に開始するには、mlflow.start_run() を使用 します。
実行を手動で開始するかどうかに関係なく、最終的には実行を停止する必要があります。MLflow は実験の実行が完了したことを認識し、実行の状態を 完了としてマークできるようにします。 実行を停止するには、mlflow.end_run() を使用します。
次のコードでは、手動で実行を開始し、ノートブックの末尾でそれを終了します。
mlflow.start_run()
# Your code
mlflow.end_run()
実行の終了を忘れないよう、手動で実行を開始することをお勧めします。 実行の終了を忘れないようにするため、コンテキスト マネージャー パラダイムを使用できます。
with mlflow.start_run() as run:
# Your code
mlflow.start_run()を使用して新しい実行を開始する場合は、run_name パラメーターを指定すると便利です。これは後で Azure Machine Learning ユーザー インターフェイスの実行の名前に変換されます。 この習慣は、実行をもっと簡単に識別するうえで役立ちます。
with mlflow.start_run(run_name="hello-world-example") as run:
# Your code
MLflow Autologging を有効化
手動で MLflow を使用してメトリックス、パラメーター、ファイルをログできます。MLflow の自動ログ機能に依存することもできます。 MLflow でサポートされている各機械学習フレームワークによって、自動的に追跡する内容が決まります。
自動ログ記録を有効にするには、トレーニング コードの前に次のコードを挿入します。
mlflow.autolog()
ワークスペースでのメトリックと成果物の表示
MLflow ログ記録のメトリックと成果物は、お使いのワークスペースで追跡されます。 Azure Machine Learning Studio で表示およびアクセスしたり、MLflow SDK を使用してプログラムでアクセスしたりできます。
スタジオでメトリックと成果物を表示する方法。
ワークスペースの [ジョブ] ページで、実験名を選択します。
実験の詳細ページで、[メトリック] タブを選択します。
ログに記録されたメトリックを選択して、ページの右側にグラフを表示します。 スムージングを適用する、色を変更する、複数のメトリックを 1 つのグラフにプロットするという方法でグラフをカスタマイズすることができます。 レイアウトのサイズを変更したり、配置を変えたりすることもできます。
目的のビューを作成したら、後で使用できるように保存し、直接リンクを使用してチームメイトと共有します。
MLflow SDK を使用してプログラムでメトリック、パラメーター、成果物にアクセスまたはクエリを実行するには、 mlflow.get_run()を使用します。
import mlflow
run = mlflow.get_run("<RUN_ID>")
metrics = run.data.metrics
params = run.data.params
tags = run.data.tags
print(metrics, params, tags)
ヒント
前の例では、特定のメトリックの最後の値のみが返されます。 特定のメトリックのすべての値を取得するには、mlflow.get_metric_history メソッドを使用します。 メトリックの値の取得の詳細については、「実行からパラメーターとメトリックを取得する」をご覧ください。
ファイルやモデルなど、ログした成果物をダウンロードするには、mlflow.artifacts.download_artifacts() を使用します。
mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")
MLflow を使用して Azure Machine Learning で実験と実行の情報を取得または比較する方法の詳細については、「実験 と実行を MLflow で照会および比較する」を参照してください。