MLflowエクスペリメント リソースをDatabricksアプリに追加する
MLflowエクスペリメントをDatabricks Appsとして追加して、 AIアプリケーション、エージェント、LLM、 MLモデルのエクスペリメント追跡を有効にします。 MLflowエクスペリメントは、 AIアプリケーション開発ライフサイクル全体を通じて、実行を整理して記録し、問題、メトリクス、アーティファクトを追跡するための構造化された方法を提供します。
MLflowエクスペリメントをリソースとして追加すると、アプリでは次のことが可能になります。
- 実行トレースを使用したデバッグエージェントとLLMアプリケーション
- 採点者によるエージェントおよびLLM申請の質の評価
- LLMアプリケーション用のプロンプトテンプレートの管理とバージョン管理
- 全部、メトリクス、アーティファクトを使用した Log MLモデル トレーニング実行
- 体験データ、メタデータ、実行履歴の取得
MLflowエクスペリメント リソースを追加する
MLflowエクスペリメントをリソースとして追加する前に、アプリのリソースの前提条件を確認してください。
-
アプリを作成または編集するときに、 [アプリ リソース] セクションで、 [+ リソースの追加] > MLflowエクスペリメント] をクリックします。
-
ワークスペースで利用可能なエクスペリメントのリストからMLflowエクスペリメントを選択します。
-
アプリに適切な権限レベルを選択します。
- 読み取り可能: エクスペリメント メタデータ、実行、保留、およびメトリクスを表示するアクセス許可をアプリに付与します。 実験結果を表示するアプリに使用します。
- 編集可能: エクスペリメント設定とメタデータを変更する権限をアプリに付与します。
- 管理可能: エクスペリメントへの完全な管理アクセスをアプリに付与します。
-
(オプション) カスタム リソース キーを指定します。これは、アプリ構成でエクスペリメントを参照する方法です。 デフォルトのキーは
experimentです。
MLflowエクスペリメント リソースを追加する場合:
- Databricks 、選択したエクスペリメントに対する指定されたアクセス許可をアプリのサービスプリンパルシに付与します。
- アプリはトレーニング実行を記録し、 MLflow Tracking APIを介して体験データにアクセスできます。
- アクセスの範囲は、選択したエクスペリメントのみに限定されます。 別のリソースとして追加しない限り、アプリは他のエクスペリメントにアクセスできません。
MLflowエクスペリメントリソースは、そのエクスペリメントに対するワークスペースレベルの権限を付与します。エクスペリメントがUnity Catalogにトレースを保存する場合は、4つのUnity Catalogトレーステーブルをアプリリソースとして追加してください。これらのテーブル内のトレースへのアクセスは、エクスペリメントの権限ではなく、Unity Catalogの権限によって管理されます。
環境変数
MLflowエクスペリメント リソースを使用してアプリをデプロイすると、 Databricks 、 app.yaml構成のvalueFromフィールドを使用して参照できる環境変数を通じてエクスペリメント ID を公開します。
構成例:
env:
- name: MLFLOW_EXPERIMENT_ID
valueFrom: experiment # Use your custom resource key if different
アプリケーションでエクスペリメント ID を使用する:
import os
import mlflow
# Access the experiment using the injected environment variable
experiment_id = os.getenv("MLFLOW_EXPERIMENT_ID")
# Set the experiment for tracking
mlflow.set_experiment(experiment_id=experiment_id)
# Log parameters and metrics
with mlflow.start_run():
mlflow.log_param("learning_rate", 0.01)
mlflow.log_metric("accuracy", 0.95)
mlflow.log_artifact("model.pkl")
詳細については、 「リソースから環境変数にアクセスする」を参照してください。
Unity CatalogにMLflowトレースを保存する
アプリからUnity CatalogにMLflowトレースを書き込むには、まずUnity Catalogトレースの場所を指定したエクスペリメントを作成してください。4つのトレーステーブルの名前が予測可能になるように、テーブルプレフィックスを指定してください。
CAN_EDIT権限を使用して、エクスペリメントをアプリに追加します。次に、以下の各Unity Catalogテーブルを、MODIFY権限を持つ個別のリソースとして追加します。
<table_prefix>_otel_annotations<table_prefix>_otel_logs<table_prefix>_otel_metrics<table_prefix>_otel_spans
MODIFY権限は、アプリのService Principalに対して、各テーブル上のMODIFYとSELECTの両方を付与します。また、Databricks Appsは親カタログおよびスキーマに対するUSE CATALOGおよびUSE SCHEMAを自動的に付与します。
次の宣言型オートメーションバンドルの例では、エクスペリメントとその4つのトレーステーブルをアプリリソースとして構成しています。
resources:
apps:
my_app:
name: 'my-app'
source_code_path: ./app
resources:
- name: 'experiment'
experiment:
experiment_id: '<experiment-id>'
permission: 'CAN_EDIT'
- name: 'trace-annotations'
uc_securable:
securable_full_name: '<catalog>.<schema>.<table_prefix>_otel_annotations'
securable_type: 'TABLE'
permission: 'MODIFY'
- name: 'trace-logs'
uc_securable:
securable_full_name: '<catalog>.<schema>.<table_prefix>_otel_logs'
securable_type: 'TABLE'
permission: 'MODIFY'
- name: 'trace-metrics'
uc_securable:
securable_full_name: '<catalog>.<schema>.<table_prefix>_otel_metrics'
securable_type: 'TABLE'
permission: 'MODIFY'
- name: 'trace-spans'
uc_securable:
securable_full_name: '<catalog>.<schema>.<table_prefix>_otel_spans'
securable_type: 'TABLE'
permission: 'MODIFY'
テーブルの作成と管理に必要な権限を含む、Unity Catalogのすべてのトレース要件については、「Unity CatalogにOpenTelemetryトレースを保存する」を参照してください。
MLflowエクスペリメント リソースを削除する
アプリからMLflowエクスペリメント リソースを削除すると、アプリのサービスプリンシパルはエクスペリメントにアクセスできなくなります。 エクスペリメント自体は変更されず、適切な権限を持つ他のユーザーやアプリケーションでも引き続き利用できます。
ベストプラクティス
MLflowエクスペリメント リソースを使用する場合は、次のベスト プラクティスに従ってください。
- 発見しやすさを向上させるために、実験をプロジェクトまたはモデル タイプ別に論理的に整理します。
- 組織全体で「実行」と「問題」に一貫した命名規則を使用してください。
- 長期にわたるプロジェクトの場合は、エクスペリメント保持ポリシーとストレージ管理を考慮してください。