バッチ実行を送信してフローを評価する
重要
この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
大きなデータセットでのフローのパフォーマンスを評価するには、バッチ実行を送信し、プロンプト フローの評価方法を使用できます。
この記事では、次のことについて説明します。
- バッチ実行を送信し、評価方法を使用する
- 評価結果とメトリックを表示する
- 評価の新しいラウンドを開始する
- バッチ実行履歴を確認し、メトリックを比較する
- 組み込みの評価方法を理解する
- フローのパフォーマンスを向上させる方法
前提条件
バッチ実行で評価方法を使用するには、次の準備が必要です。
- バッチ実行用のテスト データセット。 データセットは、
.csv
、.tsv
、または.jsonl
のいずれかの形式である必要があります。 データには、フローの入力名と一致するヘッダーも含まれている必要があります。 フロー入力に、リストやディクショナリなどの複雑な構造が含まれている場合は、データを表すためにjsonl
形式を使用してください。 - バッチ実行を実行するために使用可能なコンピューティング セッション。 コンピューティング セッションは、フローを実行して出力を生成するクラウドベースのリソースです。 コンピューティング セッションの詳細については、コンピューティング セッションに関するページを参照してください。
バッチ実行を送信し、評価方法を使用する
バッチ実行を使用すると、大きなデータセットでフローを実行して、データ行ごとに出力を生成できます。 また、評価方法を選んで、フローの出力を特定の条件および目標と比較することもできます。 評価方法は、さまざまな側面に基づいてフローの出力のメトリックを計算する特別な種類のフローです。 評価実行は、バッチ実行と共に送信されると、メトリックを計算するために実行されます。
評価を含むバッチ実行を開始するには、[評価] ボタンを選択し、[Custom evaluation] (カスタム評価) を選択します。 [Custom evaluation] (カスタム評価) を選択すると、評価方法と共にバッチ実行を送信するか、フローの評価なしでバッチ実行を送信できます。
まず、バッチ実行にわかりやすい名前を付ける必要があります。 また、説明を記述し、バッチ実行にタグ (キーと値のペア) を追加することもできます。 構成が完了したら、[次へ] を選んで続けます。
次に、フローのテストに使うデータセットを選ぶかアップロードする必要があります。 また、このバッチ実行を実行するために、使用可能なコンピューティング セッションを選択する必要もあります。
プロンプト フローでは、フロー入力をデータセット内の特定のデータ列にマッピングすることもサポートしています。 つまり、列を特定の入力に割り当てることができます。 ${data.XXX}
書式で参照することで、列を入力に割り当てることができます。 定数値を入力に割り当てる場合は、その値を直接入力できます。
次の手順では、このフローのパフォーマンスを検証するために評価方法を使用することを決定できます。 評価方法を適用したり、メトリックを計算したりしない場合は、[次へ] ボタンを直接選択して、この手順をスキップできます。 そうではなくて、今すぐ評価を含むバッチ実行を実行する場合は、1 つ以上の評価方法を選択できます。 評価は、バッチ実行が完了した後に開始されます。 バッチ実行が完了した後に、別の評価ラウンドを開始することもできます。 新しいラウンドの評価を開始する方法の詳細については、「評価の新しいラウンドを開始する」を参照してください。
次の手順の入力マッピングのセクションで、評価方法に必要な入力データのソースを指定する必要があります。 たとえば、グラウンド トゥルース列はデータセットから取得できます。 既定では、評価にはテスト実行に提供されたテスト データセットと同じデータセットが使用されます。 ただし、対応するラベルまたはターゲットのグラウンド トゥルース値が別のデータセット内にある場合は、そのデータセットに簡単に切り替えることができます。
- 実行の出力がデータ ソースの場合、ソースは ${run.output.[OutputName]} と示されます
- テスト データセットがデータ ソースの場合、ソースは ${data.[ColumnName]} と示されます
Note
評価でデータセットのデータが必要ない場合は、入力マッピング セクションのデータセット列を参照する必要はありません。これは、データセットの選択がオプションの構成であることを示します。 データセットの選択は評価結果には影響しません。
フロー応答のパフォーマンスを測定するために評価方法で大規模言語モデル (LLM) が使われている場合は、評価方法で LLM ノードの接続を設定する必要もあります。
続いて、[次へ] を選択して設定を確認し、[送信] を選択して評価を含むバッチ実行を開始できます。
評価結果とメトリックを表示する
送信後、送信されたバッチ実行は、プロンプト フロー ページの [実行リスト] タブで確認できます。 実行を選択して、実行の結果ページに移動します。
実行の詳細ページで、[詳細] を選択して、このバッチ実行の詳細を確認できます。
出力
基本的な結果とトレース
これにより、まず [出力] タブに移動し、入力と出力を 1 行ずつ表示します。 出力タブ ページには、行 ID、入力、出力、状態、システム メトリック、作成時刻 を含む結果のテーブル一覧が表示されます。
各行で [トレースの表示] を選択すると、トレースの詳細ページで特定のテスト ケースを観察してデバッグできます。
評価結果とトレースを追加する
[評価出力の追加] を選択すると、関連する評価実行を選択できるようになり、テーブルの末尾に追加された列が表示され、データの各行の評価結果が表示されます。 比較のために複数の評価出力を追加できます。
左側の [概要] パネルで、最新の評価メトリックを確認できます。
重要な概要
右側の [概要] には、データ ポイントごとの実行数、合計トークン数、実行時間など、実行に関する全体的な情報が表示されます。
既定では、最新の評価実行で集計されたメトリックがここに表示されます。[評価実行の表示] を選択すると、評価実行自体の表示にジャンプできます。
ここで概要を展開したり折りたたんだりできます。また、[完全な情報を表示] を選択すると、[出力] タブの横にある [概要] タブに直接移動します。そこには、この実行のより詳細な情報が含まれています。
評価の新しいラウンドを開始する
バッチ実行を既に完了した場合は、別の評価ラウンドを開始し、新しい評価実行を送信して、フローを再度実行することなく出力のメトリックを計算できます。 これは便利であり、次の場合に、フローを再実行するコストを節約できます。
- バッチ実行の送信時にはメトリックを計算する評価方法を選んでおらず、今それを行うことを決定した。
- 評価方法を使ってメトリックを既に計算してある。 別の評価ラウンドを始めて、別のメトリックを計算できます。
- 評価実行は失敗したが、フローの出力は正常に生成された。 評価をもう一度送信できます。
プロンプト フローの [実行] タブに移動できます。次に、バッチ実行の詳細ページに移動し、[評価] を選択して、別のラウンドの評価を開始します。
構成を設定した後、この新しい評価ラウンドの [送信] を選択できます。 送信した後、プロンプト フロー実行リストで新しいレコードを確認できます。 評価実行が完了したら、同じように、バッチ実行の詳細パネルの [出力] タブで評価の結果をチェックできます。 結果を表示するには、新しい評価実行を選ぶ必要があります。
組み込まれている評価方法によって計算されるメトリックについて詳しくは、「組み込みの評価方法を理解する」をご覧ください。
概要
[概要] タブを選択すると、実行プロパティ、入力データセット、出力データセット、タグ、説明など、実行に関する包括的な情報が表示されます。
ログ
[ログ] タブを選択すると、実行ログを表示できます。これは、実行エラーの詳細なデバッグに役立ちます。 ログ ファイルはお使いのローカル コンピューターにダウンロードできます。
スナップショット
[スナップショット] タブを選択すると、実行スナップショットが表示されます。 フローの DAG を表示できます。 さらに、複製して新しいフローを作成するオプションもあります。 オンライン エンドポイントとしてデプロイすることもできます。
バッチ実行履歴を確認し、メトリックを比較する
シナリオによっては、フローを変更してパフォーマンスを向上させます。 複数のバッチ実行を送信し、異なるバージョンでフローのパフォーマンスを比較できます。 また、異なる評価方法で計算されたメトリックを比較して、フローに適したメトリックを確認することもできます。
フローのバッチ実行の履歴を調べるには、フロー ページの [View batch run] (バッチ実行の表示) ボタンを選択します。 このフローに対して送信したバッチ実行の一覧が表示されます。
各バッチ実行を選んで、詳細を調べることができます。 また、複数のバッチ実行を選択し、[Visualize outputs] (出力の視覚化) を選択すると、バッチ実行のメトリックと出力を比較することもできます。
[出力の視覚化] パネルの Runs & metrics テーブルには、選択した実行の情報が強調表示されて表示されます。 選択した実行の出力を入力として受け取る他の実行も一覧表示されます。
[出力] テーブルでは、選択したバッチ実行をサンプルの各行ごとに比較できます。 "Runs & metrics" テーブルで [目の視覚化] アイコンを選択すると、その実行の出力が対応する基本実行に追加されます。
組み込みの評価方法を理解する
プロンプト フローには、フロー出力のパフォーマンスを測定するのに役立つ複数の組み込み評価方法が用意されています。 各評価方法では、異なるメトリックが計算されます。 組み込みの評価方法とその説明の一覧については、次の表を参照してください。
評価方法 | メトリック | 説明 | 接続が必要 | 必要な入力 | スコアの値 |
---|---|---|---|---|---|
分類の精度の評価 | 精度 | 出力を実測値と比較することで、分類システムのパフォーマンスを測定します。 | いいえ | 予測、実測値 | 0 から 1 の範囲内。 |
QnA 関連性スコアのペアごとの評価 | スコア、勝敗 | 質問応答システムによって生成された回答の品質を評価します。 ユーザーの質問との一致の程度に基づく各回答への関連性スコアの割り当て、ベースラインの回答に対するさまざまな回答の比較、結果を集計したメトリック (平均勝率や関連性スコアなど) の生成が含まれます。 | はい | 質問、回答 (実測値またはコンテキストなし) | スコア: 0 から 100、勝敗: 1/0 |
QnA 現実性評価 | 現実性 | モデルで予測された回答が入力ソースにおいてどの程度現実的なものかを測定します。 LLM の応答が true の場合でも、ソースに対して検証できない場合は、現実的ではありません。 | はい | 質問、回答、コンテキスト (実測値なし) | 1 から 5、1 が最低、5 が最高。 |
QnA GPT 類似性評価 | GPT 類似性 | GPT モデルを使用して、ユーザーが提供した実測値の回答とモデルで予測された回答の類似性を測定します。 | はい | 質問、回答、実測値 (コンテキストは不要) | 0 から 1 の範囲内。 |
QnA 関連性評価 | 関連性 | モデルで予測された回答が質問とどの程度関連しているかを測定します。 | はい | 質問、回答、コンテキスト (実測値なし) | 1 から 5、1 が最低、5 が最高。 |
QnA 一貫性評価 | 一貫性 | モデルで予測された回答内のすべての文の品質と、それらの自然な適合具合を測定します。 | はい | 質問、回答 (実測値またはコンテキストなし) | 1 から 5、1 が最低、5 が最高。 |
QnA 流暢性評価 | 流暢性 | モデルで予測された回答の文法的および言語的な正しさを測定します。 | はい | 質問、回答 (実測値またはコンテキストなし) | 1 から 5、1 が最低、5 が最高 |
QnA f1 スコア評価 | F1 スコア | モデルの予測と実測値の間で共有されている単語数の割合を測定します。 | いいえ | 質問、回答、実測値 (コンテキストは不要) | 0 から 1 の範囲内。 |
QnA Ada 類似性評価 | Ada 類似性 | Ada 埋め込み API を使って、実測値と予測の両方について、文 (ドキュメント) レベルの埋め込みを計算します。 次に、それらの間のコサイン類似度を計算します (1 つの浮動小数点数) | はい | 質問、回答、実測値 (コンテキストは不要) | 0 から 1 の範囲内。 |
フローのパフォーマンスを向上させる方法
評価から組み込みの方法を調べた後、次の方法でフローのパフォーマンスを向上させることができます。
- 出力データを調べて、フローの潜在的な障害をデバッグします。
- フローを変更してパフォーマンスを向上させます。 これには次のものが含まれますが、これらだけではありません。
- プロンプトを変更する
- システム メッセージを変更する
- フローのパラメーターを変更する
- フローのロジックを変更する
目標を達成できるプロンプトの構築方法の詳細については、「プロンプト エンジニアリングの概要」、「プロンプト エンジニアリング手法」、および「大規模言語モデル (LLM) のシステム メッセージのフレームワークとテンプレートに関する推奨事項」を参照してください。
このドキュメントでは、バッチ実行を送信し、組み込みの評価方法を使って、フローの出力の品質を測定する方法について説明しました。 また、評価結果とメトリックを表示する方法と、異なる方法またはバリアントのサブセットを使って新しい評価ラウンドを開始する方法についても説明しました。 このドキュメントが、フローのパフォーマンスを向上させ、プロンプト フローを使って目標を達成するのに役立つことを願っています。