© 加速工具
jiasugongju#
outlook.com

在大语言模型(LLMs)的发展进程中,搜索能力是一个重要的研究方向,阿里巴巴研究团队的ZeroSearch是一种全新的强化学习框架,能在不与真实搜索引擎交互的情况下,激发大语言模型的搜索能力。

ZeroSearch通过监督微调,将大语言模型转变为一个检索模块,这个检索模块可以根据查询生成相关文档,同时也会生成一些噪声文档。研究团队引入了课程展开机制,通过让模型接触越来越有挑战性的检索场景,逐步激发模型的推理能力。

研究人员在领域内和领域外的数据集上都进行了大量实验,实验结果显示,ZeroSearch的表现优于基于真实搜索引擎的模型,而且它无需支付API费用。ZeroSearch在各种大小的基础模型和指令微调模型上都有良好的泛化能力,支持不同的强化学习算法。

下面是一些主要的实验结果对比:

方法 单跳问答(NQ、TriviaQA、PopQA) 多跳问答(HotpotQA、2Wiki、Musique、Bamboogle) 平均得分
Qwen-2.5-7B-Base/Instruct(直接回答) 11.60、35.60、1.20 16.40、22.20、4.80、14.40 15.17
Qwen-2.5-7B-Base/Instruct(思维链) 12.80、35.60、3.80 16.20、22.60、6.60、24.00 17.37
Qwen-2.5-7B-Base/Instruct(RAG) 27.40、58.20、17.80 25.80、23.20、9.40、16.80 25.51
RA-Agent 21.20、40.20、8.80 19.60、19.60、7.60、28.00 20.71
Search-o1 19.40、40.60、11.40 17.00、27.00、8.60、30.40 22.06
R1-base 25.15、43.18、22.29 21.02、28.46、9.76、24.80 24.95
R1-instruct 25.25、42.68、27.81 20.45、26.83、8.33、27.05 25.49
Search-R1-base 41.51、60.53、51.02 32.25、36.31、16.39、28.00 38.00
Search-R1-inst 41.46、62.17、49.80 34.55、34.22、19.43、33.06 39.24
ZEROSEARCH-base 41.84、63.54、51.72 30.30、40.33、12.25、30.25 38.61
ZEROSEARCH-inst 43.24、61.81、51.52 29.21、43.12、19.72、35.20 40.54
Qwen-2.5-3B-Base/Instruct(直接回答) 12.40、30.60、5.60 16.00、19.20、4.40、16.80 15.00
Qwen-2.5-3B-Base/Instruct(思维链) 15.00、33.60、3.60 16.20、18.00、3.60、12.80 14.69
Qwen-2.5-3B-Base/Instruct(RAG) 31.60、58.00、15.20 24.20、23.20、8.20、15.20 25.09
RA-Agent 15.20、28.40、6.60 12.60、16.60、2.60、13.60 13.66
Search-o1 16.60、31.00、8.20 14.80、22.40、5.20、22.40 17.23
R1-base 21.46、34.02、16.29 22.67、28.57、5.51、7.20 19.39
R1-instruct 17.41、33.13、18.40 18.90、25.66、4.69、15.32 19.07
Search-R1-base 41.13、61.22、40.73 27.64、31.97、12.17、12.40 32.47
Search-R1-inst 40.82、59.11、42.76 30.83、31.10、8.37、13.01 32.28
ZEROSEARCH-base 41.21、61.49、43.99 31.02、33.20、12.58、14.29 33.97
ZEROSEARCH-inst 66.19、57.29、23.39 24.44、30.75、9.39、19.67 33.02
LLaMA-3.2-3B-Base/Instruct(直接回答) 16.20、29.60、7.40 12.60、9.20、2.00、8.00 12.14
LLaMA-3.2-3B-Base/Instruct(思维链) 26.20、44.40、2.80 16.00、10.20、5.80、21.60 18.14
LLaMA-3.2-3B-Base/Instruct(RAG) 30.00、57.60、26.40 23.40、17.60、9.60、11.20 25.11
RA-Agent 22.40、36.20、11.40 16.60、21.00、5.60、26.40 19.94
Search-o1 24.20、48.40、8.80 19.40、17.40、6.00、32.00 22.31
R1-base 26.63、42.31、20.16 22.56、28.31、7.36、15.45 23.25
R1-instruct 32.32、52.43、25.98 19.51、29.21、10.34、21.95 27.39
Search-R1-base 40.85、61.68、44.47 28.25、32.66、13.74、12.10 33.39
Search-R1-inst 43.72、56.44、45.49 22.45、23.37、9.27、18.70 31.35
ZEROSEARCH-base 40.28、61.87、49.80 30.57、35.05、14.75、14.52 35.26
ZEROSEARCH-inst 40.52、60.41、48.99 20.98、27.40、6.35、13.71 31.19

