综合介绍
ReSearch 是一个开源研究工具,由 Agent-RL 团队开发,旨在通过强化学习(Reinforcement Learning, RL)提升大型语言模型(LLM)的搜索和推理能力。项目灵感来源于 Deepseek-R1-Zero 和 OpenAI 的 Deep Research,基于 Qwen2.5-7B 模型,利用 GRPO(Generalized Reward Policy Optimization)方法从零开始训练,使模型仅依靠奖励信号自主调用搜索工具,无需监督数据。ReSearch 在 HotpotQA 数据集上验证了效果,并能泛化至 Bamboogle 和 StrategyQA 等数据集。托管于 GitHub,提供完整代码和实验文档,适合研究人员复现或扩展 RL 与 LLM 结合的探索。
功能列表
- 强化学习训练管道:支持从零开始训练大模型,提供完整的参数配置和奖励信号设计。
- 搜索工具调用:模型可根据问题自动调用搜索工具,提升复杂推理任务的准确性。
- 多数据集适配:在 HotpotQA 训练后,能扩展至 Bamboogle、StrategyQA 等数据集。
- 性能评估支持:集成 FlashRAG 环境,快速测试模型在开发集上的表现。
- 开源实现:提供详细代码和实验配置,便于研究复现和二次开发。
使用帮助
安装流程
ReSearch 需要在 GPU 环境下运行,依赖 verl 和 FlashRAG 框架。以下是详细安装步骤:
1. 环境准备
- 系统要求:推荐 Linux(如 Ubuntu),Windows 可能存在兼容性问题。
- Python 版本:需 Python 3.11 或以上。
- GPU 配置:支持 NVIDIA GPU,安装 CUDA 12.4(与 torch 版本匹配)。
2. 克隆仓库
在终端输入以下命令:
git clone https://github.com/Agent-RL/ReSearch.git
cd ReSearch
3. 安装 verl 环境
ReSearch 基于 verl 进行强化学习训练,安装步骤如下:
cd verl
pip3 install -e .
cd ..
- 依赖版本:torch==2.4.0+cu124,vllm==0.6.3,ray==2.10.0。若有冲突,手动安装:
pip install torch==2.4.0+cu124 vllm==0.6.3 ray==2.10.0
4. 安装 FlashRAG 环境
FlashRAG 用于评估和 RAG 服务,安装方法:
git clone https://github.com/RUC-AIBox/FlashRAG.git
cd FlashRAG
pip3 install -e .
cd ../ReSearch
5. 下载预训练模型
默认使用 Qwen2.5-7B,从 Hugging Face 下载:
git lfs install
git clone https://huggingface.co/Qwen/Qwen2.5-7B
记录模型路径,稍后配置使用。
使用方法
启动 RAG 服务
- 下载预索引数据:从 FlashRAG 文档获取 Wikipedia 索引、语料库和检索模型。
- 配置服务:编辑
rag_serving/serving_config.yaml
,填入检索模型、索引、语料库路径及可用 GPU ID。 - 运行服务:
conda activate flashrag python rag_serving/serving.py --config rag_serving/serving_config.yaml --num_retriever 1 --port 8000
服务运行后,提供搜索支持。
训练模型
- 准备数据:下载 HotpotQA 数据集,运行预处理脚本:
python training/data_preprocess_hpqa.py
生成的训练和开发数据保存为 parquet 格式。
- 配置参数:修改
training/run.sh
,设置模型路径、搜索 URL、数据路径等。 - 启动训练:
conda activate verl bash training/run.sh --actor_model_path /path/to/Qwen2.5-7B --search_url http://localhost:8000 --train_data_path data/train.parquet --dev_data_path data/dev.parquet --save_path runs/
- 单节点 8 GPU 训练,多节点需使用 ray 调整。
评估模型
- 启动模型服务:训练完成后,使用 SGLang 部署模型:
python3 -m sglang.launch_server --served-model-name research --model-path runs/trained_model --tp 2 --context-length 8192 --port 80
- 运行评估:
python evaluation/run_eval.py --config_path evaluation/eval_config.yaml --method_name research --split dev --dataset_name hotpotqa
- 结果保存至
evaluation/results/
,支持切换数据集(如 Bamboogle)。
- 结果保存至
特色功能操作
- 搜索工具调用:
- 训练后,模型可自动判断是否调用搜索工具。例如,输入“How many moons does Jupiter have?”:
python inference.py --model_path runs/trained_model --question "How many moons does Jupiter have?"
输出示例:
Jupiter has 95 known moons as of 2025.
。 - 流程:模型根据问题生成搜索查询,调用 RAG 服务获取信息后推理回答。
- 训练后,模型可自动判断是否调用搜索工具。例如,输入“How many moons does Jupiter have?”:
- 跨数据集泛化:
- 测试模型在 StrategyQA 上的表现:
python evaluation/run_eval.py --config_path evaluation/eval_config.yaml --method_name research --split dev --dataset_name strategyqa
输出包含推理过程和答案,验证泛化能力。
- 测试模型在 StrategyQA 上的表现:
注意事项
- 硬件需求:训练需 24GB 以上显存,评估需 16GB。
- 日志监控:使用 TensorBoard 查看训练进展:
tensorboard --logdir runs/
- 故障排查:若报错,检查依赖版本或查看 GitHub Issues。
通过以上操作,用户可完整复现 ReSearch 实验,探索强化学习与大模型的结合。