Files
Satori-7B-Round2/README.md
ModelHub XC f0ba5a61d5 初始化项目,由ModelHub XC社区提供模型
Model: okwinds/Satori-7B-Round2
Source: Original Platform
2026-09-20 05:20:14 +08:00

197 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
frameworks:
- Pytorch
license: Apache License 2.0
tasks:
- text-generation
---
# 本模型论文解读,请看公众号文章 👇🏻
### <img src="https://www.modelscope.cn/datasets/okwinds/Human-Like-DPO-Dataset/resolve/master/wechat.png" width="30" height="30" align="absmiddle"> 觉察流 - [Satori 带来 COAT解锁大语言模型自省及推理潜能告别教师模型](https://mp.weixin.qq.com/s/hnqv6YE4Cca2_lrJm5vcxg)
> <span style="color:red;font-size:16px"> 声明:本模型完全转载自 Huggingface 上的 [Satori-reasoning/Satori-7B-Round2](https://huggingface.co/Satori-reasoning/Satori-7B-Round2) <br/>更多模型信息,请关注下文👇🏻, 为原数据集仓库的中文版说明。</span>
<br/>
#### _仓库作者在此 👇🏻 扫一扫_
<img src="https://www.modelscope.cn/models/okwinds/GPT-2/resolve/master/qrcode_for_jcl_258.jpg" />
# 下载方式
### 当前模型的贡献者未提供更加详细的模型介绍。模型文件和权重,可浏览“模型文件”页面获取。
#### 您可以通过如下git clone命令或者ModelScope SDK来下载模型
SDK下载
```bash
#安装ModelScope
pip install modelscope
```
```python
#SDK模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('okwinds/Satori-7B-Round2')
```
Git下载
```
#Git模型下载
git clone https://www.modelscope.cn/okwinds/Satori-7B-Round2.git
```
# 模型介绍
**Satori-7B-Round2** 是一个基于开源模型Qwen-2.5-Math-7B和开源数据OpenMathInstruct-2 和 NuminaMath训练的 7B 大型语言模型LLM。**Satori-7B-Round2** 能够进行自回归搜索,即在没有外部指导的情况下进行自我反思和自我探索。这是通过我们提出的 Chain-of-Action-ThoughtCOAT推理方法和两阶段后训练范式实现的。
## 我们的方法
我们将 LLM 推理表述为一个序贯决策问题推理是一个逐步构建和优化答案的过程。具体来说LLM代理的策略从输入上下文初始状态开始生成一个推理步骤动作并更新上下文下一个状态。LLM 重复这一过程直到得出最终答案并接收一个评估最终答案是否与真实答案匹配的奖励。通过这种表述我们可以使用强化学习RL训练 LLM 推理,目标是生成一系列推理步骤,以最大化预期奖励。
### Chain-of-Action-Thought 推理COAT
实现自回归搜索的关键挑战是使 LLM 能够在没有外部干预的情况下确定何时进行反思、继续或探索替代解决方案。为此,我们引入了几个特殊的元动作标记,以引导 LLM 的推理过程:
- **继续推理**<\|continue\|>):鼓励 LLM 在当前推理轨迹的基础上生成下一个中间步骤。
- **反思**<\|reflect\|>):提示模型暂停并验证之前推理步骤的正确性。
- **探索替代解决方案**<\|explore\|>):信号模型识别推理中的关键缺陷并探索新的解决方案。
我们将这种表述称为 Chain-of-Action-ThoughtCOAT推理。每个 COAT 推理步骤是一个以其中一个元动作标记开头的标记序列。
### 训练框架概述
1. 一个小规模的格式调整FT阶段帮助基础 LLM 内化 COAT 推理格式。
2. 一个大规模的自我提升阶段利用强化学习和“重启和探索”RAE技术。
![schematic.png](https://www.modelscope.cn/models/okwinds/Satori-7B-Round2/resolve/master/img/schematic.png)
### 通过模仿学习进行格式调整
这一阶段的目标是微调预训练的基础 LLM使其模仿一些具有 COAT 推理格式的推理轨迹。为了合成包含尝试和错误的 COAT 轨迹,我们提出了一个多智能体数据合成框架,利用三个 LLM
- **生成器**:给定一个输入问题,生成器使用经典的 CoT 技术为给定输入问题生成多个推理路径。
- **评论家**:评论家评估生成器生成的推理路径的正确性,提供反馈以优化推理并解决次优步骤。
- **奖励模型**:奖励模型为优化后的推理路径分配分数,并选择最有效的路径作为最终演示轨迹。
这三个模型协作构建高质量的演示轨迹。我们观察到少量10K的演示轨迹足以让基础 LLM 遵循 COAT 推理格式。
### 通过强化学习进行自我提升
通过格式调整LLM 已经采用了 COAT 推理风格但在未见过的问题上泛化能力不足。RL 阶段旨在激励利用自我反思来提高推理的实际能力。我们从格式调整后的 LLM 开始,并进一步使用经典的 PPO 算法进行优化,同时采用两个关键策略:
- **重启和探索RAE**:受 Go-Explore 的启发,我们训练 LLM 策略不仅从问题陈述开始推理,还从过去轨迹中采样的中间步骤开始推理,无论是正确的还是错误的。我们还添加了探索奖励,以鼓励更深入的反思,进一步增加策略得出正确答案的机会。
- **迭代自我提升**:策略可能会收敛到局部次优解,无法进一步改进。受 Kickstarting 的启发,每轮 RL 训练后,我们将当前教师策略的知识通过监督微调蒸馏到学生模型(基础 LLM中。从新微调的 LLM 开始,我们再进行一轮 RL 训练。
**Satori-7B-Round2** 是通过第二轮迭代自我提升获得的。
## 使用方法
```python
import os
from tqdm import tqdm
import torch
from vllm import LLM, SamplingParams
def generate(question_list, model_path):
llm = LLM(
model=model_path,
trust_remote_code=True,
tensor_parallel_size=1,
)
sampling_params = SamplingParams(
max_tokens=4096,
temperature=0.0,
n=1,
skip_special_tokens=True # 隐藏special tokens如 "<\|continue\|>"、"<\|reflect\|>" 和 "<\|explore\|>"
)
outputs = llm.generate(question_list, sampling_params, use_tqdm=True)
completions = [[output.text for output in output_item.outputs] for output_item in outputs]
return completions
def prepare_prompt(question):
prompt = f"<|im_start|>user\n高效且清晰地解决以下数学问题。\n请逐步推理,并将最终答案放在 \\boxed{{}} 中。\n问题: {question}<|im_end|>\n<|im_start|>assistant\n"
return prompt
def run():
model_path = "Satori-reasoning/Satori-7B-Round2"
all_problems = [
"哪个数字更大9.11 还是 9.9",
]
completions = generate(
[prepare_prompt(problem_data) for problem_data in all_problems],
model_path
)
for completion in completions:
print(completion[0])
if __name__ == "__main__":
run()
```
## 基准测试性能
**Satori-7B-Round2** 在领域内推理基准(数学推理)和领域外基准(一般推理任务)上进行了评估。所有结果均报告为零样本 pass@1 准确率,使用贪婪采样。
### 评估任务
- **数学推理基准**GSM8K、MATH500、AMC2023、AIME2024 和 OlympiadBench。除了 GSM8K所有其他数据集都包含竞赛级别的问题。
- **一般领域推理基准**
- 逻辑推理FOLIO、BoardgameQABGQA
- 代码推理CRUXEval。
- 常识推理StrategyQASTGQA
- 表格推理TableBench。
- 特定领域推理MMLUPro STEM 子集STEM包括物理、化学、计算机科学、工程、生物学和经济学。
### 数学推理基准
**Satori-7B-Round2** 实现了 SOTA 性能并且优于使用相同基础模型Qwen-2.5-Math-7B的 Qwen-2.5-Math-7B-Instruct。
| 规模 | 模型 | GSM8K | MATH500 | OlymBench | AMC2023 | AIME2024 | 平均值 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| **大型** | Llama-3.1-70B-Instruct | 94.1 | 68.0 | 29.4 | 42.5 | 13.3 | 49.5 |
| | OpenMath2-Llama3.1-70B | 94.1 | 71.8 | 30.1 | 45.0 | 13.3 | 50.9 |
| | QwQ-32B-Preview | 95.5 | 90.6 | 61.2 | 77.5 | 50.0 | 75.0 |
| **小型** | Llama-3.1-8b-Instruct | 84.4 | 51.9 | 15.1 | 22.5 | 3.3 | 35.4 |
| | OpenMath2-Llama3.1-8B | 90.5 | 67.8 | 28.9 | 37.5 | 6.7 | 46.3 |
| | NuminaMath-7B-CoT | 78.9 | 54.6 | 15.9 | 20.0 | 10.0 | 35.9 |
| | Qwen-2.5-7B-Instruct | 91.6 | 75.5 | 35.5 | 52.5 | 6.7 | 52.4 |
| | Qwen-2.5-Math-7B-Instruct | 95.2 | 83.6 | 41.6 | 62.5 | 16.7 | 59.9 |
| | **Satori-7B-Round2** | 93.9 | 83.6 | 48.5 | 72.5 | 23.3 | **64.4** |
### 一般领域推理基准
仅在数学数据集上训练的 **Satori-7B-Round2** 在多种领域外推理基准上表现出强大的迁移能力,并且大幅超越了 Qwen-2.5-Math-7B-Instruct。此外尽管未在其他领域进行训练**Satori-7B-Round2** 的性能与或超过了其他小型通用指令模型。
| 规模 | 模型 | FOLIO | BGQA | CRUXEval | StrategyQA | TableBench | STEM | 平均值 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| **大型** | Llama-3.1-70B-Instruct | 65.0 | 58.3 | 59.6 | 88.8 | 34.2 | 61.7 | 61.3 |
| | OpenMath2-Llama3.1-70B | 68.5 | 68.7 | 35.1 | 95.6 | 46.8 | 15.1 | 55.0 |
| | QwQ-32B-Preview | 84.2 | 71.1 | 65.2 | 88.2 | 51.5 | 71.3 | 71.9 |
| **小型** | Llama-3.1-8b-Instruct | 63.5 | 50.3 | 38.5 | 92.2 | 32.4 | 43.4 | 53.4 |
| | OpenMath2-Llama3.1-8B | 57.1 | 49.0 | 11.1 | 84.4 | 34.2 | 10.9 | 41.1 |
| | NuminaMath-7B-CoT | 53.2 | 44.6 | 28.0 | 77.8 | 29.1 | 11.3 | 40.7 |
| | Qwen-2.5-7B-Instruct | 72.4 | 53.0 | 58.1 | 91.3 | 43.2 | 57.1 | **62.5** |
| | Qwen-2.5-Math-7B-Instruct | 68.9 | 51.3 | 28.0 | 85.3 | 36.2 | 45.2 | 52.5 |
| | **Satori-7B-Round2** | 72.9 | 58.5 | 41.1 | 90.4 | 44.6 | 57.4 | **60.8** |
## 资源
我们提供了我们的训练数据集:
- 包含 300K 个唯一问题的完整格式调整数据集。 [okwinds/Satori_FT_data](https://modelscope.cn/datasets/okwinds/Satori_FT_data)
- 包含 550K 个唯一问题的 RL 数据集。 [okwinds/Satori_RL_data](https://modelscope.cn/datasets/okwinds/Satori_RL_data)
## 引用
如果您觉得我们的模型和数据有帮助,请引用我们的论文:
```
@misc{shen2025satorireinforcementlearningchainofactionthought,
title={Satori: Reinforcement Learning with Chain-of-Action-Thought Enhances LLM Reasoning via Autoregressive Search},
author={Maohao Shen and Guangtao Zeng and Zhenting Qi and Zhang-Wei Hong and Zhenfang Chen and Wei Lu and Gregory Wornell and Subhro Das and David Cox and Chuang Gan},
year={2025},
eprint={2502.02508},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2502.02508},
}
```