MLflow での実行の検索

Mlflow Deno Shi Xingno Jian Suo



機械学習の実験を追跡および管理するために、MLflow は広範なプラットフォームを提供します。実行を検索する機能は、MLflow の重要な機能の 1 つです。これにより、開発された実験を識別し、必要なときにいつでも簡単に情報を見つけられる方法でそれらを整理することができます。 MLflow 検索 API を使用して、次のようなさまざまな基準を使用して実行を検索することがあります。
  • 実験 ID または名前
  • 実行ID
  • パラメータと値
  • 指標と値
  • タグ
  • 実行に関連付けられたその他の属性

MLflow 検索 API を使用すると、実行をステータス、開始時刻、終了時刻、期間でフィルタリングできます。これにより、多くの実行をフィルタリングして、ユーザーが興味のある特定の実行を見つけることが容易になります。

MLflow検索機能

mlflow.search_runs() 関数を使用して、MLflow 検索 API にアクセスします。この関数は、次のようなさまざまな引数を受け入れます。







  • 実験の ID または名前
  • フィルタ文字列またはテキスト
  • 返される実行の最大数は、max_results 引数で指定されます。

SQL (構造化照会言語) の WHERE 句を簡略化したものは、フィルター文字列またはテキストです。これは、実行を並べ替える基準を示すために使用できます。



MLflow Search_Runs() 関数の構文

次の例の「experiment_id または Experiment_name」は、検索する実験の実際の ID または名前に置き換える必要があります。 search_criteria 変数を使用すると、必要に応じて検索基準を入力できます。これらの基準は、メトリック、タグ、パラメータ、または追加の特性によって決定される場合があります。 search_runs() 関数の基本構文は次のとおりです。



# mlflow 検索 API をインポートして search_runs 関数を使用する

輸入 ミリフロー

# 実験 ID または名前を入力します (オプションです)。

exp_id = 「実験IDまたは実験名」

# 実行の検索条件を定義する

検索文字列 = 「metrics.accuracy > 0.8 AND params.learning_rate = '0.01' AND params.efficiency_rate > '80'」

# 検索を実行する

走る = ミリフロー。 検索実行数 ( 実験ID = exp_id フィルター文字列 = 検索文字列 )

# 結果を表示する

印刷する ( 'の検索結果:' )

印刷する ( 走る )

さまざまな条件を使用して検索を実行する

1. メトリック値による検索

MLflow 検索 API のメトリクス フィールドを使用して、特定のメトリクスの値によって実行をフィルタリングできます。カンマで区切られたメトリック名のコレクションがメトリック フィールドに表示されます。たとえば、次のフィルター文字列は、精度の値が 0.9 より大きいすべての実行を検索します。





メトリクス。 正確さ > 0.9

メトリクス フィールドで使用できるメトリクスの完全なリストは次のとおりです。

  • 正確さ
  • オーク
  • f1
  • 精度
  • 想起
  • 地図
  • ログロス
  • 分類エラー
  • multi_class_logloss

さらに、ユーザーは、メトリクス フィールドを使用して、メトリクスの値の範囲によって実行をフィルタリングできます。たとえば、次のフィルター文字列は、精度測定値が 0.4 ~ 0.8 であるすべての実行を検索します。



メトリクス。 正確さ 0.4 そして 0.8

メトリクス フィールドでは、AND 演算子と OR 演算子でメトリクスを結合し、メトリクスの精度と f1 値が 0.3 および 0.8 を超える実行を見つけます。

メトリクス。 正確さ > 0.3 そしてメトリクス。 f1 > 0.8

2. パラメータ値による検索

MLflow 検索 API の params フィールドを使用して、パラメーター値による検索を実行します。パラメータの名前と値は、カンマを使用して params フィールドにリストされます。この例では、前述のフィルター文字列により、num_boost_round パラメーターの値が 100 であるすべての実行が検索されます。

パラメータ。 num_boost_round = 「100」

パラメータ値の検索文字列の例をさらにいくつか示します。

  • params.num_boost_round = 900
  • params.learning_rate 0.001 と 0.01 の間
  • params.num_boost_round=’70’ AND params.learning_rate=’0.01’

3. タグで検索

タグを使用した検索の例を次に示します。

検索条件 = 'tags.mlflow.source.type = '辞書''

Mlflow.search_runs() 関数を実行するためのマトリックスとパラメータ値の例

MLflow 実験を設定し、実行をログに記録し、mlflow.search_runs() を使用して検索を開始する例を見てみましょう。コードを完全に理解するには、次の手順に従います。

ステップ 1: MLflow 実験を作成する

まず、MLflow 実験を設定します。実験がすでに存在する場合は、既存の実験を取得します。そうでない場合は、新しいものが作成されます。

