エージェント向け MLflow Tracing
重要
この機能はパブリックプレビュー段階です。
この記事では、 MLflow Tracingと、 AIシステムで生成AIアプリケーションを評価するのに役立つシナリオについて説明します。
ソフトウェア開発では、トレースにはユーザー セッションやリクエスト フローなどのイベントのシーケンスの記録が含まれます。 AI システムのコンテキストでは、トレースは多くの場合、AI システムとのやり取りを指します。 AIシステムのトレースの例としては、プロンプト付きのユーザー メッセージ、ベクトル ルックアップ、および生成AIモデルとのインターフェイスを含む RAG アプリケーションの入力と引数をインストルメント化するものが考えられます。
MLflow Tracingとは何ですか?
MLflowトレーシングを使用すると、生成アプリケーションAIアプリケーションの異なるバージョン間でトレースをログに記録、分析、および比較できます。これにより、生成AI Pythonコードをデバッグし、入力と応答を追跡できます。 これにより、アプリケーションのパフォーマンス低下の原因となっている条件やパラメーターを検出できます。 MLflow Tracing は、 Databricks ツールやインフラストラクチャと緊密に統合されているため、コードを実行するときに、すべてのトレースを Databricks ノートブックや MLflow エクスペリメント UI に保存および表示できます。
LangChain、LlamaIndex、OpenAI、カスタム PyFunc などのライブラリを使用して Databricks で AI システムを開発する場合、MLflow Tracing を使用すると、エージェントの各ステップからのすべてのイベントと中間出力を確認できます。 プロンプト、使用されたモデルとレトリーバー、応答を補強するために取得されたドキュメント、処理にかかる時間、および最終的な出力を簡単に確認できます。 たとえば、モデルが幻覚を見た場合、幻覚につながった各ステップをすばやく調査できます。
MLflow Tracing を使用する理由は何ですか?
MLflow トレースには、開発ワークフローの追跡に役立ついくつかの利点があります。 たとえば、次のことができます。
対話型のトレース視覚化を確認し、調査ツールを使用して開発の問題を診断します。
プロンプト・テンプレートとガードレールが妥当な結果を生成していることを確認します。
さまざまなフレームワーク、モデル、チャンク サイズ、ソフトウェア開発プラクティスのレイテンシへの影響を調査し、最小限に抑えます。
さまざまなモデルによるトークンの使用状況を追跡して、アプリケーションのコストを測定します。
さまざまなバージョンのパフォーマンスを評価するためのベンチマーク(「ゴールデン」)データセットを確立します。
本番運用モデルエンドポイントからのトレースを保存して問題をデバッグし、オフラインでのレビューと評価を実行します。
MLflow Tracingをインストールする
MLflow Tracing は、MLflow バージョン 2.13.0 以降で利用できます。
%pip install mlflow>=2.13.0 -qqqU
%restart_python
または、 %pip install databricks-agents
を実行して、互換性のある MLflow バージョンを含むdatabricks-agents
の最新バージョンをインストールすることもできます。
開発で MLflow トレースを使用する
MLflow トレースは、パフォーマンスの問題を分析し、エージェントの開発サイクルを加速するのに役立ちます。 次のセクションでは、ノートブックからエージェント開発と MLflow トレースを行うことを前提としています。
注:
ノートブック環境では、MLflow トレースによってエージェントの実行時間に最大で数秒のオーバーヘッドが発生する可能性があります。 これは主に、 MLflow エクスペリメントへのトレースのロギングの遅延に起因します。 本番運用モデルエンドポイントでは、 MLflow トレーシングがパフォーマンスに与える影響ははるかに小さくなります。 「本番運用でのMLflowトレースの使用」を参照してください。
注:
Databricks Runtime 15.4 LTS ML以降、MLflowトレースはノートブック内のデフォルトによって有効になります。LangChain などを使用してトレースを無効にするには、ノートブックで mlflow.langchain.autolog(log_traces=False)
を実行します。
エージェントにトレースを追加する
MLflow トレースでは、生成アプリケーションAI トレースを使用してトレースを使用する 3 つの異なる方法が提供されます。 これらの方法の使用例については、「 エージェントにトレースを追加する 」を参照してください。 API リファレンスの詳細については、 MLflow のドキュメントを参照してください。
API |
推奨されるユースケース |
説明 |
---|---|---|
MLflow 自動ログ |
統合型GenAIライブラリの開発 |
自動ロギングは、LangChain、LlamaIndex、OpenAIなどの一般的なオープンソースフレームワークのトレースを自動的にインストゥルメントします。 ノートブックの先頭に |
流暢なAPIs |
Pyfuncを使用したカスタムエージェント |
トレースのツリー構造を気にせずに システムをインストルメント化するためのローコードAPIs 。AIMLflow は、Python スタックに基づいて適切な親子ツリー構造 (スパン) を決定します。 |
MLflowクライアントAPIs |
マルチスレッドなどの高度なユースケース |
マルチスレッドアプリケーションやコールバックベースのインストゥルメンテーションなど、より詳細な制御が必要なユースケースに推奨されます。 |
トレースのレビュー
インストゥルメントされたエージェントを実行した後、生成されたトレースをさまざまな方法で確認できます。
トレースの視覚化は、セル出力にインラインでレンダリングされます。
トレースは MLflow エクスペリメントに記録されます。 エクスペリメントページの
Traces
タブで、過去の痕跡の完全なリストを確認し、それらを検索できます。 エージェントがアクティブ MLflow 実行の下で実行されると、実行ページでトレースを見つけることもできます。search_traces() API を使用してプログラムでトレースを取得します。
MLflowトレースを本番運用で利用する
MLflow Tracingは Mosaic AI Model Servingとも統合されており、問題を効率的にデバッグし、パフォーマンスを監視し、オフライン評価用のゴールデンデータセットを作成することができます。 サービス エンドポイントで MLflow トレースが有効になっている場合、トレースは response
列の下の推論テーブルに記録されます。
サービス エンドポイントで MLflow トレースを有効にするには、エンドポイント構成で ENABLE_MLFLOW_TRACING
環境変数を True
に設定する必要があります。 カスタム環境変数を使用してエンドポイントをデプロイする方法については、「 プレーンテキスト環境変数の追加 」を参照してください。 deploy()
API を使用してエージェントをデプロイした場合、トレースは自動的に推論テーブルに記録されます。「アプリケーションを生成するためのエージェントのデプロイ」AI。
注:
推論テーブルへのトレースの書き込みは非同期的に行われるため、開発中にノートブック環境と同じオーバーヘッドが追加されることはありません。 ただし、エンドポイントの応答速度にオーバーヘッドが発生する可能性があります (特に、各推論要求のトレース サイズが大きい場合)。 Databricks は、環境とモデルの実装に大きく依存するため、モデル エンドポイントに対する実際の待機時間の影響について、サービス レベル アグリーメント (SLA) を保証するものではありません。 Databricks 、本番運用アプリケーションにデプロイする前に、エンドポイントのパフォーマンスをテストし、トレースのオーバーヘッドについて理解を深めることをお勧めします。
次の表は、さまざまなトレース サイズに対する推論レイテンシーへの影響を大まかに示しています。
要求あたりのトレース サイズ |
待機時間への影響 (ミリ秒) |
---|---|
~10キロバイト |
~ 1 ミリ秒 |
~ 1メガバイト |
50~100ミリ秒 |
10メガバイト |
150ミリ秒~ |
制限事項
MLflow Tracing は、 Databricksダッシュボード、ダッシュボード ジョブ、およびモデルサーバー で利用できます。
LangChain自動ログ記録はすべてのLangChain予測APIsをサポートしない可能性があります。 MLflowサポートされている の完全なリストについては 、 ドキュメントAPIs を参照してください。