機械学習 実験 は、関連するすべての機械学習実行の組織と制御の主要な単位です。 実行 は、モデル コードの 1 回の実行に対応します。 MLflowでは、追跡は実験と実行に基づいています。
機械学習の実験を使用すると、データ サイエンティストは、機械学習コードの実行時にパラメーター、コード バージョン、メトリック、出力ファイルをログに記録できます。 実験では、実行を視覚化、検索、比較したり、実行ファイルやメタデータをダウンロードして他のツールで分析したりすることもできます。
この記事では、データ サイエンティストが機械学習実験と対話し、使用して開発プロセスを整理し、複数の実行を追跡する方法について詳しく説明します。
[前提条件]
- Power BI Premium サブスクリプション。 お持ちでない場合は、「Power BI Premium とは」を参照してください。
- Premium 容量が割り当てられた Power BI ワークスペース。
実験の作成
機械学習実験は、ファブリック ユーザー インターフェイス (UI) から直接作成することも、MLflow API を使用するコードを記述することで作成することもできます。
UI を使用して実験を作成する
UI から機械学習の実験を作成するには:
新しいワークスペースを作成するか、既存のワークスペースを選択します。
ワークスペースの左上にある [ 新しい項目] を選択します。 [ データの分析とトレーニング] で、[ 実験 ] を選択します。
[ 作成] を選択します。これは、垂直メニューから ... にあります。
[ データ サイエンス] で [ 実験] を選択します。
実験名を指定し、[ 作成] を選択します。 このアクションにより、ワークスペース内に空の実験が作成されます。
実験を作成したら、実行メトリックとパラメーターを追跡する実行の追加を開始できます。
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 回の実行に対応します。 実行ごとに次の情報を追跡できます。
各実行には、次の情報が含まれています。
- ソース: 実行を作成したノートブックの名前。
- 登録済みバージョン: 実行が機械学習モデルとして保存されたかどうかを示します。
- 開始日: 実行の開始時刻。
- 状態: 実行の進行状況。
- ハイパーパラメーター: キーと値のペアとして保存されたハイパーパラメーター。 キーと値の両方が文字列です。
- メトリック: キーと値のペアとして保存されたメトリックを実行します。 値は数値です。
- 出力ファイル: 任意の形式でファイルを出力します。 たとえば、画像、環境、モデル、データ ファイルを記録できます。
- タグ: 実行に関連するキーと値のペア形式のメタデータ。
実行リストを表示する
実行リストビューでは、実験のすべての実行を表示できます。 このビューを使用すると、最近のアクティビティを追跡し、関連する Spark アプリケーションにすばやく移動し、実行状態に基づいてフィルターを適用できます。
実行リストを表示する
実行リストビューでは、実験のすべての実行を表示できます。 このビューを使用すると、最近のアクティビティを追跡し、関連する Spark アプリケーションにすばやく移動し、実行状態に基づいてフィルターを適用できます。
実行の比較とフィルター処理
機械学習の実行の品質を比較して評価するには、実験内で選択した実行間でパラメーター、メトリック、およびメタデータを比較できます。
実行にタグを適用する
実験実行の MLflow タグ付けにより、ユーザーはキーと値のペアの形式でカスタム メタデータを実行に追加できます。 これらのタグを使用すると、特定の属性に基づいて実行の分類、フィルター処理、検索が行われ、MLflow プラットフォーム内での実験の管理と分析が容易になります。 ユーザーはタグを使用して、モデルの種類、パラメーター、または関連する識別子などの情報を使用して実行にラベルを付けることができ、全体的な組織と実験の追跡可能性が向上します。
このコード スニペットは、MLflow の実行を開始し、いくつかのパラメーターとメトリックをログに記録し、実行のコンテキストを分類して提供するタグを追加します。
import mlflow
import mlflow.sklearn
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.datasets import fetch_california_housing
# Autologging
mlflow.autolog()
# Load the California housing dataset
data = fetch_california_housing(as_frame=True)
X = data.data
y = data.target
# Split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Start an MLflow run
with mlflow.start_run() as run:
# Train the model
model = LinearRegression()
model.fit(X_train, y_train)
# Predict and evaluate
y_pred = model.predict(X_test)
# Add tags
mlflow.set_tag("model_type", "Linear Regression")
mlflow.set_tag("dataset", "California Housing")
mlflow.set_tag("developer", "Bob")
タグが適用されたら、インライン MLflow ウィジェットまたは実行の詳細ページから直接結果を表示できます。
Warnung
警告: ファブリックでの MLflow 実験実行へのタグの適用に関する制限事項
- 空でないタグ: タグ名または値を空にすることはできません。 空の名前または値を持つタグを適用しようとすると、操作は失敗します。
- タグ名: タグ名の長さは最大 250 文字です。
- タグ値: タグ値の長さは最大 5,000 文字です。
-
制限付きタグ名: 特定のプレフィックスで始まるタグ名はサポートされていません。 具体的には、
synapseml、mlflow、またはtridentで始まるタグ名は制限され、許可されません。
実行を視覚的に比較する
既存の実験内の実行を視覚的に比較およびフィルター処理できます。 視覚的な比較を使用すると、複数の実行間を簡単に移動し、それらをまたいで並べ替えることができます。
実行を比較するには:
- 複数の実行を含む既存の機械学習実験を選択します。
- [ 表示 ] タブを選択し、[ 実行] リスト ビューに移動します。 または、[実行の詳細] ビューから [実行リストを直接表示する] オプションを選択することもできます。
- [列のカスタマイズ] ウィンドウを展開して、テーブル内の 列をカスタマイズ します。 ここでは、表示するプロパティ、メトリック、タグ、ハイパーパラメーターを選択できます。
- [フィルター] ウィンドウを展開して、選択した特定の条件に基づいて結果を絞り込みます。
- 複数の実行を選択して、メトリック比較ウィンドウで結果を比較します。 このウィンドウでは、グラフのタイトル、視覚化の種類、X 軸、Y 軸などを変更して、グラフをカスタマイズできます。
MLflow API を使用して実行を比較する
データ サイエンティストは、MLflow を使用して、実験内の実行のクエリと検索を行うこともできます。 MLflow のドキュメントを参照して、実行の検索、フィルター処理、および比較のために、さらに多くの MLflow API を調べることができます。
すべての実行を取得する
MLflow 検索 API mlflow.search_runs() を使用して、 <EXPERIMENT_NAME> を実験名に置き換えるか、次のコードの実験 ID に <EXPERIMENT_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 で複数の実験を検索できるようになります。 これは、異なる実験内の複数の実行を比較する場合に便利です。
実行の順序と制限
max_resultsの search_runs パラメーターを使用して、返される実行の数を制限します。
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 の実行を追跡できます。 ウィジェットを使用すると、個々のセル レベルまで、実行、関連付けられているメトリック、パラメーター、およびプロパティを追跡できます。
視覚的な比較を取得するには、[ 比較の実行 ] ビューに切り替えることができます。 このビューでは、データがグラフィカルに表示され、さまざまな実行のパターンまたは偏差をすばやく識別できます。
実行を機械学習モデルとして保存する
実行で目的の結果が得られたら、[ ML モデルとして保存] を選択して、実行をモデルとして保存し、モデルの追跡を強化し、モデルのデプロイに使用できます。
ML 実験の監視 (プレビュー)
ML 実験は Monitor に直接統合されます。 この機能は、Spark アプリケーションとそれらが生成する ML 実験に関するより多くの洞察を提供するように設計されており、これらのプロセスの管理とデバッグが容易になります。
モニターから実行を監視する
ユーザーはモニターから実験の実行を直接追跡でき、すべてのアクティビティの統一されたビューが提供されます。 この統合には、フィルター オプションが含まれます。これにより、ユーザーは過去 30 日以内またはその他の指定された期間内に作成された実験や実行に集中できます。
Spark アプリケーションから関連する ML 実験の実行を追跡する
ML 実験は Monitor に直接統合され、特定の Spark アプリケーションを選択して項目スナップショットにアクセスできます。 ここでは、そのアプリケーションによって生成されたすべての実験と実行の一覧を確認できます。