Official implementation for the paper "SeePhys Pro: Diagnosing Modality Transfer and Blind-Training Effects in Multimodal RLVR for Physics Reasoning"
20
stars
7
commits
Python
primary language
Jul 24, 2026
updated
Diagnosing Modality Transfer and Blind-Training Effects in Multimodal RLVR for Physics Reasoning
Paper | Project Page | Workshop | Challenge | Training Set | Benchmark
Final private evaluation results for Track 3: SeePhys Pro at the 3rd AI for Math Workshop at ICML 2026. Rankings are determined by question-count weighted accuracy across 3,320 private test questions.
| Rank | Participant | Overall | Level 1 | Level 2 | Level 3 | Level 4 | Level 5 |
|---|---|---|---|---|---|---|---|
| 🥇 1 | kaistaailab | 74.31 | 74.50 | 76.50 | 73.00 | 71.25 | 87.50 |
| 🥈 2 | jasperdekoninck | 72.23 | 73.00 | 75.00 | 69.87 | 68.50 | 89.17 |
| 🥉 3 | baibzihe1 | 71.69 | 73.88 | 74.25 | 69.37 | 66.87 | 87.50 |
| 4 | lh12345 | 71.51 | 73.25 | 74.75 | 68.25 | 67.50 | 86.67 |
| 5 | ctree4113 | 70.36 | 71.63 | 71.88 | 67.87 | 67.00 | 90.83 |
| 6 | huyttuan | 62.17 | 66.37 | 67.63 | 56.63 | 54.50 | 85.83 |
| 7 | bkhoi | 56.87 | 58.00 | 56.87 | 57.13 | 56.75 | 48.33 |
| 7 | mihena | 56.87 | 57.75 | 57.50 | 56.50 | 57.00 | 48.33 |
| 9 | kurone02 | 55.66 | 58.37 | 59.13 | 50.50 | 49.63 | 89.17 |
| 10 | cmxu7 | 42.44 | 50.12 | 44.37 | 36.88 | 33.50 | 75.00 |
| 11 | robertboy18 | 39.34 | 45.87 | 41.38 | 31.62 | 31.37 | 86.67 |
| 12 | usercrab | 31.42 | 39.87 | 33.25 | 25.50 | 23.13 | 57.50 |
| 13 | ykjung | 29.73 | 29.50 | 30.00 | 26.25 | 29.38 | 55.00 |
| 14 | deleted_user_70413 | 21.90 | 20.13 | 20.00 | 20.62 | 18.25 | 79.17 |
| 15 | gptrans5_5 | 21.87 | 20.13 | 20.00 | 20.50 | 18.25 | 79.17 |
Top 15 final private leaderboard entries are shown. Scores are percentages, and tied Overall scores share the same rank. Level 5 is an additional OOD test for the workshop challenge and is not included in the paper. See the official CodaBench leaderboard for the complete results.
SeePhys Pro is a fine-grained modality-transfer benchmark for multimodal physics reasoning. Each seed problem is converted into four semantically aligned forms that progressively move task-critical information from language into images:
This repository provides the code used for benchmark inference, judging, and the RLVR training diagnostics in the paper.
| Rank | Model | Avg. | L1 | L2 | L3 | L4 | Cons4 | Delta-S | Delta-V | Delta-R | Delta-T |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Human | Human Performance | 57.0 | 54.0 | 58.5 | 59.5 | 56.0 | 49.0 | -4.5 | -1.0 | 3.5 | -2.0 |
| 1 🥇 | Gemini-3.1-Pro | 69.0 | 71.0 | 72.0 | 66.5 | 66.5 | 47.0 | -1.0 | 5.5 | 0.0 | 4.5 |
| 2 🥈 | Claude-4.7-Opus | 61.0 | 74.0 | 67.0 | 56.5 | 46.5 | 33.5 | 7.0 | 10.5 | 10.0 | 27.5 |
| 3 🥉 | GPT-5.4 | 60.1 | 67.4 | 64.1 | 55.8 | 53.0 | 32.6 | 3.3 | 8.3 | 2.8 | 14.4 |
| 4 | Qwen-3.6-flash | 54.8 | 61.4 | 59.3 | 49.9 | 48.4 | 29.9 | 2.1 | 9.4 | 1.5 | 13.0 |
| 5 | Qwen3.5-27B | 33.4 | 45.0 | 34.8 | 28.0 | 25.6 | 9.9 | 10.3 | 6.8 | 2.4 | 19.4 |
| 6 | GPT-5 | 30.4 | 41.8 | 32.9 | 23.8 | 23.2 | 8.9 | 8.9 | 9.1 | 0.5 | 18.5 |
| 7 | Gemma-4-31B-it | 29.6 | 38.9 | 33.5 | 23.9 | 22.0 | 8.9 | 5.4 | 9.6 | 1.9 | 16.9 |
| - | Aggregate Average | 42.5 | 49.2 | 46.1 | 38.7 | 35.8 | 21.4 | 3.0 | 7.4 | 2.9 | 13.4 |
Table 1. Main SeePhys Pro leaderboard. Values follow the current project page. The highlighted Human Performance row is shown first as a reference and is not included in model ranks. Avg. is the mean of L1-L4 accuracy; ranked model rows are sorted by Avg., and the aggregate row is kept at the bottom for reference. L1-L4 and Cons4 are percentages; positive transfer gaps indicate degradation under a more visual representation. Delta-S, Delta-V, and Delta-R measure L1 -> L2 structural transfer, L2 -> L3 variable grounding, and L3 -> L4 rendering gaps; Delta-T is the overall L1 -> L4 gap.
Takeaway. Gemini-3.1-Pro leads by L1-L4 average accuracy, while Claude-4.7-Opus has the strongest L1 score but a much larger overall transfer gap. The aggregate row still drops from 49.2% on L1 to 35.8% on L4, with Delta-V as the largest mean component.
Figure 1. Four modality-transfer levels in SeePhys Pro.
Takeaway. The benchmark keeps the underlying physics fixed while moving structure, variables, and finally the full statement into vision. This makes it possible to diagnose where a model loses invariance instead of reporting only a single final score.
Figure 2. Data pipeline for constructing SeePhys Pro.
Takeaway. Problems are curated from heterogeneous physics sources, cleaned, deduplicated, transformed, and manually sketched into aligned levels. The result is a controlled modality-transfer benchmark rather than a loose collection of unrelated visual questions.
Figure 3. Normal and blind RL diagnostics on SeePhys Pro.
Takeaway. Normal RL and blind RL both improve absolute accuracy, but the total transfer gap and the variable-grounding gap remain large. Accuracy gains therefore do not automatically mean that the model has learned to use the task-critical visual evidence.
Figure 4. Cross-benchmark normal and blind RL gain summary.
Takeaway. Blind-training gains also appear on external physics and math benchmarks, and in several settings recover a large fraction of normal-RL gains. This points to residual language, templates, answer priors, and dataset-level regularities as plausible non-visual learning routes.
Figure 5. Mechanism controls for blind-training gains.
Takeaway. Text deletion, targeted deletion, mask-rate ablations, and format-saturation controls weaken simple explanations such as all-black-image artifacts or format-only learning. The blind signal is better understood as a distributed shortcut effect from residual textual and distributional cues.
Python 3.10-3.12 is recommended.
conda create -n seephyspro-eval python=3.10 -y
conda activate seephyspro-eval
cd lmms-eval
pip install -U pip
pip install -e .
The SeePhys Pro lmms-eval tasks expect Level 1-4 parquet files under
lmms-eval/data/seephys_pro/:
cd lmms-eval
mkdir -p data/seephys_pro data/seephys_pro_raw
huggingface-cli download Kun-Xiang/SeePhysPro \
--repo-type dataset \
--local-dir data/seephys_pro_raw
for level in level1 level2 level3 level4; do
cp "data/seephys_pro_raw/${level}/train-00000-of-00001.parquet" \
"data/seephys_pro/${level}-00000-of-00001.parquet"
done
Local open-model evaluation:
cd lmms-eval
python -m lmms_eval eval --config configs/seephys_pro_local.yaml
Closed-model or OpenAI-compatible evaluation:
cd lmms-eval
export OPENAI_API_KEY="<your_api_key>"
python -m lmms_eval eval --config configs/seephys_pro_api.yaml
Common task entry points:
seephys_pro_all
seephys_pro_level1
seephys_pro_level2
seephys_pro_level3
seephys_pro_level4
seephys_pro_testmini
Use a Linux CUDA environment for training. Install the PyTorch build matching
your CUDA driver before installing EasyR1 dependencies, because flash-attn
requires torch at build time.
conda create -n seephyspro-rl python=3.10 -y
conda activate seephyspro-rl
cd EasyR1
pip install -U pip
# Replace cu124 if your cluster uses another CUDA version.
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124
pip install -r requirements.txt --no-build-isolation
pip install -e . --no-build-isolation
Run the retained reproduction launchers:
cd EasyR1
# PhysRL physics training
bash examples/repro/physrl_4b_normal.sh
bash examples/repro/physrl_4b_blind.sh
bash examples/repro/physrl_7b_normal.sh
bash examples/repro/physrl_7b_blind.sh
# Visual-math control
bash examples/repro/math_vn_4b_normal.sh
bash examples/repro/math_vn_4b_blind.sh
bash examples/repro/math_vn_7b_normal.sh
bash examples/repro/math_vn_7b_blind.sh
Blind RL is used as a negative-control diagnostic. It masks only training images:
data.train_image_mask_mode=all_blank
Validation images remain unmasked. Dataset placeholders can be overridden at runtime:
PHYSRL_TRAIN_FILES="<your_physrl_train_split>" \
PHYSICS_VAL_FILES="<name1=validation_split1,name2=validation_split2>" \
MODEL_PATH="Qwen/Qwen3-VL-4B-Instruct" \
GPUS=4 \
NNODES=1 \
bash examples/repro/physrl_4b_normal.sh
The main reproduction configs use 4 rollouts per prompt, rollout temperature
1.0, top-p 1.0, 4096 prompt tokens, 4096 response tokens, AdamW learning rate
1e-6, weight decay 0.01, one PPO epoch, BF16 FSDP, vLLM rollout, and
validation every 5 iterations.
A1-A4, transfer gaps, and consistency. Final
accuracy alone is not sufficient for diagnosing visual grounding..env files, local user paths, .git
directories, temporary scripts, cache files, and OS metadata.@article{xiang2026seephyspro,
title={SeePhys Pro: Diagnosing Modality Transfer and Blind-Training Effects in Multimodal RLVR for Physics Reasoning},
author={Xiang, Kun and Zhang, Terry Jingchen and Liu, Zirong and Zhou, Bokai and Tang, Yueling and Yu, Junjie and Lu, Jiacong and Huang, Shangrui and Li, Heng and Zhang, Likui and Liu, Kunkun and Zhang, Changzheng and Fang, Yangle and Guo, Boqiang and Zhen, Hui-Ling and Tu, Dandan and Huang, Yinya and Liang, Xiaodan},
journal={arXiv preprint arXiv:2605.09266},
year={2026}
}
@article{xiang2026seephys,
title={Seephys: Does seeing help thinking?--benchmarking vision-based physics reasoning},
author={Xiang, Kun and Li, Heng and Zhang, Terry Jingchen and Huang, Yinya and Liu, Zirong and Qu, Peixin and He, Jixi and Chen, Jiaqi and Yuan, Yu-Jie and Han, Jianhua and others},
journal={Advances in Neural Information Processing Systems},
volume={38},
year={2026}
}
7 commits
Python
98.8%
TypeScript
1.0%
Official implementation for the paper "SeePhys Pro: Diagnosing Modality Transfer and Blind-Training Effects in Multimodal RLVR for Physics Reasoning"
20
stars
7
commits
Python
primary language
Jul 24, 2026
updated
Diagnosing Modality Transfer and Blind-Training Effects in Multimodal RLVR for Physics Reasoning
Paper | Project Page | Workshop | Challenge | Training Set | Benchmark
Final private evaluation results for Track 3: SeePhys Pro at the 3rd AI for Math Workshop at ICML 2026. Rankings are determined by question-count weighted accuracy across 3,320 private test questions.
| Rank | Participant | Overall | Level 1 | Level 2 | Level 3 | Level 4 | Level 5 |
|---|---|---|---|---|---|---|---|
| 🥇 1 | kaistaailab | 74.31 | 74.50 | 76.50 | 73.00 | 71.25 | 87.50 |
| 🥈 2 | jasperdekoninck | 72.23 | 73.00 | 75.00 | 69.87 | 68.50 | 89.17 |
| 🥉 3 | baibzihe1 | 71.69 | 73.88 | 74.25 | 69.37 | 66.87 | 87.50 |
| 4 | lh12345 | 71.51 | 73.25 | 74.75 | 68.25 | 67.50 | 86.67 |
| 5 | ctree4113 | 70.36 | 71.63 | 71.88 | 67.87 | 67.00 | 90.83 |
| 6 | huyttuan | 62.17 | 66.37 | 67.63 | 56.63 | 54.50 | 85.83 |
| 7 | bkhoi | 56.87 | 58.00 | 56.87 | 57.13 | 56.75 | 48.33 |
| 7 | mihena | 56.87 | 57.75 | 57.50 | 56.50 | 57.00 | 48.33 |
| 9 | kurone02 | 55.66 | 58.37 | 59.13 | 50.50 | 49.63 | 89.17 |
| 10 | cmxu7 | 42.44 | 50.12 | 44.37 | 36.88 | 33.50 | 75.00 |
| 11 | robertboy18 | 39.34 | 45.87 | 41.38 | 31.62 | 31.37 | 86.67 |
| 12 | usercrab | 31.42 | 39.87 | 33.25 | 25.50 | 23.13 | 57.50 |
| 13 | ykjung | 29.73 | 29.50 | 30.00 | 26.25 | 29.38 | 55.00 |
| 14 | deleted_user_70413 | 21.90 | 20.13 | 20.00 | 20.62 | 18.25 | 79.17 |
| 15 | gptrans5_5 | 21.87 | 20.13 | 20.00 | 20.50 | 18.25 | 79.17 |
Top 15 final private leaderboard entries are shown. Scores are percentages, and tied Overall scores share the same rank. Level 5 is an additional OOD test for the workshop challenge and is not included in the paper. See the official CodaBench leaderboard for the complete results.
SeePhys Pro is a fine-grained modality-transfer benchmark for multimodal physics reasoning. Each seed problem is converted into four semantically aligned forms that progressively move task-critical information from language into images:
This repository provides the code used for benchmark inference, judging, and the RLVR training diagnostics in the paper.
| Rank | Model | Avg. | L1 | L2 | L3 | L4 | Cons4 | Delta-S | Delta-V | Delta-R | Delta-T |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Human | Human Performance | 57.0 | 54.0 | 58.5 | 59.5 | 56.0 | 49.0 | -4.5 | -1.0 | 3.5 | -2.0 |
| 1 🥇 | Gemini-3.1-Pro | 69.0 | 71.0 | 72.0 | 66.5 | 66.5 | 47.0 | -1.0 | 5.5 | 0.0 | 4.5 |
| 2 🥈 | Claude-4.7-Opus | 61.0 | 74.0 | 67.0 | 56.5 | 46.5 | 33.5 | 7.0 | 10.5 | 10.0 | 27.5 |
| 3 🥉 | GPT-5.4 | 60.1 | 67.4 | 64.1 | 55.8 | 53.0 | 32.6 | 3.3 | 8.3 | 2.8 | 14.4 |
| 4 | Qwen-3.6-flash | 54.8 | 61.4 | 59.3 | 49.9 | 48.4 | 29.9 | 2.1 | 9.4 | 1.5 | 13.0 |
| 5 | Qwen3.5-27B | 33.4 | 45.0 | 34.8 | 28.0 | 25.6 | 9.9 | 10.3 | 6.8 | 2.4 | 19.4 |
| 6 | GPT-5 | 30.4 | 41.8 | 32.9 | 23.8 | 23.2 | 8.9 | 8.9 | 9.1 | 0.5 | 18.5 |
| 7 | Gemma-4-31B-it | 29.6 | 38.9 | 33.5 | 23.9 | 22.0 | 8.9 | 5.4 | 9.6 | 1.9 | 16.9 |
| - | Aggregate Average | 42.5 | 49.2 | 46.1 | 38.7 | 35.8 | 21.4 | 3.0 | 7.4 | 2.9 | 13.4 |
Table 1. Main SeePhys Pro leaderboard. Values follow the current project page. The highlighted Human Performance row is shown first as a reference and is not included in model ranks. Avg. is the mean of L1-L4 accuracy; ranked model rows are sorted by Avg., and the aggregate row is kept at the bottom for reference. L1-L4 and Cons4 are percentages; positive transfer gaps indicate degradation under a more visual representation. Delta-S, Delta-V, and Delta-R measure L1 -> L2 structural transfer, L2 -> L3 variable grounding, and L3 -> L4 rendering gaps; Delta-T is the overall L1 -> L4 gap.
Takeaway. Gemini-3.1-Pro leads by L1-L4 average accuracy, while Claude-4.7-Opus has the strongest L1 score but a much larger overall transfer gap. The aggregate row still drops from 49.2% on L1 to 35.8% on L4, with Delta-V as the largest mean component.
Figure 1. Four modality-transfer levels in SeePhys Pro.
Takeaway. The benchmark keeps the underlying physics fixed while moving structure, variables, and finally the full statement into vision. This makes it possible to diagnose where a model loses invariance instead of reporting only a single final score.
Figure 2. Data pipeline for constructing SeePhys Pro.
Takeaway. Problems are curated from heterogeneous physics sources, cleaned, deduplicated, transformed, and manually sketched into aligned levels. The result is a controlled modality-transfer benchmark rather than a loose collection of unrelated visual questions.
Figure 3. Normal and blind RL diagnostics on SeePhys Pro.
Takeaway. Normal RL and blind RL both improve absolute accuracy, but the total transfer gap and the variable-grounding gap remain large. Accuracy gains therefore do not automatically mean that the model has learned to use the task-critical visual evidence.
Figure 4. Cross-benchmark normal and blind RL gain summary.
Takeaway. Blind-training gains also appear on external physics and math benchmarks, and in several settings recover a large fraction of normal-RL gains. This points to residual language, templates, answer priors, and dataset-level regularities as plausible non-visual learning routes.
Figure 5. Mechanism controls for blind-training gains.
Takeaway. Text deletion, targeted deletion, mask-rate ablations, and format-saturation controls weaken simple explanations such as all-black-image artifacts or format-only learning. The blind signal is better understood as a distributed shortcut effect from residual textual and distributional cues.
Python 3.10-3.12 is recommended.
conda create -n seephyspro-eval python=3.10 -y
conda activate seephyspro-eval
cd lmms-eval
pip install -U pip
pip install -e .
The SeePhys Pro lmms-eval tasks expect Level 1-4 parquet files under
lmms-eval/data/seephys_pro/:
cd lmms-eval
mkdir -p data/seephys_pro data/seephys_pro_raw
huggingface-cli download Kun-Xiang/SeePhysPro \
--repo-type dataset \
--local-dir data/seephys_pro_raw
for level in level1 level2 level3 level4; do
cp "data/seephys_pro_raw/${level}/train-00000-of-00001.parquet" \
"data/seephys_pro/${level}-00000-of-00001.parquet"
done
Local open-model evaluation:
cd lmms-eval
python -m lmms_eval eval --config configs/seephys_pro_local.yaml
Closed-model or OpenAI-compatible evaluation:
cd lmms-eval
export OPENAI_API_KEY="<your_api_key>"
python -m lmms_eval eval --config configs/seephys_pro_api.yaml
Common task entry points:
seephys_pro_all
seephys_pro_level1
seephys_pro_level2
seephys_pro_level3
seephys_pro_level4
seephys_pro_testmini
Use a Linux CUDA environment for training. Install the PyTorch build matching
your CUDA driver before installing EasyR1 dependencies, because flash-attn
requires torch at build time.
conda create -n seephyspro-rl python=3.10 -y
conda activate seephyspro-rl
cd EasyR1
pip install -U pip
# Replace cu124 if your cluster uses another CUDA version.
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124
pip install -r requirements.txt --no-build-isolation
pip install -e . --no-build-isolation
Run the retained reproduction launchers:
cd EasyR1
# PhysRL physics training
bash examples/repro/physrl_4b_normal.sh
bash examples/repro/physrl_4b_blind.sh
bash examples/repro/physrl_7b_normal.sh
bash examples/repro/physrl_7b_blind.sh
# Visual-math control
bash examples/repro/math_vn_4b_normal.sh
bash examples/repro/math_vn_4b_blind.sh
bash examples/repro/math_vn_7b_normal.sh
bash examples/repro/math_vn_7b_blind.sh
Blind RL is used as a negative-control diagnostic. It masks only training images:
data.train_image_mask_mode=all_blank
Validation images remain unmasked. Dataset placeholders can be overridden at runtime:
PHYSRL_TRAIN_FILES="<your_physrl_train_split>" \
PHYSICS_VAL_FILES="<name1=validation_split1,name2=validation_split2>" \
MODEL_PATH="Qwen/Qwen3-VL-4B-Instruct" \
GPUS=4 \
NNODES=1 \
bash examples/repro/physrl_4b_normal.sh
The main reproduction configs use 4 rollouts per prompt, rollout temperature
1.0, top-p 1.0, 4096 prompt tokens, 4096 response tokens, AdamW learning rate
1e-6, weight decay 0.01, one PPO epoch, BF16 FSDP, vLLM rollout, and
validation every 5 iterations.
A1-A4, transfer gaps, and consistency. Final
accuracy alone is not sufficient for diagnosing visual grounding..env files, local user paths, .git
directories, temporary scripts, cache files, and OS metadata.@article{xiang2026seephyspro,
title={SeePhys Pro: Diagnosing Modality Transfer and Blind-Training Effects in Multimodal RLVR for Physics Reasoning},
author={Xiang, Kun and Zhang, Terry Jingchen and Liu, Zirong and Zhou, Bokai and Tang, Yueling and Yu, Junjie and Lu, Jiacong and Huang, Shangrui and Li, Heng and Zhang, Likui and Liu, Kunkun and Zhang, Changzheng and Fang, Yangle and Guo, Boqiang and Zhen, Hui-Ling and Tu, Dandan and Huang, Yinya and Liang, Xiaodan},
journal={arXiv preprint arXiv:2605.09266},
year={2026}
}
@article{xiang2026seephys,
title={Seephys: Does seeing help thinking?--benchmarking vision-based physics reasoning},
author={Xiang, Kun and Li, Heng and Zhang, Terry Jingchen and Huang, Yinya and Liu, Zirong and Qu, Peixin and He, Jixi and Chen, Jiaqi and Yuan, Yu-Jie and Han, Jianhua and others},
journal={Advances in Neural Information Processing Systems},
volume={38},
year={2026}
}
7 commits
Python
98.8%
TypeScript
1.0%