SageMaker AI でトレーニングされたモデルの評価 - Amazon Nova

SageMaker AI でトレーニングされたモデルの評価

評価プロセスの目的は、ベンチマークまたはカスタムデータセットと照らし合わせてトレーニング済みモデルのパフォーマンスを評価することです。評価プロセスには通常、トレーニングされたモデルを参照する評価レシピの作成、評価データセットとメトリクスの指定、評価用の別のジョブの送信、標準ベンチマークまたはカスタムデータと照らし合わせた評価のステップが含まれます。評価プロセスでは、Amazon S3 バケットに保存されているパフォーマンスメトリクスが出力されます。

注記

このトピックで説明する評価プロセスはオフラインプロセスです。モデルは、リアルタイムまたはライブユーザーインタラクションを通じて評価されるのではなく、事前定義された回答がある固定ベンチマークに照らし合わせてテストされます。リアルタイム評価の場合、Amazon Bedrock ランタイム API を呼び出して、Amazon Bedrock にモデルをデプロイした後にモデルをテストできます。

前提条件

評価トレーニングジョブを開始する前に、次の要件を確認してください。

  • パフォーマンスを評価する、SageMaker AI でトレーニングされた Amazon Nova モデル。

  • 評価用のベース Amazon Nova レシピ。詳細については、「Amazon Nova レシピの取得」を参照してください。

使用可能なベンチマークタスク

Amazon Nova 用の SageMaker AI モデル評価機能を使用してベンチマークメトリクスを計算する方法を示すサンプルコードパッケージを利用できます。コードパッケージにアクセスするには、「sample-Nova-lighteval-custom-task」を参照してください。

サポートされている業界標準ベンチマークのリストを以下に示します。eval_task パラメータでは次のベンチマークを指定できます。

モデル評価に使用できるベンチマーク

ベンチマーク モダリティ 説明 メトリクス 方針 使用可能なサブタスク
mmlu

テキスト

マルチタスク言語理解 — 57 のテーマの知識をテストします。

正確性

zs_cot あり
mmlu_pro テキスト

MMLU – プロフェッショナルサブセット – 法律、医学、会計、エンジニアリングなどのプロフェッショナル分野に焦点を当てています。

正確性 zs_cot 不可
bbh テキスト

高度な推論タスク – 高レベルの認知スキルと問題解決スキルをテストする困難な問題のコレクション。

正確性 fs_cot あり
gpqa テキスト

一般的な物理質問への回答 – 物理の概念と関連する問題解決能力の理解を評価します。

正確性 zs_cot 不可
算術 テキスト

数学的問題解決 — 代数、微積分、単語の問題など、複数のトピックにわたって数学的推論を測定します。

exact_match zs_cot あり
strong_reject テキスト

品質管理タスク – 不適切、有害、または誤ったコンテンツを検出して拒否するモデルの能力をテストします。

deflection zs あり
ifeval テキスト

指示に従った評価 – どの程度モデルが所定の指示に正確に従い、仕様に従ってタスクを完了したかを評価します。

正確性 zs 不可
gen_qa マルチモーダル (イメージ)

カスタムデータセット評価 – モデル出力を参照回答と比較し、ROUGE や BLEU などのメトリクスでベンチマーク用の独自のデータセットを提供できます。gen_qa は、Amazon Nova Lite または Amazon Nova Pro ベースのモデルのイメージ推論をサポートしています。Bring-Your-Own Metrics Lambda もサポートしています。(RFT 評価には RFT 評価レシピを使用してください)

すべて gen_qa 不可
mmmu マルチモーダル

Massive Multidiscipline Multimodal Understanding (MMMU) – 30 の分野の複数選択の質問と自由回答形式の質問で構成される大学レベルのベンチマーク。)

正確性 zs_cot あり
llm_judge テキスト

LLM-as-a-Judge プリファレンス比較 – Nova Judge モデルを使用して、プロンプトのペアレスポンス間のプリファレンス (B と A の比較) を決定し、B が A よりも優先される確率を計算します。

すべて judge 不可

mm_llm_judge

マルチモーダル (イメージ)

この新しいベンチマークは、上記のテキストベースの llm_judge と同じように動作します。唯一の違いは、イメージ推論をサポートしていることです。

すべて judge 不可

rubric_llm_judge

テキスト

Rubric Judge は、Nova 2.0 Lite 上に構築された拡張 LLM-as-a-judge 評価モデルです。プリファレンス判定のみを提供する元のジャッジモデルとは異なり、Rubric Judge は各プロンプトに合わせたカスタム評価基準を動的に生成し、複数のディメンションにわたって詳細なスコアを割り当てます。

すべて

judge

不可

aime_2024

テキスト

AIME 2024 - 高度な数学的推論と問題解決をテストするアメリカ招待数学試験問題

exact_match

zs_cot

不可

calendar_scheduling

テキスト

