View a markdown version of this page

在 Amazon Nova 2 上为 RFT 准备数据 - Amazon Nova

在 Amazon Nova 2 上为 RFT 准备数据

Amazon Nova 2 上的 RFT 目前支持基于文本的训练数据。本页介绍为 Amazon Nova 2 理解模型准备 RFT 训练数据的数据格式、支持的功能、限制条件和最佳实践。

提示

要在开始训练作业之前验证您的数据集格式,请参阅 验证工具。

数据格式

RFT 训练数据遵循 OpenAI 强化微调格式。JSONL 训练文件中的每一行都是一个 JSON 对象,包含以下顶级字段。展开一个部分以了解更多信息:

必需。使用 system、user 和可选 assistant 角色的对话轮次的数组。

  • 角色:必填项。常用值:system(模型的指令)和 user(任务或输入)。

  • 内容:必填项。消息的文本内容。对于系统轮次,此字段为指令;对于用户轮次,此字段为任务或输入。

"messages": [ { "role": "system", "content": "instructions" }, { "role": "user", "content": "prompt" } ]

必需。期望输出或评测标准,供奖励函数对模型响应进行评分。该字段不限于结构化输出,可采用任何有助于奖励函数评测质量的格式。

"reference_answer": { "field": "value" }

可选。在本示例中模型可用的工具规范的数组。每个项目均定义工具的接口与元数据。有关完整示例,请参阅 工具调用。

"tools": [ { "type": "function", "function": { "name": "tool-name", "description": "tool-description", "parameters": { ... } } } ]

RFT 数据格式支持 messages 和 reference_answer 之外的自定义字段。请包含奖励函数完成适当评估所需的任何额外数据。您无需在配方中配置这些字段,它们会在运行时通过 metadata 字段传递给奖励函数。

常见示例包括:

元数据:

  • id:用于跟踪的唯一标识符

  • task_id:任务级别标识符

  • difficulty_level:问题复杂度指示符

  • domain:主题领域或类别

  • expected_reasoning_steps:解题过程中的步骤数

评测标准

  • evaluation_criteria:具体的评分细则

  • custom_scoring_weights:不同方面的相对重要性

  • context_data:问题背景信息

  • external_references:相关文档或资源链接

验证数据

在提交训练作业之前,请验证数据集,以尽早发现格式问题。有关可用的验证工具,请参阅 验证工具。

示例输入

以下是完整的 JSON 对象示例,展示了如何针对不同的 RFT 应用场景组合各字段。

