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