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

トレースへのプログラムによるアクセス

プログラムによってトレースの検索、読み取り、分析を行います。mlflow.search_traces()を使用して、Unity Catalogテーブル、MLflowトラッキングサーバー、または推論テーブルに保存されているトレースをクエリーします。また、Unity Catalog内のトレースについては、SQLを使用してDeltaテーブルを直接クエリーします。トレースを取得したら、そのオブジェクトモデル(メタデータ、スパン、評価、トークン使用量)を読み取って、何が起きたのかを調べます。トレースのサブセットを選択して分析したり、評価データセットを作成したりできます。

mlflow.search_traces() API

Python
def mlflow.search_traces(
experiment_ids: list[str] | None = None,
filter_string: str | None = None,
max_results: int | None = None,
order_by: list[str] | None = None,
extract_fields: list[str] | None = None,
run_id: str | None = None,
return_type: Literal['pandas', 'list'] | None = None,
model_id: str | None = None,
sql_warehouse_id: str | None = None,
include_spans: bool = True,
locations: list[str] | None = None,
) -> pandas.DataFrame | list[Trace]

mlflow.search_traces()使用すると、いくつかのディメンションに沿ってデータをフィルタリングおよび選択できます。

  • クエリ文字列でフィルタリングする
  • 場所によるフィルター: 体験、実行、モデル、またはUnity Catalogスキーマ
  • データの制限: 結果の最大数、範囲を含めるか除外するか
  • 戻り値の形式を調整する: データ形式、データの順序

search_traces() Pandas DataFrameまたはTraceオブジェクトのリストを返します。これをさらに分析したり、評価データセットに再構成したりできます。 これらの戻り値の型のスキーマの詳細を参照してください。

詳細については、 mlflow.search_traces() API ドキュメントを参照してください。

注記

Databricksが管理するMLflowとOSS(オープンソースソフトウェア)のMLflowは、検索クエリ構文のほとんどを共有していますが、フィールドレベルでいくつかの違いがあります。詳細については、 「OSS MLflowとの違い」を参照してください。

mlflow.search_traces()問題

カテゴリー

parameter: type

説明

クエリ文字列でフィルタリング

filter_string: str

サポートされているフィルタとコンパレータについては、 「検索クエリ構文」を参照してください。

trace.status = 'OK' AND tag.environment = 'production'

場所でフィルタリング

locations: list[str]

この引数には、フィルタリング用のエクスペリメント ID またはUnity Catalog catalog.schemaの場所のリストを指定できます。 これを使用して、推論テーブルまたはUnity Catalogテーブルに保存されているトレースを検索します。

['591498498138889', '782498488231546'] または ['my_catalog.my_schema']

run_id: str

MLflow 実行 ID

35464a26b0144533b09d8acbb4681985

model_id: str

MLflow モデル ID

acc4c426-5dd7-4a3a-85de-da1b22ce05f1

データを制限する

max_results: int

返されるトレースの最大数(行)

100

include_spans: bool

結果にスパンを含めるか除外します。スパンはトレースの詳細を含み、結果のサイズがはるかに大きくなる可能性があります。

True

戻り値の形式

order_by: list[str]

構文とサポートされているキーを参照してください。

["timestamp_ms DESC", "status ASC"]

return_type: Literal['pandas', 'list']

この関数は、 Pandas DataFrameまたはTraceオブジェクトのリストのいずれかを返すことができます。 スキーマの詳細を参照してください。

'pandas'

非推奨

experiment_ids: list[str]

代わりにlocationsを使用してください。

extract_fields: list[str]

代わりに、返された DataFrame 内のフィールドを選択するか、オブジェクトをトレースします。

sql_warehouse_id: str

代わりにMLFLOW_TRACING_SQL_WAREHOUSE_ID環境変数を使用してください。

カテゴリー

parameter: type

説明

クエリ文字列でフィルタリング

filter_string: str

サポートされているフィルタとコンパレータについては、 「検索クエリ構文」を参照してください。

