评估你的 SageMaker AI 训练模型 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

评估你的 SageMaker AI 训练模型

评估过程旨在根据基准测试或自定义数据集评测训练模型的性能。评估过程通常涉及以下步骤:创建指向训练模型的评估配方、指定评估数据集和指标、提交单独的评估作业,以及根据标准基准测试或自定义数据进行评估。评估过程将输出存储在您的 Amazon S3 存储桶中的性能指标。

注意

本主题中描述的评估过程是一个离线过程。该模型根据固定的基准测试进行测试,并提供预定义的答案,而非实时或者通过实时用户互动进行评测。要进行实时评估,您可以在模型部署到亚马逊 Bedrock 之后,通过调用 Amazon Bedrock Runtim e 对其进行测试。 APIs

先决条件

在开始评估训练作业之前,请注意具备以下内容:

  • 一款 SageMaker 经过人工智能训练的 Amazon Nova 模型,你想评估它的性能。

  • 用于评估的基本 Amazon Nova 配方。有关更多信息,请参阅 获取 Amazon Nova 配方

可用的基准测试任务

提供了一个示例代码包,用于演示如何使用 Amazon Nova 的 SageMaker 模型评估功能计算基准指标。要访问代码包,请参阅 Sample-n ova-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支持基于亚马逊 Nova Lite 或 Amazon Nova Pro 的机型的图像推理。还支持 Bring-Your-Own指标 lambda。(要进行 RFT 评估,请使用 RFT 评估配方)

全部 gen_qa
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

日历日程安排

文本

Natural Plan-日历排程任务测试计划能力,用于安排多天和多人的会议

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 模型变体。请勿手动修改此字段。选项包括:

    • 亚马逊。 nova-micro-v1:0:128 k

    • 亚马逊。 nova-lite-v1:0300 k

    • 亚马逊。 nova-pro-v1:0300 k

    • amazon.nova-2-lite-v 1:0:256 k

  • 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:(可选)将相关机器学习组合在一起的实验名称

  • 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 Chain of Thought — 一种无需明确示例即可鼓励 step-by-step推理的大型语言模型的方法

    • fs_cot: Few-shot Chain of Thought —— 这种方法在要求模型解决新问题之前提供了一些 step-by-step推理示例。

    • zs:零样本,该方法事先无需任何训练示例即可解决问题。

    • gen_qa:专为自带数据集而设的策略。

    • judge: Nova LLM作为评委的特定策略,以及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_judgemm_llm_judge,请自带数据集基准测试,返回以下指标:

      • a_scores:前向和反向评估传递中 response_A 的获胜次数。

      • a_scores_stderr:成对判断中 response_A_scores 的标准误差。

      • b_scores:衡量前向和反向评估传递中 response_B 的获胜次数。

      • a_scores_stderr:成对判断中 response_B_scores 的标准误差。

      • tiesresponse_Aresponse_B 被评估为相等的判断数量。

      • ties_stderr:成对判断中 ties 的标准误差。

      • inference_error:无法适当评估的判断数量。

      • score:基于 response_B 在前向和反向传递中的获胜次数得出的总分。

      • score_stderr:基于 response_B 在前向和反向传递中的获胜次数得出的总分。

      • inference_error_stderr:成对判断中总分的标准误差。

      • winrate:使用 Bradley-Terry 概率模型计算的 response_Bresponse_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 之间的整数。Logprobs 包含考虑的输出标记,以及消息内容中返回的每个输出令牌的日志概率。

  • reasoning_effort: 控制具有推理能力的模型的推理行为。reasoning_effort仅在model_type指定具有推理功能的模型时才设置(当前amazon.nova-2-lite-v1:0:256k)。可用选项为空(如果未设置,则为默认值;禁用推理)、低或高。

评估配方示例

