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

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

迭代训练

概述

迭代训练是使用不同的训练方法(训练、评估、分析错误、调整)通过多个训练周期反复微调模型的过程,每轮都从前一个检查点开始。data/objectives/hyperparameters这种方法允许您系统地定位模型失效模式,整合解决特定弱点的精选示例,并适应随着时间的推移而不断变化的需求。

与单次训练相比的好处:

  • 有针对性的改进:解决通过评估发现的特定故障模式

  • 适应性完善:应对分销变化或不断变化的产品需求

  • 风险缓解:以渐进方式验证改进,而不是承诺进行一次长时间的训练

  • 数据效率:将数据收集工作重点放在模型表现不佳的领域

  • 课程培训:多轮培训,数据质量越来越高

工作原理

检查站的位置和通道

每项训练作业完成后,将在训练配置中的output_path参数指定的输出位置生成一个清单文件。

访问您的检查站

  • 导航到您output_path在 S3 中指定的位置

  • 下载并解压缩output.tar.gz文件

  • 打开里面的manifest.json文件

  • 找到包含训练模型的 S3 URI 的checkpoint_s3_bucket参数

manifest.json 结构示例

{ "checkpoint_s3_bucket": "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>/stepID", ... }

了解托管存储桶

Amazon由于 Amazon Nova 权重是专有的,因此经过训练的模型检查点存储在托管账户内的托管 S3 存储桶中,而不是复制到您的账户。这些托管桶:

  • 安全地存放您的自定义模型重量

  • 可以被其他Amazon服务(推理、评估和后续训练作业)引用

  • 只有您的Amazon账户可通过 IAM 权限进行访问

  • 在您的账户中产生标准 S3 存储费用(请参阅成本注意事项)

您可以在下一次训练model_name_or_path中使用托管存储桶路径来继续迭代训练。

使用检查点进行迭代训练

将您的下一个训练作业配置为使用前一个检查点作为基础模型:

run: name: "my-iterative-training-job" model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<previous-job-name>" data_s3_path: s3://<bucket>/<data-file>.jsonl replicas: 4

何时使用迭代训练

理想的用例

当您具备以下条件时,请使用迭代训练:

  • 反馈回路 — 能够收集现实世界的故障案例并系统地解决这些问题

  • 动态环境 — 不断演变的文档或需要定期更新模型的支持主题 APIs

  • 稳健的评估 — 强大的基准和评估框架(参见下面的示例),可以自信地衡量改进情况

  • 机器学习操作功能 — 用于管理多个训练周期和版本控制的资源

稳健的评估框架示例

  • 带有 pass/fail 阈值的自动基准测试套件

  • 具有评级者间可靠性指标的人工评估协议

  • 红队测试场景涵盖边缘案例和对抗性输入

  • 用于衡量生产影响的 A/B 测试基础设施

常见模式

SFT → RFT Pipelin e:常用的迭代模式包括:

  • SFT 优先 — 通过演示示例教模型如何解决问题

  • 其次 RFT — 使用奖励信号在更广泛的问题领域优化性能

当模型最初表现不佳时,这个序列是必不可少的——如果不首先通过 SFT 建立基本的问题解决能力,那么在接近零的精度模型上的 RFT 将无法提高性能。

何时不使用迭代训练

避免针对以下内容进行迭代训练:

  • 稳定、定义明确的任务 — 要求一致的静态数据已经达到接近上限的性能

  • 简单的分类问题 — 单次训练就足够了,任务范围狭窄

  • 资源限制 — 缺乏管理多个训练周期的专用 ML 操作能力

  • 边际收益 — 当开销不足以证明最低限度的性能改进是合理的

工作流程示例:SFT → RFT

此示例演示了推理模型的常见迭代训练模式。

第 1 步:初始 SFT 培训

使用您的数据集配置并启动 SFT 训练作业:

run: name: "initial-sft-training" model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "nova-lite-2/prod" data_s3_path: s3://<bucket>/sft-training-data.jsonl validation_data_s3_path: s3://<bucket>/sft-validation-data.jsonl

理由:SFT提供了其他演示,可以将模型输出塑造成所需的格式和声音,从而建立基础能力。

训练结束后

  • 记下训练作业中output_path配置的

  • output.tar.gz从该位置下载

  • 提取并定位 manifest.json

  • 复制该checkpoint_s3_bucket

第 2 步:在 SFT 检查点上进行 RFT 训练