trace.status = 'OK' AND tag.environment = 'production'

場所でフィルタリング

locations: list[str]

この引数には、フィルタリング用のエクスペリメント ID またはUnity Catalog catalog.schemaの場所のリストを指定できます。 これを使用して、推論テーブルまたはUnity Catalogテーブルに保存されているトレースを検索します。

['591498498138889', '782498488231546'] または ['my_catalog.my_schema']

run_id: str

MLflow 実行 ID

35464a26b0144533b09d8acbb4681985

model_id: str

MLflow モデル ID

acc4c426-5dd7-4a3a-85de-da1b22ce05f1

データを制限する

max_results: int

返されるトレースの最大数(行)

100

include_spans: bool

結果にスパンを含めるか除外します。スパンはトレースの詳細を含み、結果のサイズがはるかに大きくなる可能性があります。

True

戻り値の形式

order_by: list[str]

構文とサポートされているキーを参照してください。

["timestamp_ms DESC", "status ASC"]

return_type: Literal['pandas', 'list']

この関数は、 Pandas DataFrameまたはTraceオブジェクトのリストのいずれかを返すことができます。 スキーマの詳細を参照してください。

'pandas'

非推奨

experiment_ids: list[str]

代わりにlocationsを使用してください。

extract_fields: list[str]

代わりに、返された DataFrame 内のフィールドを選択するか、オブジェクトをトレースします。

sql_warehouse_id: str

代わりにMLFLOW_TRACING_SQL_WAREHOUSE_ID環境変数を使用してください。

検索クエリ構文

filter_string引数は、SQLライクなクエリ言語を使用してトレースをフィルタリングします。文字列値はシングルクォーテーションで囲む必要があります(例: trace.status = 'OK' )。数値はクォーテーションで囲む必要はありません(例: trace.execution_time_ms > 1000 )。条件をANDと組み合わせます。OR演算子はサポートされていません。

サポートされているフィルターとコンパレーター

Databricksが管理するMLflowでは、以下のフィールドと比較関数がサポートされています。

注記

(UC only) とマークされたフィルターは、Unity Catalogに保存されているMLflowトレースでのみサポートされます。Unity CatalogにOpenTelemetryトレースを保存する方法については、こちらをご覧ください。

フィールドタイプ

フィールド

比較器

トレースステータス

trace.status

=, !=

trace.status = 'OK'

トレースタイムスタンプ

trace.timestamp_mstrace.execution_time_mstrace.end_time_ms (UCのみ)

=!=><>=<=

trace.end_time_ms > 1762408895531

トレースID

trace.run_id

=

trace.run_id = 'run_id'

文字列フィールド

trace.client_request_id (UCのみ) trace.name

=!=LIKEILIKERLIKE

trace.name LIKE '%Generate%'

リクエストとレスポンスの内容 (UCのみ)

trace.request, trace.response

=!=LIKEILIKERLIKE

trace.request LIKE '%weather%'

トークン数 (UCのみ)

trace.token_count

=!=><>=<=

trace.token_count > 1000

リンクされたプロンプト

prompt

= (フォーマット: 'name/version' )

prompt = 'qa-system-prompt/4'

スパン名、タイプ、ステータス、サービス名 (UC のみ)

span.namespan.typespan.statusspan.service_name

=!=LIKEILIKERLIKE

span.type RLIKE '^LLM'

OTelスパン属性 (UCのみ)

span.attributes.<key>

=!=LIKEILIKERLIKEIS NULLIS NOT NULL

span.attributes.gen_ai.request.model = 'gpt-4'

タグ

tag.<key>

=!=LIKEILIKERLIKEIS NULLIS NOT NULL

拡張モジュールに保存されているMLflowトレース ( Unity Catalogには保存されていない) については、 =!=のみがサポートされます。

tag.environment = 'production'

メタデータ

metadata.<key>

=!=LIKEILIKERLIKEIS NULLIS NOT NULL

拡張モジュールに保存されているMLflowトレース ( Unity Catalogには保存されていない) については、 =!=のみがサポートされます。

