评估经过 SageMaker AI 训练的模型
评估过程旨在根据基准测试或自定义数据集评测训练模型的性能。评估过程通常涉及以下步骤:创建指向训练模型的评估配方、指定评估数据集和指标、提交单独的评估作业,以及根据标准基准测试或自定义数据进行评估。评估过程将输出存储在您的 Amazon S3 存储桶中的性能指标。
注意
本主题中描述的评估过程是一个离线过程。该模型根据固定的基准测试进行测试,并提供预定义的答案,而非实时或者通过实时用户互动进行评测。对于实时评估,您可以在模型部署到 Amazon Bedrock 之后通过调用 Amazon Bedrock 运行时 API 对模型进行测试。
先决条件
在开始评估训练作业之前,请注意具备以下内容:
-
一款经过 SageMaker AI 训练、您想要评估其性能的 Amazon Nova 模型。
-
用于评估的基本 Amazon Nova 配方。有关更多信息,请参阅 获取 Amazon Nova 配方。
可用的基准测试任务
一个可用的示例代码包,用于演示如何使用适用于 Amazon Nova 的 SageMaker AI 模型评测特征计算基准评测指标。要获取代码包,请参阅 sample-Nova-lighteval-custom-task
下面是支持的可用行业标准基准测试列表。您可以在 eval_task 参数中指定以下基准测试。
可用的模型评测基准测试
| 基准 | 模式 | 说明 | 指标 | Strategy | 可用子任务 |
|---|---|---|---|---|---|
| mmlu |
文本 |
多任务语言理解:考核 57 个科目的知识。 |
准确性 |
zs_cot | 是 |
| mmlu_pro | 文本 |
MMLU(专业子集),专注于法律、医学、会计和工程等专业领域。 |
准确性 | zs_cot | 否 |
| bbh | 文本 |
高级推理任务:一系列具有挑战性的问题,用于考核更高级别的认知和解决问题的能力。 |
准确性 | fs_cot | 是 |
| gpqa | 文本 |
一般物理问题解答:评测对物理概念和相关问题解决能力的理解情况。 |
准确性 | zs_cot | 否 |
| math | 文本 |
数学问题解决:衡量在代数、微积分及应用题等领域的数学推理能力。 |
exact_match | zs_cot | 是 |
| strong_reject | 文本 |
质量控制任务:测试模型检测和拒绝不当、有害或不正确内容的能力。 |
deflection | zs | 是 |
| ifeval | 文本 |
指令跟随评估:衡量模型遵循给定指令并按照规范完成任务的准确程度。 |
准确性 | zs | 否 |
| gen_qa | 多模态(图像) |
自定义数据集评估:让您可以提供自己的数据集进行基准测试,将模型输出与参考答案及 ROUGE 和 BLEU 等指标进行比较。 |
全部 | gen_qa | 否 |
| mmmu | 多模态 |
大规模多学科多模态理解(MMMU):大学水平的基准测试,包括 30 个学科的选择题与开放式问答题。 |
准确性 | zs_cot | 是 |
| llm_judge | 文本 |
LLM-as-a-Judge 偏好比较:使用 Nova Judge 模型来确定提示的成对响应之间的偏好(B 与 A 比较),计算 B 比 A 更受欢迎的概率。 |
全部 | judge | 否 |
|
mm_llm_judge |
多模态(图像) |
该全新基准评测的运行方式与上述基于文本的 |
全部 | judge | 否 |
|
rubric_llm_judge |
文本 |
Rubric Judge 是基于 Nova 2.0 Lite 构建的增强版 LLM-as-a-judge 评估模型。与仅提供偏好判定的原始评判模型 |
全部 |
judge |
否 |
|
aime_2024 |
文本 |
AIME 2024:2024 年美国数学邀请赛(American Invitational Mathematics Examination),用于考查高阶数学推理与问题求解能力 |
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_count和replica,以instance_count为准。请注意,多副本仅适用于 SageMaker AI 训练作业。 -
data_s3_path:输入数据集 Amazon S3 路径。此字段为必填字段,但应始终留空。 -
mlflow_tracking_uri:(可选)MLflow 跟踪服务器地址(仅在 SMHP 下需要) -
mlflow_experiment_name:(可选)实验名称,用于对相关的机器学习运行记录进行分组 -
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:零样本思维链,该提示方法激励大型语言模型逐步进行推理,而不提供明确的示例。 -
fs_cot:少样本思维链,该方法会先提供一些逐步推理的示例,然后再要求模型解决新问题。 -
zs:零样本,该方法事先无需任何训练示例即可解决问题。 -
gen_qa:专为自带数据集而设的策略。 -
judge:专门用于 Nova LLM as judge 和mm_llm_judge的策略。
-
-
subtask:可选。评估任务的具体组成部分。有关可用子任务的完整列表,请参阅可用子任务。-
在“可用的基准测试任务”中查看支持的子任务。
-
如果没有子任务基准测试,则应移除此字段。
-
-
metric:要使用的评估指标。-
accuracy:正确答案的百分比。 -
exact_match:对于 math 基准测试,返回输入预测字符串与其引用完全匹配的速率。 -
deflection:对于强烈拒绝基准测试,返回基本模型的相对偏差和差异显著性指标。 -
all:对于
gen_qa、自带数据集基准测试,返回以下指标:-
rouge1:衡量生成的文本和参考文本之间的一元(单个词)重叠度。 -
rouge2:衡量生成的文本和参考文本之间的二元(两个连续的词)重叠度。 -
rougeL:衡量文本之间的最长公共子序列,匹配中可以存在间隙。 -
exact_match:二进制分数(0 或 1),用于指示生成的文本是否与参考文本逐个字符完全匹配。 -
quasi_exact_match:与精确匹配类似,但更加宽松,通常忽略大小写、标点符号和空格差异。 -
f1_score:精度和查全率之间的调和平均数,衡量预测答案和参考答案之间的词语重叠度。 -
f1_score_quasi:与 f1_score 类似,但匹配更为宽松,使用忽略细微差异的标准化文本比较。 -
bleu:衡量生成的文本和参考文本之间 n-gram 匹配的精确度,通常用于翻译评估。
对于
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_B比response_A更受欢迎的概率。 -
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:推理响应中需返回的最高对数概率数量。取值必须为 0 到 20 之间的整数。对数概率包含消息内容中返回的输出词元及其对应的对数概率值。 -
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:词元经解码后人类可读的字符串形式
原始分词器词元作为字典键以确保唯一性,decoded_value 则提供可读形式。
评估配方示例
Amazon Nova 提供四种不同类型的评估配方。所有配方均可在 SageMaker HyperPod 配方 GitHub 存储库
评估配方
这些配方让您能够通过一套全面的纯文本基准测试来评估 Amazon Nova 模型的基本功能。
配方格式:xxx_general_text_benchmark_eval.yaml。
这些配方让您能够使用自己的数据集进行基准测试,并使用不同类型的指标将模型输出与参考答案进行对比。
配方格式:xxx_
bring_your_own_dataset_eval.yaml。
自带数据集要求
文件格式:
-
包含评估示例的单个
gen_qa.jsonl文件。文件名应为gen_qa.jsonl。 -
您必须将数据集上传到 SageMaker AI 训练作业可以访问的 S3 位置。
-
该文件必须遵循常规问答数据集所需的架构格式。
架构格式要求:.jsonl 文件中的每一行都必须是包含以下字段的 JSON 对象。
-
必填字段。
query:包含需要答案的问题或说明的字符串。response: 包含预期模型输出的字符串。 -
可选字段。
system:包含系统提示的字符串,用于在处理查询之前设置 AI 模型的行为、角色或个性。images:对象数组,每个对象包含 data 属性(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文件。 -
该文件必须严格遵循定义的架构。
自定义指标
您可以使用自定义指标,通过自定义预处理、后处理及指标能力,完全自定义模型评测流程。预处理可在将输入数据发送到推理服务器前对其进行处理;后处理支持自定义指标计算,并根据需求返回自定义指标。
请按如下步骤,通过自定义评估 SDK 接入自定义指标。
-
若尚未操作,请先在 AWS 账户 中创建 AWS Lambda 函数。
-
从 GitHub 存储库
下载预构建的 nova-custom-eval-layer.zip文件。您可通过这款开源的 Nova 自定义评估 SDK,验证自定义函数的输入/输出有效载荷,并提供统一接口,以集成到 Nova 训练过程中的自定义指标评估流程。 -
执行以下命令上传自定义 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 层:
AWSLambdaPowertoolsPythonV3-python312-arm64(为pydantic依赖项所需)。 -
参考提供的示例修改 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:内置聚合函数(有效值:min、max、average、sum)。
-
限制
-
自定义指标仅适用于文本输入数据集。
-
不支持多模态输入数据集。
-
预处理步骤不会处理元数据字段。
Nova LLM Judge 是一项模型评测特征,让您可以使用自定义数据集,将一个模型的响应质量与基准模型的响应质量进行比较。它接受包含提示、基准响应和挑战响应的数据集,然后使用 Nova Judge 模型基于 Bradley-Terryxxx_llm_judge_eval.yaml。
Nova LLM 数据集要求
文件格式:
-
包含评估示例的单个
llm_judge.jsonl文件。文件名应为llm_judge.jsonl。 -
您必须将数据集上传到 SageMaker AI 训练作业可以访问的 S3 位置。
-
该文件必须遵循
llm_judge数据集所需的架构格式。 -
输入数据集应确保所有记录的上下文长度小于 12k。
架构格式:.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文件。 -
该文件必须严格遵循定义的架构。
-
Nova Judge 模型对于 micro/lite/pro 规格是一样的。
-
目前不支持自定义评估模型。
使用 Nova LLM-as-a-judge,完成多模态(图像)基准测试配方
Nova LLM Judge 多模态(图像)版(简称 Nova MM_LLM Judge)是一项模型评测功能,支持使用自定义数据集,将目标模型的响应质量与基准模型的响应进行对比评估。该功能接受包含提示、基准响应和挑战响应的数据集,以及 Base64 编码字符串图像,然后使用 Nova Judge 模型基于 Bradley-Terryxxx_mm_llm_judge_eval.yaml。
Nova LLM 数据集要求
文件格式:
-
包含评估示例的单个
mm_llm_judge.jsonl文件。文件名称必须严格为llm_judge.jsonl。 -
您必须将数据集上传到 SageMaker AI 训练作业可以访问的 S3 位置。
-
该文件必须遵循
mm_llm_judge数据集所需的架构格式。 -
输入数据集应确保:排除 image 属性后,所有记录的上下文长度均小于 12k。
架构格式:.jsonl 文件中的每一行都必须是包含以下字段的 JSON 对象。
-
必填字段。
prompt:包含生成响应提示的字符串。images:对象数组,每个对象包含 data 属性(值为 Base64 编码的图像字符串)。response_A:包含基准响应的字符串。response_B:包含与基准响应进行比较的替代响应的字符串。
示例条目
为便于阅读,以下示例包含换行与缩进,但在实际数据集中,每条记录必须单独占一行。
{ "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文件。 -
该文件必须严格遵循定义的架构。
-
Nova MM Judge 模型仅支持图像参考。
-
Nova MM Judge 模型在 Amazon Nova Micro、Amazon Nova Lite、Amazon Nova Pro 各规格中保持一致。
-
目前不支持自定义评估模型。
-
不支持 Amazon S3 图像 URI。
-
输入数据集应确保:排除 image 属性后,所有记录的上下文长度均小于 12k。
运行评估训练作业
使用以下示例笔记本启动训练作业。请参考下方的笔记本示例,运行评估训练作业。有关更多信息,请参阅使用 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 AI TensorBoard
-
选择您的“S3 文件夹”。
-
添加 S3 文件夹路径
-
等待同步完成
-
-
分析推理输出。除
llm_judge和strong_reject之外,所有评估任务在推理输出中都将包含以下用于分析的字段。-
full_prompt:发送给模型用于评估任务的完整用户提示。 -
gold:包含数据集指定的正确答案的字段。 -
metrics:包含根据单个推理评估的指标的字段。需要聚合的值对于单个推理输出没有值。 -
predictions:包含模型针对给定提示的输出列表的字段。 -
pred_logits:该字段包含消息内容中返回的输出词元及其对应的对数概率值。
通过查看这些字段,您可以确定指标差异的原因并了解自定义模型的行为。
对于
llm_judge,推理输出文件针对每对评估会在指标字段下包含以下字段。-
forward_output:按顺序评估时 Judge 的原始偏好(response_A、response_B)。 -
backward_output:按相反顺序进行评估时 Judge 的原始偏好(response_B、response_A)。 -
Pairwise metrics:按每对前向和反向评估计算的指标包括a_scores、b_scores、ties、inference-score和score。注意
诸如
winrate的聚合指标仅在摘要结果文件中提供,不会针对每一判断都提供。
对于
gen_qa,inference_output.jsonl文件针对每个 JSON 对象均包含以下字段:-
prompt:提交给模型的最终提示
-
推理:模型的原始推理输出
-
gold:来自输入数据集的目标响应
-
metadata:来自输入数据集的元数据字符串(如果提供)
-
评估最佳实践和疑难解答
最佳实践
下面列出了评估过程的一些最佳实践。
-
按模型和基准测试类型整理输出路径。
-
保持一致的命名约定以便于跟踪。
-
将解压缩的结果保存在安全的位置。
-
监控 TensorBoard 同步状态以成功加载数据。
问题排查
您可以使用 CloudWatch 日志组 /aws/sagemaker/TrainingJobs 来记录训练作业错误日志。
引擎核心故障
问题:
如遇以下报错:
RuntimeError: Engine core initialization failed.
原因:
虽然这是一个可能由多种原因引发的一般性错误,但最常见原因是:您尝试加载的模型检查点与指定的模型类型(model_type)不匹配。例如,您想要评估一个微调后的 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(大规模多任务语言理解)、BBH(高难度推理基准)、MATH(数学推理)和 MMMU(大规模多学科多模态理解)。这些子任务让您能够评测模型在特定功能和知识领域的表现。
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 模型进行评估。