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

トレースの概念

トレースは、アプリケーションを介したリクエストの完全な実行フローをキャプチャする観測技術です。個別のイベントを記録する従来のログ記録とは異なり、トレースでは、システムがデータをどのように流すかを示す詳細なマップを作成し、その途中で行われたすべての操作を記録します。

GenAI アプリケーションの場合、これらのシステムには複数のコンポーネント (LLM、リトリーバー、ツール、エージェント) を含む複雑な複数ステップのワークフローが含まれており、実行フローを完全に可視化しないとデバッグが困難であるため、トレースが不可欠です。

トレース構造

MLflowトレースは、次の 2 つの主要なオブジェクトで構成されます。

  1. TraceInfo : トレースの発生元、ステータス、実行時間を説明するメタデータ。トレースの検索やフィルタリングに使用される、ユーザー、セッション、開発者提供のキーと値のペアなどの追加コンテキストのタグが含まれます。

  2. TraceData : 入力から出力までのアプリケーションのステップごとの実行をキャプチャする、インストルメントされたSpanオブジェクトを含む実際のペイロード。

トレースアーキテクチャ

MLflow トレースは、観測可能性に関して広く採用されている業界標準であるOpenTelemetry 仕様と互換性があります。これにより、他の観測ツールとの相互運用性が確保され、MLflow は GenAI 固有の構造と属性を使用して OpenTelemetry モデルを強化します。

トレース情報

TraceInfo は、全体的なトレースの軽量メタデータを提供します。主なフィールドには以下が含まれます。

フィールド

説明

trace_id

トレースの一意の識別子

trace_location

トレースが保存される場所 ( MLflowエクスペリメントまたはDatabricks推論テーブル)

request_time

トレースの開始時間(ミリ秒)

state

トレースステータス: OKERRORIN_PROGRESS 、または STATE_UNSPECIFIED

execution_duration

トレースの継続時間(ミリ秒)

request_preview

入力のJSONエンコードされたプレビュー(ルートスパン入力)

response_preview

JSON エンコードされた出力のプレビュー (ルート スパン出力)

tags

トレースのフィルタリングと検索のためのキーと値のペア

完全なフィールドの詳細については、 MLflow API リファレンスを参照してください。

トレースデータ

TraceData オブジェクトは、実行の詳細が保存されるSpanオブジェクトのコンテナーです。各スパンは、次のような特定の操作に関する情報を取得します。

  • リクエストとレスポンス
  • レイテンシ測定
  • LLMメッセージとツールの問題
  • 取得した文書とコンテキスト
  • メタデータと属性

スパンは親子の接続を通じて階層構造を形成し、アプリケーションの実行フローを表すツリーを作成します。

スパンアーキテクチャ

タグ

タグは、整理とフィルタリングのためにトレースに添付される変更可能なキーと値のペアです。MLflow は、一般的なユースケース向けに標準タグを定義します。

  • mlflow.trace.session: 関連するトレースをグループ化するためのセッション識別子
  • mlflow.trace.user: ユーザーごとのインタラクションを追跡するためのユーザー識別子
  • mlflow.source.name: トレースを生成したエントリポイントまたはスクリプト
  • mlflow.source.git.commit: ソースコードの Git コミットハッシュ(該当する場合)
  • mlflow.source.type: ソースタイプ ( PROJECTNOTEBOOKなど)

特定のニーズに合わせてカスタム タグを追加することもできます。詳細については、 「トレースにコンテキストを追加する」および「カスタム タグ/メタデータを添付する」を参照してください

ストレージレイアウト

MLflow は、パフォーマンスとコストを考慮してトレース ストレージを最適化します。エクスペリメントを作成するときに、 Unity Catalogボリュームを使用してトレースの保存場所をカスタマイズできます。 トレース データへのアクセスは、セキュリティとコンプライアンスを強化するために、 Unity Catalog ボリューム権限によって管理されます。

TraceInfo は 、インデックス付きフィールドを持つ単一行としてリレーショナル データベースに直接保存されるため、トレースの検索とフィルタリングのための高速クエリが可能になります。

TraceData (Spans) はサイズが大きいため、データベースではなくアーティファクト ストレージに保存されます。これにより、クエリのパフォーマンスへの影響を最小限に抑えながら、大量のトレースをコスト効率よく処理できるようになります。

次のステップ