DeepEyesV2 标志

让AI不仅能”看见”,更能将视觉信息融入推理过程


论文链接


SFT数据集


RL数据集


模型 checkpoint


项目主页

标志设计灵感来源于甲骨文”目”字。

什么是 DeepEyesV2?

正如 OpenAI 在相关文章中提到的:”它们不只是看到图像,还能将视觉信息直接整合到推理链中。” DeepEyesV2 正是这样一款模型——它是一个具有代理能力的多模态模型,能够在单一推理循环中统一代码执行和网络搜索功能,从而实现可靠且复杂的推理过程。

简单来说,DeepEyesV2 就像一个拥有视觉能力的智能助手,它不仅能理解文字和图像,还能通过编写代码、执行计算、搜索网络等方式解决问题。这种能力让它在处理需要综合分析、逻辑推理和外部信息获取的任务时表现出色。

DeepEyesV2 有哪些新特性?

相比传统的多模态模型,DeepEyesV2 带来了多项重要突破:

  1. 一体化推理循环
    首次实现了在单一推理流程中同时支持代码执行和网络搜索,让模型能够根据任务需求自主选择工具,形成闭环的问题解决能力。

  2. 精心构建的训练数据
    通过严格的数据筛选和清洗,构建了冷启动 SFT(监督微调)数据和 RL(强化学习)数据,这两类数据相互补充,为模型性能奠定了坚实基础。

  3. 强大的跨领域能力
    在现实世界理解、数学推理和搜索密集型基准测试中进行的大量实验表明,DeepEyesV2 具备出色的推理能力和工具使用能力。

  4. 自适应的工具使用行为
    对 DeepEyesV2 的工具使用行为分析显示,它具有任务自适应模式。研究还发现,强化学习能够使模型实现更复杂的工具组合使用,以及具有适应性的、上下文感知的工具调用能力。

如何快速开始使用 DeepEyesV2?

数据准备

DeepEyesV2 的训练数据分为两类,你可以通过以下链接获取:

关于数据的详细准备方法,请参考 data 目录下的说明文档

冷启动训练

冷启动训练阶段使用 LLaMA-Factory 工具进行,具体步骤如下:

环境搭建

请参考 LLaMA-Factory 的官方文档,完成环境安装的详细步骤。

基础模型选择

我们使用 Qwen-2.5-VL-7B-Instruct 作为基础模型,同时也支持 Qwen-2.5-VL-32B-Instruct

启动训练

执行以下命令开始冷启动训练:

bash ./cold_start/run_cold_start.sh

强化学习训练

强化学习训练使用与 DeepEyes 相同的代码库,具体操作如下:

环境搭建

cd reinforcement_learning
# 遵循 VeRL 官方安装步骤
pip install -e .

# 安装 DeepEyes 所需的额外依赖
bash scripts/install_deepeyes.sh

代码沙箱配置

DeepEyesV2 能够编写代码、在沙箱中执行代码,并根据执行结果进行后续推理。与 o3 类似,DeepEyesV2 的代码遵循 Jupyter 风格。模型生成的代码会通过服务器接收并返回执行结果。

你可以按照这个 仓库 的说明部署代码服务器。我们使用 Redis 存储 Jupyter Notebook 的状态,因此需要自行安装 Redis。

在强化学习训练过程中,短时间内向单个节点传输大量高分辨率图像可能会导致带宽饱和,从而引发重传和超时问题。因此,我们建议:

  • 部署多个代码服务器以分散网络压力
  • 使用高性能机器运行代码服务器,确保快速响应

在实际操作中,我们在每个 GPU 节点上部署了大量代码服务器服务,你可以参考 该仓库 进行部署。通过这种方式,在训练过程中不会出现因网络、CPU 或其他硬件问题导致的超时。

在线搜索 API 配置

DeepEyesV2 能够通过搜索获取外部知识。在我们的实现中,使用在线搜索而非 RAG(检索增强生成):

  • 对于图像搜索,我们使用 MMSearch-R1 的缓存,你可以从 这里 下载相应的缓存数据。
  • 对于文本搜索,我们使用在线搜索服务。你可以使用自己的搜索 API,并修改 reinforcement_learning/verl/workers/agent/envs/deepeyesv2/search_utils.py 中的内容进行适配。

评判服务器部署

