本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
评估你的 SageMaker AI 训练模型
评估过程的目的是根据基准或自定义数据集评估训练模型的性能。评估过程通常包括创建指向训练模型的评估方案、指定评估数据集和指标、提交单独的评估任务以及根据标准基准或自定义数据进行评估的步骤。评估过程将输出存储在您的 Amazon S3 存储桶中的性能指标。
注意
本主题中描述的评估过程是一个离线过程。该模型使用固定的基准进行测试,并提供预定义的答案,而不是通过实时用户互动进行评估。要进行实时评估,您可以在模型部署到亚马逊 Bedrock 之后,通过调用 Amazon Bedrock Runtim e 对其进行测试。 APIs
先决条件
在开始评估训练作业之前,请注意以下几点。
-
一款 SageMaker 经过人工智能训练的 Amazon Nova 模型,你想评估它的性能。
-
用于评估的基本 Amazon Nova 配方。有关更多信息,请参阅 获取亚马逊 Nova 食谱。
可用的基准测试任务
提供了一个示例代码包,用于演示如何使用 Amazon Nova 的 SageMaker 模型评估功能计算基准指标。要访问代码包,请参阅 Sample-n ova-lighteval-custom-task
以下是支持的可用行业标准基准测试列表。您可以在eval_task
参数中指定以下基准。
模型评估的可用基准
基准 | 模式 | 描述 | Metrics | 策略 | 子任务可用 |
---|---|---|---|---|---|
mmlu |
文本 |
多任务语言理解 — 测试 57 个科目的知识。 |
准确性 |
zs_cot | 是 |
mmlu_pro | 文本 |
MMLU — 专业子集 — 专注于法律、医学、会计和工程等专业领域。 |
准确性 | zs_cot | 否 |
bbh | 文本 |
高级推理任务 — 一系列具有挑战性的问题,用于测试更高级别的认知和解决问题的能力。 |
准确性 | fs_cot | 是 |
gpa | 文本 |
一般物理问题解答 — 评估对物理概念和相关问题解决能力的理解。 |
准确性 | zs_cot | 否 |
math | 文本 |
数学问题解决 — 测量包括代数、微积分和单词问题在内的各种主题的数学推理。 |
exact_match | zs_cot | 是 |
强烈拒绝 | 文本 |
质量控制任务-测试模型检测和拒绝不当、有害或不正确内容的能力。 |
deflection | zs | 是 |
ifeval | 文本 |
指令跟随评估 — 衡量模型遵循给定指令并按照规范完成任务的准确程度。 |
准确性 | zs | 否 |
gen_qa | 文本 |
自定义数据集评估 — 允许您提供自己的数据集进行基准测试,将模型输出与参考答案与 ROUGE 和 BLEU 等指标进行比较。 |
全部 | gen_qa | 否 |
嗯mmu | 多式联运 |
大规模多学科多模态理解(MMMU)——大学水平的基准,包括来自30个学科的多项选择题和开放式问题。 |
准确性 | zs_cot | 是 |
lm_judge | 文本 |
LLM-as-a-Judge 偏好比较 — 使用 Nova Judge 模型来确定提示的配对响应(B 和 A)之间的偏好,计算 B 比 A 更受青睐的概率。 |
全部 | 判断 | 否 |
特定于评估的配置
以下是配方中关键组件的详细介绍,以及有关如何根据您的用例对其进行修改的指南。
了解和修改您的食谱
常规运行配置
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: ""
-
name
:评估任务的描述性名称。 -
model_type
:指定要使用的 Nova 模型变体。请勿手动修改此字段。选项包括:-
亚马逊。 nova-micro-v1:0:128 k
-
亚马逊。 nova-lite-v1:0300 k
-
亚马逊。 nova-pro-v1:0300 k
-
-
model_name_or_path
: 基础模型的路径或训练后检查点的 s3 路径。选项包括:-
nova-micro/prod
-
nova-lite/prod
-
nova-pro/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
:用于分布式训练的计算实例数量。设置为 1,因为不支持多节点。 -
data_s3_path
: 输入数据集 Amazon S3 路径。此字段为必填字段,但应始终留空。
评估配置
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
-
-
strategy
: 定义评估方法。-
zs_cot
: Zero-shot Chain of Thought Chain of Thought — 一种无需明确示例即可鼓励 step-by-step推理的大型语言模型的方法 -
fs_cot
: Few-shot Chain of Thought —— 这种方法在要求模型解决新问题之前提供了一些 step-by-step推理示例。 -
zs
: Zero-shot-一种无需事先培训示例即可解决问题的方法。 -
gen_qa
:专为自带数据集而设的策略。 -
judge
: Nova LLM 作为评委的特定策略。
-
-
subtask
: 可选。评估任务的具体组成部分。有关可用子任务的完整列表,请参阅可用子任务。-
在 “可用基准测试任务” 中查看支持的子任务。
-
如果没有子任务基准,则应删除此字段。
-
-
metric
:要使用的评估指标。-
accuracy
:正确答案的百分比。 -
exact_match
: 对于数学基准测试,返回输入的预测字符串与其引用完全匹配的速率。 -
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
,请自带数据集基准测试,返回以下指标:-
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
:bootstrap抽样中估计的胜率的下限(2.5个百分位数)。 -
upper_rate
:bootstrap抽样中估计的胜率的上限(97.5个百分位数)。
-
-
推理配置(可选)
inference: max_new_tokens: 2048 top_k: -1 top_p: 1.0 temperature: 0
-
max_new_tokens
:要生成的最大代币数量。必须是整数。(不适用于法学硕士评委) -
top_k
: 要考虑的最高概率代币的数量。必须是整数。 -
top_p
:代币抽样的累积概率阈值。必须是 1.0 到 0.0 之间的浮点数。 -
temperature
: 代币选择中的随机性(越高 = 随机性越大),保持 0 以使结果具有确定性。浮点型,最小值为 0。
评估配方示例
Amazon Nova 提供四种不同类型的评估方案。所有食谱都可在 Amazon SageMaker HyperPod 食谱 GitHub 库
评估食谱
这些方法使您能够通过一套全面的纯文本基准测试来评估 Amazon Nova 机型的基本功能。
食谱格式:xxx_
general_text_benchmark_eval.yaml
.
这些配方使您能够通过一套全面的多模态基准测试来评估 Amazon Nova 模型的基本功能。
食谱格式:xxx_general_multi_modal_benchmark_eval.yaml
.
多模式基准要求
-
模型支持-仅支持 nova-lite 和 nova-pro 基础模型及其训练后的变体。
这些配方使您能够使用自己的数据集进行基准测试,并使用不同类型的指标比较模型输出以参考答案。
食谱格式:xxx_
bring_your_own_dataset_eval.yaml
.
带上你自己的数据集要求
文件格式:
-
包含评估示例的单个
gen_qa.jsonl
文件。文件名应准确gen_qa.jsonl
。 -
您必须将数据集上传到 SageMaker 训练作业可以访问的 S3 位置。
-
该文件必须遵循常规 Q&Q 数据集所需的架构格式。
架构格式-.jsonl
文件中的每一行都必须是包含以下字段的 JSON 对象。
-
必填字段。
query
: 包含需要答案的问题或说明的字符串。response
: 包含预期模型输出的字符串。 -
可选字段。
system
: 包含系统提示的字符串,用于在处理查询之前设置 AI 模型的行为、角色或个性。
示例条目
{ "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" }
要使用您的自定义数据集,请使用以下必填字段修改您的评估方法,不要更改任何内容:
evaluation: task: gen_qa strategy: gen_qa metric: all
限制
-
每次评估只允许一个
.jsonl
文件。 -
文件必须严格遵循定义的架构。
Nova LLM Judge 是一项模型评估功能,可让您使用自定义数据集将一个模型的响应质量与基线模型的响应质量进行比较。它接受包含提示、基线响应和挑战者响应的数据集,然后使用Nova Judge模型通过配对比较提供基于 Bradley-Terxxx_llm_judge _eval.yaml
.
Nova LLM 数据集要求
文件格式:
-
包含评估示例的单个
llm_judge.jsonl
文件。文件名应准确llm_judge.jsonl
。 -
您必须将数据集上传到 SageMaker 训练作业可以访问的 S3 位置。
-
该文件必须遵循
llm_judge
数据集所需的架构格式。 -
输入数据集应确保所有记录的上下文长度小于 12 k。
架构格式-.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 规格中相同。
-
目前不支持自定义评判模型。
运行评估训练作业
使用以下示例 Jupyter 笔记本开始训练作业。有关更多信息,请参阅使用 A SageMaker I 估算器运行训练作业。
参考表
在运行笔记本之前,请参阅以下参考表来选择镜像 URI 和实例配置。
选择图片 URI
配方 | 映像 URI |
---|---|
评估图片 URI |
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-latest |
选择实例类型和计数
模型 | 作业类型 | 实例类型 | 推荐的实例数 | 允许的实例数 |
---|---|---|---|---|
Amazon Nova Micro | 评估(SFT/DPO) |
g5.12xlarge |
1 | 1 |
Amazon Nova Lite | 评估(SFT/DPO) |
g5.12xlarge |
1 | 1 |
Amazon Nova Pro | 评估(SFT/DPO) |
p5.48xlarge |
1 | 1 |
示例笔记本
以下示例笔记本演示了如何运行评估训练作业。
# install python SDK !pip install sagemaker 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 = "instace_type
" # ml.g5.16xlarge as example 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-latest" # Do not change # (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, training_recipe=recipe_path, sagemaker_session=sagemaker_session, image_uri = image_uri ) 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
文件。提取内容以显示出来。除外,所有基准测试都存在strong_reject
。run_name/ ├── eval_results/ │ └── results_[timestamp].json | └── 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
-推理输出文件 -
events.out.tfevents.[timestamp]
- TensorBoard 输出文件
-
-
在中查看结果 TensorBoard。要可视化您的评估指标,请执行以下操作:
-
将提取的文件夹上传到 S3 存储桶
-
导航到 SageMaker TensorBoard
-
选择你的 “S3 文件夹”
-
添加 S3 文件夹路径
-
等待同步完成
-
-
分析推理输出。除了 llm_judge 之外的所有评估任务在推理输出中都将包含以下用于分析的字段。
-
full_prompt
-发送给用于评估任务的模型的完整用户提示。 -
gold
-包含数据集指定的正确答案的字段。 -
metrics
-包含根据个人推理评估的指标的字段。需要聚合的值在单个推理输出上没有值。 -
predictions
-包含模型在给定提示下的输出列表的字段。
通过查看这些字段,您可以确定指标差异的原因并了解自定义模型的行为。
对于
llm_judge
,推理输出文件在每对评估的 metrics 字段下包含以下字段。-
forward_output
-按顺序评估时法官的原始偏好(response_A,response_B)。 -
backward_output
-按相反顺序进行评估时法官的原始偏好(response_B,response_A)。 -
Pairwise metrics
-每对向前和向后评估计算的指标a_scores
,包括b_scores
、ties
、inference-score
和score
。注意
诸如此类的汇总指标
winrate
仅在摘要结果文件中可用,不能根据个人判断提供。
-
评估最佳实践和故障排除
最佳实践
以下列出了评估过程的一些最佳实践。
-
按模型和基准测试类型整理输出路径。
-
保持一致的命名惯例以便于跟踪。
-
将提取的结果保存在安全的位置。
-
监控 TensorBoard 同步状态以成功加载数据。
故障排除
您可以使用 CloudWatch 日志组来记录/aws/sagemaker/TrainingJobs
训练作业错误日志。
CUDA 内存不足错误
问题:
运行模型评估时,您会收到以下错误:
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate X MiB. GPU 0 has a total capacity of Y GiB of which Z MiB is free.
原因:
当您尝试加载需要比当前实例类型上可用的 GPU 内存更多的模型时,就会发生此错误。
解决方案:
选择具有更多 GPU 内存的实例类型。例如,如果你使用 G5.12xLarge(96 GiB GPU 内存),请升级到 G5.48xLarge(192 GiB GPU 内存)
预防:
在运行模型评估之前,请执行以下操作。
-
估算模型的内存需求
-
确保您选择的实例类型具有足够的 GPU 内存
-
考虑模型加载和推理所需的内存开销
可用子任务
以下列出了跨多个领域进行模型评估的可用子任务,包括 MMLU(大规模多任务语言理解)、BBH(Big Bench Hard)、数学和 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", ]