本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
迭代训练
概述
迭代训练是使用不同的训练方法(训练、评估、分析错误、调整)通过多个训练周期反复微调模型的过程,每轮都从前一个检查点开始。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 角色有权访问托管存储桶
-
确认之前的训练作业已成功完成
-
检查路径中是否有错别字
迭代后的性能回归
症状:在新的训练迭代之后,评估指标会下降。
解决方法:
-
回滚 — 使用之前的检查点作为基础模型
-
分析-查看失败迭代的训练日志和数据质量
-
调整-修改超参数(降低学习率)、提高数据质量或缩短训练周期
-
重试-启动带有调整的新迭代