five

SII-ChengqiLi/paper_rl

收藏
Hugging Face2026-04-10 更新2026-04-12 收录
下载链接:
https://hf-mirror.com/datasets/SII-ChengqiLi/paper_rl
下载链接
链接失效反馈
官方服务:
资源简介:
# Paper Conclusion RL Training 基于 EasyR1(verl)框架的论文结论强化学习训练,训练模型为 `Qwen3-VL-8B-Thinking`,使用外部 judge 模型(`Qwen3-4B-Instruct-2507`)对预测结论与 235B 教师模型参考结论进行打分。 ## 目录结构 ``` paper_conclusion_rl/ ├── EasyR1/ # 训练框架(verl) │ ├── verl/ # 核心代码 │ ├── examples/ │ │ ├── paper_conclusion_grpo.yaml # GRPO 训练配置 │ │ ├── format_prompt/ │ │ │ └── paper_conclusion_json.jinja # prompt 模板 │ │ ├── reward_function/ │ │ │ ├── paper_conclusion_list_judge.py # HTTP 模式 reward │ │ │ ├── paper_conclusion_file_queue_judge.py # 双机文件队列 reward │ │ │ ├── paper_conclusion_judge_common.py # 共用 judge 逻辑 │ │ │ └── file_queue_judge_worker.py # 文件队列 worker │ │ ├── qwen3_vl_8b_paper_conclusion_grpo.sh # 训练启动脚本 │ │ ├── start_qwen3_4b_judge_vllm.sh # judge 服务启动(HTTP) │ │ └── start_qwen3_4b_judge_file_queue.sh # judge 服务启动(双机) │ ├── setup.py │ ├── requirements.txt │ └── ... ├── images_part00.tar # 图片分片压缩包(每个 ~2GB) ├── images_part01.tar ├── ... ├── paper_conclusion_rl_train.jsonl # 训练集(4599 条) ├── paper_conclusion_rl_test.jsonl # 测试集(1152 条) └── README.md ``` > **注意**:图片以 tar 分片形式存储,下载后需要先解压才能开始训练。 ## 新机器环境准备 ### 1. 硬件要求 - **单机模式**:至少 8 张 GPU(4 张跑 judge 服务,4 张跑训练) - **双机模式**:每台机器至少 4 张 GPU(一台专跑训练,一台专跑 judge) - GPU 显存建议 >= 80GB(A100/H100),训练和 judge 同时运行时显存需求较高 ### 2. 软件环境 ```bash # Python >= 3.10 python3 --version # CUDA >= 12.1 nvidia-smi ``` ### 3. 下载并解压数据集 ```bash # 下载数据集 huggingface-cli download <repo_id> --local-dir ./paper_conclusion_rl cd paper_conclusion_rl # 解压图片(解压后生成 images/ 目录) for f in images_part*.tar; do tar xf "$f"; done # 验证图片数量 ls images/ | wc -l # 应该约 19659 个文件 ``` ### 4. 安装 EasyR1 依赖 ```bash cd EasyR1 pip install -e . ``` 如果 `pip install -e .` 报错,可手动安装核心依赖: ```bash pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121 pip install vllm>=0.8 pip install transformers accelerate pip install hydra-core omegaconf pip install pyarrow ``` ### 5. 准备模型文件 需要下载两个模型到本地(不包含在此数据集中): | 用途 | 模型 | 建议 HuggingFace 路径 | |------|------|----------------------| | RL 训练 | `Qwen3-VL-8B-Thinking` | `Qwen/Qwen3-VL-8B-Thinking` | | Judge 服务 | `Qwen3-4B-Instruct-2507` | `Qwen/Qwen3-4B-Instruct-2507` | ```bash # 示例:下载模型 huggingface-cli download Qwen/Qwen3-VL-8B-Thinking --local-dir /path/to/Qwen3-VL-8B-Thinking huggingface-cli download Qwen/Qwen3-4B-Instruct-2507 --local-dir /path/to/Qwen3-4B-Instruct-2507 ``` ## 配置环境变量 训练脚本和 judge 脚本通过环境变量控制路径和行为,**无需手动修改脚本内容**。 ### 必须设置 ```bash # 项目根目录(即本 README 所在目录) export PROJECT_ROOT=/path/to/paper_conclusion_rl # 训练模型路径(新机器上的实际路径) export MODEL_PATH=/path/to/Qwen3-VL-8B-Thinking # Judge 模型路径(新机器上的实际路径) # 注意:这个变量在 judge 启动脚本中名为 MODEL_PATH,需要在启动 judge 时设置 ``` ### 可选设置 ```bash # Judge 服务的 API key(如果 judge 需要鉴权,通常设为 EMPTY 即可) export OPENAI_API_KEY=EMPTY # CUDA 可见设备(默认脚本中有内置分配,也可手动覆盖) # 单机模式示例:4卡 judge + 4卡训练 # export CUDA_VISIBLE_DEVICES=0,1,2,3 # judge 启动时 # export CUDA_VISIBLE_DEVICES=4,5,6,7 # 训练启动时 ``` ## 启动训练 ### 方式一:单机 8 卡(4 卡 judge + 4 卡训练) **终端 1 — 启动 judge 服务:** ```bash cd $PROJECT_ROOT/EasyR1 CUDA_VISIBLE_DEVICES=0,1,2,3 \ MODEL_PATH=/path/to/Qwen3-4B-Instruct-2507 \ SERVED_MODEL_NAME=qwen3-4b-judge \ TP_SIZE=4 \ PORT=8000 \ bash examples/start_qwen3_4b_judge_vllm.sh ``` 等待 judge 服务完全启动(看到 `Uvicorn running on` 日志)后,再启动训练。 **终端 2 — 启动 RL 训练:** ```bash cd $PROJECT_ROOT/EasyR1 CUDA_VISIBLE_DEVICES=4,5,6,7 \ MODEL_PATH=/path/to/Qwen3-VL-8B-Thinking \ JUDGE_BASE_URL=http://127.0.0.1:8000/v1 \ JUDGE_MODEL=qwen3-4b-judge \ bash examples/qwen3_vl_8b_paper_conclusion_grpo.sh ``` ### 方式二:双机(训练机和 judge 机分离) 适用于单机 GPU 显存不足的情况。两台机器需要能访问同一个共享文件系统(如 NFS)。 **机器 B(Judge 机)— 启动 judge 服务 + 文件队列 worker:** ```bash cd $PROJECT_ROOT/EasyR1 QUEUE_ROOT=$PROJECT_ROOT/EasyR1/shared_judge_queue \ CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \ MODEL_PATH=/path/to/Qwen3-4B-Instruct-2507 \ TP_SIZE=8 \ bash examples/start_qwen3_4b_judge_file_queue.sh ``` **机器 A(训练机)— 启动 RL 训练:** ```bash cd $PROJECT_ROOT/EasyR1 TRANSPORT_MODE=file_queue \ QUEUE_ROOT=$PROJECT_ROOT/EasyR1/shared_judge_queue \ CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \ TRAIN_GPUS_PER_NODE=8 \ ROLLOUT_TP_SIZE=8 \ MODEL_PATH=/path/to/Qwen3-VL-8B-Thinking \ bash examples/qwen3_vl_8b_paper_conclusion_grpo.sh ``` > **启动顺序**:必须先启动 judge 机,确认 vLLM 服务和队列 worker 都就绪后,再启动训练机。否则训练会在等待 judge 结果时阻塞。 ## 关键参数说明 ### 训练配置(`paper_conclusion_grpo.yaml`) | 参数 | 默认值 | 说明 | |------|--------|------| | `data.max_prompt_length` | 8192 | 最大 prompt 长度,超长样本会被过滤 | | `data.max_response_length` | 2048 | 最大生成长度 | | `data.rollout_batch_size` | 24 | 每 rollout 批次大小 | | `worker.rollout.n` | 16 | 每个样本的 rollout 数量 | | `worker.rollout.limit_images` | 12 | 每个样本最大图片数 | | `worker.rollout.max_model_len` | 40960 | rollout 模型最大上下文 | | `worker.actor.model.lora.rank` | 32 | LoRA 秩 | | `worker.actor.optim.lr` | 1e-6 | 学习率 | | `trainer.total_epochs` | 3 | 训练总轮数 | | `trainer.save_freq` | 40 | 每 40 步保存 checkpoint | | `trainer.val_freq` | 40 | 每 40 步验证一次 | ### Reward 计算 - 使用 `max(0, matched - wrong) / reference_count` 公式 - `format_weight=0.05`:格式正确性奖励权重 - Judge 模型对每个样本的预测结论列表与 235B 教师参考结论进行逐一匹配打分 ## 双机文件队列行为 使用双机模式时,训练和 judge 通过共享目录通信: ``` shared_judge_queue/ ├── requests/ │ ├── pending/ # 训练写入请求,等待 judge 处理 │ └── processing/ # judge 正在处理的请求 └── results/ ├── ok/ # 处理成功的结果 └── error/ # 处理出错的结果 ``` - 确保 `QUEUE_ROOT` 在两台机器上指向同一个共享目录 - 确保共享文件系统支持原子 rename 操作 - 如果 `requests/pending` 中文件持续堆积,说明 judge worker 未正常消费 - 如果 `requests/processing` 中文件持续堆积,说明 judge 服务可能已崩溃 ## 数据集格式 每条训练样本格式: ```json { "id": "PMC12345", "md5": "abc123...", "query": "<prompt>\n\n<paper content with <image> placeholders>", "images": ["images/xxx.jpg", "images/yyy.jpg"], "answer": { "reference_conclusions": ["conclusion 1", "conclusion 2", ...], "rubrics": "...", "paper_id": "PMC12345", "md5": "abc123..." } } ``` - `images` 字段为相对路径,相对于项目根目录 - `reference_conclusions` 来自 235B 教师模型,用于 judge 打分 - 训练时学生模型只看到 `query` 和 `images`,不直接看到参考结论 ## 常见问题 **Q: vLLM 报 `AssertionError: Failed to apply prompt replacement for mm_items['image'][13]`** A: 图片数超过 vLLM 处理上限。当前数据集已过滤掉图片数 > 12 的样本。如果仍有问题,降低 `data.max_prompt_length` 或 `worker.rollout.limit_images`。 **Q: OOM(显存不足)** A: 尝试以下方法: - 降低 `worker.rollout.gpu_memory_utilization`(默认 0.5) - 减小 `data.rollout_batch_size` - 切换到双机模式,将 judge 和训练分到不同机器 **Q: 训练阻塞在等待 reward** A: 检查 judge 服务是否正常运行。单机模式确认 `http://127.0.0.1:8000/v1` 可访问;双机模式检查 `shared_judge_queue/` 中文件流转情况。 **Q: 图片解压后找不到** A: 确保在项目根目录下执行 `for f in images_part*.tar; do tar xf "$f"; done`,解压后会生成 `images/` 目录,与 JSONL 中的 `images/xxx.jpg` 路径对应。
提供机构:
SII-ChengqiLi
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作