Ophiuchus: Incentivizing Tool-augmented "Think with Images" for Joint Medical Segmentation, Understa 论文复现
| 资源 | 下载来源 | 用途 |
|---|---|---|
| Qwen2.5-VL-7B-Instruct | HuggingFace | 基模型(论文原文用的就是 7B) |
SAM2 checkpoints (sam2.1_hiera_tiny/small/base_plus/large) |
工具服务,SAM2 | |
| microsoft/BiomedParse | HuggingFace | 工具服务,BiomedParse |
| openai/clip-vit-base-patch32 | HuggingFace | BiomedParse 依赖 |
| microsoft/BiomedNLP-BiomedBERT | HuggingFace | BiomedParse 依赖 |
二、训练数据集(需要自行构建,官方未发布)
论文训练数据来源于两个公开源数据 + GPT-4o 生成轨迹:
源数据
| 数据集 | 内容 | 下载 |
|---|---|---|
| BiomedParseData | 340 万 图像-掩码-标签三元组,82 类生物医学对象,9 种模态 | HuggingFace |
| Malenia | 1,514 个 CT 图像-掩码-报告三元组,12 类病变 | 未确认公开链接(需找) |
论文构建的 3 个训练子集
| 子集 | 大小 | 用途 | 构建方式 |
|---|---|---|---|
| 𝒟_cold | 30k | Stage A 冷启动 SFT | 从源数据取图 + GPT-4o 生成带工具调用的推理轨迹 |
| 𝒟_rl | 30k | Stage C ATRL/GRPO | 问答对(VQA + Seg),同数据源 |
| 𝒟_test | 4k | 域内测试 | 同上,保留不参与训练 |
关键问题:这些轨迹数据需要用 GPT-4o API 生成,仓库没有提供生成脚本——只有 SFT/RL 的格式示例。
---
三、评估 Benchmark(需要下载)
| Benchmark | 类型 | 下载地址 |
|---|---|---|
| PathVQA | VQA | https://pathvqa.com/ |
| SLAKE | VQA | https://www.med-vqa.com/slake/ |
| VQA-RAD | VQA | https://www.med-vqa.com/vqa-rad/ |
| OmniMedVQA | VQA | HuggingFace |
| MMMU (Health & Medicine) | 推理 | https://mmmu-benchmark.github.io/ |
| MedXpertQA | 推理 | 需确认 |
| In-House-VQA/Seg | 私有 | 论文自建(3 个医疗中心),无法获取 |
---
四、代码需要改什么
将之前单卡 L40 上的 patch 全部回退,恢复到论文的 16×A100 配置:
1. run_ATRL.sh → 恢复论文原始参数
trainer.n_gpus_per_node=8 # 之前改 1
trainer.nnodes=2 # 总共 16 GPU
tensor_model_parallel_size=2 # 之前改 1
train_batch_size=256 # 之前改 16
ppo_micro_batch_size_per_gpu=8 # 之前改 2
gpu_memory_utilization=0.6 # 之前改 0.4
max_prompt_length=32768 # 之前改 4096
max_response_length=32768 # 之前改 4096
param_offload=False # 之前改 True(改为全参数训练)
total_epochs=12
model_path=Qwen/Qwen2.5-VL-7B-Instruct # 改为 7B
2. 去掉单卡 patch
- 去掉 LoRA(lora_rank=0 或不传)
- 去掉 VLLM_USE_V1=0(多卡用 v1 引擎,更高效)
- 去掉 mm_processor_kwargs={"max_pixels":...}(大显存不需要限制像素)
- 去掉 USE_LIBUV=0 和 VERL_MASTER_PORT=29500(多机多卡环境可能不需要,取决于网络,按需保留)
- 去掉 RAY_memory_monitor_refresh_ms=0(大量资源不需要关这个)
3. Stage A / Stage B SFT 配置
- Cold-start SFT: 用 scripts/SFT/cold-start/ 中的 my_qwen2_5vl_lora_sft.yaml(LoRA rank=8, LR=3e-4, 32 epochs, cutoff=2048)
- Reflective FT: 用 scripts/SFT/reflective_rejection_fine_tuning/config_reflective.yaml(全参数 FT, LR=1e-5, 3 epochs, cutoff=18432)
- 都需要把 dataset 和 model_name_or_path 指向你实际的数据/模型路径
4. 数据准备
- SFT 数据格式参照 data/example/data_case/biomedparser-SFT.json(多轮对话含工具调用轨迹)
- RL 数据格式参照 data/example/data_case/biomedparser-RL.json(问答对)
- 用 examples/data_preprocess/prepare_Ophiuchus_dataset.py 将 JSON 转为 parquet
---
五、最大不确定项
训练数据 (𝒟_cold / 𝒟_rl) 的官方发布是最大风险。 论文说 "Dataset coming soon" 但至今未发。两个选择:
1. 等官方发布 —— 最简单,但无时间表
2. 自己构建 —— 需要:
- 下载 BiomedParseData + Malenia 的原始医学图像和掩码
- 用 GPT-4o API 生成工具调用轨迹(论文说用了 GPT-4o 生成 SFT 数据,即给模型图像+分割掩码,让 GPT-4o 模拟推理轨迹)
- 仓库里没有提供这个生成脚本,需要自己写
论文:https://www.modelscope.cn/papers/2512.14157
本文来自博客园,作者:limingqi,转载请注明原文链接:https://www.cnblogs.com/limingqi/p/22066095
浙公网安备 33010602011771号