我们使用 Qwen 模型作为 “llm-as-a-judge” 进行验证。请按照 DeepEyes 的说明部署服务器:

# 下载 Qwen-2.5-72B-Instruct 模型
# 也可以使用其他模型,如 Qwen-3-8B 等
huggingface-cli download --resume-download https://huggingface.co/Qwen/Qwen2.5-72B-Instruct --local-dir /path/to/your/local/filedir --local-dir-use-symlinks False

# 启动 vllm 服务
vllm serve /path/to/your/local/filedir \
    --port 18901 \
    --gpu-memory-utilization 0.8 \
    --max-model-len 32768 \
    --tensor-parallel-size 8 \ 
    --served-model-name "judge" \
    --trust-remote-code \
    --disable-log-requests

强化学习优化执行

硬件配置建议:

  • 7B 模型训练:不少于 32 块 GPU(4 个节点 × 8 块 GPU)
  • 32B 模型训练:不少于 64 块 GPU(8 个节点 × 8 块 GPU)

每个节点建议配备不少于 1200GB 的 CPU 内存,因为高分辨率图像会消耗大量内存。

训练步骤:

  1. 为所有训练节点构建 ray 集群
  2. 开始训练前准备好数据
  3. 使用以下脚本启动训练:
cd reinforcement_learning
# 输入你的 wandb 访问密钥
wandb login

# 设置 Qwen-2.5-72B-Instruct vllm 服务的 IP 和端口
export LLM_AS_A_JUDGE_BASE="http://your.vllm.machine.ip:18901/v1"

# 7B 模型的配置
bash examples/deepeyesv2/run_qwen2_5_vl-7b_final_allin.sh

训练脚本会使用 wandbRL Logging Board(优秀的工具)来可视化训练动态。

模型评估

关于模型评估的详细方法,请参见 evaluation 目录下的说明文档

常见问题解答

DeepEyesV2 与其他多模态模型有什么区别?

DeepEyesV2 的核心区别在于它将代码执行和网络搜索功能统一到了单一推理循环中,形成了一个具有代理能力的系统。这意味着它不仅能理解文字和图像,还能主动使用工具解决问题,而无需人工干预。

我需要什么硬件才能运行 DeepEyesV2 的训练?

对于 7B 模型,建议使用不少于 32 块 GPU(4 个节点 × 8 块 GPU);对于 32B 模型,则需要不少于 64 块 GPU(8 个节点 × 8 块 GPU)。每个节点还需要至少 1200GB 的 CPU 内存来处理高分辨率图像。

如何获取 DeepEyesV2 的训练数据?

训练数据分为冷启动 SFT 数据和 RL 数据,均可在 Hugging Face 上获取:

DeepEyesV2 支持哪些基础模型?

目前支持 Qwen-2.5-VL-7B-Instruct 和 Qwen-2.5-VL-32B-Instruct 作为基础模型。

代码沙箱的作用是什么?

代码沙箱允许 DeepEyesV2 安全地编写和执行代码,特别是用于处理数学计算、数据分析等需要精确计算的任务。通过沙箱执行代码后,模型可以根据结果进一步推理,提高问题解决能力。

为什么需要多个代码服务器?

在强化学习训练中,大量高分辨率图像的传输可能导致带宽饱和。部署多个代码服务器可以分散网络压力,避免超时和传输错误,确保训练过程的稳定进行。

如何评估 DeepEyesV2 的性能?

评估方法详情请参考项目中的 evaluation 文档,其中包含了在各种基准测试上的评估流程和指标。

DeepEyesV2 的开源协议是什么?

该项目基于 Apache 许可证 发布,允许商业使用,但需要遵守许可证中的相关条款。

项目影响力

自发布以来,DeepEyesV2 受到了广泛关注,以下是项目的星标增长情况:

Star History Chart

引用说明

如果您在研究或项目中使用了 DeepEyesV2,请引用以下论文:

@article{hong2025deepeyesv2,
  title={DeepEyesV2: Toward Agentic Multimodal Model},
  author={Jack Hong, Chenxiao Zhao, ChengLin Zhu, Weiheng Lu, Guohai Xu and Xing Yu},
  journal={arXiv preprint arXiv:2511.05271},
  year={2025}
}

通过以上内容,相信你对 DeepEyesV2 有了全面的了解。如果在使用过程中遇到任何问题,可以参考项目文档或访问项目主页获取更多帮助。