Version Tracking API リファレンス
概要
MLflow バージョン追跡を使用すると、 LoggedModel
エンティティを使用して 生成AI アプリケーションのバージョン管理された表現を作成できます。このページでは、MLflow でアプリケーションのバージョンを追跡するための API リファレンスを提供します。
生成AIアプリケーションをバージョン管理する理由
再現性 : 特定のバージョンで使用されている正確なコード (Git コミット ハッシュなど) と構成をキャプチャまたはリンクして、いつでも再構築できるようにします。
リグレッションのデバッグ : LoggedModel
バージョンを追跡し、コード、構成、評価結果、トレースの違いを調べることで、問題のあるバージョンを既知の正常なバージョンと簡単に比較できます。
客観的な比較 : mlflow.genai.evaluate()
を使用してバージョンを体系的に評価し、品質スコア、コスト、レイテンシなどのメトリクスを並べて比較します。
監査可能性 : 各 LoggedModel
バージョンは監査可能なレコードとして機能し、コンプライアンスとインシデント調査のための特定のコードと構成にリンクします。
コアコンセプト
LoggedModel
MLflow の LoggedModel
は、生成AI アプリケーションの特定のバージョンを表します。評価、デプロイ、または参照するアプリケーションの各個別の状態は、新しい LoggedModel
としてキャプチャできます。
主な特徴:
- 生成AI アプリケーションの 中央バージョン管理されたエンティティ
- アプリケーションの状態 (構成とパラメーターを含む) をキャプチャします
- 外部コードへのリンク (通常は Git コミット ハッシュ経由)
- 開発から本番運用までの ライフサイクルを追跡
バージョン追跡方法
MLflow には、バージョン追跡のための 2 つのアプローチが用意されています。
set_active_model
: 必要に応じてLoggedModel
を自動的に作成し、後続のトレースをリンクするシンプルなバージョン追跡create_external_model
: 広範なメタデータ、パラメーター、タグを使用してバージョン作成を完全に制御
API リファレンス
set_active_model
トレースを特定の LoggedModel
バージョンにリンクします。指定した名前のモデルが存在しない場合は、自動的に作成されます。
def set_active_model(
name: Optional[str] = None,
model_id: Optional[str] = None
) -> ActiveModel:
パラメーター
パラメーター | Type | 必須 | 説明 |
---|---|---|---|
|
| いいえ* | モデルの名前。モデルが存在しない場合は、新しいモデルを作成します |
|
| いいえ* | 既存の LoggedModel の ID |
※ name
または model_id
のいずれかのご用意が必要です。
戻り値
コンテキストマネージャとして使用できる ActiveModel
オブジェクト( LoggedModel
のサブクラス)を返します。
使用例
import mlflow
# Simple usage - creates model if it doesn't exist
mlflow.set_active_model(name="my-agent-v1.0")
# Use as context manager
with mlflow.set_active_model(name="my-agent-v2.0") as model:
print(f"Model ID: {model.model_id}")
# Traces within this context are linked to this model
# Use with existing model ID
mlflow.set_active_model(model_id="existing-model-id")
create_external_model
コードとアーティファクトがMLflow外部(Gitなど)に保存されているアプリケーションに対して、新しいLoggedModel
を作成します。
def create_external_model(
name: Optional[str] = None,
source_run_id: Optional[str] = None,
tags: Optional[dict[str, str]] = None,
params: Optional[dict[str, str]] = None,
model_type: Optional[str] = None,
experiment_id: Optional[str] = None,
) -> LoggedModel:
パラメーター
パラメーター | Type | 必須 | 説明 |
---|---|---|---|
|
| No | モデル名。指定しない場合は、ランダムな名前が生成されます |
|
| No | 関連付けられたランの ID。デフォルトは、実行コンテキスト内にある場合はアクティブなランのID です |
|
| No | 整理とフィルタリングのためのキーと値のペア |
|
| No | モデルのパラメーターと構成 (文字列である必要があります) |
|
| No | 分類のためのユーザー定義のタイプ (例: "agent"、"rag-system") |
|
| No | に関連付けるエクスペリメント。 指定されていない場合は、アクティブなエクスペリメントを使用します |
戻り値
次の LoggedModel
オブジェクトを返します。
model_id
: モデルの一意の識別子name
: 割り当てられたモデル名experiment_id
: 関連付けられたエクスペリメント IDcreation_timestamp
: モデルが作成されたときstatus
:モデルのステータス(外部モデルの場合は常に「READY」)tags
: タグの辞書params
: パラメーターの辞書
使用例
import mlflow
# Basic usage
model = mlflow.create_external_model(
name="customer-support-agent-v1.0"
)
# With full metadata
model = mlflow.create_external_model(
name="recommendation-engine-v2.1",
model_type="rag-agent",
params={
"llm_model": "gpt-4",
"temperature": "0.7",
"max_tokens": "1000",
"retrieval_k": "5"
},
tags={
"team": "ml-platform",
"environment": "staging",
"git_commit": "abc123def"
}
)
# Within a run context
with mlflow.start_run() as run:
model = mlflow.create_external_model(
name="my-agent-v3.0",
source_run_id=run.info.run_id
)
LoggedModel クラス
LoggedModel
クラスは、MLflow のバージョン管理されたモデルを表します。
プロパティ
属性 | Type | 説明 |
---|---|---|
|
| モデルの一意の識別子 |
|
| モデル名 |
|
| 関連付けられたエクスペリメント ID |
|
| 作成時間 (エポックからのミリ秒) |
|
| 最終更新時刻 (エポックからのミリ秒) |
|
| ユーザー定義のモデルの種類 |
|
| このモデルを作成した実行の ID |
|
| モデルのステータス(READY、FAILED_REGISTRATIONなど) |
|
| タグの辞書 |
|
| パラメーターのディクショナリ |
|
| モデルを参照するためのURI(例:"models:/model_id") |
一般的なパターン
Git 統合によるバージョン管理
import mlflow
import subprocess
# Get current git commit
git_commit = subprocess.check_output(["git", "rev-parse", "HEAD"]).decode().strip()[:8]
# Create versioned model name
model_name = f"my-app-git-{git_commit}"
# Track the version
model = mlflow.create_external_model(
name=model_name,
tags={"git_commit": git_commit}
)
トレースのバージョンへのリンク
import mlflow
# Set active model - all subsequent traces will be linked
mlflow.set_active_model(name="my-agent-v1.0")
# Your application code with tracing
@mlflow.trace
def process_request(query: str):
# This trace will be automatically linked to my-agent-v1.0
return f"Processing: {query}"
# Run the application
result = process_request("Hello world")
本番運用 でのデプロイメント
本番運用では、 set_active_model()
を呼び出す代わりに環境変数を使用します。
# Set the model ID that traces should be linked to
export MLFLOW_ACTIVE_MODEL_ID="my-agent-v1.0"
ベストプラクティス
- モデル名に セマンティックバージョニングを使用する (例: "app-v1.2.3")
- 追跡可能性のために タグに git コミットを含める
- パラメーターは文字列である必要があります : - 数字やブール値を変換します
- model_typeを使用して 類似のアプリケーションを分類する
- トレースする前にアクティブモデルを設定して 、適切なリンケージを確保します
一般的な問題
無効なパラメーターの種類 :
# Error: Parameters must be strings
# Wrong:
params = {"temperature": 0.7, "max_tokens": 1000}
# Correct:
params = {"temperature": "0.7", "max_tokens": "1000"}
次のステップ
- アプリケーションのバージョンを追跡する - 生成AI アプリのバージョン管理のステップバイステップガイド
- 本番運用 トレースのリンク - 本番運用データをアプリのバージョンに接続する
- デプロイ用パッケージ - バージョン管理されたアプリをモデルサービングにデプロイする