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

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

监控 RFT 训练

在培训期间监控关键指标,确保有效学习,尽早发现潜在问题。

要跟踪的关键指标

在训练 MlFlow 期间使用以下指标进行监控:

奖励指标:

  • 平均奖励分数:模型响应的总体质量(应随着时间的推移而提高)

  • 奖励分配:获得高、中、低奖励的回复百分比

  • 训练与验证奖励:比较以检测过度拟合

训练指标:

  • 政策更新:成功更新体重的次数

  • 推出完成率:成功评估的样本百分比

关于模式:

  • 奖励停滞不前(表示学习不佳)

  • 验证奖励掉落,而训练奖励增加(过度拟合)

  • 随着时间的推移,奖励差异显著增加(不稳定)

  • 奖励功能错误的比例很高(实现问题)

何时停止训练:

  • 目标绩效指标已达到

  • 奖励处于停滞状态,不再提高

  • 验证性能下降(检测到过度拟合)

  • 已达到最高培训预算

超参数指导

根据您的训练方法,使用以下推荐的超参数:

将军:

  • 时代:1

  • 学习率 (lr):1e-7

  • 世代数:8

  • 新代币上限:8192

  • 批次大小:256

LoRa(低等级适应):

  • LoRa 等级:32

注意

根据您的数据集大小和验证性能调整这些值。监控训练指标以防止过度拟合。

RFT 之后的评估

训练完成后,评估经过微调的模型以评估性能改进:

  • 运行 RFT 评估作业:使用 RFT 训练中的检查点作为模型

  • 与基准比较:在同一个测试集上评估基础模型和微调模型

  • 分析指标:查看特定任务的指标(准确性、奖励分数等)

  • 进行定性审查:手动检查样品输出的质量

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

使用经过微调的模型

访问检查点:

训练完成后,找到您的检查点:

  1. 在 S3 output_path 中导航到你的

  2. 下载并解压 output.tar.gz

  3. 打开 manifest.json

  4. 复制该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_decay entropy_coeff

  • 增加数据多样性:确保训练集代表完全分布