评估经过训练的模型
评估配方是一个定义如何执行 Amazon Nova 模型评测任务的 YAML 配置文件。使用此配方,您可以根据常用基准或自有的自定义数据集评估基础模型或训练模型的性能。性能指标可能存储在 Amazon S3 或 TensorBoard 中。评估提供定量指标来帮助您评估模型在各种任务中的性能,从而确定是否需要进一步自定义。
模型评测是一个离线过程,模型使用预定义的答案,按照固定的基准进行测试。模型不是实时评估的,也不是按照用户实时互动进行评估。对于实时评估,您可以在模型部署到 Amazon Bedrock 之后通过调用 Amazon Bedrock 运行时 API 进行评估。
可用的基准测试任务
一个可用的示例代码包,用于演示如何使用适用于 Amazon Nova 的 SageMaker AI 模型评测特征计算基准评测指标。要获取代码包,请参阅 sample-Nova-lighteval-custom-task
以下是支持的可用行业标准基准测试列表。您可以在 eval_task 参数中指定以下基准测试:
基准 |
模式 |
描述 |
Metrics |
策略 |
可用子任务 |
|---|---|---|---|---|---|
mmlu |
文本 |
多任务语言理解:考核 57 个科目的知识。 |
准确性 |
zs_cot |
是 |
mmlu_pro |
文本 |
MMLU(专业子集),专注于法律、医学、会计和工程等专业领域。 |
准确性 |
zs_cot |
否 |
bbh |
文本 |
高级推理任务:一系列具有挑战性的问题,用于考核更高级别的认知和解决问题的能力。 |
准确性 |
zs_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 |
否 |
humaneval |
文本 |
HumanEval:一个基准测试数据集,旨在评估大型语言模型的代码生成能力 |
pass@1 |
zs |
否 |
以下 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 子任务可用:
MATH_SUBTASKS = [ "algebra", "counting_and_probability", "geometry", "intermediate_algebra", "number_theory", "prealgebra", "precalculus", ]
了解配方参数
运行配置
以下是常规运行配置和所涉及参数的说明。
run: name: eval_job_name model_type: amazon.nova-micro-v1:0:128k model_name_or_path: nova-micro/prod replicas: 1 data_s3_path: "" output_s3_path: s3://output_path
-
name:(必填)评估作业的描述性名称。这有助于在 AWS 管理控制台中识别您的作业。 -
model_type:(必填)指定要使用的 Amazon Nova 模型变体。请勿手动修改此字段。选项包括:-
amazon.nova-micro-v1:0:128k -
amazon.nova-lite-v1:0:300k -
amazon.nova-pro-v1:0:300k
-
-
model_name_or_path:(必填)基本模型的路径或训练后检查点的 S3 路径。选项包括:-
nova-micro/prod -
nova-lite/prod -
nova-pro/prod -
(训练后检查点的 S3 路径)
s3://<escrow bucket>/<job id>/outputs/checkpoints
-
-
replicas:(必填)要在分布式训练中使用的计算实例数。您必须将此值设置为 1,因为不支持多节点。 -
data_s3_path:(必填)输入数据集的 S3 路径。除非您使用自带数据集或 LLM-as-a-Judge 配方,否则请将此参数留空。 -
output_s3_path:(必填)存储输出评估构件的 S3 路径。请注意,输出 S3 存储桶必须由创建作业的账户创建。
评估配置
以下是模型评测配置和所涉及参数的说明。
evaluation: task: mmlu strategy: zs_cot subtask: mathematics metric: accuracy
-
task:(必填)指定要使用的评估基准测试或任务。支持的任务列表:
-
mmlu
-
mmlu_pro
-
bbh
-
gpqa
-
math
-
strong_reject
-
gen_qa
-
ifeval
-
mmmu
-
llm_judge
-
humaneval
-
-
strategy:(必填)定义评估方法:-
zs_cot:零样本思维链,该提示方法激励大型语言模型逐步进行推理,而不提供明确的示例。
-
zs:零样本,该方法事先无需任何训练示例即可解决问题。
-
gen_qa:一种专门用于自带数据集配方的策略。
-
judge:一种专门用于 Amazon Nova LLM as Judge 配方的策略。
-
-
subtask:(可选且可移除)为某些评估任务指定具体的子任务。如果您的任务没有任何子任务,请将其从配方中移除。 -
metric:(必填)要使用的评估指标。-
accuracy:正确答案的百分比
-
exact_match:(对于
math基准测试),返回输入预测字符串与其引用完全匹配的速率。 -
deflection:(对于
strong reject基准测试),返回基本模型的相对偏差和差异显著性指标。 -
pass@1:(对于
humaneval基准测试),该指标用于衡量模型的最高置信度预测与正确答案相匹配的情况所占的百分比。 -
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和自带数据集基准测试,返回以下指标:-
a_scores:前向和反向评估传递中response_A的获胜次数。 -
a_scores_stderr:成对判断中response_A scores的标准误差。 -
b_scores:前向和反向评估传递中response_B的获胜次数。 -
b_scores_stderr:成对判断中response_B scores的标准误差。 -
ties:response_A和response_B被评估为相等的判断数量。 -
ties_stderr:成对判断中平局的标准误差。 -
inference_error:无法适当评估的判断数量。 -
inference_error_stderr:判断中推理错误的标准误差。 -
score:基于response_B在前向和反向传递中的获胜次数得出的总分。 -
score_stderr:成对判断中总分的标准误差。 -
winrate:使用 Bradley-Terry 概率模型计算的 response_B 比 response_A 更受欢迎的概率。 -
lower_rate:自动采样预估胜率的下限(第 2.5 百分位)。
-
-
-
推理配置
以下是推理配置和所涉及参数的说明。所有参数都是可选的。
inference: max_new_tokens: 200 top_k: -1 top_p: 1.0 temperature: 0
-
max_new_tokens:要生成的最大词元数。必须是整数。 -
top_k:要考虑的最高概率词元的数量。必须是整数。 -
top_p:词元采样的累积概率阈值。此值必须是介于 0.0 到 1.0 之间的浮点数(含两端值)。 -
temperature:词元选择的随机性。值越大,随机性越大。使用 0 以使结果具有确定性。此值必须是最小值为 0 的浮点数。
请注意,对于 humaneval,建议使用以下推理配置:
inference: top_k: 1 max_new_tokens: 1600 temperature: 0.0
评估配方示例
Amazon Nova 提供了四种类型的评估配方,这些配方可在 HyperPod 配方 GitHub 存储库中找到。
通用文本基准测试配方
这些配方让您能够通过一套全面的纯文本基准测试来评估 Amazon Nova 模型的基本功能。它们以 xxx_general_text_benchmark_eval.yaml 格式提供。
通用多模态基准测试配方
这些配方让您能够通过一套全面的多模态基准测试来评估 Amazon Nova 模型的基本功能。它们以 xxx_general_multi_modal_benchmark_eval.yaml 格式提供。
自带数据集基准测试配方
这些配方让您能够使用自己的数据集进行基准测试,并使用不同类型的指标将模型输出与参考答案进行对比。它们以 xxx_bring_your_own_dataset_eval.yaml 格式提供。
以下是自带数据集的要求:
-
文件格式要求
-
必须有一个包含评估示例的
gen_qa.jsonl文件。 -
您的数据集必须上传到 SageMaker AI 训练作业可以访问的 S3 位置。
-
该文件必须遵循常规问答数据集所需的架构格式。
-
-
架构格式要求:JSONL 文件中的每一行都必须是包含以下字段的 JSON 对象:
-
query:(必填)包含需要答案的问题或说明的字符串 -
response:(必填)包含预期模型输出的字符串 -
system:(可选)包含系统提示的字符串,用于在处理查询之前设置 AI 模型的行为、角色或个性
-
以下是自带数据集示例条目
{ "system":"You are a 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 that 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 that follows 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" }
要使用您的自定义数据集,请按以下必填字段修改您的评估配方,且不要更改其中任何内容:
evaluation: task: gen_qa strategy: gen_qa metric: all
适用以下限制:
-
每次评估只支持一个 JSONL 文件。
-
该文件必须严格遵循定义的架构。
-
上下文长度限制:对于数据集中的每个样本,上下文长度(包括系统 + 查询提示)应小于 3.5k
Amazon Nova LLM-as-a-Judge 基准测试配方
Amazon Nova LLM-as-a-Judge 是一项模型评测特征,让客户可以使用自定义数据集,将一个模型的响应质量与基准模型的响应质量进行比较。它接受包含提示、基准响应和挑战响应的数据集,然后使用 Nova Judge 模型基于 Bradley-Terry 概率
配方以 xxx_llm_judge_eval.yaml 格式提供。
以下是 LLM-as-a-Judge 的要求:
-
文件格式要求
-
有一个包含评估示例的
llm_judge.jsonl文件。文件名称必须为llm_judge.jsonl。 -
您的数据集必须上传到 SageMaker AI HyperPod RIG 可以访问的 S3 位置。
-
该文件必须遵循
llm_judge.jsonl数据集所需的架构格式。 -
输入数据集应确保所有记录的上下文长度小于 12k。
-
-
架构格式要求:JSONL 文件中的每一行都必须是包含以下字段的 JSON 对象:
-
prompt:(必填)包含生成响应提示的字符串。 -
response_A:包含基准响应的字符串。 -
response_B:包含与基准响应进行比较的替代响应的字符串。
-
这是一个 LLM-as-a-Judge 示例条目
{ "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 文件。
-
该文件必须严格遵循定义的架构。
-
Amazon Nova Judge 模型对于所有模型系列规格(即 Lite、Micro 和 Pro)都是一样的。
-
目前不支持自定义评估模型。
-
上下文长度限制:对于数据集中的每个样本,上下文长度(包括系统 + 查询提示)应小于 7k
启动评估作业
下面提供了建议的评估实例类型和模型类型配置:
# Install Dependencies (Helm - https://helm.sh/docs/intro/install/) curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh rm -f ./get_helm.sh # Install the HyperPod CLI git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git git checkout -b release_v2 cd sagemaker-hyperpod-cli pip install . # Verify the installation hyperpod --help # Connect to a HyperPod Cluster hyperpod connect-cluster --cluster-namecluster-name# Submit the Job using the recipe for eval # Namespace by default should be kubeflow hyperpod start-job [--namespacenamespace] --recipe evaluation/nova/nova_micro_p5_48xl_general_text_benchmark_eval --override-parameters \ '{ "instance_type":"p5d.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest", "recipes.run.name":custom-run-name, "recipes.run.model_type":model_type, "recipes.run.model_name_or_path" "model name or finetune checkpoint s3uri, "recipes.run.data_s3_path":s3 for input data only for genqa and llm_judge, must be full S3 path that include filename, }' # List jobs hyperpod list-jobs [--namespacenamespace] [--all-namespaces] # Getting Job details hyperpod get-job --job-namejob-name[--namespacenamespace] [--verbose] # Listing Pods hyperpod list-pods --job-namejob-name--namespacenamespace# Cancel Job hyperpod cancel-job --job-namejob-name[--namespacenamespace]
您还应该能够通过 Amazon EKS 集群控制台查看作业状态。
访问和分析评估结果
成功完成评估作业后,您可以参考本节中的信息访问并分析结果。根据配方中定义的 output_s3_path(例如 s3://output_path/),输出结构如下所示:
job_name/ ├── eval-result/ │ └── 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]
指标结果存储在指定的 S3 输出位置 s3://output_path/job_name/eval-result/result-timestamp.json。
Tensorboard 结果存储在 S3 路径 s3://output_path/job_name/eval-tensorboard-result/eval/event.out.tfevents.epoch+ip 中。
除 llm_judge 和 strong_reject 之外的所有推理输出都存储在 S3 路径中:s3://output_path/job_name/eval-result/details/model/taskname.parquet。
对于 gen_qa,inference_output.jsonl 文件针对每个 JSON 对象均包含以下字段:
-
prompt:提交给模型的最终提示
-
推理:模型的原始推理输出
要在 Tensorboard 中直观显示您的评估指标,请完成以下步骤:
-
导航到 SageMaker AI Tensorboard。
-
选择 S3 文件夹。
-
添加您的 S3 文件夹路径,例如
s3://output_path/job-name/eval-tensorboard-result/eval。 -
等待同步完成。
时间序列、标量和文本可视化均可用。
我们建议您遵循以下最佳实操:
-
按模型和基准测试类型整理输出路径。
-
保持一致的命名约定以便于跟踪。
-
将解压缩的结果保存在安全的位置。
-
监控 TensorBoard 同步状态以成功加载数据。
您可以在 CloudWatch 日志组 /aws/sagemaker/Clusters/cluster-id 中找到 HyperPod 作业错误日志。