メインコンテンツまでスキップ

MLflow 記録済みモデルを使用したモデルの追跡と比較

MLflow 記録済みモデルは、モデルのライフサイクル全体を通じてモデルの進行状況を追跡するのに役立ちます。 モデルをトレーニングするときは、 mlflow.<model-flavor>.log_model() を使用して、一意の ID を使用してすべての重要な情報を結び付ける LoggedModel を作成します。LoggedModelsの力を活用するには、MLflow 3 の使用を開始します。

生成AI アプリケーションの場合、 LoggedModels を作成して、git コミットまたはパラメーターのセットを専用オブジェクトとしてキャプチャし、トレースとメトリクスにリンクできます。ディープラーニングと従来の ML では、 LoggedModels は MLflow の実行から生成されます。これは MLflow の既存の概念であり、モデル コードを実行するジョブと考えることができます。トレーニング実行ではモデルが出力として生成され、評価実行では既存のモデルを入力として使用して、モデルのパフォーマンスを評価するために使用できるメトリクスやその他の情報が生成されます。

LoggedModelオブジェクトは、モデルのライフサイクル全体を通じて、さまざまな環境間で保持され、メタデータ、メトリクス、パラメーター、モデルの生成に使用されたコードなどのアーティファクトへのリンクが含まれています。記録済みモデル トラッキングを使用すると、モデルを相互に比較し、最もパフォーマンスの高いモデルを見つけ、デバッグ中に情報を追跡できます。

記録済みモデルは、 Unity Catalog モデルレジストリにも登録できるので、 MLflow エクスペリメントやワークスペースのモデル情報を一箇所にまとめることができます。 詳細については、「Model Registry MLflow3 での の改善 」を参照してください。

生成AI、ディープラーニング、従来の ML のモデル追跡フロー。

生成AIおよびディープラーニングモデルの追跡の改善

生成AI とディープラーニング ワークフローは、特に記録済みモデルが提供する詳細な追跡の恩恵を受けます。

生成AI - 統合された評価データとトレースデータ:

  • 生成AI モデルは、評価とデプロイ中に、レビューアーのフィードバックデータやトレースなど、追加のメトリクスを生成します。
  • LoggedModelエンティティを使用すると、モデルによって生成されたすべての情報を 1 つのインターフェイスを使用してクエリできます。

ディープラーニング - 効率的なチェックポイント管理:

  • ディープラーニングのトレーニングでは、トレーニング中の特定のポイントでのモデルの状態のスナップショットである複数のチェックポイントが作成されます。
  • MLflow 、チェックポイントごとに個別の LoggedModel を作成し、モデルのメトリクスとパフォーマンスデータを含めます。 これにより、チェックポイントを比較および評価して、最もパフォーマンスの高いモデルを効率的に特定できます。

記録済みモデルの作成

記録済みモデルを作成するには、既存の ワークロードと同じlog_model()API MLflowを使用します。次のコード スニペットは、生成AI、ディープラーニング、および従来の ML ワークフローの記録済みモデルを作成する方法を示しています。

実行可能なノートブックの完全な例については、「 ノートブックの例」を参照してください。

次のコード スニペットは、LangChain エージェントをログに記録する方法を示しています。エージェントのフレーバーに log_model() 方法を使用してください。

Python
# Log the chain with MLflow, specifying its parameters
# As a new feature, the LoggedModel entity is linked to its name and params
model_info = mlflow.langchain.log_model(
lc_model=chain,
name="basic_chain",
params={
"temperature": 0.1,
"max_tokens": 2000,
"prompt_template": str(prompt)
},
model_type="agent",
input_example={"messages": "What is MLflow?"},
)

# Inspect the LoggedModel and its properties
logged_model = mlflow.get_logged_model(model_info.model_id)
print(logged_model.model_id, logged_model.params)

評価ジョブを開始し、LoggedModelの一意のmodel_idを指定して、メトリクスを記録済みモデルにリンクします。