使用 SFT 检查点创建新的 RFT 训练作业:

run: name: "rft-on-sft-checkpoint" model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<initial-sft-training>" data_s3_path: s3://<bucket>/rft-training-data.jsonl reward_lambda_arn: <your-reward-function-arn>

理由:RFT 训练建立在 SFT 基础之上,允许模型开发更复杂的推理模式,并通过您的奖励函数进行优化。

步骤 3:评估和迭代

对 RFT 检查点运行评估以评估性能:

run: name: "evaluate-rft-checkpoint" model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<rft-on-sft-checkpoint>" data_s3_path: s3://<bucket>/evaluation-data.jsonl

如果目标指标未得到满足,请继续使用调整后的数据或超参数进行迭代。

重要

⚠️ 重要:训练技巧(LoRa vs Full Rank)必须在所有迭代中保持一致:

  • 如果你在 LoRa 中使用 SFT,你必须将 RFT 与 LoRa 一起使用

  • 如果您将 SFT 与满等级一起使用,则必须使用具有满等级的 RFT

  • 你无法在 LoRa 和 Full Rank 中间管道之间切换

监控各迭代的进度

您可以通过跟踪指标 MLFlow。

创建 MLflow 应用程序

使用 Studio 用户界面:如果您通过 Studio 用户界面创建训练作业,则会自动创建默认 MLflow 应用程序,并在高级选项下默认选择该应用程序。

使用 CLI:如果您使用 CLI,则必须创建一个 MLflow 应用程序并将其作为输入传递给训练作业 API 请求。

mlflow_app_name="<enter your MLflow app name>" role_arn="<enter your role ARN>" bucket_name="<enter your bucket name>" region="<enter your region>" mlflow_app_arn=$(aws sagemaker create-mlflow-app \ --name $mlflow_app_name \ --artifact-store-uri "s3://$bucket_name" \ --role-arn $role_arn \ --region $region)

访问该 MLflow 应用程序

使用 CLI:创建用于访问 MLflow 应用程序界面的预签名 URL:

aws sagemaker create-presigned-mlflow-app-url \ --arn $mlflow_app_arn \ --region $region \ --output text

使用 Studio 用户界面:Studio 界面显示存储在中的关键指标, MLflow 并提供指向 MLflow 应用程序界面的链接。

要跟踪的关键指标

跨迭代监控这些指标,以评估改进情况并跟踪工作进度:

适用于 SFT

  • 训练损失曲线

  • 消耗的样本数量和处理样本的时间

  • 被搁置的测试集的性能精度

  • 格式合规性(例如,有效的 JSON 输出速率)

  • 对特定领域的评估数据感到困惑

适用于 RFT

  • 训练的平均奖励分数

  • 奖励分配(高奖励回复的百分比)

  • 验证奖励趋势(注意是否过度拟合)

  • 特定任务的成功率(例如,代码执行通过率、数学问题准确率)

一般性问题

  • 两次迭代之间的基准性能增量

  • 代表性样本的人体评估分数

  • 生产指标(如果以迭代方式部署)

确定何时停止

在以下情况下停止迭代:

  • 绩效停滞不前 — 额外的培训不再能有意义地改善目标指标

  • 技术切换有帮助 — 如果一种技术停滞不前,请尝试切换(例如,SFT → RFT → SFT)以突破性能上限

  • 目标指标已达到 — 您的成功标准已达到

  • 检测到回归 — 新的迭代会降低性能(参见下面的回滚程序)

有关详细的评估程序,请参阅 “评估” 部分。

最佳实践

从小处着手,逐步扩大规模

从最少的数据集和单一的训练周期开始,在扩大规模之前验证您的方法。这可以建立信心并有助于及早发现问题。

建立明确的成功指标

在开始之前定义定量和定性指标:

按用例划分的成功指标示例

  • 问题解答 — 精确匹配精度、F1 分数、人类偏好等级

  • 代码生成 — 单元测试通过率、编译成功率、执行时间

  • 推理任务 — 步数准确性、最终答案正确性、奖励分数

  • 内容生成 — 连贯性分数、事实准确性、风格依从性

实施自动评估

设置自动评估管道以跟踪每轮后的绩效,从而实现快速迭代和客观比较。

保持严格的版本控制

每次迭代的文档:

  • 数据集版本和修改

  • 模拟检查点位置

  • 超参数更改

  • 性能指标和增量

  • 定性观察

这可以积累机构知识并支持调试。