コードの説明:

MLflow ライブラリはコードの最初の行でインポートされ、次の行で Experiment_name が「My First MLflow Experiment」に設定されます。 Experiment_name が「mlflow.get_experiment_by_name」関数に渡されると、その関数は実験が存在しない場合は「None」を返し、それ以外の場合は実験のオブジェクトを返します。

条件文に実験が存在するかどうかを確認します。実験がすでに存在する場合は、experiment_id を設定します。それ以外の場合は、「mlflow.create_experiment」を使用して新しい実験を作成します。実験 ID はこの関数によって返されます。実験の終了時にコンソールまたはターミナル画面に実験 ID を表示します。次のコードをメモ帳にコピーし、目的の名前と拡張子「.py」を付けてファイルを保存します。

# mlflow ライブラリをインポートする

輸入 ミリフロー

# 実験を作成または取得する

exp_name = 「初めての MLflow 実験」

# mlflow 関数 get_experiment_by_name を使用して、名前で実験を取得します

経験値 = ミリフロー。 get_experiment_by_name ( exp_name

# 実験がまだ存在していないか確認します

もし 経験値 なし :

# 新しい実験を作成し、実験名を mlflow.create_experiment 関数に渡します

exp_id = ミリフロー。 作成_実験 ( exp_name

# 成功メッセージを画面に表示する

印刷する ( 「実験は存在しません。実験は正常に作成されました!」

それ以外 :

# 既存の実験のexperiment_idを取得します。

exp_id = 経験値 実験ID

印刷する ( 「実験はすでに存在します!」

# 実験IDを表示

印刷する ( 「実験ID:」 exp_id

ここで、Python コンパイラを使用してコマンド プロンプトまたはターミナル ウィンドウでプログラムを起動し、「Python」と入力し、ファイル名 (この場合は「MyFirstMlflowExperiment.py」) を入力します。実験が最初に実行されるとき、実験はまだ存在しません。したがって、MLFlow は実験 ID を作成し、コンソール画面に実験 ID を出力します。

コードを再実行して、新しい実験を作成していないことを確認し、既存の実験の ID を表示します。次のスクリーンショットは、実験がすでに存在していることを示しています。

ステップ 2: メトリクスとパラメータを使用して実行をログに記録する

次に、確立したばかりの実験のメトリクスとパラメーターを使用して、いくつかの実行をログに記録してみましょう。実際のシナリオでは、機械学習モデルを開発し、各実行の終了時にメトリクスやパラメーターなどの関連情報を記録します。ここでは精度をマトリックス値として使用しており、この場合は 0.95 です。学習と効率のパラメータ値はそれぞれ 0.01 と 90 です。コードは次のとおりです。

# MLflow 実行を開始してメトリクスとパラメーターをログに記録します

ミリフロー。 スタートラン ( 実験ID = exp_id :

# 機械学習コードはここにあります (これは単なるシミュレーション例です)

モデルの精度 = 0.95

機械学習率 = 0.01

効率性_率 = 90

# メトリクスとパラメータをログに記録する

ミリフロー。 log_metric ( '正確さ' モデルの精度

ミリフロー。 log_param ( 「学習率」 機械学習率

ミリフロー。 log_param ( 「効率_率」 効率性_率

前述のコードを実行した結果がここに表示されます。結果は前と同じです。

ステップ 3: Mlflow.search_runs() を使用して検索を実行する

最後に、いくつかのパラメーターを使用してログに記録された実行の検索を実行し、結果を端末画面に表示します。

# 実行の検索条件を定義する

検索条件の定義 = 「metrics.accuracy > 0.8 AND params.learning_rate = '0.01' AND params.efficiency_rate = '90'」

# 検索を実行する

走る = ミリフロー。 検索実行数 ( 実験ID = exp_id フィルター文字列 = 検索条件の定義

# 結果を表示する

印刷する ( 'の検索結果:'

印刷する ( 走る

Git ツールに関連する警告は、search_runs 関数の実行によって生成されます。


この警告を無効にするには、Python ファイルの先頭にコードを追加します。コードの短いセクションは次のとおりです。

輸入 ミリフロー

輸入 あなた

あなた [ 「GIT_PYTHON_REFRESH」 = '静かな'

次のコード行が追加されると、「mlflow.search_runs」関数が正常に実行されます。

結論

「mlflow.search_runs」関数を使用すると、ユーザーは機械学習実験を迅速に探索および評価し、多くの実行を分析し、望ましい結果をもたらす最適なハイパーパラメーターのバリエーションやモデルを特定できます。これは、機械学習のワークフローを監視、計画、分析するための効果的なツールです。