Share via


Microsoft Fabric での機械学習の実験

機械学習の "実験" は、関連するすべての機械学習の実行を編成および制御するための主要な単位です。 "実行" はモデル コードの 1 回の実行に対応します。 MLflow において追跡は、実験と実行に基づいています。

機械学習の実験を使用すると、データ科学者は、機械学習コードの実行時にパラメータ、コード バージョン、メトリック、出力ファイルをログに記録できます。 また、実験では、実行を視覚化、検索、比較できるだけでなく、他のツールで分析するために実行ファイルおよびメタデータをダウンロードすることもできます。

この記事では、データ サイエンティストが機械学習実験を操作して利用し、開発プロセスを整理して複数の実行を追跡する方法について詳しく説明します。

前提条件

  • Power BI Premium サブスクリプション。 お持ちでない場合は、「Power BI Premium の購入方法」を参照してください。
  • Premium 容量が割り当てられた Power BI ワークスペース。

実験の作成

機械学習の実験は、Power BI ユーザー インターフェイス (UI) のデータ サイエンス ホーム ページから直接作成するか、MLflow API を使用するコードを記述することによって作成できます。

UI を使用して実験を作成する

UI から機械学習実験を作成するには:

  1. 新しいデータ サイエンス ワークスペースを作成するか、既存のものを選択します。

  2. [新規] セクションから [実験] を選択します。

  3. 実験名を指定し、[作成] を選択します。 このアクションにより、ワークスペース内に空の実験が作成されます。

    Screenshot showing where to select Experiment in the New menu.

実験を作成したら、実行の追加を開始して実行メトリックとパラメータを追跡できます。

MLflow API を使用して実験を作成する

また、mlflow.create_experiment() または mlflow.set_experiment() API を使用した作成エクスペリエンスから直接機械学習の実験を作成することもできます。 次のコードの <EXPERIMENT_NAME> を実験の名前に置き換えます。

import mlflow
 
# This will create a new experiment with the provided name.
mlflow.create_experiment("<EXPERIMENT_NAME>")

# This will set the given experiment as the active experiment. 
# If an experiment with this name does not exist, a new experiment with this name is created.
mlflow.set_experiment("<EXPERIMENT_NAME>")

実験内の実行を管理する

機械学習の実験には、追跡と比較を簡略化するための実行のコレクションが含まれています。 実験内で、データ科学者はさまざまな実行間を移動して、基礎となるパラメータとメトリックを調べることができます。 また、データ科学者は、機械学習実験内の実行を比較して、目的のモデル パフォーマンスを得るパラメータのサブセットを特定することもできます。

実行を追跡する

機械学習の実行は、モデル コードの 1 回の実行に対応します。

Screenshot of machine learning run detail page.

各実行には次の情報が含まれます。

  • ソース: 実行を作成したノートブックの名前。
  • 登録済みバージョン: 実行が機械学習モデルとして保存されたかどうかを示します。
  • 開始日: 実行の開始時刻。
  • 状態: 実行の進行状況。
  • ハイパーパラメーター: キーと値のペアとして保存されるハイパーパラメーター。 キーと値はどちらも文字列です。
  • メトリック: キーと値のペアとして保存される実行メトリック。 値は数値です。
  • 出力ファイル: 任意の形式の出力ファイル。 たとえば、画像、環境、モデル、データ ファイルを記録できます。

最近の実行を表示する

ワークスペースの一覧ビューから、実験の最近の実行を直接表示することもできます。 このビューでは、最近のアクティビティを追跡したり、関連する Spark アプリケーションにすばやく移動したり、実行状態に基づいてフィルターを適用したりできます。

Screenshot of machine learning recent runs and Spark application view.

実行を比較およびフィルター処理する

機械学習の実行の品質を比較して評価するために、実験内の選択した実行間でパラメータ、メトリック、およびメタデータを比較できます。

実行を視覚的に比較する

既存の実験内の実行を視覚的に比較およびフィルター処理できます。 視覚的な比較を行うと、簡単に複数の実行間を移動し、それらを並べ替えることができます。

Screenshot showing a list of runs and the chart view.

実行を比較するには:

  1. 複数の実行を含む既存の機械学習の実験を選択します。
  2. [表示] タブを選択し、[実行リスト] ビューに移動します。 または、[実行の詳細] ビューから直接 [実行リストの表示] オプションを選択することもできます。
  3. [列のカスタマイズ] ペインを展開して、表内の列をカスタマイズします。 そこで、表示するプロパティ、メトリック、ハイパーパラメーターを選択できます。
  4. [フィルター] ペインを展開して、選択した特定の条件に基づいて結果を絞り込みます。
  5. 複数の実行を選択して、メトリック比較ペインで結果を比較します。 このペインから、グラフのタイトル、視覚化の種類、X 軸、Y 軸などを変更してグラフをカスタマイズできます。

MLflow API を使用して実行を比較する

データ科学者は、MLflow を使用して、実験内の実行間でクエリの実行および検索を行うこともできます。 MLflow のドキュメントを参照すると、実行の検索、フィルター処理、比較のための MLflow API をさらに調べることができます。

すべての実行を取得する

MLflow search API mlflow.search_runs() を使用して、次のコードの <EXPERIMENT_NAME> を実験名に置き換えるか、<EXPERIMENT_ID> を実験 ID に置き換えることで、実験内のすべての実行を取得できます。

import mlflow

# Get runs by experiment name: 
mlflow.search_runs(experiment_names=["<EXPERIMENT_NAME>"])

# Get runs by experiment ID:
mlflow.search_runs(experiment_ids=["<EXPERIMENT_ID>"])

ヒント

experiment_ids パラメータに実験 ID のリストを指定することで、複数の実験を検索できます。 同様に、experiment_names パラメータに実験名のリストを指定すると、MLflow で複数の実験を検索できるようになります。 これは、異なる実験内の実行間で比較する場合に便利です。

実行の順序と制限

search_runsmax_results パラメータを使用して、返される実行数を制限します。 order_by パラメータを使用すると、列をリストして並べ替えすることができます。これには、オプションの DESC または ASC 値を含めることができます。 たとえば、次の例では、実験の最後の実行を返します。

mlflow.search_runs(experiment_ids=[ "1234-5678-90AB-CDEFG" ], max_results=1, order_by=["start_time DESC"])

Fabric ノートブック内の実行を比較する

Fabric ノートブック内の MLFlow オーサリング ウィジェットを使用して、各ノートブック セル内で生成された MLflow の実行を追跡できます。 ウィジェットを使用すると、個々のセル レベルまで、実行、関連するメトリック、パラメーター、プロパティを追跡できます。

視覚的な比較を取得するため、[実行の比較] ビューに切り替えることもできます。 このビューにはデータがグラフィカルに表示されるので、さまざまな実行にわたるパターンや偏差をすばやく識別するのに役立ちます。

Screenshot showing how to use the MLFlow authoring widget.

実行を機械学習モデルとして保存する

実行によって目的の結果が得られたら、モデル追跡の強化やモデル デプロイのために、[ML モデルとして保存] を選択して実行をモデルとして保存できます。

Screenshot showing where to select Create a new model.