关注数据质量而不是数量

分析前几轮的失败案例并添加有针对性的高质量示例,而不仅仅是增加数据集的大小。

计划迭代预算

3-5 次迭代计划为典型范围:

  • 1-2 次迭代 — 通常足以进行简单的改进或最后的完善

  • 3-5 次迭代 — 适用于需要多个细化周期的复杂任务

  • 5 次以上的迭代 — 可能表明收益减少或需要不同的方法

根据计算预算和性能改进率进行调整。

实现回滚功能

如果迭代引入了回归:

  • 识别回归 — 比较各个检查点的评估指标

  • 返回上一个检查点-使用先前检查点的 S3 路径作为您的 model_name_or_path

  • 调整训练方法-在重试之前修改数据、超参数或技术

  • 记录失败 — 记录导致回归的原因以避免重复

回滚示例

run: name: "rollback-to-iteration-2" model_type: amazon.nova-2-lite-v1:0:256k # Use iteration 2 checkpoint instead of failed iteration 3 model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<iteration-2-job-name>"

成本考虑因素

检查点存储

  • 位置 — 存储在托管存储桶中的检查点会产生标准的 S3 存储费用,计入您的账户 Amazon

  • 保留-除非明确删除,否则检查点将无限期保留

  • 管理 — 实施生命周期策略以存档或删除不再需要的旧检查点

成本优化技巧

  • 在验证较新的迭代之后删除中间检查点

  • 将检查点存档到 S3 Glacier,以便以较低的成本长期保留

  • 根据您的合规性和实验需求设置保留政策

限制

模型系列一致性

迭代训练时,必须在所有迭代中使用相同的模型类型

初始训练

run: model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "nova-lite-2/prod"

后续迭代必须使用相同的模型类型

run: model_type: amazon.nova-2-lite-v1:0:256k # Must match original model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"

训练技巧一致性

训练技巧必须在各个迭代中保持一致:

  • Lora 训练过的模型只能使用 LoRa 进行迭代训练

  • Full-Rank-trained 只能使用 Full-Rank 对模型进行迭代训练

LoRa 适配器如何在迭代训练中工作

  • 每次 LoRa 训练迭代都会生成新的适配器权重

  • 新的适配器取代(而不是堆叠)以前的适配器

  • 基本模型仍处于冻结状态;仅更新适配器

技术兼容性矩阵

初始训练 可以迭代
SFT(满级) SFT(满级)、RFT(满级)
SFT (LoRa) SFT (LoRa)、RFT (LoRa)
RFT(满级) RFT(满级)
RFT (LoRa) RFT (LoRa)

在开始作业之前验证兼容性

  • 查看你之前的训练方法以确定模型类型和训练技巧(LoRa vs Full-Rank)

  • 确保您的新配方与模型类型和技术相匹配

  • 查看 manifest.json 以确认检查点路径是否正确

问题排查

错误:“检测到不兼容的模型训练技术”

原因:训练技巧(LoRa vs Full-Rank)与检查点的技巧不符。

解决方案:确保您的配方使用与原始模型相同的训练技巧:

  • 如果检查点接受过 LoRa 训练,请在你的新食谱中使用 LoRa

  • 如果检查点使用满等级训练,则在新配方中使用全等级

错误:“从 model_name_or_path 中提取的任务的基本模型与模型类型不匹配”

原因:中指定的模型类型与检查点中的实际模型model_type不匹配。

解决方案:验证:

  • 您的食谱model_type中的与原始模型类型相匹配

  • 中的检查点 S3 路径model_name_or_path正确

  • 你使用的是正确的 manifest.json 文件中的路径

正确配置示例

run: model_type: amazon.nova-2-lite-v1:0:256k # Must match checkpoint's model model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"

错误:“未找到模型配置”

原因:中的 S3 路径model_name_or_path无效或无法访问。

解决方法:

  • 验证 S3 路径是否正确地从 manifest.json 文件中复制

  • 确保您的 IAM 角色有权访问托管存储桶

  • 确认之前的训练作业已成功完成

  • 检查路径中是否有错别字

迭代后的性能回归

症状:在新的训练迭代之后,评估指标会下降。

解决方法:

  • 回滚 — 使用之前的检查点作为基础模型

  • 分析-查看失败迭代的训练日志和数据质量

  • 调整-修改超参数(降低学习率)、提高数据质量或缩短训练周期

  • 重试-启动带有调整的新迭代