metadata.`mlflow.trace.user` = 'user_123'

フィードバック (UCのみ)

feedback.<name>

=!=LIKEILIKERLIKE

feedback.rating = 'excellent'

期待事項 (UCのみ)

expectation.<name>

=!=LIKEILIKERLIKE

expectation.result = 'pass'

フィールドタイプ

フィールド

比較器

トレースステータス

trace.status

=, !=

trace.status = 'OK'

トレースタイムスタンプ

trace.timestamp_mstrace.execution_time_mstrace.end_time_ms (UCのみ)

=!=><>=<=

trace.end_time_ms > 1762408895531

トレースID

trace.run_id

=

trace.run_id = 'run_id'

文字列フィールド

trace.client_request_id (UCのみ) trace.name

=!=LIKEILIKERLIKE

trace.name LIKE '%Generate%'

リクエストとレスポンスの内容 (UCのみ)

trace.request, trace.response

=!=LIKEILIKERLIKE

trace.request LIKE '%weather%'

トークン数 (UCのみ)

trace.token_count

=!=><>=<=

trace.token_count > 1000

リンクされたプロンプト

prompt

= (フォーマット: 'name/version' )

prompt = 'qa-system-prompt/4'

スパン名、タイプ、ステータス、サービス名 (UC のみ)

span.namespan.typespan.statusspan.service_name

=!=LIKEILIKERLIKE

span.type RLIKE '^LLM'

OTelスパン属性 (UCのみ)

span.attributes.<key>

=!=LIKEILIKERLIKEIS NULLIS NOT NULL

span.attributes.gen_ai.request.model = 'gpt-4'

タグ

tag.<key>

=!=LIKEILIKERLIKEIS NULLIS NOT NULL

拡張モジュールに保存されているMLflowトレース ( Unity Catalogには保存されていない) については、 =!=のみがサポートされます。

tag.environment = 'production'

メタデータ

metadata.<key>

=!=LIKEILIKERLIKEIS NULLIS NOT NULL

拡張モジュールに保存されているMLflowトレース ( Unity Catalogには保存されていない) については、 =!=のみがサポートされます。

metadata.`mlflow.trace.user` = 'user_123'

フィードバック (UCのみ)

feedback.<name>

=!=LIKEILIKERLIKE

feedback.rating = 'excellent'

期待事項 (UCのみ)

expectation.<name>

=!=LIKEILIKERLIKE

expectation.result = 'pass'

OSS MLflowとの違い

Databricksが管理するMLflowの検索クエリ構文は、オープンソースのMLflowとほぼ同じですが、以下の点が異なります。

フィールド

Databricksが管理するMLflow

OSS MLflow

trace.request, trace.response

サポート対象(UCのみ)

サポートされていない

これらのフィールドを使用して、シリアル化されたリクエストおよびレスポンスのコンテンツをフィルタリングします。

trace.token_count

サポート対象(UCのみ)

サポートされていない

トークンの総数でトレースをフィルタリングします。

span.attributes.<key>

サポート対象(UCのみ)

サポートされていない

OpenTelemetryのスパン属性に基づいてトレースをフィルタリングします。

trace.text

サポートされていない

サポート対象(SQLAlchemyストアのみ)

OSSは、トレースコンテンツ全体を対象とした全文検索のためにtrace.text公開します。Databricksでは、代わりにtrace.requesttrace.responseを使用してトレースコンテンツをフィルタリングしてください。

trace.prompt

サポートされていない

サポート対象(リンクされたプロンプトタグにマッピングされています)

Databricksでは、最上位のpromptフィールドを使用してください。

trace.request_id

サポートされていない

サポート対象

Databricksでは、代わりにtrace.client_request_idを使用してください。

issue.id

サポートされていない

サポート対象

特定の問題IDに関連付けられたトレースをフィルタリングします。

フィールド

Databricksが管理するMLflow

OSS MLflow

trace.request, trace.response

サポート対象(UCのみ)