Python
# Start a run to represent the evaluation job
with mlflow.start_run() as evaluation_run:
eval_dataset: mlflow.entities.Dataset = mlflow.data.from_pandas(
df=eval_df,
name="eval_dataset",
)
# Run the agent evaluation
result = mlflow.evaluate(
model=f"models:/{logged_model.model_id}",
data=eval_dataset,
model_type="databricks-agent"
)
# Log evaluation metrics and associate with agent
mlflow.log_metrics(
metrics=result.metrics,
dataset=eval_dataset,
# Specify the ID of the agent logged above
model_id=logged_model.model_id
)

ノートブックの例

たとえば、 LoggedModelsの使用方法を示すノートブックについては、次のページを参照してください。

モデルの表示と進行状況の追跡

記録済みモデルは、ワークスペース UI で表示できます。

  1. ワークスペースの エクスペリメント タブに移動します。
  2. エクスペリメントを選択します。 次に、[ モデル ] タブを選択します。

このページには、エクスペリメントに関連付けられているすべての記録済みモデルと、そのメトリクス、パラメーター、アーティファクトが含まれています。

モデル追跡 UI。

実行全体でメトリクスを追跡するためのチャートを生成できます。

Model Tracking UI メトリクス チャート。

Search and filter 記録済みモデル

[モデル ] タブでは、属性、パラメーター、タグ、メトリクスに基づいて記録済みモデルを検索およびフィルタリングできます。

Model tracking UI search 記録済みモデル.

データセット固有のパフォーマンスに基づいてメトリクスをフィルタリングでき、特定のデータセットでメトリクス値が一致するモデルのみが返されます。 データセット フィルターがメトリクス フィルターなしで提供されている場合、それらのデータセットに 任意の メトリクスを持つモデルが返されます。

次の属性に基づいてフィルタリングできます。

  • model_id
  • model_name
  • status
  • artifact_uri
  • creation_time (数値)
  • last_updated_time (数値)

次の演算子を使用して、文字列に似た属性、パラメーター、タグを検索およびフィルター処理します。

  • =!=INNOT IN

次の比較演算子を使用して、数値属性とメトリクスを検索およびフィルタリングします。

  • =!=><>=<=

Search 記録済みモデル programmatically

記録済みモデルは、次の MLflow APIを使用して検索できます。

Python
## Get a Logged Model using a model_id
mlflow.get_logged_model(model_id = <my-model-id>)

## Get all Logged Models that you have access to
mlflow.search_logged_models()

## Get all Logged Models with a specific name
mlflow.search_logged_models(
filter_string = "model_name = <my-model-name>"
)

## Get all Logged Models created within a certain time range
mlflow.search_logged_models(
filter_string = "creation_time >= <creation_time_start> AND creation_time <= <creation_time_end>"
)

## Get all Logged Models with a specific param value
mlflow.search_logged_models(
filter_string = "params.<param_name> = <param_value_1>"
)

## Get all Logged Models with specific tag values
mlflow.search_logged_models(
filter_string = "tags.<tag_name> IN (<tag_value_1>, <tag_value_2>)"
)

## Get all Logged Models greater than a specific metric value on a dataset, then order by that metric value
mlflow.search_logged_models(
filter_string = "metrics.<metric_name> >= <metric_value>",
datasets = [
{"dataset_name": <dataset_name>, "dataset_digest": <dataset_digest>}
],
order_by = [
{"field_name": metrics.<metric_name>, "dataset_name": <dataset_name>,"dataset_digest": <dataset_digest>}
]
)

詳細情報と追加の search パラメーターについては、 MLflow 3 API の資料を参照してください。

モデルの入力と出力による検索実行

モデル ID で実行を検索すると、入力または出力として記録済みモデルを持つすべての実行を返すことができます。 フィルター文字列の構文の詳細については、「 実行のフィルター処理」を参照してください。

Model tracking UI search 記録済みモデル.

MLflow API を使用して実行を検索できます。

Python
## Get all Runs with a particular model as an input or output by model id
mlflow.search_runs(filter_string = "model_id = <my-model-id>")

次のステップ

MLflow 3 のその他の新機能の詳細については、次の記事を参照してください。