Natural Plan - 複数の日程および複数人にまたがる会議をスケジュールする計画能力をテストするカレンダースケジューリングタスク。

exact_match

fs

不可

humaneval

テキスト

HumanEval - 大規模言語モデルのコード生成機能を評価するように設計されたベンチマークデータセット

pass@1

zs 不可

評価固有の設定

以下は、レシピの主要なコンポーネントの内訳と、ユースケースに合わせてコンポーネントを変更する方法に関するガイダンスです。

レシピの理解と変更

一般的な実行設定

run: name: eval_job_name model_type: amazon.nova-lite-v1:0:300k model_name_or_path: nova-lite/prod # or s3://escrow_bucket/model_location replicas: 1 data_s3_path: "" mlflow_tracking_uri: "" mlflow_experiment_name : "" mlflow_run_name : ""
  • name: 評価ジョブのわかりやすい名前。

  • model_type: 使用する Nova モデルバリアントを指定します。このフィールドは手動で変更しないでください。オプションには以下が含まれます。

    • amazon.nova-micro-v1:0:128k

    • amazon.nova-lite-v1:0:300k

    • amazon.nova-pro-v1:0:300k

    • amazon.nova-2-lite-v1:0:256k (Nova 2.0 モデル — 「Nova 2.0 カスタマイズガイド」を参照)

  • model_name_or_path: ベースモデルへのパスまたはトレーニング後のチェックポイント用の s3 パス。オプションには以下が含まれます。

    • nova-micro/prod

    • nova-lite/prod

    • nova-pro/prod

    • nova-lite-2/prod (Nova 2.0 モデル)

    • トレーニング後のチェックポイントパスの S3 パス (s3:customer-escrow-111122223333-smtj-<unique_id>/<training_run_name>)

      注記

      トレーニング後のモデルを評価する

      Nova SFT トレーニングジョブの後にトレーニング後のモデルを評価するには、トレーニングジョブを正常に実行した後、以下の手順に従います。トレーニングログの最後に、「トレーニングが完了しました」というログメッセージが表示されます。また、チェックポイントの場所を含む manifest.json ファイルが出力バケットにあります。このファイルは、出力 S3 の場所にある output.tar.gz ファイル内にあります。評価を続行するには、レシピ設定の run.model_name_or_path の値として設定して、このチェックポイントを使用します。

  • replica: 分散推論 (複数のノードで推論を実行する) に使用するコンピューティングインスタンスの数。マルチノード推論を有効にするには replica > 1 を設定して、評価を高速化します。instance_countreplica の両方が指定されている場合、instance_count が優先されます。複数のレプリカは SageMaker AI トレーニングジョブにのみ適用されることに注意してください。

  • data_s3_path: 入力データセットの Amazon S3 パス。このフィールドは必須ですが、常に空のままにする必要があります。

  • mlflow_tracking_uri: (オプション) MLflow 追跡サーバーの場所 (SMHP でのみ必要)

  • mlflow_experiment_name: (オプション) 関連する ML 実行をグループ化する実験の名前

  • mlflow_run_name: (オプション) 実験内の特定のトレーニング実行のカスタム名

評価設定

evaluation: task: mmlu strategy: zs_cot subtask: abstract_algebra metric: accuracy
  • task: 使用する評価ベンチマークまたはタスクを指定します。サポートされているタスクは次のとおりです。

    • mmlu

    • mmlu_pro

    • bbh

    • gpqa

    • math

    • strong_reject

    • gen_qa

    • ifeval

    • mmmu

    • llm_judge

    • mm_llm_judge

    • rubric_llm_judge

    • aime_2024

    • calendar_scheduling

    • humaneval

  • strategy: 評価アプローチを定義します。

    • zs_cot: Zero-shot Chain of Thought - 明示的な例を必要とせずにステップバイステップの推論を推進する、大規模言語モデルに対してプロンプトを実行するアプローチ。

    • fs_cot: Few-shot Chain of Thought - モデルに新しい問題を解決するよう指示する前にステップバイステップの推論の例をいくつか提供するアプローチ。

    • zs: Zero-shot - 過去のトレーニング例なしで問題を解決するためのアプローチ。

    • gen_qa: 独自のデータセットを取り込むための固有の戦略。

    • judge: Nova LLM as Judge および mm_llm_judge に固有の戦略。

  • subtask: オプション。評価タスクの特定のコンポーネント。使用可能なサブタスクの完全なリストについては、「使用可能なサブタスク」を参照してください 。

    • 使用可能なベンチマークタスクでサポートされているサブタスクを確認します。

    • サブタスクベンチマークがない場合は、このフィールドを削除する必要があります。

  • metric: 使用する評価メトリクス。

    • accuracy: 正しい回答の割合。

    • exact_match: 数学ベンチマークの場合、入力予測文字列が参照と完全に一致する率を返します。

    • deflection: 強力な拒否ベンチマークの場合、ベースモデルと差の有意性メトリクスへの相対的なたわみを返します。

    • all:

      gen_qa では、独自のデータセットベンチマークを取り込んで、次のメトリクスを返します。

      • rouge1: 生成されたテキストと参照テキスト間のユニグラム (単一単語) の重複を測定します。

      • rouge2: 生成されたテキストと参照テキストの間のバイグラム (2 つの連続した単語) の重複を測定します。

      • rougeL: テキスト間の最長の共通サブシーケンスを測定し、一致でのギャップを許容します。

      • exact_match: 生成されたテキストが参照テキストと完全に一致するかどうかを示すバイナリスコア (0 または 1)。文字単位で評価されます。

      • quasi_exact_match: 完全一致に似ていますが、より寛容で、通常は大文字と小文字、句読点、空白の違いが無視されます。

      • f1_score: 予測された回答と参照回答の間の単語の重複を測定する、精度と再現率を組み合わせた手法。

      • f1_score_quasi: f1_score に似ていますが、より寛容なマッチングであり、わずかな違いを無視する正規化されたテキスト比較を使用します。

      • bleu: 翻訳評価で一般的に使用される、生成されたテキストと参照テキストの間の n グラム一致の精度を測定します。

      llm_judge および mm_llm_judge において、独自のデータセットベンチマークを使用する場合、以下のメトリクスを返します。

      • a_scores: 前方評価パスと後方評価パスにおける response_A の勝利数。

      • a_scores_stderr: ペアワイズ判断間における response_A_scores の標準誤差。

      • b_scores: 前方評価パスと後方評価パスにおける response_B の勝利数を測定します。

      • a_scores_stderr: ペアワイズ判断間における response_B_scores の標準誤差。

      • ties: response_Aresponse_B が等しいと評価される判断の数。

      • ties_stderr: ペアワイズ判断間における ties の標準誤差。

      • inference_error: 適切に評価できなかった判断の数。

      • score: response_B における前方パスと後方パスの両方からの勝利に基づく集計スコア。

      • score_stderr: response_B における前方パスと後方パスの両方からの勝利に基づく集計スコア。

      • inference_error_stderr: ペアワイズ判断間における集計スコアの標準誤差。

      • winrate: Bradley-Terry 確率を使用して計算された response_A よりも response_B が優先される確率。

      • lower_rate: ブートストラップサンプリングからの推定勝率の下限 (2.5 パーセンタイル)。

      • upper_rate: ブートストラップサンプリングからの推定勝率の上限 (97.5 パーセンタイル)。

推論設定 (省略可)

inference: max_new_tokens: 2048 top_k: -1 top_p: 1.0 temperature: 0 top_logprobs: 10 reasoning_effort: null # options: low/high to enable reasoning or null to disable reasoning
  • max_new_tokens: 生成するトークンの最大数。整数を指定する必要があります。(LLM Judge には使用不可)

  • top_k: 考慮する最も高い確率のトークンの数。整数を指定する必要があります。

  • top_p: トークンサンプリングの累積確率しきい値。1.0~0.0 の間の浮動小数点数にする必要があります。

  • temperature: トークン選択のランダム性 (高 = よりランダム)。結果を確定的にするには 0 のままにします。浮動小数点タイプで、最小値は 0 です。

  • top_logprobs: 推論レスポンスで返される上位の logprob の数。この値は 0~20 の整数にする必要があります。Logprobs には、メッセージコンテンツで返される各出力トークンの考慮された出力トークンとログ確率が含まれます。

  • reasoning_effort: 推論対応モデルの推論動作を制御します。model_type が推論対応モデル (現在は amazon.nova-2-lite-v1:0:256k) を指定する場合にのみ reasoning_effort を設定します。使用可能なオプションは null (設定されていない場合はデフォルト値。推論を無効化)、low、または high です。

ログ確率出力形式

推論設定で top_logprobs が設定されている場合、評価出力には Parquet ファイルにトークンレベルのログ確率が含まれます。各トークン位置には、以下の構造のログ確率を持つ上位候補トークンのディクショナリが含まれています。

{ "Ġint": {"logprob_value": -17.8125, "decoded_value": " int"}, "Ġthe": {"logprob_value": -2.345, "decoded_value": " the"} }

各トークンエントリには以下が含まれます。

  • logprob_value: トークンのログ確率値

  • decoded_value: トークンの人間が読み取り可能なデコードされた文字列表現

Raw トークナイザトークンは、一意性を確保するためにディクショナリキーとして使用されますが、decoded_value は読み取り可能な解釈を提供します。

評価レシピの例

Amazon Nova には、4 種類の評価レシピが用意されています。すべてのレシピは SageMaker HyperPod レシピ GitHub リポジトリで利用できます。

評価レシピ

    これらのレシピを使用すると、テキストのみのベンチマークの包括的なスイート全体で Amazon Nova モデルの基本的な機能を評価できます。

    レシピの形式は xxx_general_text_benchmark_eval.yaml です。

    これらのレシピを使用すると、ベンチマーク用の独自のデータセットを取り込んでモデル出力を比較し、さまざまなタイプのメトリクスを使用して回答を参照できます。

    レシピの形式は xxx_ bring_your_own_dataset_eval.yaml です。

    Bring your own dataset の要件

    ファイル形式:

    • 評価例を含む 1 つの gen_qa.jsonl ファイル。ファイル名は gen_qa.jsonl とまったく同じにする必要があります。

    • SageMaker AI トレーニングジョブがアクセスできる S3 の場所にデータセットをアップロードする必要があります。

    • ファイルでは、一般的な Q&A データセットに必要なスキーマ形式に従う必要があります。

    スキーマ形式の要件 - .jsonl ファイル内の各行は、以下のフィールドがある JSON オブジェクトである必要があります。

    • 必須フィールド。

      query: 回答が必要な質問または指示を含む文字列。

      response: 予想されるモデル出力を含む文字列。

    • 省略しても構わないフィールドです。

      system: クエリを処理する前に AI モデルの動作、ロール、またはパーソナリティを設定するシステムプロンプトを含む文字列。

      images: データ属性 (Base64 でエンコードされたイメージ文字列) を持つオブジェクトのリストを含む配列。

      metadata: タグ付けの目的でエントリに関連付けられたメタデータを含む文字列。

    エントリ例

    { "system":"You are an English major with top marks in class who likes to give minimal word responses: ", "query":"What is the symbol that ends the sentence as a question", "response":"?" }{ "system":"You are a pattern analysis specialist who provides succinct answers: ", "query":"What is the next number in this series? 1, 2, 4, 8, 16, ?", "response":"32" }{ "system":"You have great attention to detail and follow instructions accurately: ", "query":"Repeat only the last two words of the following: I ate a hamburger today and it was kind of dry", "response":"of dry" }{ "system": "Image inference: ", "query": "What is the number in the image? Please just use one English word to answer.", "response": "two", "images": [ { "data": "data:image/png;Base64,iVBORw0KGgoA ..." } ] }

    カスタムデータセットを使用するには、既存の設定を変更せずに、以下の必須フィールドを追加して評価レシピを変更します。

    evaluation: task: gen_qa strategy: gen_qa metric: all

    制限事項

    • 評価ごとに許可される .jsonl ファイルは 1 つだけです。

    • ファイルでは、定義されているスキーマに厳密に従う必要があります。

    独自のメトリクスを使用する

    独自のメトリクスを持ち込んで、カスタム前処理、後処理、メトリクス機能を使用してモデル評価ワークフローを完全にカスタマイズできます。前処理では、入力データを推論サーバーに送信する前に処理できます。後処理では、メトリクスの計算をカスタマイズし、必要に応じてカスタムメトリクスを返すことができます。

    カスタム評価 SDK を使用して独自のメトリクスを持ち込むには、以下の手順に従います。

    1. まだ作成していない場合は、最初に AWS アカウント で AWS Lambda 関数を作成します。

    2. GitHub リポジトリから構築済みの nova-custom-eval-layer.zip ファイルをダウンロードします。このオープンソースの Nova カスタム評価 SDK を使用して、カスタム関数の入出力ペイロードを検証し、トレーニング中に Nova の独自メトリクス評価と統合するための統合インターフェイスを提供できます。

    3. 以下のコマンドを使用して、カスタム Lambda レイヤーをアップロードします。

      aws lambda publish-layer-version \ --layer-name nova-custom-eval-layer \ --zip-file fileb://nova-custom-eval-layer.zip \ --compatible-runtimes python3.12 python3.11 python3.10 python3.9
    4. このレイヤーを、次の必要な AWS レイヤー (pydantic 依存関係に必要) と共に、カスタムレイヤーとして Lambda 関数に追加します: AWSLambdaPowertoolsPythonV3-python312-arm64

    5. 提供されている例を使用して Lambda コードを更新し、必要に応じてコードを変更します。このサンプルコードは、モデル評価の前処理と後処理のステップを使用して、Nova のカスタム評価用の Lambda 関数を作成します。

      from nova_custom_evaluation_sdk.processors.decorators import preprocess, postprocess from nova_custom_evaluation_sdk.lambda_handler import build_lambda_handler @preprocess def preprocessor(event: dict, context) -> dict: data = event.get('data', {}) return { "statusCode": 200, "body": { "system": data.get("system"), "prompt": data.get("prompt", ""), "gold": data.get("gold", "") } } @postprocess def postprocessor(event: dict, context) -> dict: # data is already validated and extracted from event data = event.get('data', []) inference_output = data.get('inference_output', '') gold = data.get('gold', '') metrics = [] inverted_accuracy = 0 if inference_output.lower() == gold.lower() else 1.0 metrics.append({ "metric": "inverted_accuracy_custom", "value": accuracy }) # Add more metrics here return { "statusCode": 200, "body": metrics } # Build Lambda handler lambda_handler = build_lambda_handler( preprocessor=preprocessor, postprocessor=postprocessor )
    6. 評価ジョブへのアクセス権を Lambda に付与します。評価ジョブに指定された実行ロールに、Lambda 関数を呼び出すポリシーが含まれていることを確認します。次の通り、ポリシーの例を示します。

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "LambdaAccess", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ExampleFunction", "Condition": { "StringLike": { "aws:PrincipalArn": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-ARN" } } }, { "Sid": "DenyNonAWSEventSourcesForLambda", "Effect": "Deny", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ExampleFunction", "Condition": { "Null": { "lambda:EventSourceToken": false } } } ] }
    7. Lambda ペイロードスキーマを確認します。以下の表に、Lambda リクエストとレスポンスのスキーマを示します。Nova カスタム評価 SDK を使用してスキーマを検証できます。

      Lambda リクエストペイロード Lambda レスポンスペイロード
      プリプロセッサ
      { "process_type": "preprocess", "data": { "system": "You are a helpful assistant", "prompt": "What is 2+2?", "gold": "4" } }
      { "statusCode": 200, "body": { "system": "You are a helpful assistant that can substitute * for addition", "prompt": "What is 2*2?", "gold": "4" } }
      ポストプロセッサ
      { "process_type": "postprocess", "data": { "prompt": "What is 2+2?", "inference_output": "2+2=4", "gold": "4" } }
      { "statusCode": 200, "body": [ {"metric": "accuracy", "value": 1.0}, {"metric": "f1_score", "value": 1.0}, {"metric": "exact_match", "value": 1}, {"metric": "length_ratio", "value": 0.8} ] }
    8. レシピファイルを変更します。以下はその例です。

      processor: lambda_arn: arn:aws:lambda:us-east-1:111122223333:function:name lambda_type: "custom_metrics" preprocessing: enabled: true postprocessing: enabled: true aggregation: average
      • lambda-arn: 前処理と後処理を処理する Lambda 関数の Amazon リソースネーム (ARN)。

      • lambda_type: "custom_metrics" または "rft"。

      • preprocessing: カスタム前処理オペレーションを有効にするかどうか。

      • postprocessing: カスタム後処理オペレーションを有効にするかどうか。

      • aggregation: 組み込みの集計関数 (有効なオプション: 最小、最大、平均、合計)。

    制限事項

    • 独自メトリクスは、テキスト入力データセットにのみ適用されます。

    • マルチモーダル入力データセットはサポートされていません。

    • 前処理ステップはメタデータフィールドを処理しません。

    Nova LLM Judge は、カスタムデータセットを使用して、1 つのモデルからのレスポンスの品質をベースラインモデルのレスポンスと比較できるモデル評価機能です。プロンプト、ベースラインレスポンス、チャレンジャーレスポンスを含むデータセットを受け付けてから、Nova Judge モデルを使用して、ペアワイズ比較による Bradley-Terry 確率に基づく勝利率メトリクスを提供します。レシピの形式は xxx_llm_judge_eval.yaml です。

    Nova LLM データセットの要件

    ファイル形式:

    • 評価例を含む 1 つの llm_judge.jsonl ファイル。ファイル名は llm_judge.jsonl とまったく同じにする必要があります。

    • SageMaker AI トレーニングジョブがアクセスできる S3 の場所にデータセットをアップロードする必要があります。

    • ファイルでは、llm_judge データセットに必要なスキーマ形式に従う必要があります。

    • 入力データセットでは、すべてのレコードが 12,000 コンテキスト長未満になるようにする必要があります。

    スキーマ形式 - .jsonl ファイル内の各行は、次のフィールドがある JSON オブジェクトである必要があります。

    • 必須フィールド。

      prompt: 生成されたレスポンスのプロンプトを含む文字列。

      response_A: ベースラインレスポンスを含む文字列。

      response_B: ベースラインレスポンスと比較される、代替レスポンスを含む文字列。

    エントリ例

    { "prompt": "What is the most effective way to combat climate change?", "response_A": "The most effective way to combat climate change is through a combination of transitioning to renewable energy sources and implementing strict carbon pricing policies. This creates economic incentives for businesses to reduce emissions while promoting clean energy adoption.", "response_B": "We should focus on renewable energy. Solar and wind power are good. People should drive electric cars. Companies need to pollute less." } { "prompt": "Explain how a computer's CPU works", "response_A": "CPU is like brain of computer. It does math and makes computer work fast. Has lots of tiny parts inside.", "response_B": "A CPU (Central Processing Unit) functions through a fetch-execute cycle, where instructions are retrieved from memory, decoded, and executed through its arithmetic logic unit (ALU). It coordinates with cache memory and registers to process data efficiently using binary operations." } { "prompt": "How does photosynthesis work?", "response_A": "Plants do photosynthesis to make food. They use sunlight and water. It happens in leaves.", "response_B": "Photosynthesis is a complex biochemical process where plants convert light energy into chemical energy. They utilize chlorophyll to absorb sunlight, combining CO2 and water to produce glucose and oxygen through a series of chemical reactions in chloroplasts." }

    カスタムデータセットを使用するには、以下の必須フィールドを使用して評価レシピを変更し、いずれの内容も変更しないでください。

    evaluation: task: llm_judge strategy: judge metric: all

    制限事項

    • 評価ごとに許可される .jsonl ファイルは 1 つだけです。

    • ファイルでは、定義されているスキーマに厳密に従う必要があります。

    • Nova Judge モデルは micro/lite/pro の各仕様で同じです。

    • 現在、カスタム判断モデルはサポートされていません。

    マルチモーダル (イメージ) ベンチマークレシピの Nova LLM as a Judge

    マルチモーダル (イメージ) 用の Nova LLM Judge は、Nova MM_LLM Judge の略で、カスタムデータセットを使用して、1 つのモデルからのレスポンスの品質をベースラインモデルのレスポンスと比較できるモデル評価機能です。プロンプト、ベースラインレスポンス、チャレンジャーレスポンス、および Base64 エンコードされた文字列形式のイメージを含むデータセットを受け付けてから、Nova Judge モデルを使用して、ペアワイズ比較による Bradley-Terry 確率に基づく勝利率メトリクスを提供します。レシピの形式は xxx_mm_llm_judge_eval.yaml です。

    Nova LLM データセットの要件

    ファイル形式:

    • 評価例を含む 1 つの mm_llm_judge.jsonl ファイル。ファイル名は正確に llm_judge.jsonl である必要があります。

    • SageMaker トレーニングジョブがアクセスできる S3 の場所にデータセットをアップロードする必要があります。

    • ファイルでは、mm_llm_judge データセットに必要なスキーマ形式に従う必要があります。

    • 入力データセットでは、イメージの属性を除いて、すべてのレコードが 12,000 コンテキスト長未満になるようにする必要があります。

    スキーマ形式 - .jsonl ファイル内の各行は、次のフィールドがある JSON オブジェクトである必要があります。

    • 必須フィールド。

      prompt: 生成されたレスポンスのプロンプトを含む文字列。

      images: データ属性を持つオブジェクトのリストを含む配列 (値は Base64 でエンコードされたイメージ文字列)。

      response_A: ベースラインレスポンスを含む文字列。

      response_B: ベースラインレスポンスと比較される、代替レスポンスを含む文字列。

    エントリ例

    読みやすくするために、以下の例には新しい行とインデントが含まれていますが、実際のデータセットでは、各レコードを 1 行で記述する必要があります。

    { "prompt": "What is in the image?", "images": [ { "data": "data:image/jpeg;Base64,/9j/2wBDAAQDAwQDAwQEAwQFBAQFBgo..." } ], "response_A": "a dog.", "response_B": "a cat.", } { "prompt": "How many animals are in each of the images?", "images": [ { "data": "data:image/jpeg;Base64,/9j/2wBDAAQDAwQDAwQEAwQFBAQFBgo..." }, { "data": "data:image/jpeg;Base64,/DKEafe3gihn..." } ], "response_A": "The first image contains one cat and the second image contains one dog", "response_B": "The first image has one aminal and the second has one animal" }

    カスタムデータセットを使用するには、以下の必須フィールドを使用して評価レシピを変更し、いずれの内容も変更しないでください。

    evaluation: task: mm_llm_judge strategy: judge metric: all

    制限事項

    • 評価ごとに許可される .jsonl ファイルは 1 つだけです。

    • ファイルでは、定義されているスキーマに厳密に従う必要があります。

    • Nova MM Judge モデルはイメージ参照のみをサポートしています。

    • Nova MM Judge モデルは、Amazon Nova Micro、Amazon Nova Lite、Amazon Nova Pro の仕様で同じです。

    • 現在、カスタム判断モデルはサポートされていません。

    • Amazon S3 イメージ URI はサポートされていません。

    • 入力データセットでは、イメージの属性を除いて、すべてのレコードが 12,000 コンテキスト長未満になるようにする必要があります。

    評価トレーニングジョブの実行

    以下のサンプル Notebook を使用してトレーニングジョブを開始します。評価トレーニングジョブを実行するには、以下のノートブックを例として参照してください。詳細については、「SageMaker AI 推定器を使用したトレーニングジョブの実行」を参照してください。

    リファレンステーブル

    ノートブックを実行する前に、次のリファレンステーブルを参照して、イメージ URI とインスタンスの設定を選択します。

    画像 URI の選択

    レシピ イメージ URI

    評価画像 URI

    708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest

    インスタンスタイプとカウントの選択

    モデル ジョブタイプ インスタンスタイプ 推奨インスタンスカウント 許可されるインスタンス数
    Amazon Nova Micro 評価 (SFT/DPO)

    g5.12xlarge

    1 1~16
    Amazon Nova Lite 評価 (SFT/DPO)

    g5.12xlarge

    1 1~16
    Amazon Nova Pro 評価 (SFT/DPO)

    p5.48xlarge

    1 1~16

    サンプルノートブック

    次のサンプルノートブックは、評価トレーニングジョブの実行方法を示したものです。

    # install python SDK # Do not use sagemaker v3, as sagemaker v3 introduced breaking changes !pip install sagemaker==2.254.1 import os import sagemaker,boto3 from sagemaker.inputs import TrainingInput from sagemaker.pytorch import PyTorch sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # Download recipe from https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/evaluation/nova to local # Assume the file name be `recipe.yaml` # Populate parameters # input_s3_uri = "s3://<path>/input/" # (Optional) Only used for multi-modal dataset or bring your own dataset s3 location output_s3_uri= "s3://<path>/output/" # Output data s3 location, a zip containing metrics json and tensorboard metrics files will be stored to this location instance_type = "instance_type" # ml.g5.16xlarge as example instance_count = 1 # The number of instances for inference (set instance_count > 1 for multi-node inference to accelerate evaluation) job_name = "your job name" recipe_path = "recipe path" # ./recipe.yaml as example image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest" # Do not change output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption # (Optional) To bring your own dataset and LLM judge for evaluation # evalInput = TrainingInput( # s3_data=input_s3_uri, # distribution='FullyReplicated', # s3_data_type='S3Prefix' #) estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role, instance_type=instance_type, instance_count=instance_count, training_recipe=recipe_path, sagemaker_session=sagemaker_session, image_uri=image_uri, output_kms_key=output_kms_key ) estimator.fit() # If input dataset exist, pass in inputs # estimator.fit(inputs={"train": evalInput})

    評価結果の評価と分析

    評価ジョブが正常に完了したら、次のステップを使用して結果を評価および分析できます。

    以下の手順に従って、結果を評価および分析します。
    1. 出力場所の構造を理解します。結果は、指定された Amazon S3 出力場所に圧縮ファイルとして保存されます。

      s3://your-bucket/output/benchmark-name/ └── job_name/ └── output/ └── output.tar.gz
    2. バケットから output.tar.gz ファイルをダウンロードします。内容を展開して表示します。

      run_name/ ├── eval_results/ | └── results_[timestamp].json │ └── inference_output.jsonl (only present for gen_qa) | └── details/ | └── model/ | └── <execution-date-time>/ | └──details_<task_name>_#_<datetime>.parquet └── tensorboard_results/ └── eval/ └── events.out.tfevents.[timestamp]
      • results_[timestamp].json - 出力メトリクス JSON ファイル

      • details_<task_name>_#_<datetime>.parquet - 推論出力ファイル (strong_reject を除く)

      • events.out.tfevents.[timestamp] - TensorBoard 出力ファイル

      • inference_output.jsonl - クリーンアップ済み推論出力ファイル (gen_qa タスクのみ)

    3. TensorBoard で結果を表示します。評価メトリクスを視覚化するには:

      1. 抽出したフォルダーを S3 バケットにアップロードする

      2. SageMaker AI Tensorboard に移動します

      3. 「S3 フォルダー」を選択する

      4. S3 フォルダーパスを追加する

      5. 同期が完了するまで待機する

    4. 推論出力を分析します。llm_judgestrong_reject を除くすべての評価タスクには、推論出力での分析用に次のフィールドがあります。

      • full_prompt - 評価タスクに使用されるモデルに送信された完全なユーザープロンプト。

      • gold - データセットで指定された正しい回答 (複数可) を含むフィールド。

      • metrics - 個々の推論で評価されたメトリクスを含むフィールド。集計が必要な値には、個々の推論出力に値がありません。

      • predictions - 指定されたプロンプトのモデルの出力のリストを含むフィールド。

      • pred_logits - メッセージコンテンツで返される各出力トークンの考慮された出力トークンとログ確率を含むフィールド。

      これらのフィールドを確認することで、メトリクスの違いの原因を特定し、カスタマイズされたモデルの動作を理解できます。

      llm_judge の場合、推論出力ファイルには、評価のペアごとにメトリクスフィールドの下に次のフィールドが含まれます。

      • forward_output - 順番に評価する際の判断の未加工プレファレンス (response_A、response_B)。

      • backward_output - 逆の順番で評価する際の判断の未加工プレファレンス (response_B、response_A)。

      • Pairwise metrics - 前方評価と後方評価のペアごとに計算されるメトリクス (a_scoresb_scorestiesinference-scorescore を含む)。

        注記

        winrate のような集計メトリクスは、個々の判断ではなく、概要結果ファイルでのみ使用できます。

      gen_qa では、JSON オブジェクトごとに inference_output.jsonl ファイルに以下のフィールドが含まれています。

      • prompt - モデルに送信された最終的なプロンプト

      • inference - モデルからの生の推論出力

      • gold - 入力データセットからのターゲットレスポンス

      • metadata - 指定した場合の入力データセットからのメタデータ文字列

    評価のベストプラクティスとトラブルシューティング

    ベストプラクティス

    以下は、評価プロセスのいくつかのベストプラクティスをまとめたものです。

    • モデルとベンチマークタイプ別に出力パスを整理しておきます。

    • 追跡を容易にするために、命名規則には一貫性を持たせます。

    • 抽出した結果を安全な場所に保存します。

    • TensorBoard 同期ステータスをモニタリングして、データのロードが成功するようにします。

    トラブルシューティング

    CloudWatch ロググループ /aws/sagemaker/TrainingJobs は、トレーニングジョブのエラーログに使用できます。

    エンジンコアの障害

    問題:

    以下のような表示が出た場合:

    RuntimeError: Engine core initialization failed.

    原因:

    これは複数の原因が考えられる一般的なエラーですが、通常は、ロードしようとしているモデルチェックポイントと指定されたモデルタイプの間に不一致がある場合に発生します。例えば、ファインチューニングされた Nova 2.0 Lite モデルチェックポイントを評価しようとしているが、指定したモデルタイプが 1.0 モデルタイプである場合などです。例: amazon.nova-micro-v1:0:128k

    正しいマッピングは以下のようになります

    model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod # or s3://escrow_bucket/model_location

    防止策:

    評価ジョブを送信する前に、model_name_or_path が右側の model_type にマッピングされていることを再度確認します。

    使用可能なサブタスク

    以下に、MMLU (Massive Multitask Language Understanding)、BBH (Big Bench Hard)、MATH、MMMU (Massive Multi-discipline Multimodal Understanding) など、複数の分野でモデル評価に使用できるサブタスクを示します。これらのサブタスクでは、特定の機能や知識領域におけるモデルのパフォーマンスを評価できます。

    MMLU

    MMLU_SUBTASKS = [ "abstract_algebra", "anatomy", "astronomy", "business_ethics", "clinical_knowledge", "college_biology", "college_chemistry", "college_computer_science", "college_mathematics", "college_medicine", "college_physics", "computer_security", "conceptual_physics", "econometrics", "electrical_engineering", "elementary_mathematics", "formal_logic", "global_facts", "high_school_biology", "high_school_chemistry", "high_school_computer_science", "high_school_european_history", "high_school_geography", "high_school_government_and_politics", "high_school_macroeconomics", "high_school_mathematics", "high_school_microeconomics", "high_school_physics", "high_school_psychology", "high_school_statistics", "high_school_us_history", "high_school_world_history", "human_aging", "human_sexuality", "international_law", "jurisprudence", "logical_fallacies", "machine_learning", "management", "marketing", "medical_genetics", "miscellaneous", "moral_disputes", "moral_scenarios", "nutrition", "philosophy", "prehistory", "professional_accounting", "professional_law", "professional_medicine", "professional_psychology", "public_relations", "security_studies", "sociology", "us_foreign_policy", "virology", "world_religions" ]

    BBH

    BBH_SUBTASKS = [ "boolean_expressions", "causal_judgement", "date_understanding", "disambiguation_qa", "dyck_languages", "formal_fallacies", "geometric_shapes", "hyperbaton", "logical_deduction_five_objects", "logical_deduction_seven_objects", "logical_deduction_three_objects", "movie_recommendation", "multistep_arithmetic_two", "navigate", "object_counting", "penguins_in_a_table", "reasoning_about_colored_objects", "ruin_names", "salient_translation_error_detection", "snarks", "sports_understanding", "temporal_sequences", "tracking_shuffled_objects_five_objects", "tracking_shuffled_objects_seven_objects", "tracking_shuffled_objects_three_objects", "web_of_lies", "word_sorting" ]

    数値演算

    MATH_SUBTASKS = [ "algebra", "counting_and_probability", "geometry", "intermediate_algebra", "number_theory", "prealgebra", "precalculus",

    MMMU

    MATH_SUBTASKS = [ "Accounting", "Agriculture", "Architecture_and_Engineering", "Art", "Art_Theory", "Basic_Medical_Science", "Biology", "Chemistry", "Clinical_Medicine", "Computer_Science", "Design", "Diagnostics_and_Laboratory_Medicine", "Economics", "Electronics", "Energy_and_Power", "Finance", "Geography", "History", "Literature", "Manage", "Marketing", "Materials", "Math", "Mechanical_Engineering", "Music", "Pharmacy", "Physics", "Psychology", "Public_Health", "Sociology",

    さまざまな評価方法とメトリクスを使用して、カスタマイズされた Nova モデルを評価します。

    このセクションの内容: