❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
大家好,我是蚝油菜花,今天跟大家分享一下 Satori 这个由 MIT、哈佛大学等机构联合推出的大语言推理模型。
🚀 快速阅读
Satori 是一个 7B 参数的大型语言模型,专注于提升推理能力。
- 核心功能:具备自回归搜索和自我纠错能力,能够在数学推理和跨领域任务中表现出色。
- 技术原理:采用行动-思维链(COAT)机制和两阶段训练框架,通过强化学习优化模型性能。
Satori 是什么
Satori 是由 MIT、哈佛大学等机构研究者推出的 7B 参数大型语言模型,专注于提升推理能力。基于 Qwen-2.5-Math-7B,Satori 通过小规模的格式微调和大规模的增强学习实现了先进的推理性能。
该模型引入了行动-思维链(COAT)机制,通过特殊的元动作标记引导模型进行推理。Satori 在数学推理和跨领域任务中表现出色,展现了优异的泛化能力。Satori 的代码、数据和模型均已开源,为研究人员和开发者提供了宝贵资源。
Satori 的主要功能
- 自回归搜索能力:Satori 通过自我反思和探索新策略,能进行自回归搜索,无需外部指导即可完成复杂的推理任务。
- 数学推理:Satori 在数学推理基准测试中取得了最佳成绩,展现出卓越的推理能力。
- 跨领域任务:除了数学领域,Satori 在逻辑推理、代码推理、常识推理和表格推理等跨领域任务中也表现出色,具有很强的泛化能力。
- 自我反思与纠错能力:Satori 在推理过程中能自我反思并进行自我纠错,提升了推理的准确率。
- 强化学习优化:采用行动-思维链(COAT)机制和两阶段训练框架,包括小规模格式调优和大规模自我优化,主要依靠强化学习(RL)实现先进的推理性能。
Satori 的技术原理
行动-思维链(COAT)推理:
- 继续推理(<|continue|>):鼓励模型生成下一个中间步骤。
- 反思(<|reflect|>):验证之前的推理步骤是否正确。
- 探索替代方案(<|explore|>):识别推理中的漏洞并探索新的解决方案。
两阶段训练框架:
- 小规模格式调优阶段:在少量推理轨迹示例的小数据集上进行微调,使模型熟悉 COAT 推理格式。
- 大规模自我优化阶段:通过强化学习(RL)优化模型性能,采用重启与探索(RAE)技术,提升模型的自回归搜索能力。
如何运行 Satori-7B-Round2
快速部署(WebUI)
1. 克隆项目到本地
首先,您需要从 GitHub 克隆项目到本地。执行以下命令:
git clone https://github.com/Airmomo/satori-7b-round2-webui.git
cd satori-7b-round2-webui
2. 创建虚拟环境
为了确保项目的依赖项不会影响您的系统环境,建议创建一个虚拟环境。执行以下命令来创建虚拟环境:
python -m venv myenv
3. 激活虚拟环境
根据您的操作系统,使用不同的命令来激活虚拟环境:
3.1 Windows
myenv\Scripts\activate
3.2 macOS/Linux
source myenv/bin/activate
4. 安装依赖包
激活虚拟环境后,安装项目所需的依赖包。执行以下命令:
pip install torch vllm gradio tqdm
5. 运行程序
安装完成后,您可以运行程序。执行以下命令启动 WebUI:
python gradio_app.py
程序会自动下载模型文件并启动推理引擎和 Gradio App。下载完成后,您将看到类似以下的输出,显示 Gradio App 的访问地址:
* Running on local URL: http://127.0.0.1:7860
* Running on public URL: https://62c32ff6bbd7ca4d2f.gradio.live
手动部署
1. 准备环境
通过以下命令安装所需的库:
pip install torch vllm tqdm
2. 加载模型
Satori-7B-Round2 是基于 Qwen-2.5-Math-7B 模型训练的,因此你需要下载并加载该模型。你可以从 Hugging Face 或其他模型仓库中获取模型文件。假设你已经下载了模型文件并存储在本地路径 Satori-reasoning/Satori-7B-Round2
,接下来可以加载模型。
from vllm import LLM, SamplingParams
def load_model(model_path):
llm = LLM(
model=model_path,
trust_remote_code=True,
tensor_parallel_size=1,
)
return llm
3. 配置推理参数
为了生成高质量的推理结果,你可以通过 SamplingParams
来配置推理参数。以下是推荐的参数设置:
max_tokens=4096
:限制生成的最大 token 数量。temperature=0.0
:使用贪婪搜索(greedy sampling),确保生成的结果更加稳定。n=1
:每次生成一条推理路径。skip_special_tokens=True
:隐藏特殊 token,如<|continue|>
、<|reflect|>
和<|explore|>
,这些 token 用于内部推理控制,但不希望出现在最终输出中。
def configure_sampling_params():
sampling_params = SamplingParams(
max_tokens=4096,
temperature=0.0,
n=1,
skip_special_tokens=True
)
return sampling_params
4. 构建提示
Satori-7B-Round2 采用了 Chain-of-Action-Thought (COAT) 推理框架,因此在构建提示时,建议使用清晰的指令来引导模型进行逐步推理。以下是一个示例提示格式:
def prepare_prompt(question):
prompt = f"Solve the following math problem efficiently and clearly.\nPlease reason step by step, and put your final answer within \\boxed{
{}}.\nProblem: {question}"
return prompt
5. 生成推理结果
接下来,你可以编写一个函数来生成推理结果。该函数会加载模型、配置推理参数,并为给定的问题生成推理路径。
def generate(question_list, model_path):
llm = load_model(model_path)
sampling_params = configure_sampling_params()
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
6. 运行示例
以下是一个完整的示例代码,展示了如何使用 Satori-7B-Round2 来解决一个简单的数学问题:
def run():
model_path = "Satori-reasoning/Satori-7B-Round2"
all_problems = [
"which number is larger? 9.11 or 9.9?",
]
completions = generate(
[prepare_prompt(problem) for problem in all_problems],
model_path
)
for completion in completions:
print(completion[0])
if __name__ == "__main__":
run()
7. 输出结果
运行上述代码后,Satori-7B-Round2 将会输出一个逐步推理的过程,并给出最终答案。例如,对于问题 "which number is larger? 9.11 or 9.9?",输出可能如下所示:
To determine which number is larger, we compare 9.11 and 9.9.
1. Compare the integer parts: both numbers have the same integer part, which is 9.
2. Compare the decimal parts: 9.11 has a decimal part of 0.11, while 9.9 has a decimal part of 0.9.
3. Since 0.9 is greater than 0.11, 9.9 is the larger number.
Therefore, the larger number is \boxed{9.9}.
资源
- GitHub 仓库:https://github.com/Airmomo/satori-7b-round2-webui
- HuggingFace 仓库:https://huggingface.co/Satori-reasoning
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 微信公众号|搜一搜:蚝油菜花 🥦