Skip to content

[Fix] Molmo AI2D: map no-letter answers to the option letter, not its… - #1655

Open
aarjunsrinivasan wants to merge 1 commit into
open-compass:mainfrom
aarjunsrinivasan:fix/molmo-ai2d-mapping
Open

[Fix] Molmo AI2D: map no-letter answers to the option letter, not its…#1655
aarjunsrinivasan wants to merge 1 commit into
open-compass:mainfrom
aarjunsrinivasan:fix/molmo-ai2d-mapping

Conversation

@aarjunsrinivasan

Copy link
Copy Markdown

Summary

Molmo's ai2_diagram_no_letter prompt shows AI2D options with their A/B/C/D
labels stripped, so generate_inner maps the model's reply back to a letter.
It did this by position in the printed list, which is only correct when the
option columns are a contiguous prefix.

AI2D_TEST index 83301 has an empty A column, so its options are B/C/D. The
prompt lists ['B', 'A', 'C']; Molmo answered 'C' — the value of column D,
i.e. correct — but position 2 mapped it to 'C'. The row was scored wrong and
was unwinnable for any model. The lettered ai2_diagram: path already maps to
the column key, so the two paths disagreed.

Fix

Carry the {letter: value} mapping alongside the prompt on the message item
(the same way video datasets carry role) and map the reply back to the key.
The prompt text sent to the model is unchanged.

Also stop aborting the run on an unrecognised reply: options.index() raised
ValueError, which SKIP_ERR does not catch (it handles only RuntimeError),
so one stray token discarded a full eval. Replies are now normalised for
whitespace, punctuation and case, and returned unchanged when nothing matches,
leaving the decision to the existing answer matcher.

Validation

Molmo-7B-D-0924, AI2D_TEST, --judge exact_matching, max_crops=36:

before after
accuracy 2511/3088 = 0.813148 2512/3088 = 0.813472
predictions changed 1 (index 83301, CD)
regressions 0

3087/3088 predictions are bit-identical — the prompt is unchanged, so no
published Molmo AI2D number moves. Confirmed two independent ways: offline
rescoring of the stored predictions, and a full re-run that reproduced the
same single row.

The ai2_diagram_no_letter path was added in #648 to match the official Molmo
eval; this keeps that behaviour and fixes only the letter mapping.

… position

The ai2_diagram_no_letter prompt hides the A/B/C/D labels, so the reply is
mapped back to a letter -- previously by position, which is only correct when
the option columns are a contiguous prefix. AI2D_TEST index 83301 has an empty
A column (options B/C/D), so the correct reply 'C', the value of column D, was
scored as 'C' and the row was unwinnable for any model. Carry the
{letter: value} mapping alongside the prompt and map back to the key, matching
what the labeled path already does. The prompt sent to the model is unchanged.

Also return an unmatched reply unchanged instead of raising ValueError, which
SKIP_ERR does not catch (it handles only RuntimeError), so one stray token
aborted a multi-hour eval.

Molmo-7B-D-0924, AI2D_TEST, exact_matching: 2511/3088 -> 2512/3088.
One row fixed, none regressed, 3087/3088 predictions bit-identical.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant