翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SageMaker AI でトレーニングされたモデルの評価
評価プロセスの目的は、ベンチマークまたはカスタムデータセットと照らし合わせてトレーニング済みモデルのパフォーマンスを評価することです。評価プロセスには通常、トレーニングされたモデルを参照する評価レシピの作成、評価データセットとメトリクスの指定、評価用の別のジョブの送信、標準ベンチマークまたはカスタムデータと照らし合わせた評価のステップが含まれます。評価プロセスでは、Amazon S3 バケットに保存されているパフォーマンスメトリクスが出力されます。
注記
このトピックで説明する評価プロセスはオフラインプロセスです。モデルは、リアルタイムまたはライブユーザーインタラクションを通じて評価されるのではなく、事前定義された回答がある固定ベンチマークに照らし合わせてテストされます。リアルタイム評価の場合、Amazon Bedrock ランタイム API を呼び出して、Amazon Bedrock にモデルをデプロイした後にモデルをテストできます。
トピック
前提条件
評価トレーニングジョブを開始する前に、次の要件を確認してください。
-
パフォーマンスを評価する、SageMaker AI でトレーニングされた Amazon Nova モデル。
-
評価用のベース Amazon Nova レシピ。詳細については、「Amazon Nova レシピの取得」を参照してください。
使用可能なベンチマークタスク
Amazon Nova 用の SageMaker モデル評価機能を使用してベンチマークメトリクスを計算する方法を示すサンプルコードパッケージを利用できます。コードパッケージにアクセスするには、「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 などのメトリクスと回答を参照するベンチマーク用の独自のデータセットを提供できます。 は、Amazon Nova Lite または Amazon Nova Pro ベースのモデルのイメージ推論 |
すべて | gen_qa | 不可 |
| llm_judge | テキスト |
LLM-as-a-Judge プリファレンス比較 – Nova Judge モデルを使用して、プロンプトのペアレスポンス間のプリファレンス (B と A の比較) を決定し、B が A よりも優先される確率を計算します。 |
すべて | judge | 不可 |
|
mm_llm_judge |
マルチモーダル (イメージ) |
この新しいベンチマークは、 |
すべて | judge | 不可 |
|
rubric_llm_judge |
テキスト |
Rubric Judge は、Nova 2.LLM-as-a-judge 評価モデルです。優先判断のみを提供する元の判事モデル |
すべて |
judge |
不可 |
|
aime_2024 |
テキスト |
AIME 2024 - 高度な数学的推論と問題解決をテストする米国招待数学調査問題 |
exact_match |
zs_cot |
不可 |
|
calendar_scheduling |
テキスト |
自然計画 - カレンダースケジューリングタスクテストの計画機能。複数日にわたる会議と人員をスケジュールする |
exact_match |
fs |
不可 |
|
humaneval |
テキスト |
HumanEval - 大規模言語モデルのコード生成機能を評価するように設計されたベンチマークデータセット |
pass@1 |
zs | 不可 |
評価固有の設定
以下は、レシピの主要なコンポーネントの内訳と、ユースケースに合わせてコンポーネントを変更する方法に関するガイダンスです。
レシピの理解と変更
一般的な実行設定
run: name: eval_job_name model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/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
-
-
model_name_or_path: ベースモデルへのパスまたはトレーニング後のチェックポイント用の s3 パス。オプションには以下が含まれます。-
nova-micro/prod
-
nova-lite/prod
-
nova-pro/prod
-
nova-lite-2/prod
-
トレーニング後のチェックポイントパスの 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_countと の両方が指定されreplicaている場合、instance_countが優先されます。複数のレプリカは SageMaker HyperPod ではなく SageMaker トレーニングジョブにのみ適用されます。 -
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 -
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 と に固有の戦略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_Aとresponse_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を指定するreasoning_effort場合にのみ を設定しますamazon.nova-2-lite-v1:0:256k。使用可能なオプションは null (設定されていない場合はデフォルト値。推論を無効にします)、低、または高です。
評価レシピの例
Amazon Nova には、4 種類の評価レシピが用意されています。すべてのレシピは Amazon 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 トレーニングジョブがアクセスできる 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 を使用して独自のメトリクスを持ち込むには、次の手順に従います。
-
まだ作成していない場合は、最初に AWS アカウント で AWS Lambda 関数を作成します。
-
GitHub リポジトリ
から構築済みの nova-custom-eval-layer.zipファイルをダウンロードします。このオープンソースの Nova カスタム評価 SDK を使用して、カスタム関数の入出力ペイロードを検証し、トレーニング中に Nova の Bring Your Own Metrics Evaluation と統合するための統合インターフェイスを提供できます。 -
次のコマンドを使用して、カスタム 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 -
このレイヤーを Lambda 関数のカスタムレイヤーとして、必要な AWS レイヤー (
pydantic依存関係にAWSLambdaPowertoolsPythonV3-python312-arm64必要) とともに追加します。 -
提供された例を使用して 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 ) -
評価ジョブへのアクセス権を Lambda に付与します。評価ジョブに指定された実行ロールに、Lambda 関数を呼び出すポリシーが含まれていることを確認します。次の通り、ポリシーの例を示します。
-
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} ] } -
レシピファイルを変更します。以下はその例です。
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: 組み込みの集計関数 (有効なオプション: 最小、最大、平均、合計)。
-
制限事項
-
Bring your own メトリクスは、テキスト入力データセットにのみ適用されます。
-
マルチモーダル入力データセットはサポートされていません。
-
前処理ステップはメタデータフィールドを処理しません。
Nova LLM Judge は、カスタムデータセットを使用して、1 つのモデルからのレスポンスの品質をベースラインモデルのレスポンスと比較できるモデル評価機能です。プロンプト、ベースラインレスポンス、チャレンジャーレスポンスを含むデータセットを受け付けてから、Nova Judge モデルを使用して、ペアワイズ比較による Bradley-Terryxxx_llm_judge_eval.yaml です。
Nova LLM データセットの要件
ファイル形式:
-
評価例を含む 1 つの
llm_judge.jsonlファイル。ファイル名はllm_judge.jsonlとまったく同じにする必要があります。 -
SageMaker トレーニングジョブがアクセスできる 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
マルチモーダル (イメージ) の Nova LLM Judge は、Nova MM_LLM Judge の略で、1 つのモデルからのレスポンスの品質を、カスタムデータセットを使用してベースラインモデルのレスポンスと比較できるモデル評価機能です。プロンプト、ベースラインレスポンス、チャレンジャーレスポンス、イメージを含むデータセットを Base64-encodedされた文字列の形式で受け入れ、Nova Judge モデルを使用して、ペアワイズ比較を通じて "-Terryxxx_mm_llm_judge_eval.yaml です。
Nova LLM データセットの要件
ファイル形式:
-
評価例を含む 1 つの
mm_llm_judge.jsonlファイル。ファイル名は正確に である必要がありますllm_judge.jsonl。 -
は、データセットを SageMaker トレーニングジョブがアクセスできる S3 の場所にアップロードする必要があります。 SageMaker
-
ファイルでは、
mm_llm_judgeデータセットに必要なスキーマ形式に従う必要があります。 -
入力データセットは、イメージの 属性を除くすべてのレコードが 12 k コンテキスト長未満であることを確認する必要があります。
スキーマ形式 - .jsonl ファイル内の各行は、次のフィールドがある JSON オブジェクトである必要があります。
-
必須フィールド。
prompt: 生成されたレスポンスのプロンプトを含む文字列。images: データ属性を持つオブジェクトのリストを含む配列 (値は Base64-encodedされたイメージ文字列)。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 k コンテキスト長未満であることを確認する必要があります。
評価トレーニングジョブの実行
次のサンプル Jupyter 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 (setinstance_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})
評価結果の評価と分析
評価ジョブが正常に完了したら、次のステップを使用して結果を評価および分析できます。
以下の手順に従って、結果を評価および分析します。
-
出力場所の構造を理解します。結果は、指定された Amazon S3 出力場所に圧縮ファイルとして保存されます。
s3://your-bucket/output/benchmark-name/└── job_name/ └── output/ └── output.tar.gz -
バケットから
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タスクのみ)
-
-
TensorBoard で結果を表示します。評価メトリクスを視覚化するには:
-
抽出したフォルダーを S3 バケットにアップロードする
-
SageMaker TensorBoard に移動する
-
「S3 フォルダー」を選択する
-
S3 フォルダーパスを追加する
-
同期が完了するまで待機する
-
-
推論出力を分析します。
llm_judgeとstrong_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_scores、b_scores、ties、inference-score、scoreを含む)。注記
winrateのような集計メトリクスは、個々の判断ではなく、概要結果ファイルでのみ使用できます。
gen_qaでは、JSON オブジェクトごとにinference_output.jsonlファイルに以下のフィールドが含まれています。-
prompt - モデルに送信された最終的なプロンプト
-
inference - モデルからの生の推論出力
-
gold - 入力データセットからのターゲットレスポンス
-
metadata - 指定した場合の入力データセットからのメタデータ文字列
-
評価のベストプラクティスとトラブルシューティング
ベストプラクティス
以下は、評価プロセスのいくつかのベストプラクティスをまとめたものです。
-
モデルとベンチマークタイプ別に出力パスを整理しておきます。
-
追跡を容易にするために、命名規則には一貫性を持たせます。
-
抽出した結果を安全な場所に保存します。
-
TensorBoard 同期ステータスをモニタリングして、データのロードが成功するようにします。
トラブルシューティング
CloudWatch ロググループ /aws/sagemaker/TrainingJobs は、トレーニングジョブのエラーログに使用できます。
エンジンコアの障害
問題:
以下が表示されている場合:
RuntimeError: Engine core initialization failed.
原因:
これは複数の原因を持つ一般的なエラーですが、通常、ロードしようとしているモデルチェックポイントと指定されたモデルタイプの間に不一致がある場合に発生します。例えば、微調整された Nova 2.0 ライトモデルチェックポイントを評価するが、提供するモデルタイプは 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_type前に、 model_name_or_pathが右側にマッピングされていることを再度確認します。
使用可能なサブタスク
以下に、MMLU (Massive Multitask Language Understanding)、BBH (Big Bench Hard)、MATH など、複数のドメインでモデル評価に使用できるサブタスクを示します。これらのサブタスクでは、特定の機能や知識領域におけるモデルのパフォーマンスを評価できます。
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",
さまざまな評価方法とメトリクスを使用して、カスタマイズされた Nova モデルを評価します。