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