サポートされていない

これらのフィールドを使用して、シリアル化されたリクエストおよびレスポンスのコンテンツをフィルタリングします。

trace.token_count

サポート対象(UCのみ)

サポートされていない

トークンの総数でトレースをフィルタリングします。

span.attributes.<key>

サポート対象(UCのみ)

サポートされていない

OpenTelemetryのスパン属性に基づいてトレースをフィルタリングします。

trace.text

サポートされていない

サポート対象(SQLAlchemyストアのみ)

OSSは、トレースコンテンツ全体を対象とした全文検索のためにtrace.text公開します。Databricksでは、代わりにtrace.requesttrace.responseを使用してトレースコンテンツをフィルタリングしてください。

trace.prompt

サポートされていない

サポート対象(リンクされたプロンプトタグにマッピングされています)

Databricksでは、最上位のpromptフィールドを使用してください。

trace.request_id

サポートされていない

サポート対象

Databricksでは、代わりにtrace.client_request_idを使用してください。

issue.id

サポートされていない

サポート対象

特定の問題IDに関連付けられたトレースをフィルタリングします。

SQL によるトレーステーブルのクエリー

トレースが Unity Catalog に保存されている場合は、SDK に加えて Databricks SQL を使用してクエリーを実行できます。MLflow サービスは、OpenTelemetry 準拠のテーブルにスパンデータを保存し、そのデータを MLflow 形式に変換する Databricks SQL ビューを自動的に作成します。Unity Catalog のトレースストレージを設定するには、Store OpenTelemetry traces in Unity Catalog を参照してください。

Databricksでは、時間の経過とともにスキーマが変更される可能性がある、基盤となるOpenTelemetryテーブルではなく、ビューのクエリー(またはSDKの使用)を推奨しています。トレースのボリュームが大きい場合、ビューのパフォーマンスが低下する可能性があります。ビュー上にマテリアライズドビューを作成してインクリメンタルに更新するか、最近のデータに対して最高のパフォーマンスを得るためにSDKを使用してください。

{table_prefix}_trace_unified

トレース ID でグループ化されたすべてのトレースデータの統一されたビュー。各行には、未加工のスパンデータに加え、トレースメタデータ(MLflow タグ、メタデータ、評価)が保持されます。最上位レベルの列:

Text
trace_id: STRING
client_request_id: STRING
request_time: TIMESTAMP
state: STRING
execution_duration_ms: DOUBLE
request: STRING
response: STRING
trace_metadata: VARIANT
tags: MAP<STRING, STRING>
spans: LIST<STRUCT> # per-span records: name, kind, timing, attributes, status, events, links
assessments: LIST<STRUCT> # feedback and expectation records with source, value, rationale, metadata

trace_metadata 列および span attributes フィールドは VARIANT です。マップ キー ルックアップではなく、コロン パス構文で読み取って必要な型にキャストします:

SQL
SELECT spans[0].attributes:`mlflow.spanInputs`::STRING FROM my_catalog.my_schema.my_prefix_trace_unified

{table_prefix}_trace_metadata

トレース ID ごとにグループ化された MLflow タグ、メタデータ、および評価のみが含まれます。スパン データではなく MLflow アノテーション データが必要な場合、統合ビューよりもパフォーマンスが高くなります。列:trace_idclient_request_idtagstrace_metadataassessments(統合ビューと同じ構造)。

アノテーション データ形式

MLflow注釈エンティティ(メタデータ、タグ、評価、ラン Link)も{table_prefix}_otel_annotationsテーブルに格納され、エンティティごとに1行が型付きのannotation_typeMETADATATAGFEEDBACKEXPECTATION、またはRUN_LINK)とともに保存されます。テーブルはソフトデリート付きの追記専用であるため、取得時に重複排除を行います。annotation_idごとに最新の行を取得し(updated_atで降順に並べ替え)、deleted_atが設定されている行を除外します。valueおよびmetadataの各列はVARIANT(JSON)です。評価の場合、ユーザー提供のメタデータは内部のMLflowキー(プレフィックスmlflow.付き)の横に配置されます。ユーザーのメタデータを読み取る際は、内部キーを無視してください。