从表格数据能看出,ZeroSearch在不同模型和任务上,相比其他方法有一定优势。

ZeroSearch使用指南

1、创建激活虚拟环境:使用conda创建名为zerosearch的虚拟环境,指定Python版本为3.9,然后激活该环境。

conda create -n zerosearch python=3.9
conda activate zerosearch

2、安装依赖项:安装项目所需的各种库,包括torch、vllm、wandb、serpapi等。

pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121
pip install vllm==0.6.3
pip install wandb
pip install serpapi
# verl
pip install -e.
# flash attention 2
pip3 install flash-attn --no-build-isolation
# sglang
pip install sglang

3、下载训练数据集:使用huggingface-cli下载训练数据集。

huggingface-cli download --repo-type dataset --resume-download sunhaonlp/ZeroSearch_dataset --local-dir ZeroSearch_dataset

4、下载模拟大语言模型:根据需求选择不同参数规模的模型下载。

huggingface-cli download --resume-download sunhaonlp/SearchSimulation_3B --local-dir SearchSimulation_3B
huggingface-cli download --resume-download sunhaonlp/SearchSimulation_7B --local-dir SearchSimulation_7B
huggingface-cli download --resume-download sunhaonlp/SearchSimulation_14B --local-dir SearchSimulation_14B

5、启动本地模拟服务器:有基于提示的模拟和基于微调的模拟两种方式。

# 基于提示的模拟
python -m sglang.launch_server --model-path Qwen2.5-14B-Instruct --host 0.0.0.0 --tp 2 --dp 2 --port 6001
# 基于微调的模拟
python -m sglang.launch_server --model-path SearchSimulation_14B --host 0.0.0.0 --tp 2 --dp 2 --port 6001

6、进行强化学习训练:以Llama-3.2-3B模型为例,设置好Google Search API密钥后,就能使用提供的脚本进行GRPO或PPO训练。

# 激活Conda环境
conda activate zerosearch
# 设置Google Search API密钥
export SER_API_KEY=your_api_key
# 基于提示的模拟
bash train_grpo.sh NUM_GPUS_PER_NODE 4 MODEL_PATH Llama-3.2-3B DATA_PATH ZeroSearch_dataset TOTAL_STEPS 203 IP localhost SEARCH_MODE simulate_prompt SIMULATION_LLM Qwen2.5-14B-Instruct START_THRESHOLD 0.25 END_THRESHOLD 0.5
bash train_ppo.sh NUM_GPUS_PER_NODE 4 MODEL_PATH Llama-3.2-3B DATA_PATH ZeroSearch_dataset TOTAL_STEPS 203 IP localhost SEARCH_MODE simulate_prompt SIMULATION_LLM Qwen2.5-14B-Instruct START_THRESHOLD 0.25 END_THRESHOLD 0.5
# 基于微调的模拟
bash train_grpo.sh NUM_GPUS_PER_NODE 4 MODEL_PATH Llama-3.2-3B DATA_PATH ZeroSearch_dataset TOTAL_STEPS 203 IP localhost SEARCH_MODE simulate_sft SIMULATION_LLM SearchSimulation_14B START_THRESHOLD 0.25 END_THRESHOLD 0.5
bash train_ppo.sh NUM_GPUS_PER_NODE 4 MODEL_PATH Llama-3.2-3B DATA_PATH ZeroSearch_dataset TOTAL_STEPS 203 IP localhost SEARCH_MODE simulate_sft SIMULATION_LLM SearchSimulation_14B START_THRESHOLD 0.25 END_THRESHOLD 0.5