エージェント向け MLflow Tracing
重要
この機能はパブリックプレビュー段階です。
この記事では、 MLflow Tracingと、 AIシステムで生成AIアプリケーションを評価するのに役立つシナリオについて説明します。
ソフトウェア開発では、トレースにはユーザー セッションやリクエスト フローなどのイベントのシーケンスの記録が含まれます。 AI システムのコンテキストでは、トレースは多くの場合、AI システムとのやり取りを指します。 AIシステムのトレースの例としては、プロンプト付きのユーザー メッセージ、ベクトル ルックアップ、および生成AIモデルとのインターフェイスを含む RAG アプリケーションの入力と引数をインストルメント化するものが考えられます。
MLflow Tracingとは何ですか?
MLflow Tracing を使用すると、生成AIアプリケーションのさまざまなバージョン間でトレースをログに記録、分析、比較できます。 これにより、生成AI Pythonコードをデバッグし、入力と応答を追跡できるため、アプリケーションのパフォーマンス低下の原因となる条件や引数を発見するのに役立ちます。 MLflow Tracing はDatabricksツールおよびインフラストラクチャと緊密に統合されており、コードを実行するときにすべてのトレースをDatabricksダッシュボードまたはMLflow拡張機能 UI に保存して表示できます。
LangChain または PyFunc を使用して Databricks 上で AI システムを開発する場合、MLflow Tracing を使用すると、エージェントの各ステップからのすべてのイベントと中間出力を確認できます。 プロンプト、使用されたモデルとレトリーバー、応答を補強するために取得されたドキュメント、所要時間、および最終出力を簡単に確認できます。 したがって、モデルが幻覚を起こした場合、その幻覚に至った各ステップをすぐに検査できます。
MLflow Tracing を使用する理由は何ですか?
MLflow Tracing は、開発ワークフローの追跡に役立つ次の利点を提供します。
開発中の問題を診断するためのインタラクティブなトレースの視覚化と調査ツール。
プロンプト・テンプレートとガードレールが妥当な結果を生成していることを確認します。
さまざまなフレームワーク、モデル、チャンク サイズ、ソフトウェア開発プラクティスのレイテンシへの影響を調査し、最小限に抑えます。
さまざまなモデルによるトークンの使用状況を追跡して、アプリケーションのコストを測定します。
さまざまなバージョンのパフォーマンスを評価するためのベンチマーク(「ゴールデン」)データセットを確立します。
オフラインでのレビューと評価のためにトレースを格納します。 これには、 推論テーブルを使用するように構成されたサービス エンドポイントが必要です。
MLflow Tracingをインストールする
MLflow Tracing は、MLflow バージョン 2.13.0 以降で利用できます。
または、 %pip install databricks-agents
を実行して、互換性のある MLflow バージョンを含むdatabricks-agents
の最新バージョンをインストールすることもできます。
MLflow Tracingを使用する
エージェント開発ワークロードで MLflow Tracing を次の方法で使用できます。
LangChain との MLflow Tracing 統合
mlflow.langchain
を使用します。 エージェントでmlflow.langchain.autolog
を実行し、呼び出し API を実行すると、エージェントの各ステップのトレースを自動的に表示できます。必要に応じて、FluentAPIs またはMLflow クライアント を使用して、エージェントの特定の部分に トレースを手動で追加するAPIs こともできます。
エージェントにトレースを追加する
MLflow Tracing では、トレースを使用した生成AIアプリケーションでトレースを使用する 2 つの異なる方法が提供されます。 「 エージェントにトレースを追加する」を参照してください。
API |
説明 |
---|---|
流暢なAPIs |
(推奨)APIs AIトレースのツリー構造を気にせずに システムをインストルメント化するためのローコード 。MLflow は、Python スタックに基づいて適切な親子ツリー構造 (スパン) を決定します。 |
MLflowクライアントAPIs |
MLflowClient は、高度なユースケース向けに、よりきめ細かいスレッドセーフなAPIsを実装します。 これらのAPIsスパンの親子関係を管理しないため、目的のトレース構造を構築するには手動で指定する必要があります。 これにはより多くのコードが必要ですが、特にマルチスレッドのユースケースでは、トレースのライフサイクルをより適切に制御できます。 マルチスレッドアプリケーションやコールバックベースのインストゥルメンテーションなど、より詳細な制御が必要なユースケースに推奨されます。 |
API リファレンスとコード例については、 MLflow ドキュメントを参照してください。
推論テーブルを有効にしてトレースを収集する
推論テーブルにトレースを記録するには、サービス エンドポイント構成のENABLE_MLFLOW_TRACING
環境変数をTrue
に設定する必要があります。 「プレーンテキスト環境変数の追加」を参照してください。 deploy()
API を使用してエージェントをデプロイした場合、トレースは推論テーブルに自動的に記録されます。 「 deploy() を使用したエージェントのデプロイ」を参照してください。
注:
トレースを有効にすると、特に各推論要求のトレース サイズが大きい場合に、エンドポイントの応答速度にオーバーヘッドが生じる可能性があります。 Databricks 、環境とモデルの実装に大きく依存するため、モデル エンドポイントでの実際の待機時間の影響についてはサービス レベル アグリーメント ( SLA ) を保証しません。 Databricks 、エンドポイント パフォーマンスをテストし、トレースのオーバーヘッドを把握してから、本番運用アプリケーションにデプロイすることをお勧めします。
次の表は、さまざまなトレース サイズに対する推論レイテンシーへの影響を大まかに示しています。
要求あたりのトレース サイズ |
待機時間への影響 (ミリ秒) |
---|---|
~10キロバイト |
~ 1 ミリ秒 |
~ 1メガバイト |
50~100ミリ秒 |
10メガバイト |
150ミリ秒~ |
制限事項
MLflow Tracing は、 Databricksダッシュボード、ダッシュボード ジョブ、およびモデルサーバー で利用できます。
LangChain自動ログ記録はすべてのLangChain予測APIsをサポートしない可能性があります。 MLflowサポートされている の完全なリストについては 、 ドキュメントAPIs を参照してください。