🚀 ReFT: Reasoning with REinforced Fine-Tuning
REinforced Fine-tuning (ReFT) を用いて、大規模言語モデルの推論汎化能力を向上させる手法です。
🚀 クイックスタート
このリポジトリは、推論のための大規模言語モデルの汎化能力を高めるReFT手法に関連するモデルやデータを含んでいます。以下に、本リポジトリに含まれるモデルを示します。
⚠️ 重要提示
当社のモデルはCodellamaをベースに微調整されているため、Llamaライセンス など、Codellamaに適用されるライセンスもこれらのモデルに適用されます。
✨ 主な機能
- 推論のための大規模言語モデルの汎化能力を向上させるReFT手法を提供します。
- 複数の微調整モデルと再ランクモデルを提供し、推論性能を向上させます。
📦 インストール
本リポジトリのモデルを使用するには、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
📚 ドキュメント
訓練データ
モデルは、Python SDP CoT形式のGSM8kデータで訓練されています。データはこちら で確認できます。
訓練手順
詳細な手順については、論文とリポジトリを参照してください。
ReFTモデル
ReFTモデルは、GSM8kのPython SDP訓練データを用いて2エポックの教師あり微調整でウォームアップした後、GSM8k訓練セットの質問を用いて300エポックの強化学習微調整を行います。
再ランクモデル
再ランクモデルは、2エポックのウォームアップ後のReFTモデルのサンプリングデータを用いて、出力された思考過程が正しいかどうかを分類するように訓練されます。
評価結果
モデルの評価結果は、研究論文の表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 |
🔧 技術詳細
詳細な技術情報については、論文 と リポジトリ を参照してください。
📄 ライセンス
本リポジトリのモデルは、Llama2ライセンスの下で提供されています。
📚 引用
本データ、モデル、またはコードを使用する場合は、以下の論文を引用してください。
@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のアプリケーションを展開する前に、開発者はモデルの特定のアプリケーションに合わせた安全テストとチューニングを行う必要があります。
詳細については、責任ある使用ガイド を参照してください。