一、基本介绍

DeepEyes是由Visual-Agent团队开源的创新型AI项目,其核心目标是通过端到端的强化学习(RL)训练,赋予大语言模型"用图像思考"的能力。项目基于VeRL框架构建,支持Qwen-VL系列视觉语言模型(7B/32B),在视觉定位、幻觉抑制和复杂数学问题解决等场景表现出色。

核心突破

  1. 无需监督微调,直接通过RL信号学习多模态推理能力
  2. 训练过程中涌现出图像缩放、区域对比等自主思考模式
  3. 在4096x4096高分辨率基准测试中准确率提升32%
  4. 支持多工具动态调用,实现视觉搜索与验证的闭环

二、快速上手指南

环境配置

# 安装基础依赖
pip install -e .
bash scripts/install_deepeyes.sh

# 启动评判模型服务(需Qwen-2.5-72B-Instruct)
vllm serve /path/to/qwen-72b --port 18901 --tensor-parallel-size 8

训练启动

# 7B模型训练配置示例(需32+ GPU)
export WORLD_SIZE=8
export LLM_AS_A_JUDGE_BASE="http://your.vllm:18901/v1"
bash examples/agent/final_merged_v1v8_thinklite.sh

关键训练参数

# verl/trainer/config/ppo_trainer.yaml
agent:
  activate_agent: true
  max_turns: 50
  single_response_max_tokens: 16384
  concurrent_workers: 4
  max_vllm_images: 32

三、典型应用场景

场景1:微小物体定位

# visual_toolbox_v2.py中的图像放大工具
def image_zoom_in(self, bbox, scale=4):
    """ 对指定区域进行4倍放大 """
    x1,y1,x2,y2 = [int(x*self.orig_w) for x in bbox]
    cropped = self.orig_img[y1:y2, x1:x2]
    return cv2.resize(cropped, (0,0), fx=scale, fy=scale)

应用效果:在显微镜图像分析中,模型通过多次放大定位5μm级细胞结构,定位精度较基线提升47%。

场景2:数学问题验证

# reward_score/vl_agent.py中的验证逻辑
def verify_math_answer(pred, gt):
    try:
        pred_num = extract_numbers(pred)[-1]
        return abs(pred_num - gt) < 1e-3
    except:
        return any(str(gt) in pred)

测试数据:在GSM8K测试集上,验证准确率从68%提升至83%。


四、系统架构设计

模型结构

# verl/models/qwen2_vl/megatron/modeling_qwen2_megatron.py
class QwenVLForCausalLM(MegatronModule):
    def __init__(self, config):
        self.vision_model = CLIPVisionModel(config.vision_config)
        self.language_model = Qwen2Model(config.text_config)
        self.mm_projector = nn.Linear(
            config.vision_config.hidden_size,
            config.text_config.hidden_size
        )

训练流程

  1. 数据预处理:混合47K代理数据与非代理数据
  2. 策略优化:采用GRPO算法,λ=0.95的GAE优势估计
  3. 价值函数:基于KL散度的自适应熵正则化项
  4. 奖励设计:复合奖励函数R = 0.6R_accuracy + 0.3R_efficiency + 0.1R_safety

关键参数

参数 7B模型 32B模型
Batch Size 1024 2048
Learning Rate 1e-5 5e-6
PPO Epochs 4 3
Max Seq Length 32768 65536

五、核心创新点
  1. 动态视觉处理引擎
# visual_toolbox_v2.py中的多模态处理
def process_observation(self):
    visual_features = []
    for img in self.images:
        feat = self.vit(img)  # 使用ViT提取特征
        visual_features.append(self.projector(feat))
    return torch.cat(visual_features)
  1. 混合训练机制
  • 代理数据与非代理数据比例动态调整(1:1 → 3:1)
  • 渐进式课程学习:从单轮对话逐步扩展至50轮复杂交互
  1. 分布式推理优化
# 使用vLLM进行分布式推理
vllm_worker --model qwen2.5-vl-7b \
            --tensor-parallel-size 8 \
            --max-num-batched-tokens 16000
六、典型代码解析

工具定义示例

# verl/workers/agent/envs/mm_process_engine/visual_toolbox_v2.py
class VisualToolbox(ToolBase):
    name = "visual_toolbox_v2"

    def execute(self, action_str):
        if "zoom_in" in action_str:
            bbox = parse_bbox(action_str)
            return self.image_zoom_in(bbox)
        elif "compare" in action_str:
            return self.region_comparison()

训练监控

# verl/utils/rl_logging_board_utils.py
class TrainingMonitor:
    def log_metrics(self):
        wandb.log({
            "reward": self.reward_buffer.mean(),
            "kl_div": self.kl_values[-100:].mean(),
            "tool_usage": self.tool_counter
        })
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