クエリーパフォーマンスの分析

遅いクエリーを診断するには、SQLウェアハウスのクエリー履歴でクエリープロファイルを調べます。 SQL warehouses ページを開き、warehouseを選択して、 Query history をクリックします。 MLflow をソースとするクエリーでフィルターし、クエリーを開いてそのプロファイルを表示し、次を確認します。

  • スケジュール時間 :スケジュール時間が長い場合、重いwarehouseの負荷によってクエリーがキューに入れられていることを意味します。MLflow UI で別のwarehouseに切り替えるか、クライアントで別のwarehouseを構成してください。
  • 全体のクエリーパフォーマンス : 常に低速なクエリーの場合は、より大きな SQLウェアハウスを使用し、trace.timestamp_ms の範囲を狭め、可能であれば他のフィルター述語を削除します。

トレースデータの読み取り

MLflow Trace には 2 つのコンポーネントがあります。

完全なトレース オブジェクト モデルとスキーマについては、トレース データ モデルの参照を参照してください。

基本的なメタデータプロパティ

Python
# Primary identifiers
print(f"Trace ID: {trace.info.trace_id}")
print(f"Client Request ID: {trace.info.client_request_id}")

# Status information
print(f"State: {trace.info.state}") # OK, ERROR, IN_PROGRESS

# Request/response previews (truncated)
print(f"Request preview: {trace.info.request_preview}")
print(f"Response preview: {trace.info.response_preview}")

ストレージの場所とエクスペリメント

Python
location = trace.info.trace_location
print(f"Location type: {location.type}")

# Stored in Unity Catalog (recommended)
if location.uc_table_prefix:
print(f"UC location: {location.uc_table_prefix.full_table_prefix}")

# Stored in an MLflow experiment
if location.mlflow_experiment:
print(f"Experiment ID: {trace.info.experiment_id}")

# Stored in a Databricks inference table
if location.inference_table:
print(f"Table: {location.inference_table.full_table_name}")

バックエンドに関係なく、エクスペリメントはUIのエントリポイントとなります。Unity Catalogに保存されている場合でも、trace.info.experiment_idを使用してMLflow UIでトレースを開きます。

リクエストと応答のプレビュー

request_previewresponse_preview のプロパティには、完全なリクエストおよびレスポンスデータの省略された概要が表示されるため、完全なペイロードを読み込まずに何が起きたかを理解できます。

Python
request_preview = trace.info.request_preview
response_preview = trace.info.response_preview

# Full request/response data (see below)
full_request = trace.data.request
full_response = trace.data.response

時間に関するプロパティ

Python
# Timestamps (milliseconds since epoch)
print(f"Start time (ms): {trace.info.request_time}")
print(f"Timestamp (ms): {trace.info.timestamp_ms}") # Alias for request_time

# Duration
print(f"Execution duration (ms): {trace.info.execution_duration}")

# Convert to human-readable format
import datetime
start_time = datetime.datetime.fromtimestamp(trace.info.request_time / 1000)
print(f"Started at: {start_time}")

タグとメタデータ

Python
# Tags (mutable, can be updated after creation)
for key, value in trace.info.tags.items():
print(f" {key}: {value}")

print(f"Environment: {trace.info.tags.get('environment')}")

# Trace metadata (immutable, set at creation)
for key, value in trace.info.trace_metadata.items():
print(f" {key}: {value}")

トークンの使用情報

MLflow Tracing は、LLM プロバイダーの APIs によって返されたトークン数を使用して、LLM 呼び出しのトークン使用量を追跡できます。

Python
# Get aggregated token usage (if available)
token_usage = trace.info.token_usage
if token_usage:
print(f"Input tokens: {token_usage.get('input_tokens')}")
print(f"Output tokens: {token_usage.get('output_tokens')}")
print(f"Total tokens: {token_usage.get('total_tokens')}")

