What reinforcement learning adds to a vision-language model
Highlights
Where reasoning pays, RL wins and keeps it. GRPO ends 11.3 points above SFT's best on the same questions, with answers still 162 tokens long.
Where it doesn't, RL changes form, not ability. GRPO deletes the reasoning and lands where short answers already were (78.3% against 77.9%).
RL's gains come from the image. Of its 10.3-point gain, 0.4 survives without the image; of SFT's 19.1, 10.4 does.
| Test set | Instruct | SFT | GRPO | SFT → GRPO | On the row's scale | |
|---|---|---|---|---|---|---|
| Charts | ChartQAreasoning prompt | 69.7 | 66.2 | 80.1 | 79.8 | 65–85 |
| Charts | ChartQA, audited judgereasoning prompt | 77.2 | 69.8 | 82.6 | 82.0 | 65–85 |
| Medical | SLAKE, 2Bshort answer | 49.8 | 74.8 | 65.6 | 76.2 | 45–80 |
| Medical | SLAKE, 8Bshort answer | 58.1 | 77.2 | 68.3 | 78.2 | 55–80 |
| Medical | OmniMedVQA, held-out collections, 2Bshort answer, normalized | 74.6 | 85.0 | 79.1 | 85.6 | 70–90 |
| Unseen | PathVQA (trained on SLAKE, 2B)short answer | 33.5 | 31.7 | 32.5 | 32.6 | 30–40 |
| Unseen | TextVQA (trained on VQAv2 + GQA)short answer | 80.5 | 80.1 | 81.0 | 80.9 | 80–90 |
| Unseen | VizWiz (trained on VQAv2 + GQA)short answer | 42.5 | 42.5 | 43.6 | 43.0 | 40–50 |
1The claim
RL with a verifiable reward trains a model on its own samples and pays it only when a program confirms the answer. For language models this step turns a fine-tuned model into a reasoning one. Vision-language models answer a different mix of questions: many are settled by looking rather than deriving, and a reward that checks only the final answer can just as well teach a model to stop thinking. The comparisons that would show when RL helps are rarely run under one recipe, one evaluation and matched data. We run them.
Whether RL beats SFT depends on what the task pays for. RL mostly sharpens what the model can already sample; where the answer is out of reach, SFT has to go first. The rest of this report hangs from that claim, and each branch links to the page with all of its evidence.
- Reasoning pays: RL wins and keeps the reasoning. evidence
- Reasoning doesn't pay: RL changes form, not ability. evidence
- Knowledge missing: SFT first, RL polishes. evidence
- What RL's gain is made of: it needs the image and moves the model less. evidence
- Why trust it: the harness every number passes through. evidence
- Open: one model for photos and charts. evidence
2Setup
All models start from Qwen3-VL-2B-Instruct or Qwen3-VL-8B-Instruct and train LoRA adapters of rank 16 on the language model's attention and MLP layers in bf16; the vision encoder stays frozen. Three methods are compared on the same training questions.
| Method | Signal | Recipe |
|---|---|---|
| SFT | Reference short answers, loss on answer tokens | One epoch; learning rate 1e-4 (2B), 5e-5 (8B) |
| GRPO | 1 if the tagged answer matches the reference after normalization, else 0 | 4 questions × 8 samples per update at temperature 1; group-relative advantages; token-level loss reduction as in DAPO; no KL term; learning rate 1e-5 decaying to 0; rollouts under a step-by-step or a short-answer prompt |
| SFT → GRPO | Both, in sequence | GRPO started from the SFT model, same updates |
Rollouts come from vLLM serving the trained adapter unmerged, so the sampler is the policy being trained: in a controlled check the sampler–trainer gap falls from 0.132 to 0.008 nats per token. One RL epoch draws each training question once, the exposure SFT has.
| Domain | Training data | Test data |
|---|---|---|
| Photos | VQAv2 + GQA: 39,458 SFT questions; RL draws 4,000 (1,000 updates) from a 55,438-question pool | VQAv2 5,000; GQA 12,578; CLEVR counting 3,000 |
| Charts | ChartQA human-written questions: 7,376 (one epoch, 1,844 updates) | ChartQA 1,250 |
| Medical | SLAKE (English), one epoch (1,229 RL updates); OmniMedVQA with 17 source collections held out for testing: 62,678 SFT questions, RL draws 4,916 | SLAKE 1,061; OmniMedVQA held-out collections 1,156 |
| Never trained on | None | TextVQA 5,000; VizWiz 8,000; PathVQA 2,240 |
Each candidate dataset passes a screen on 500 training questions before any training, with gates written before the candidates ran: a black or swapped image must cost at least 10 points, at least 25% of questions must give GRPO a gradient, answers must be parseable, and accuracy must not already sit at the ceiling (Table A1).
3Where reasoning pays, RL wins and keeps it
Trained with step-by-step rollouts for one epoch on ChartQA's human-written questions, GRPO raises accuracy from 69.7% to 80.1% (+10.4 [+8.2, +12.6] points) and keeps its reasoning (205 → 162 tokens). SFT on the same questions reaches 68.8% at best, so GRPO ends 11.3 points above it. The audited judge credits many of Instruct's misses that are right answers in the wrong form, such as "20%" for a label of 20; under it the gain is 5.4 points (77.2% → 82.6%).
The answers were already within reach. Sampled 32 times per question, GRPO raises pass@1 from 66.4% to 79.8% and ends level with Instruct at pass@32 (91.0% → 91.5%): it learns to choose what Instruct could already sample. With short-answer rollouts on the same data, it gains at pass@1 and gives up coverage at pass@32 (86.1% → 77.1%).
Scope: ChartQA is the one chart source in this study, and SFT in this comparison trains on its short reference answers. A second chart-and-document source and SFT on reasoning traces are the next tests.
4Where it doesn't, RL changes form, not ability
A 0/1 correctness reward keeps whatever raises the chance of a correct final answer. On photo questions, reasoning lowers it. On VQAv2 under the reasoning prompt, GRPO goes from 55.1% at 148 tokens to 78.3% at 8 tokens, the level of Instruct's short answers (77.9%). The harness separates the two readings: the exact-match gain of 23.2 points is 4.4 under the audited judge.
Short-prompt RL meets SFT on this data rather than passing it, 78.6% against 79.9% on VQAv2, and it narrows what the model can sample: pass@32 falls from 79.8% to 76.6% while SFT raises it to 82.4%.
5Where the answer is out of reach, SFT goes first
On medical images GRPO started from SFT is the best model in all three settings, and SFT beats RL from Instruct in domain. SFT teaches the domain's answers; RL then polishes them, adding 1.3 points on SLAKE at 2B.
| Trained and tested on | Instruct | SFT | GRPO | SFT → GRPO | SFT → GRPO minus SFT | PathVQA Instruct · SFT · GRPO · SFT → GRPO | PathVQA GRPO minus SFT |
|---|---|---|---|---|---|---|---|
| SLAKE, 2B | 49.8 | 74.8 | 65.6 | 76.2 | +1.3 [+0.0, +2.7] | 33.5 · 31.7 · 32.5 · 32.6 | +0.8 [+0.2, +1.5] |
| SLAKE, 8B | 58.1 | 77.2 | 68.3 | 78.2 | +1.0 [−0.3, +2.5] | 36.0 · 35.2 · 36.6 · 36.3 | +1.4 [+0.8, +2.0] |
| OmniMedVQA, held-out collections, 2B | 74.6 | 85.0 | 79.1 | 85.6 | +0.5 [+0.1, +1.0] | 33.5 · 29.4 · 31.7 · 29.5 | +2.3 [+1.2, +3.3] |
Reach separates the two methods. On SLAKE's open-answer questions Instruct's pass@8, the share of questions where one of GRPO's eight samples is right, is 53.7%. GRPO ends close to it at 56.1% and SFT passes it at 68.6%; 8B repeats this (56.7, 59.5, 72.1). Across 10 open-answer rows RL from Instruct ends at most 2.8 points above reach, and only on SLAKE does SFT pass it. The proposed mechanism, in the spirit of what Yue et al. (2025) report for text, is that RL can only reward answers the model samples while SFT can teach the others; the pattern is measured here per domain, and the mechanism itself is untested.
6What RL's gain is made of
Replacing each image with a black one shows what a model answers without looking. RL from Instruct answers as many questions blind as Instruct in 5 of 6 settings, every interval including zero, and +3.2 points in the other. SFT answers more without the image in every setting it trained in. At 8B, 10.4 of SFT's 19.1-point gain on SLAKE survives a black image, against 0.4 of RL's 10.3. RL improves the answers that depend on the image; SFT also learns which answers are likely for a question.
On medical data RL also moves the model far less: its forward KL from Instruct is 5 to 16 times smaller than SFT's. RL's Razor (Shenfeld et al., 2025) finds that forgetting tracks this distance, and GRPO loses less than SFT on PathVQA in every setting. On photos and short-answer charts, where SFT's labels are close to what Instruct already says, both distances are small and SFT's is the smaller.
| Setting | SFT (nats) | GRPO (nats) | SFT / GRPO |
|---|---|---|---|
| SLAKE, 2B | 10.85 | 2.14 | 5.1× |
| SLAKE, 8B | 8.68 | 1.40 | 6.2× |
| OmniMedVQA, held-out | 14.11 | 0.90 | 15.7× |
| VQAv2 | 0.14 | 0.23 | 0.6× |
| ChartQA, short answer | 0.39 | 1.02 | 0.4× |
On sets no model trained on, RL keeps a small edge over SFT: +0.9 [+0.2, +1.6] points on TextVQA and +1.0 [+0.5, +1.6] on VizWiz. SFT on exactly the 4,000 questions GRPO drew does not close it.
These measurements describe RL from Instruct; GRPO after SFT keeps SFT's priors, with a black-image score +24.0 points from Instruct's on OmniMedVQA's held-out collections. In short-answer settings RL is also more confident than it is accurate, with a calibration error of 12.1–23.7 points against SFT's 2.2–8.6.
7Why trust it: the harness
Nine layers, each answering one question about a result, each with its own measured number. Every difference reported here passes through all of them.
Every dev and test image is checked against every training pool by a hash of its decoded pixels and dimensions, since the same image can carry different IDs in different sources.
Frozen, hashed test subsets; each model and protocol writes one record with per-question predictions, so every comparison is paired.
Every model is scored with a short-answer prompt and a step-by-step prompt, so a reasoning gain can be told apart from a shortened answer.
Re-implementations of each dataset authors' evaluator, checked against the authors' code, beside a normalized matcher that also defines the training reward.
Every answer exact match marks wrong goes to an LLM judge; a stronger model shown the image audits a stratified sample, and each acceptance is discounted by its stratum's confirmation rate.
Paired bootstrap over the same test questions for every comparison. Three identical greedy runs span 0.4 points, the smallest difference claimed.
pass@k from 32 samples per question at temperature 1, with the unbiased estimator, on held-out test questions.
Each model is rescored with a black image and with another question's image; accuracy with a black image counts what a model answers without looking.
Forward KL from the starting model on its own samples; calibration of the majority answer of 8 samples.
Every table is regenerated from 1,268 saved evaluation records, and a test fails when a published table or a quoted number drifts from them. The judge and the audit cost $6.21 in API calls.
8Open: one model for photos and charts
Does one model learn when to reason? Trained on photos and charts together, a 2B model kept its chart reasoning until update 1,750, lost it by update 2,000, and ended at 65.9% on ChartQA against 80.1% for the chart-only model. The cause is mixing, not training length: a chart-only model trained for the same 2,844 updates keeps 179-token answers and its dev accuracy (75.8% → 75.8%). Routing prompts by domain is the next test.
9Next
- A strategy-by-category map. The same arms on a table grouped into general VQA, reasoning, document and chart, perception and hallucination benchmarks, with an image-gain column for each, plus one new training source each for reasoning and for documents. Predictions for the new sources are written before they train.
- Error analysis that names the errors. Rule-based checks on every evaluation and labeled samples at milestones, so each error type can be taken to the literature on reducing it.
- SFT on reasoning traces. The direct test of whether RL's chart gain comes from RL or from its reasoning targets.
- Medical imaging as its own milestone, from 2D medical questions to 3D abdominal CT.
Side note: do 3D CT benchmarks need the scan?
The same harness asks how much of two CT benchmarks is reachable without looking. On DeepTumorVQA a text-only rule scores 60.7% against 34.5% chance, and M3D-VQA's correct option is A in nearly half of its questions. A debiased DeepTumorVQA built here brings the rule to 35.2%, and on it GRPO and SFT reach the same accuracy. Full note.
AWhat did not work, and details
Each tried change, with what was expected and what it implies, is in the negatives checklist: on-policy distillation, filtered pools, refilling dead groups, a format reward, a perception loss, vision LoRA, upscaling, and 8 training settings on ChartQA that read −1.5 to +1.0 points against a same-seed repeat of 0.5.
| Candidate | Short-answer accuracy | Reasoning payoff, matched format | Points lost, black / swapped image | Learnable | Screen |
|---|---|---|---|---|---|
| ChartQA (human) | 69.0 | +0.0 [−3.2, +3.2] | 53 / 54 | 41% | passes |
| SLAKE (English) | 51.6 | −1.4 [−4.0, +1.2] | 29 / 20 | 49% | passes |
| OmniMedVQA (open access) | 71.4 | −2.6 [−5.6, +0.4] | 23 / 29 | 53% | passes |
| VQAv2 | 73.2 | −7.6 [−10.6, −4.6] | 45 / 45 | 48% | passes |
| GQA | 69.6 | −9.2 [−12.4, −6.0] | 36 / 38 | 42% | passes |
| CLEVR compositional | 88.4 | −5.6 [−9.2, −2.0] | 56 / 47 | 62% | fails · no training pool |
| Kvasir-VQA-x1 (atomic) | 28.4 | −5.8 [−8.4, −3.4] | 8 / 7 | 37% | fails · image barely used |
| PathVQA | 31.8 | −2.1 [−4.8, +0.4] | 10 / 9 | 39% | fails · image barely used |
| ReXVQA (frontal view) | 52.6 | −3.2 [−7.4, +1.2] | −2 / 4 | 63% | fails · image barely used |
| MedThinkVQA | 37.2 | −10.0 [−14.0, −6.0] | −1 / −1 | 47% | fails · image barely used |
| DeepTumorVQA (whole-volume montage) | 39.4 | +2.4 [−1.0, +5.8] | −2 / 0 | 56% | fails · image barely used |
| DeepTumorVQA (debiased options) | 33.2 | +0.0 [−3.4, +3.2] | 0 / −2 | 57% | fails · image barely used |
| TextVQA | 79.8 | −3.3 [−6.1, −0.5] | 76 / 77 | 42% | fails · no training pool |
| CLEVR counting | 98.0 | −3.2 [−6.8, +0.2] | 98 / 86 | 48% | fails · near the ceiling |
Scope
- One training seed per model; intervals cover the sampling of test questions.
- The judge audit, pass@k, the unseen sets and the CT audit are at 2B; the main photo matrix and SLAKE also at 8B.
- Fixed test subsets scored locally, not benchmark evaluation servers; contamination is checked with exact image hashes against this project's training pools.
Reproducibility
Training uses TRL 1.8 with PEFT and colocated vLLM; evaluation runs through one protocol-hashed harness that stores per-question predictions for every model and protocol. Experiments are declared in experiments.toml before they run, and this page is rebuilt from the records with python -m scripts.report_page. About 279 GPU-hours in total, on cluster GPUs (RTX PRO 6000 96 GB, A100 80 GB, A30 24 GB) and one RTX 4090 24 GB; the 2B pipeline runs end to end on a single 24 GB GPU.
Terms
- GRPO
- Group Relative Policy Optimization: sample several responses per question and use each one's reward minus the group mean as its advantage, so no value network is needed.
- Verifiable reward
- A reward computed by a program, here 1 when the tagged answer matches the reference after normalization and 0 otherwise.
- Audited judge
- Exact-match hits plus LLM-judge acceptances, each acceptance weighted by the share of its stratum that an image-aware auditor confirmed.
- pass@k
- The probability that at least one of k samples is correct, estimated without bias from the samples drawn.
- Reach
- Instruct's pass@8 on open-answer questions: what the starting model can already sample within one GRPO group.
- Forward KL
- E[log p₀(y|x) − log p(y|x)] over responses y sampled from the starting model p₀: how much less likely the trained model p finds what the start would say.
- Calibration error
- The gap between confidence (share of samples giving the majority answer) and accuracy, averaged over 10 confidence bins.