Amazon Nova 提供四种不同类型的评估配方。所有食谱都可在 Amazon 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训练作业可以访问的 S3 位置。

    • 该文件必须遵循常规问答数据集所需的架构格式。

    架构格式要求-.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 文件。

    • 该文件必须严格遵循定义的架构。

    带上你自己的指标

    您可以自带指标,通过自定义预处理、后处理和指标功能完全自定义模型评估工作流程。预处理允许您在将输入数据发送到推理服务器之前对其进行处理,而后处理允许您根据需要自定义指标计算并返回自定义指标。

    按照以下步骤使用自定义评估 SDK 自带指标。

    1. 如果您还没有这样做,请在Amazon Web Services 账户第一个Amazon 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. 将此层作为自定义层添加到您的 Lambda 函数中,同时添加所需的Amazon层:AWSLambdaPowertoolsPythonV3-python312-arm64pydantic依赖关系所必需的)。

    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 函数的亚马逊资源名称 (ARN)。

      • lambda_type: “自定义指标” 或 “rft”。

      • preprocessing:是否启用自定义预处理操作。

      • postprocessing:是否启用自定义后期处理操作。

      • aggregation: 内置聚合函数(有效选项:最小值、最大值、平均值、总和)。

    限制

    • 自带指标仅适用于文本输入数据集。

    • 不支持多模态输入数据集。

    • 预处理步骤不处理元数据字段。

    Nova LLM Judge 是一项模型评测特征,让您可以使用自定义数据集,将一个模型的响应质量与基准模型的响应质量进行比较。它接受包含提示、基准响应和挑战响应的数据集,然后使用 Nova Judge 模型基于 Bradley-Terry 概率模型通过成对比较提供胜率指标。配方格式:xxx_llm_judge_eval.yaml

    Nova LLM 数据集要求

    文件格式:

    • 包含评估示例的单个 llm_judge.jsonl 文件。文件名应为 llm_judge.jsonl

    • 您必须将数据集上传到 SageMaker训练作业可以访问的 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 担任多模式(图片)基准配方的评委

    适用于多模态的 Nova LLM Judge(图像)是 Nova MM_LLM Judge 的缩写,是一项模型评估功能,可让您使用自定义数据集将来自一个模型的响应质量与基线模型的响应质量进行比较。它接受包含提示、基线响应和挑战者响应的数据集,以及 base64 编码字符串形式的图像,然后使用 Nova Judge 模型通过配对比较提供基于 B radle y-Terry 概率的胜率指标。配方格式:xxx_mm_llm_judge_eval.yaml

    Nova LLM 数据集要求

    文件格式:

    • 包含评估示例的单个 mm_llm_judge.jsonl 文件。文件名必须完全相同llm_judge.jsonl

    • 您必须将数据集上传到 SageMaker训练作业可以访问的 S3 位置。

    • 该文件必须遵循 mm_llm_judge 数据集所需的架构格式。

    • 输入数据集应确保所有记录的上下文长度均低于 12 k,不包括图像的属性。

    架构格式:.jsonl 文件中的每一行都必须是包含以下字段的 JSON 对象。

    • 必填字段。

      prompt:包含生成响应提示的字符串。

      images: 包含具有数据属性的对象列表的数组(值为 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 的机型在亚马逊 Nova Micro、Amazon Nova Lite 和亚马逊 Nova Pro 规格中相同

    • 目前不支持自定义评估模型。

    • 不支持亚马逊 S3 图片 URI。

    • 输入数据集应确保所有记录的上下文长度均低于 12 k,不包括图像属性。

    运行评估训练作业

    使用以下示例 Jupyter Notebook 启动训练作业。请参考下面的笔记本作为运行评估培训作业的示例。有关更多信息,请参阅使用 A SageMaker I 估算器运行训练作业

    参考表

    在运行笔记本之前,请参阅以下参考表来选择映像 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 # (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 ) 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 TensorBoard

      3. 选择您的“S3 文件夹”。

      4. 添加 S3 文件夹路径

      5. 等待同步完成

    4. 分析推理输出。除 llm_judgestrong_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_scoresb_scorestiesinference-scorescore

        注意

        诸如 winrate 的聚合指标仅在摘要结果文件中提供,不会针对每一判断都提供。

      对于 gen_qainference_output.jsonl 文件针对每个 JSON 对象均包含以下字段:

      • prompt:提交给模型的最终提示

      • 推理:模型的原始推理输出

      • 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_type之前model_name_or_path,请仔细检查是否映射到右侧。

    可用子任务

    以下列出了跨多个领域进行模型评估的可用子任务,包括 MMLU(大规模多任务语言理解)、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 模型。