トークン使用量の追跡方法は、LLMプロバイダーによって異なります。

シナリオ

トークンの使用状況を追跡する方法

Databricks 基盤モデルAPI

OpenAI クライアントを使用して、MLflow Tracing がトークンの使用状況を自動的に追跡することを確認します。

MLflow Tracing をネイティブサポートしている LLM プロバイダー

ネイティブのトークン追跡がサポートされているかどうかを確認するには、MLflow Tracing Integrations の下にあるプロバイダーの統合ページをご覧ください。

ネイティブの MLflow Tracing をサポートしていないプロバイダー

Span.set_attribute を使用して、トークンの使用量を手動でログに記録します。トレースデータモデルリファレンスを参照してください。

AIプラットフォーム全体で複数のEndpointを監視します。

提供エンドポイント全体でシステムテーブルにトークンの使用量を記録するには、AI Gateway 使用状況の追跡を使用します。

シナリオ

トークンの使用状況を追跡する方法

Databricks 基盤モデルAPI

OpenAI クライアントを使用して、MLflow Tracing がトークンの使用状況を自動的に追跡することを確認します。

MLflow Tracing をネイティブサポートしている LLM プロバイダー

ネイティブのトークン追跡がサポートされているかどうかを確認するには、MLflow Tracing Integrations の下にあるプロバイダーの統合ページをご覧ください。

ネイティブの MLflow Tracing をサポートしていないプロバイダー

Span.set_attribute を使用して、トークンの使用量を手動でログに記録します。トレースデータモデルリファレンスを参照してください。

AIプラットフォーム全体で複数のEndpointを監視します。

提供エンドポイント全体でシステムテーブルにトークンの使用量を記録するには、AI Gateway 使用状況の追跡を使用します。

評価

search_assessments() で評価を検索:

Python
# Get all assessments
all_assessments = trace.search_assessments()

# Search by name
helpfulness = trace.search_assessments(name="helpfulness")
if helpfulness:
assessment = helpfulness[0]
print(f"Helpfulness: {assessment.value}")
print(f"Source: {assessment.source.source_type} - {assessment.source.source_id}")
print(f"Rationale: {assessment.rationale}")

# Search by type
feedback_only = trace.search_assessments(type="feedback")
expectations_only = trace.search_assessments(type="expectation")

# Search by span ID
span_assessments = trace.search_assessments(span_id=retriever_span.span_id)

# Include overridden assessments
all_including_invalid = trace.search_assessments(all=True)

評価の詳細にアクセス:

Python
for assessment in trace.info.assessments:
print(f"Assessment: {assessment.name}")
print(f" Type: {type(assessment).__name__}")
print(f" Value: {assessment.value}")
print(f" Source: {assessment.source.source_type.value}")

if assessment.rationale:
print(f" Rationale: {assessment.rationale}")
if assessment.metadata:
print(f" Metadata: {assessment.metadata}")
if assessment.error:
print(f" Error: {assessment.error}")

スパンの操作

スパンはトレースの構成要素であり、個々の操作または作業単位を表します。トレースから取得された変更不可能な完了済みスパンは、Span クラスによって表されます。

スパンのプロパティへのアクセス

Python
# Access all spans from a trace
spans = trace.data.spans
print(f"Total spans: {len(spans)}")

span = spans[0]

# Basic properties
print(f"Span ID: {span.span_id}")
print(f"Name: {span.name}")
print(f"Type: {span.span_type}")
print(f"Parent ID: {span.parent_id}") # None for root spans

# Timing (nanoseconds)
duration_ms = (span.end_time_ns - span.start_time_ns) / 1_000_000
print(f"Duration: {duration_ms:.2f}ms")

# Status
print(f"Status code: {span.status.status_code}")

# Inputs and outputs
print(f"Inputs: {span.inputs}")
print(f"Outputs: {span.outputs}")

特定のスパンを検索する

search_spans() を使用して、特定の基準に一致するスパンを検索します:

Python
import re
from mlflow.entities import SpanType

