🚀 ReFT: 基于强化微调的推理方法
本项目提出了强化微调(ReFT)方法,旨在增强大语言模型(LLMs)推理的泛化能力。项目提供了一系列基于GSM8k基准的微调模型,涵盖了预热监督微调、监督微调、重排模型以及强化微调等不同阶段的模型,为推理任务提供了多样化的解决方案。
🚀 快速开始
你可以通过Huggingface的Transformers库使用这些模型,也可以参考我们仓库中的脚本。
提示格式示例
Question:
Weng earns $12 an hour for babysitting. Yesterday, she
just did 50 minutes of babysitting. How much did she earn?
Answer reasoning:
预期响应示例
def solution():
"""Weng earns $12 an hour for babysitting. Yesterday, she just did
50 minutes of babysitting. How much did she earn?"""
hourly_rate = 12
minutes_worked = 50
hours_worked = minutes_worked / 60
earnings = hourly_rate * hours_worked
result = earnings
return result
✨ 主要特性
- 多样化模型:提供了预热监督微调、监督微调、重排模型以及强化微调等多种类型的模型,满足不同推理任务的需求。
- 基于GSM8k数据:模型在GSM8k数据集上进行训练,具有良好的推理能力。
- 可复现性:详细的训练过程和评估结果,方便研究人员复现和进一步改进。
📦 安装指南
文档未提供具体安装步骤,你可以参考仓库中的脚本进行安装和使用。
💻 使用示例
基础用法
按照上述提示格式和预期响应示例,通过Huggingface的Transformers库调用模型进行推理。
高级用法
可根据具体需求,参考仓库中的脚本对模型进行微调或优化。
📚 详细文档
训练数据
模型使用GSM8k数据以Python SDP CoT格式进行训练,数据可在此处找到。
训练过程
详细信息请参考我们的论文和仓库。
- ReFT模型:先使用GSM8k Python SDP训练数据进行2个epoch的监督微调预热,然后使用GSM8k训练集中的问题进行300个epoch的强化微调。
- 重排模型:在ReFT模型预热2个epoch后,使用其采样数据训练重排模型,以分类输出的思维链是否正确。
评估结果
研究论文的表4展示了模型的评估结果。更新结果如下:
模型 |
Top-1 |
Voting@100 |
Rerank@100 |
Codellama-7b-hf-SFT-warmup-GSM8k |
63.00 |
- |
- |
Codellama-7b-hf-SFT-GSM8k (+Codellama-7b-hf-SFT-Rerank-GSM8k) |
63.68 |
68.0 |
77.0 |
Codellama-7b-hf-ReFT-GSM8k (+Codellama-7b-hf-ReFT-Rerank-GSM8k) |
75.28 |
78.0 |
81.2 |
引用
如果你使用了我们的数据、模型或代码,请引用以下论文:
@misc{luong2024reft,
title={ReFT: Reasoning with Reinforced Fine-Tuning},
author={Trung Quoc Luong and Xinbo Zhang and Zhanming Jie and Peng Sun and Xiaoran Jin and Hang Li},
year={2024},
eprint={2401.08967},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
预期用途
Code Llama及其变体旨在用于英语和相关编程语言的商业和研究用途。基础模型Code Llama可用于各种代码合成和理解任务,Code Llama - Python专门用于处理Python编程语言,Code Llama - Instruct旨在更安全地用于代码助手和生成应用程序。
禁止用途
禁止以任何违反适用法律法规(包括贸易合规法律)的方式使用。禁止使用英语以外的语言。禁止以Code Llama及其变体的可接受使用政策和许可协议禁止的任何其他方式使用。
伦理考虑和局限性
Code Llama及其变体是一种新技术,使用时存在风险。到目前为止进行的测试均使用英语,且未涵盖也无法涵盖所有场景。因此,与所有大语言模型一样,Code Llama的潜在输出无法提前预测,模型在某些情况下可能会对用户提示产生不准确或令人反感的响应。因此,在部署Code Llama的任何应用程序之前,开发人员应针对模型的特定应用进行安全测试和调整。
请参阅负责任使用指南。
📄 许可证
本项目使用Llama2许可证,同时由于模型基于Codellama进行微调,Llama许可证也适用于这些模型。