方案说明见 多模态介绍 · 2×A100-80GB(排队中)· 训练尚未开始。
| 组 | 图文占比 | 训练数据组成 | 说明 |
|---|---|---|---|
| M0 | 0%(纯文本) | polaris_easy_boxed.parquet(全量 13688 行) | 直接复用已跑完的 e1_grpo_2b 结果,不重跑,省 ~26h——本质就是 E1 的原始设定,把"0% 图文"端点直接对齐到已有结果。 |
| M1 | 100%(纯图文) | geo3k/train.parquet(2101 行) | 极端组,检验纯视觉信号下 GRPO 的行为;池小需 total_epochs=10 循环凑够 150 step。 |
| M2 | 50% | geo3k/train + text_subset_m2_2101(各 2101 行) | 等量混合;池 4202 行,total_epochs=5。 |
| M3 | 20% | geo3k/train(2101) + text_subset_m3_8404 | 更贴近真实 post-training 配比;池 10505 行,total_epochs=2。 |
统一不变量(M1–M3 逐字相同,只改 data.train_files):GRPO、train_batch_size=32、rollout.n=8、max_prompt_length=1024、max_response_length=16384、非思考模式、lr=1e-6、total_training_steps=150、data.seed=1、2 卡 FSDP2 —— 与 E1 统一配置块完全一致,只多了图文数据。
模型:Qwen3.5-2B 原生 vision——与 E1–E5 文本实验同一份权重、同一个 conda 环境,已用 AutoProcessor 实测确认 checkpoint 带 vision_config/image_token_id,processor 类是 Qwen3VLProcessor,能正确把图像转成 pixel_values/image_grid_thw。选它而非独立的 Qwen3-VL-2B,是因为可以做"同底座加图像模态"这种最干净的对比,且直接复用已验证过的 verl_qwen35 环境与 E1 超参。
任务:Geo3K(hiyouga/geometry3k,几何图形+数学推理,2101 训练/601 测试)——verl 官方有现成 GRPO 示例和 reward 实现,社区结果可比,规模适合 2B/2 卡的预算。
同一 batch 里会混有 data_source=math_dapo/aime24(纯文本)和 data_source=hiyouga/geometry3k(图文)的行,统一 dispatcher 按来源分发:
def compute_score(data_source, solution_str, ground_truth, extra_info=None):
if data_source == "hiyouga/geometry3k":
return _score_geo3k(solution_str, ground_truth)
return _score_text_math(solution_str, ground_truth)
纯文本分支:复用现有 reward_boxed.py 逻辑(Math-Verify 符号等价判定,强制 \boxed{}),与 E1–E5 完全一致,保证 M0↔M1–M3 的文本判分口径不变。
图文分支:复用 verl 官方 geo3k.py 判分逻辑(mathruler 的 grade_answer + 10% 权重的格式奖励),与社区 Geo3K GRPO 基线口径一致。
多模态场景下值得做的消融还有:视觉编码器冻结 vs 解冻、图像分辨率/视觉 token 数量、模型底座对比(Qwen3.5-2B vs Qwen3-VL-2B)。这些都有价值,但上一轮纯算法消融(5 组×150 step)在 2 卡上就花了 1.5–2 周,多模态单 step 通常更慢;把"数据配比"和其它维度交叉会导致组数指数增长,也会让"是哪个变量导致的差异"难以归因。因此本轮把算法(固定 GRPO)、分辨率、模型底座都固定,只让图文数据配比变化。如果这轮结果显示图文数据对文本能力有明显负面影响或正面迁移,值得作为下一轮"视觉编码器冻结 vs 解冻"消融的立项依据。
| 判据 | 方法 | 关注点 |
|---|---|---|
| 视觉能力主判据 | Geo3K test(601题)acc,vLLM 批量推理 + geo3k.py 判分逻辑离线评测 | M0(0%)→M1(100%) 理应单调上升;重点看 M2/M3 用多少图文比例就能追多少视觉能力 |
| 文本能力保持主判据 | math_500(沿用 exp_plan.md 主判据口径),复用 evalscope 流程 | 混入图文数据后,文本数学能力相对 M0(=E1) 掉了多少;"掉多少图文比例换多少视觉能力"的权衡曲线 |
| 通用能力监控 | mmlu_temp | 相对 base 掉 1–2 点内正常 |
| 训练过程指标 | reward/pass rate 按 data_source 分开看 | naive reward manager 的 per-sample 判分自然按行归属,可从 rollout_dump/*.jsonl 按 data_source 拆开统计 |
| 阶段 | 状态 | 说明 |
|---|---|---|
| 数据准备(Geo3K 下载 + 文本子集切分 + 验证探针) | 已完成 | 产物已落盘 vlm_exp/parquet/mm/,可直接被训练脚本引用 |
| Reward dispatcher / 训练脚本(M1–M3 + 烟测脚本) | 已完成 | run_m1_geo3k_2b.sh / run_m2_mix50_2b.sh / run_m3_mix20_2b.sh / run_smoke_mm.sh |
| 多模态链路烟测 | 待执行 | 验证 FSDP2+vLLM 对多模态生成路径无报错(此前架构验证只测过纯文本)——正式跑前必须先过 |
| M1 → M2 → M3 正式训练 | 排队中 | 等文本赛道 2B 机位空出(E5 REINFORCE++ 训练完)后依次启动,本页 2B 机位当前仍被 E5 占用 |
| Geo3K 601 题离线评测脚本 | 待开发 | 暂无现成 evalscope 多模态评测能力,需要另写 |
时间预算粗估:烟测几分钟~半小时;M1–M3 单 step 耗时待烟测校准(图文响应通常更短但视觉 encoder 有额外开销,方向不确定);评测每组 ~2-4h;合计与文本 5 组消融相近量级(约 1~1.5 周),实际以烟测结果为准。