# Search by exact name
retriever_spans = trace.search_spans(name="retrieve_documents")

# Search by regex pattern
tool_spans = trace.search_spans(name=re.compile(r".*_tool$"))

# Search by span type
chat_spans = trace.search_spans(span_type=SpanType.CHAT_MODEL)
llm_spans = trace.search_spans(span_type="CHAT_MODEL") # String also works

# Search by span ID
specific_span = trace.search_spans(span_id=retriever_spans[0].span_id)

# Combine criteria
tool_fact_check = trace.search_spans(
name="fact_check_tool",
span_type=SpanType.TOOL,
)

スパン属性

Python
from mlflow.tracing.constant import SpanAttributeKey

chat_span = trace.search_spans(span_type=SpanType.CHAT_MODEL)[0]

# Get all attributes
for key, value in chat_span.attributes.items():
print(f" {key}: {value}")

# Get a specific attribute
specific_attr = chat_span.get_attribute("custom_attribute")

# Access chat-specific attributes using SpanAttributeKey
messages = chat_span.get_attribute(SpanAttributeKey.CHAT_MESSAGES)
tools = chat_span.get_attribute(SpanAttributeKey.CHAT_TOOLS)

# Access per-span token usage
input_tokens = chat_span.get_attribute("llm.token_usage.input_tokens")
output_tokens = chat_span.get_attribute("llm.token_usage.output_tokens")

リクエストおよびレスポンスのデータ

Python
import json

# Get root span request/response
request_json = trace.data.request
response_json = trace.data.response

# Parse JSON strings
if request_json:
request_data = json.loads(request_json)
if response_json:
response_data = json.loads(response_json)

おすすめの方法

キーワード引数

mlflow.search_traces()では常にキーワード (名前付き) 引数を使用します。位置引数は許可されますが、関数引数は進化しています。

良い実践例: mlflow.search_traces(filter_string="trace.status = 'OK'")

悪い習慣: mlflow.search_traces([], "trace.status = 'OK'")

filter_string落とし穴

mlflow.search_traces()filter_string引数を使用して検索する場合は、次の点に注意してください。

  • 接頭辞を使用する: trace.tag. 、または metadata.
  • タグ名または属性名にドットが含まれている場合はバッククォートを使用します: tag.`mlflow.traceName`
  • 一重引用符のみを使用してください: 'value'使用しないでください "value"
  • 時刻には日付ではなく Unix タイムスタンプ (ミリ秒) を使用します: 1749006880539
  • ANDのみ使用: ORはサポートされません

サポートされているフィールドと演算子の完全なリストについては、 「検索クエリ構文」を参照してください。

SQLウェアハウス統合

Unity Catalog エクスペリメントに保存されたトレースを読み取るには、Databricks SQL Warehouse必要 です。Unity Catalog でバックアップされたエクスペリメントで mlflow.search_traces() または mlflow.get_trace() を呼び出す前に、MLFLOW_TRACING_SQL_WAREHOUSE_ID を設定してください。この環境変数が設定されていない場合、読み取りは SQL warehouse ID is required for accessing traces in UC tables. で失敗します。セットアップについては、Unity Catalog へのトレースの保存を参照してください。

推論テーブルのような大規模な非 Unity Catalog データセットの場合、SQL Warehouse はオプションですが、クエリーのパフォーマンスが向上します。

Python
import os

os.environ['MLFLOW_TRACING_SQL_WAREHOUSE_ID'] = 'fa92bea7022e81fb'

# Required for UC-backed experiments. Improves performance for large non-UC datasets.
traces = mlflow.search_traces(
filter_string="trace.status = 'OK'",
locations=['my_catalog.my_schema'],
)

ページネーション

mlflow.search_traces() 結果をメモリ内に返すので、結果セットが小さい場合に適しています。大きな結果セットを処理するには、ページ区切りをサポートしているMlflowClient.search_traces()を使用します。

その他のリソース

次のステップ: フィードバックの収集とデータセットの構築