コンセプトとデータモデル
生成AI向けMLflowは、アプリケーションの開発、評価、モニタリング、生成AI 専用に設計された包括的なデータモデルを提供します。 このページでは、主要な概念とそれらがどのように連携するかについて説明します。
概要
MLflow は、すべての 生成AI アプリケーション データをエクスペリメント内で整理することを中核としています。エクスペリメントは、アプリのライフサイクル全体にわたるすべてのトレース、評価実行、アプリのバージョン、プロンプト、品質評価を含むプロジェクト フォルダーと考えてください。
- エクスペリメント: 1 つのアプリケーションのデータのコンテナ
MLflowでは、 トレース のみを使用する必要があります。データモデルの他のすべての側面はオプションですが、強くお勧めします。
2. MLflow には、アプリのデータを操作して品質を評価および改善するための SDK が用意されています。
- _
mlflow.genai.scorers._
*: トレースの品質を分析し、フィードバック評価を作成する関数 mlflow.genai.evaluate()
: 評価データセットとスコアラーを使用してアプリのバージョンを評価し、品質の問題を特定して改善するための SDKmlflow.genai.add_scheduled_scorer()
SDK:本番運用トレース上のランニング スコアラー が品質を監視するための
3. MLflow には、アプリのデータを管理および使用するための UI が用意されています。
- レビューアプリ:ドメインエキスパートの評価を収集するためのWeb UI
- MLflow エクスペリメント UI: トレース、評価結果、ラベル付けセッション、アプリのバージョン、プロンプトを表示および操作するための UI。
1. データモデル
以下では、MLflow データ モデルの各エンティティの概要を示します。
エクスペリメント
MLflowの エクスペリメント は、1 つの 生成AI アプリケーションに関連するすべてのアーティファクトを整理してグループ化する名前付きコンテナです。エクスペリメントは、プロジェクトと同様に、アプリケーションとそのデータが論理的に分離されるようにします。
クラシックMLにおけるMLflowに精通している場合、エクスペリメントコンテナはクラシックMLと生成AIで同じです。
可観測性データ
トレース
トレースは 、入力、出力、およびすべての中間ステップ(LLM呼び出し、取得、ツールの使用)を含む、生成AIアプリケーションの完全な実行をキャプチャします。 トレース :
- 開発および本番運用中のアプリケーションの実行ごとに自動的に作成されます
- (オプションで)それらを生成した特定のアプリケーションバージョンにリンクされている
- 次の内容を含む 評価 が添付されている
- スコアラー、エンドユーザー、ドメインエキスパートからの質の高いフィードバック
- ドメインエキスパートからのグラウンドトゥルースへの期待
トレース は、次の目的で使用されます。
- アプリケーションの動作とパフォーマンス(レイテンシ、コストなど)を観察し、デバッグします。
- 本番運用ログを基に 評価データセット を作成し、品質評価に活用
詳細については、トレース データ モデルのリファレンスで確認するか、クイックスタートに従って最初のトレースをログに記録するか、アプリのインストルメント化ガイドに従ってアプリにトレースを実装します。
評価
評価 は、トレースに添付される品質測定値とグラウンド トゥルース ラベルです。 評価 には 2 つのタイプがあります。
-
フィードバック : アプリの 出力 の品質に関する判断
- エンドユーザー、ドメインエキスパート、または自動スコアラー によって追加されました
- 品質問題の特定に使用
- 例
- エンドユーザーの親指のアップ/ダウン評価
- LLMジャッジによる回答の正しさの評価
-
期待値 : 特定の 入力 の正しい出力を定義するグラウンド トゥルース ラベル
- ドメインの専門家によって追加されました
- アプリが正しいレスポンスを生成したかどうかを評価するための「ゴールドスタンダード」として使用されます
- 例
- 質問に対する回答が期待される
- 応答に存在しなければならない必須の事実
グラウンド トゥルース ラベル (期待値) は、MLflow で品質を測定するために必要ではありません。ほとんどのアプリケーションには、最小限のグラウンド トゥルース ラベルのセットがないか、最小限のセットしかありません。
評価のログ記録の詳細、ユーザー フィードバックの収集方法、スコアラーを使用して自動 評価 を作成する方法をご確認ください。
評価データ
評価データセット
評価データセット は、アプリケーションを体系的にテストするためのテストケースのキュレーションされたコレクションです。 評価データセット :
- 通常、本番運用または開発から代表的な トレース を選択することによって作成されます
- 入力とオプションで期待値(グラウンドトゥルース)を含めます
- テストスイートがどのように進化するかを追跡するために、時間の経過とともにバージョン管理されます
評価データセット は、次の目的で使用されます。
- アプリの品質を繰り返し評価し、改善する
- 変更を検証して品質の低下を防ぐ
詳細については、評価データセットのリファレンスを参照するか、評価データセットを作成するためのガイドに従うか、本番運用トレースを使用してデータセットを改善する方法をご覧ください。
評価 実行
評価実行 は、一連の スコアラー を使用して、評価データセット に対してアプリケーションバージョンをテストした結果です。 評価の実行:
評価実行 は、次の目的で使用されます。
- アプリケーションの変更によって品質が向上した(または低下した)かどうかを判断する
- アプリケーションのバージョンを並べて比較する
- 品質評価を経時的に追跡
評価実行は特殊なタイプの MLflow 実行であり、 mlflow.search_runs()
を使用してクエリを実行できます。
評価用ハーネスの詳細については、評価版を使用してアプリを改善するためのガイドに従ってください。
ヒューマンラベリングデータ
ラベリングセッション
ラベリングセッションは 、ドメインの専門家による人間によるレビューのために トレース を整理します。 ラベリングセッション :
ラベリングセッション は、次の目的で使用されます。
- 複雑またはあいまいなケースに関する専門家のフィードバックを収集する
- 評価データセット のグラウンドトゥルースデータの作成
ラベル付けセッションは特殊な種類の MLflow Run であり、 mlflow.search_runs()
を使用してクエリを実行できます。
ラベル付けセッションの詳細を確認する、ドメインの専門家のフィードバックを収集するためのガイドに従う、または開発中にラベルを付ける方法を確認してください。
スキーマのラベル付け
ラベリングスキーマは 、ラベリングセッション で収集される評価 を定義し、ドメインエキスパート間で一貫したラベル収集を保証します。 スキーマのラベル付け :
- 査読者にどのような質問をするかを指定します(例:「この回答は正確ですか?」など)
- 質問に対する有効な回答を定義します(例:親指を立てる/下げる、1〜5スケール、フリーテキストコメントなど)
詳細については、ラベル付けスキーマのリファレンスを参照するか、レビューアプリガイドの例を参照してください。
アプリケーションのバージョン管理データ
プロンプト
プロンプトは 、LLM プロンプトのバージョン管理されたテンプレートです。 プロンプト :
- Git のようなバージョン履歴で追跡されます
- 動的生成のための
{{variables}}
を含める - 評価の実行にリンクされ、時間の経過とともに品質を追跡します
- デプロイ管理のための「本番運用」などのエイリアスのサポート
記録済みモデル
記録済みモデルは 、特定の時点におけるアプリケーションのスナップショットを表します。 記録済みモデル :
記録済みモデルは 、次のいずれかを実行できます。
- メタデータハブとして機能し、概念的なアプリケーションバージョンを特定の外部コード( Git コミットへのポインタなど)にリンクします。
- アプリケーションのコードと構成を完全にデプロイ可能なアーティファクトとしてパッケージ化します
バージョン追跡の詳細、アプリケーションのバージョンを追跡する方法、またはトレースをバージョンにリンクする方法を参照してください。
2. 品質評価用SDK
これらは、トレースの品質を評価し、評価結果を含むトレースに評価を添付する主要なプロセスです。
得点
mlflow.genai.scorers.*
トレースの品質を評価する関数があります。 得点者 :
- 評価する関連データフィールドの トレース を解析します
- そのデータを使用して、決定論的コードまたは LLM ジャッジベースの評価基準を使用して品質を評価します
- その評価の結果と共に 1+ フィードバック エンティティを返します
重要なのは、同じ スコアラー を開発および本番運用での評価に使用できることです。
スコアラー対ジャッジ :LLMジャッジに精通しているなら、彼らがスコアラーとどのように関連しているのか疑問に思うかもしれません。MLflow では、 ジャッジ は、特定の条件に基づいてテキストを評価する呼び出し可能な SDK ( mlflow.genai.judge.is_correct
など) です。ただし、ジャッジはトレースを直接処理することはできず、テキスト入力のみを理解します。そこで 採点者の 出番です:トレースから関連データ(リクエスト、レスポンス、取得したコンテキストなど)を抽出し、評価のために審査員に渡します。スコアラーは、トレースを評価ロジック (LLM ジャッジであろうとカスタム コードであろうと) に接続する "アダプター" と考えてください。
スコアラーの詳細、事前定義されたLLMジャッジの探索、またはカスタムスコアラーの作成方法をご覧ください。
開発における評価
mlflow.genai.evaluate()
は、アプリケーションの品質を体系的に評価するための MLflow の SDK です。評価ハーネスは、評価データセット 、 一連のスコアラー、およびアプリケーションの予測関数を入力として受け取り、フィードバック 評価 を含むトレースを含む 評価実行 を次のように作成します。
- 評価データセット内のすべてのレコードに対してアプリを実行し、トレースを生成する
- 結果のトレース で各 スコアラー を実行して品質を評価し、フィードバックを生成します
- 各フィードバックを適切なトレースにアタッチする
評価用ハーネスは、アプリケーションの潜在的な改善点を反復的に評価するために使用され、次のことを支援します。
- 改善によって品質が向上した(または後退した)かどうかを検証する
- 品質をさらに向上させるための追加の改善点を特定する
評価用ハーネスの詳細については、ガイドに従ってアプリを評価してください。
本番運用での評価
databricks.agents.create_external_monitor()
を使用すると、スコアラーをスケジュールして、デプロイされたアプリケーションからのトレースを自動的に評価できます。スコアラーがスケジュールされると、本番運用 モニタリング サービス:
- 本番運用 トレース でスコアラー を実行し、フィードバックを生成します
- 各フィードバックをソーストレース にアタッチします
本番運用 モニタリングは、品質の問題を迅速に検出し、問題のあるクエリや開発で改善すべきユースケースを特定するために使用されます。
本番運用 モニタリングの概念の詳細については、本番運用での実行 scorers のガイドに従ってください。
3. ユーザーインターフェース
レビューアプリ
レビューアプリは 、ドメインの専門家が評価 で トレースに ラベルを付けるWeb UIです。ラベル付けセッション からの トレース を表示し、ラベル付けスキーマ に基づいて 評価 を収集します。
詳細: アプリガイドのレビュー
MLflow エクスペリメント UI
MLflow エクスペリメント UI には、次の画面が用意されています。
- トレースの表示と検索
- トレースに関するフィードバックと期待値の確認
- 評価結果の分析
- 評価データセット の管理
- バージョンとプロンプト の管理
次のステップ
- はじめに : クイックスタート ガイド に従って、最初のアプリケーションをトレースします
- 詳細 :トレース、評価、または人間によるフィードバックに関する詳細なガイドをご覧ください