迭代训练
概述
迭代训练指通过多种训练方法,经多轮训练周期对模型进行反复微调的过程,具体包括训练、评估、分析错误、调整数据/目标/超参数等环节,且每一轮训练均基于上一轮的检查点启动。该方法可帮助您系统性定位模型的失效场景,整合针对特定短板的精选示例,并持续适配不断变化的业务需求。
相较于单次训练的优势:
-
精准优化:针对评估中发现的特定失效问题进行改进
-
自适应精调:应对数据分布变化或产品需求演进
-
风险缓解:增量验证优化效果,而非仅依赖一次长时间训练
-
数据高效:将数据采集聚焦在模型表现薄弱的环节
-
课程式训练:使用质量逐步提升的数据进行多轮训练
工作原理
检查点的位置与访问方式
每次训练作业完成后,系统会在训练配置中output_path 参数指定的输出位置生成一个清单文件。
访问检查点的步骤
-
进入 S3 中指定的
output_path路径 -
下载并解压缩
output.tar.gz文件 -
打开文件内的
manifest.json文件 -
找到
checkpoint_s3_bucket参数,该参数包含已训练模型的 S3 URI
manifest.json 结构示例
{ "checkpoint_s3_bucket": "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>/stepID", ... }
托管存储桶说明
由于 Amazon Nova 模型权重为专有资产,训练后的模型检查点会存储在 AWS 托管账户内的 托管 S3 存储桶中,而非直接复制到您的账户。这些托管存储桶具有以下特点:
-
安全存储您的自定义模型权重
-
可被其他 AWS 服务引用(推理、评估及后续训练作业)
-
仅您的 AWS 账户可通过 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
建议使用迭代训练的场景
理想使用案例
满足以下条件时,建议使用迭代训练:
-
反馈闭环:能够收集真实场景下的失效案例,并系统性解决这些问题
-
动态环境:文档、API 或支持场景持续更新,需定期更新模型
-
评估体系完善:拥有可靠的基准测试和评估框架(见下方示例),可精准衡量模型改进效果
-
机器学习运维能力:有资源管理多轮训练周期及版本控制
完善的评估框架示例
-
带通过/失败阈值的自动化基准测试套件
-
包含评分者间信度指标的人工评估流程
-
覆盖边缘场景与对抗性输入的红队测试方案
-
可衡量生产环境影响的 A/B 测试基础设施
常见模式
SFT → RFT 流程:最常用的迭代模式:
-
先执行 SFT:通过示例演示教会模型解决问题的方法
-
再执行 RFT:借助奖励信号优化模型在更广问题域的表现
该流程对初始表现较差的模型至关重要:若未先通过 SFT 建立基础的问题解决能力,直接对准确率接近零的模型执行 RFT 便无法提升性能。
不建议使用迭代训练的场景
以下情况避免使用迭代训练:
-
任务稳定且定义明确:数据分布固定、需求稳定,模型性能已接近上限
-
简单分类问题:任务单一,单次训练即可满足需求
-
资源限制:缺乏专门的机器学习运维能力,无法管理多轮训练周期
-
收益有限:训练开销过大,而性能提升微乎其微,性价比不足
示例工作流: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 对比全秩训练)必须保持一致:
-
若 SFT 采用 LoRA 训练,RFT 也必须使用 LoRA 训练
-
若 SFT 采用全秩训练,RFT 也必须使用全秩训练
-
不可在流程中途切换 LoRA 与全秩训练模式
重要
若在 Amazon 拥有的输出 S3 存储桶中使用 KMS 密钥进行加密,则后续所有迭代训练必须使用同一 KMS 密钥。
监控迭代进度
您可以通过为训练作业设置 MLflow 来跟踪各项指标。
创建 MLflow 应用程序
使用 Studio UI:如果您通过 Studio UI 创建训练作业,系统会自动创建默认 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:创建预签名 URL 以访问 MLflow 应用程序 UI:
aws sagemaker create-presigned-mlflow-app-url \ --arn $mlflow_app_arn \ --region $region \ --output text
使用 Studio UI:Studio UI 会展示存储在 MLflow 中的关键指标,并提供指向 MLflow 应用程序 UI 的链接。
要跟踪的关键指标
通过迭代监控以下指标,以评测模型优化效果并跟踪作业进度:
针对 SFT
-
训练损失曲线
-
已处理样本数量及处理耗时
-
预留测试集上的性能准确率
-
格式合规性(如有效 JSON 输出率)
-
领域专属评估数据上的困惑度
针对 RFT
-
训练过程中的平均奖励分数
-
奖励分布(高奖励响应占比)
-
验证奖励趋势(关注过拟合情况)
-
任务专属成功率(如代码执行通过率、数学题准确率)
一般性问题
-
迭代间基准性能变化
-
代表性样本的人工评估分数
-
生产环境指标(若采用迭代式部署)
停止迭代的判定条件
满足以下任一情况即可停止迭代:
-
性能趋于平稳:继续训练无法显著提升目标指标
-
切换训练技术有效:若某一技术效果趋于平稳,可尝试切换(如 SFT → RFT → SFT)以突破性能瓶颈
-
达到目标指标:已满足预设的成功标准
-
检测到性能退化:新迭代导致模型效果下降(参见下文回滚流程)
有关详细的评估流程,请参阅评估部分。
最佳实践
从小规模开始,逐步扩展规模
先使用最小数据集和单轮训练(epoch)验证方案,再逐步扩大规模。这有助于建立信心,并尽早发现问题。
设定明确的成功指标
在开始前定义定量与定性指标:
不同使用案例的成功指标示例
-
问答任务:精确匹配准确率、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 存储费用,计入您的 AWS 账户账单
-
保留:检查点将永久保留,除非手动显式删除
-
管理:可配置生命周期策略,对不再需要的旧检查点进行归档或删除
成本优化建议
-
验证新版迭代效果后,及时删除中间过程产生的检查点
-
将需长期保留的检查点归档至 S3 Glacier,降低存储成本
-
根据合规要求与实验需求,设置合理的保留策略
限制
模型系列一致性
进行迭代训练时,所有迭代轮次必须使用同一模型类型。
初始训练
run: model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "nova-lite-2/prod"
后续所有迭代必须使用相同的 model_type
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 进行迭代训练
-
使用全秩训练的模型,只能继续用全秩进行迭代训练
迭代训练中 LoRA 适配器的工作机制
-
每一轮 LoRA 训练迭代都会生成新的适配器权重
-
新适配器会替换旧适配器(而非叠加)
-
基础模型保持冻结,仅更新适配器
训练技术兼容性矩阵
| 初始训练 | 可迭代的训练方式 |
|---|---|
| SFT(全秩) | SFT(全秩)、RFT(全秩) |
| SFT(LoRA) | SFT(LoRA)、RFT(LoRA) |
| RFT(全秩) | RFT(全秩) |
| RFT(LoRA) | RFT(LoRA) |
作业启动前的兼容性验证
-
查看上一轮训练配方,确认模型类型与训练技术(LoRA/全秩)
-
确保新配方与上述模型类型和技术完全一致
-
查看 manifest.json 文件,确认检查点路径准确无误
问题排查
错误:“Incompatible model training techniques detected”
原因:当前使用的训练技术(LoRA/全秩)与检查点所用技术不一致。
解决方法:确保配方使用与原模型相同的训练技术:
-
若检查点基于 LoRA 训练,新配方需使用 LoRA
-
若检查点基于全秩训练,新配方需使用全秩
错误:“Base model for the job extracted from model_name_or_path does not match model_type”
原因:model_type 中指定的模型类型,与检查点中的实际模型类型不一致。
解决方法:验证以下内容:
-
配方中的
model_type与原模型类型一致 -
model_name_or_path中的检查点 S3 路径准确 -
使用的路径来自正确的 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>"
错误:“Model configuration not found”
原因:model_name_or_path 中的 S3 路径无效或无法访问。
解决方法:
-
验证 S3 路径是否从 manifest.json 文件中正确复制
-
确保 IAM 角色拥有访问托管存储桶的权限
-
确认上一轮训练作业已成功完成
-
检查路径是否存在拼写错误
迭代后性能退化
现象:新训练迭代完成后,评估指标出现下降。
解决方法:
-
回滚:使用上一轮检查点作为基础模型
-
分析:检查失败迭代的训练日志及数据质量
-
调整:修改超参数(降低学习率)、提升数据质量或减少训练轮数(epoch)
-
重试:使用调整后的参数重新启动迭代训练