本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
监控 RFT 训练
在培训期间监控关键指标,确保有效学习,尽早发现潜在问题。
要跟踪的关键指标
在训练 MlFlow 期间使用以下指标进行监控:
奖励指标:
-
平均奖励分数:模型响应的总体质量(应随着时间的推移而提高)
-
奖励分配:获得高、中、低奖励的回复百分比
-
训练与验证奖励:比较以检测过度拟合
训练指标:
-
政策更新:成功更新体重的次数
-
推出完成率:成功评估的样本百分比
关于模式:
-
奖励停滞不前(表示学习不佳)
-
验证奖励掉落,而训练奖励增加(过度拟合)
-
随着时间的推移,奖励差异显著增加(不稳定)
-
奖励功能错误的比例很高(实现问题)
何时停止训练:
-
目标绩效指标已达到
-
奖励处于停滞状态,不再提高
-
验证性能下降(检测到过度拟合)
-
已达到最高培训预算
超参数指导
根据您的训练方法,使用以下推荐的超参数:
将军:
-
时代:1
-
学习率 (lr):1e-7
-
世代数:8
-
新代币上限:8192
-
批次大小:256
LoRa(低等级适应):
-
LoRa 等级:32
注意
根据您的数据集大小和验证性能调整这些值。监控训练指标以防止过度拟合。
RFT 之后的评估
训练完成后,评估经过微调的模型以评估性能改进:
-
运行 RFT 评估作业:使用 RFT 训练中的检查点作为模型
-
与基准比较:在同一个测试集上评估基础模型和微调模型
-
分析指标:查看特定任务的指标(准确性、奖励分数等)
-
进行定性审查:手动检查样品输出的质量
有关详细的评估程序,请参阅 “评估” 部分。
使用经过微调的模型
访问检查点:
训练完成后,找到您的检查点:
-
在 S3
output_path中导航到你的 -
下载并解压
output.tar.gz -
打开
manifest.json -
复制该
checkpoint_s3_bucket值
为推理而部署:
使用检查点 S3 路径进行推断或进一步训练:
run: model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"
有关部署和推理说明,请参阅推理部分。
限制和最佳实践
目前的局限性:
测试版限制:
-
需要为 RFT 创建一个新的 RIG 组。此限制将由 GA 解决。
-
不允许使用非装备实例组:确保您的 HyperPod 集群仅包含受限实例组 (RIGs)-不包含常规实例组。此限制将由 GA 解决。
-
实例类型要求:仅支持 P5 实例(至少 8 个 p5.48xLarge)。即将推出:支持较小的实例类型(预计时间:2025 年 1 月中旬)。
功能限制:
-
15 分钟 Lambda 超时:奖励功能必须在 15 分钟内完成
-
仅限单回合:不支持多回合对话
-
验证数据集:训练期间不支持。使用单独的评估作业来评估培训进度。
培训注意事项:
-
低奖励场景:当不到5%的示例获得正面奖励时可能会陷入困境——首先考虑SFT
-
数据要求:需要足够的多样性才能有效地学习
-
计算成本:比监督微调更昂贵
Nova Forge 消除了以下一些限制:
-
支持多回合对话
-
允许奖励功能超时超过 15 分钟
-
提供高级算法和调整选项
-
专为复杂的企业用例而设计,专门针对构建前沿模型进行了调整
最佳实践:
从小处着手,扩大规模:
-
从最少的数据集(100-200 个示例)和很少的训练周期开始
-
在扩大规模之前验证您的方法
-
根据结果逐渐增加数据集大小和训练步骤
首先使用 SFT 进行基准测试:
-
如果奖励分数一直很低(例如,始终为 0),则在 RFT 之前执行 SFT
-
RFT 需要合理的基准性能才能有效改进
设计高效的奖励功能:
-
在几秒钟内执行,而不是几分钟
-
尽量减少外部 API 调用
-
使用高效的算法和数据结构
-
实施正确的错误处理
-
训练前要彻底测试
-
利用 Lambda 的并行扩展功能
积极监控训练:
-
跟踪一段时间内的平均奖励分数
-
观看各样本的奖励分配
-
比较训练奖励与验证奖励
-
寻找相关的模式(高原、过度拟合、不稳定)
根据结果进行迭代:
-
如果几次迭代后奖励仍未改善,请调整奖励功能设计
-
增加数据集的多样性以提供更清晰的学习信号
-
如果奖励保持在零附近,可以考虑改用 SFT
-
使用不同的超参数(学习率、批次大小)进行实验
优化数据质量:
-
确保示例多样化、具有代表性
-
包括边缘案例和困难样本
-
验证奖励函数对所有示例类型进行正确评分
-
移除或修复混淆奖励功能的样本
问题排查
奖励功能错误:
症状:训练期间奖励函数调用的错误率很高
问题 |
症状 |
解决方案 |
|---|---|---|
Lambda 超时 |
15 分钟后频繁超时 |
优化功能性能;考虑使用 Nova Forge 进行复杂的评估 |
并发度不足 |
Lambda 限制错误 |
提高 lambda_concurrency_limit 或请求增加配额 |
返回格式无效 |
训练因格式错误而失败 |
验证返回结构是否与所需的接口格式相匹配 |
未处理的异常 |
间歇性错误 |
添加全面的错误处理和日志记录 |
外部 API 失败 |
得分不一致 |
实施重试逻辑和后备策略 |
训练表现不佳:
症状:奖励没有改善或在低值时停滞不前
决议:
-
验证奖励功能的正确性:使用已知示例进行测试 good/bad
-
检查基线性能:评估基础模型;如果精度接近零,请先进行 SFT
-
增加数据多样性:添加涵盖不同场景的更多样化示例
-
调整超参数:尝试不同的学习率或批次大小
-
查看奖励信号质量:确保奖励区分好坏响应
过度合身:
症状:训练奖励增加,而验证奖励减少
决议:
-
减少训练步骤:尽早停止训练
-
增加数据集大小:添加更多训练示例
-
添加正则化:调整或
weight_decayentropy_coeff -
增加数据多样性:确保训练集代表完全分布