SFT Memorizes, RL Generalizes: A Comparative Study of Foundation Model Post-training

本文是LLM系列问题,针对《SFT Memorizes, RL Generalizes: A Comparative Study of Foundation Model Post-training》的翻译。

SFT记忆,RL概括:基础模型后训练的比较研究

摘要

监督微调(SFT)和强化学习(RL)是基础模型训练后广泛使用的技术。然而,它们在增强模型泛化方面各自的作用尚不清楚。本文研究了SFT和RL在泛化和记忆方面的比较效果,重点研究了基于文本和视觉环境。我们介绍了算术推理纸牌游戏GeneralPoints,并考虑了现实世界的导航环境V-IRL,以评估用SFT和RL训练的模型如何泛化到文本和视觉领域中看不见的变体。我们发现,强化学习,特别是在基于结果的奖励训练中,在基于规则的文本和视觉环境中都具有普遍性。相比之下,SFT倾向于记忆训练数据,并在任何一种情况下都难以进行非分布的泛化。进一步的分析表明,强化学习提高了模型的潜在视觉识别能力,有助于增强其在视觉领域的泛化能力。尽管强化学习具有优越的泛化能力,但我们表明SFT仍然有助于有效的强化学习训练:SFT稳定了模型的输出格式,使后续的强化学习能够实现其性能提升。这些发现证明了强化学习在复杂、多模态任务中获取可概括知识的优势。

1 引言

2 相关工作

3

<think>好的,我现在需要解决用户在运行sft.py时遇到的--tuner_backend参数错误的问题。用户提到错误是“invalid choice: 'swift' (choose from 'peft', 'unsloth')”。首先,我需要理解这个错误的原因。 用户可能在使用某个库或框架,比如SWIFT(Scalable lightWeight Infrastructure for Fine-Tuning),而sft.py脚本中的--tuner_backend参数选项只有'peft'和'unsloth',但用户尝试选择了'swift',导致错误。这表明用户可能误解了参数的可用选项,或者版本不兼容。 接下来,我需要检查可能的解决方案。首先,确认用户安装的SWIFT库版本是否支持作为tuner_backend的参数。如果SWIFT需要特定版本的库或者需要额外配置才能作为后端,用户可能需要更新库或安装扩展。例如,查看官方文档是否有关于使用SWFT作为tuner_backend的说明。 另外,可能是用户混淆了参数名。例如,某些情况下参数可能有不同的名称,或者需要额外的标志启用SWIFT支持。用户应检查sft.py的帮助文档或源码,确认--tuner_backend的有效选项。如果源码中确实只有'peft'和'unsloth',那么可能需要手动修改代码或联系开发者支持SWIFT。 还有一种可能性是用户的环境中有多个版本的库,导致参数选项未被正确识别。建议用户检查安装的库版本,并尝试重新安装或升级相关依赖,如peft、unsloth和swift。 最后,如果SWIFT不被支持作为后端,用户可能需要使用现有的选项,比如peft,或者寻找其他支持SWIFT的脚本版本。同时,建议用户查阅相关文档或社区讨论,看看是否有其他人遇到类似问题及解决方案。 总结,解决步骤可能包括:检查参数选项的正确性、更新或重新安装相关库、查阅文档确认支持情况、修改代码或联系开发者寻求支持。</think>关于sft.py中`--tuner_backend`参数的无效选择错误,以下是分步解决方案: ### 错误分析 当出现`argument --tuner_backend: invalid choice: 'swift' (choose from 'peft', 'unsloth')`时,说明: 1. 当前脚本版本仅支持`peft`和`unsloth`两种微调后端 2. `swift`尚未被添加为有效选项或需要特定环境配置[^1] ### 解决方案 #### 方法1:使用有效参数 直接选择现有支持的参数: ```bash python sft.py --tuner_backend peft # 或 python sft.py --tuner_backend unsloth ``` #### 方法2:升级依赖库 通过更新相关库获取最新功能支持: ```bash pip install --upgrade peft unsloth swift ``` #### 方法3:源码级修改 在`sft.py`中找到参数定义位置(通常在`parser.add_argument()`部分),手动添加`swift`选项: ```python parser.add_argument( '--tuner_backend', type=str, choices=['peft', 'unsloth', 'swift'], # 手动添加swift default='peft' ) ``` ### 验证步骤 1. 查看帮助文档确认参数有效性 ```bash python sft.py --help ``` 2. 检查输出的`--tuner_backend`选项中是否包含`swift` ### 扩展说明 - `peft`:Parameter-Efficient Fine-Tuning的标准实现 - `unsloth`:针对显存优化的微调方案 - `swift`:需要SWIFT库>=1.6版本支持的新特性[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值