Chemistry problem
{ "id": "chem-01", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Calculate the molecular weight of caffeine (C8H10N4O2)" } ], "reference_answer": { "molecular_weight": 194.19, "unit": "g/mol", "calculation": "8(12.01) + 10(1.008) + 4(14.01) + 2(16.00) = 194.19" } }
Math problem
{ "id": "math-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }
Code problem
{ "id": "code-002", "messages": [ { "role": "system", "content": "You are a helpful programming assistant" }, { "role": "user", "content": "Write a Python function that reverses a string without using built-in reverse methods" } ], "reference_answer": { "code": "def reverse_string(s):\n result = ''\n for i in range(len(s) - 1, -1, -1):\n result += s[i]\n return result", "test_cases": [ { "input": "hello", "expected_output": "olleh" }, { "input": "", "expected_output": "" }, { "input": "a", "expected_output": "a" }, { "input": "Python123", "expected_output": "321nohtyP" } ], "all_tests_pass": true } }
Tool usage
{ "id": "tool-001", "messages": [ { "role": "system", "content": "You are a helpful game master assistant" }, { "role": "user", "content": "Generate a strength stat for a warrior character. Apply a +2 racial bonus modifier." } ], "tools": [ { "type": "function", "function": { "name": "StatRollAPI", "description": "Generates character stats by rolling 4d6, dropping the lowest die result, and applying a modifier.", "parameters": { "type": "object", "properties": { "modifier": { "description": "An integer representing the modifier to apply to the total of the stat roll.", "type": "integer" } }, "required": ["modifier"] } } } ], "reference_answer": { "tool_called": "StatRollAPI", "tool_parameters": { "modifier": 2 }, "expected_behavior": "Call StatRollAPI with modifier=2 and return the calculated stat value" } }
With additional properties

以下示例包含自定义元数据字段,这些字段将在评测期间传递给奖励函数,从而实现针对特定应用场景量身定制的复杂评分逻辑。

{ "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }

支持的功能

下表汇总了 Amazon Nova 2 上 RFT 的功能支持情况。

RFT 特征支持
功能 Amazon Nova 2 上的 RFT
文本理解 在 Nova 2.0 Lite 上受支持。请参阅通用理解/文本理解。
图像理解 不支持
视频理解 不支持
文档理解 不支持
工具调用 在 Nova 2.0 Lite 上受支持。请参阅工具调用。
推理 在 Nova 2.0 Lite 上受支持。请参阅推理。

通用理解/文本理解

本部分总结了为 Amazon Nova 2 训练数据准备 RFT 的一般限制条件和最佳实践。

约束:

数据集的一般限制
约束 说明
数据集格式 JSONL(每行一个 JSON 对象)。
最少训练样本数 100
最少评估样本数 100
支持的模态 仅文本

最佳实践:

  • 我们建议从最小数据集大小(100 个训练示例和 100 个评估示例)开始,在验证奖励函数并确认 RFT 适合您的应用场景之后,再纵向扩展。

  • 我们建议采用评估优先的方法。在投入大规模 RFT 训练之前,请先评测模型的基线性能:

    • 性能优异(奖励大于 95%):可能无需进行 RFT,因为模型表现已足够好。

    • 性能极差(奖励为 0%):先切换到 SFT,建立基本能力。

    • 性能中等:适合采用 RFT 训练。

  • 从小型数据集开始,可以帮助您验证您的奖励函数没有错误,确认 RFT 是正确的方法,及早识别和修复问题,并在纵向扩展之前测试工作流。

  • 优先使用高质量的输入数据,以及能够在模型响应上一致执行的可靠奖励函数。

示例输入

{ "id": "math-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }

工具调用

RFT 支持基于工具调用模式进行模型训练,使模型能够学习何时以及如何调用外部工具或函数。

约束:

工具调用约束
约束 说明
工具定义位置 工具在训练示例的顶级 tools 数组中声明。
工具定义格式 每个工具必须包含 type、function.name、function.description,以及 function.parameters 中的有效 JSON Schema。
参考答案 使用 reference_answer 指定预期的工具调用(例如,tool_called、tool_parameters),以便奖励函数可以评估正确性。

最佳实践:

  • 确保工具定义在所有训练样本中保持一致。

  • 模型将从所提供的示例中学习工具调用模式。

  • 请包含多样化的示例,说明何时应使用每个工具以及何时不应使用工具。

示例输入

{ "id": "tool-001", "messages": [ { "role": "system", "content": "You are a helpful game master assistant" }, { "role": "user", "content": "Generate a strength stat for a warrior character. Apply a +2 racial bonus modifier." } ], "tools": [ { "type": "function", "function": { "name": "StatRollAPI", "description": "Generates character stats by rolling 4d6, dropping the lowest die result, and applying a modifier.", "parameters": { "type": "object", "properties": { "modifier": { "description": "An integer representing the modifier to apply to the total of the stat roll.", "type": "integer" } }, "required": ["modifier"] } } } ], "reference_answer": { "tool_called": "StatRollAPI", "tool_parameters": { "modifier": 2 }, "expected_behavior": "Call StatRollAPI with modifier=2 and return the calculated stat value" } }

推理

Amazon Nova 2 上的 RFT 支持推理模式,在该模式下,模型在生成最终答案之前会生成明确的思维词元。您可以使用 reasoning_effort 训练配置字段控制训练期间的推理行为。

约束:

推理约束
约束 说明
可用模式 none(省略 reasoning_effort 字段)、low 和 high。RFT 无 medium 选项。
默认行为 如果配置中不含 reasoning_effort 字段,则禁用推理。
词元限制 启用推理时,将 max_new_tokens 设置为 32768,以容纳更长的推理输出内容。

何时使用各个模式

使用 high 推理来实现:

  • 复杂分析任务

  • 数学问题求解

  • 多步逻辑推导

  • 逐步思考能带来价值的任务

使用 none(省略 reasoning_effort)或 low 推理来实现:

  • 简单事实查询

  • 直接分类

  • 速度与成本优化

  • 直接问答

成本与性能权衡

较高强度推理模式会导致:

  • 训练时间和成本增加

  • 推理延迟和成本增加

  • 模型在复杂推理任务上的能力提升

有效训练数据的特征

清晰性与一致性

优质的 RFT 样本需要清晰、无歧义的输入数据,以便能够针对不同的模型输出进行准确的奖励计算。数据中应避免以下干扰:

  • 格式不一致

  • 标签或指令相互矛盾

  • 提示词含义模糊

  • 参考答案互相冲突

任何歧义都会误导训练过程,导致模型学习到非预期的行为。

多样性

数据集应覆盖生产环境中的各类使用案例,确保模型在真实环境中表现稳健。包含:

  • 不同的输入格式和边界情况

  • 从日志和用户分析中映射实际的生产使用模式

  • 跨用户类型、地理区域和季节性变化的采样

  • 包含从简单到复杂的问题难度级别

奖励函数注意事项

设计奖励函数,实现高效训练:

  • 在几秒钟内执行完毕(而非几分钟)

  • 使用 Lambda 实现高效并行

  • 返回一致且可靠的分数

  • 妥善处理不同类型的模型输出

快速且可扩展的奖励函数可支持快速迭代,并在实验中实现高成本效益。

使用 LLM-as-a-judge 的 RFT 训练

概述

大语言模型(LLM)越来越多地被用作强化微调(RFT)工作流中的评判工具,提供自动化的奖励信号来指导模型优化。在这种方法中,LLM 会根据指定标准对模型输出进行评测(包括正确性、质量、风格一致性或语义等效性等),并分配用于驱动强化学习过程的奖励值。

对于传统奖励函数难以通过编程定义的任务,该方法尤为实用。例如判断不同表达形式(如“1/3”“0.333”和“三分之一”)是否语义等效,或评测连贯性、相关性等细微特征。通过将基于 LLM 的评判机制作为奖励函数,可将 RFT 扩展到复杂领域,无需大量人工标注,进而在传统对齐问题之外的各类场景中,实现模型的快速迭代与持续优化。

验证 LLM 评判工具

在生产中部署 LLM-as-a-judge 之前,请验证评判工具模型的评测是否与人类判断一致。这涉及:

  • 测量 LLM 评判工具与人工评测员在任务代表性样本上的一致率

  • 确保 LLM 与人类评测的一致率达到或超过人类之间的一致率

  • 识别评判工具模型中可能存在的偏差

  • 建立信心,确保奖励信号能按预期方向引导模型

此验证步骤有助于确保自动化评测过程能够产生符合生产质量标准的模型。

LLM 评判工具的 Lambda 配置

采用 LLM-as-a-judge,是对使用 Lambda 函数实现可验证奖励强化学习(RLVR)的扩展。在 Lambda 函数内部,需调用 Amazon Bedrock 中托管的任一模型。

重要配置要求:

配置 要求 说明
Amazon Bedrock 吞吐量 充足的配额 确保所使用的 Amazon Bedrock 模型吞吐量配额足以满足训练工作负载
Lambda 超时 延长超时 将 Lambda 函数超时配置为最多 15 分钟。默认设置为 3 秒,不足以满足 Amazon Bedrock 模型的响应需求
Lambda 并发 提高并发 Lambda 在训练期间会被并行调用。提高并发以提供最大程度的可用吞吐量
配方配置 匹配 Lambda 设置 并发限制必须在配方中进行配置