This document covers the evaluation layer that is currently present in
vlm-fix.
The repo currently includes:
- VLM-Fix image-based evaluation
- VLM-Fix text-only evaluation
VLMs-Are-Biasedimage-based evaluation and matrix reporting- shared local/HF dataset loading for the VLM-Fix runners
- reduced direct and CoT wrappers for the paper's API models
- activation-steering analysis scripts for VLM-Fix
The tracked public evaluation stack currently targets:
- 10 open-weight VLMs
- 4 API-backed VLMs
Open-weight models:
Qwen/Qwen2.5-VL-3B-InstructQwen/Qwen2.5-VL-7B-InstructQwen/Qwen3-VL-4B-InstructQwen/Qwen3-VL-8B-InstructQwen/Qwen3-VL-32B-InstructOpenGVLab/InternVL3_5-4BOpenGVLab/InternVL3_5-8BOpenGVLab/InternVL3_5-14Ballenai/Molmo2-4Ballenai/Molmo2-8B
API-backed models:
gpt-4.1gpt-5.2claude-sonnet-4-0claude-sonnet-4-5
These same model keys are used by the VLMs-Are-Biased runners through the
shared eval.model_registry layer.
Primary entrypoints:
Current input formats:
- local dataset directory containing
instances.parquet - HF dataset config loaded via
--dataset-source hf
Typical command:
python scripts/run_vlm_fix_matrix.py \
--dataset-dir data/generated/vlm_fix \
--models Qwen/Qwen2.5-VL-7B-Instruct allenai/Molmo2-4BHF-backed command shape:
python scripts/run_vlm_fix_matrix.py \
--dataset-source hf \
--hf-repo maveryn/vlm-fix \
--hf-config vlm_fix \
--hf-split main \
--models Qwen/Qwen2.5-VL-7B-InstructTypical outputs:
runs/vlm_fix/<game>/*.jsonlresults/vlm_fix/*.csvresults/vlm_fix/*.parquet
Useful wrappers:
scripts/run_vlm_fix_api_reduced.shscripts/run_vlm_fix_api_cot_reduced.pyscripts/run_vlm_fix_api_cot_reduced_openai.shscripts/run_vlm_fix_api_cot_reduced_anthropic.sh
Primary entrypoints:
Current input formats:
- local dataset directory containing
instances.parquet - HF dataset config loaded via
--dataset-source hf
Typical command:
python scripts/run_vlm_fix_text_only_matrix.py \
--dataset-dir data/generated/vlm_fix_text_only \
--models Qwen/Qwen2.5-VL-7B-InstructHF-backed command shape:
python scripts/run_vlm_fix_text_only_matrix.py \
--dataset-source hf \
--hf-repo maveryn/vlm-fix \
--hf-config vlm_fix_text_only \
--hf-split main \
--models Qwen/Qwen2.5-VL-7B-InstructTypical outputs:
runs/vlm_fix_text_only/<game>/*.jsonlresults/vlm_fix_text_only/*.csvresults/vlm_fix_text_only/*.parquet
Primary entrypoints:
eval/prepare_vlms_are_biased_paper_4subset.pyeval/run_vlms_are_biased_eval.pyeval/run_vlms_are_biased_matrix.pyscripts/run_vlms_are_biased_api_matrix.sh
Study subset preparation:
python eval/prepare_vlms_are_biased_paper_4subset.py \
--out-dir data/generated/vlms_are_biased_hf_original_4subset_322That prep flow materializes:
- the 4 study topics:
Game Boards,Logos,Flags,Animals - both prompt styles:
original,item_alias - both image variants:
original,flipped - explicit 2x2 parquet views for the matrix runs
Typical matrix command:
python eval/run_vlms_are_biased_matrix.py \
--dataset-dir data/generated/vlms_are_biased_hf_original_4subset_322 \
--topics "Game Boards" "Logos" "Flags" "Animals" \
--prompt-styles original item_alias \
--image-variants original flipped \
--models Qwen/Qwen2.5-VL-7B-InstructTypical API wrapper:
bash scripts/run_vlms_are_biased_api_matrix.sh gpt-4.1 gpt-5.2 claude-sonnet-4-5Typical outputs:
runs/vlms_are_biased/<topic>/*.jsonlresults/vlms_are_biased/*.csvresults/vlms_are_biased/*.xlsxresults/vlms_are_biased/*.tex
Current entrypoints:
analysis/steering_vlm_fix/run_transfer_matrix_cached.pyanalysis/steering_vlm_fix/plot_transfer_matrix_layerwise.py
These scripts still assume a local benchmark dataset directory.
The main evaluation change is now in place for:
scripts/run_vlm_fix_matrix.pyeval/run_vlm_fix_eval.pyscripts/run_vlm_fix_api_cot_reduced.pyscripts/run_vlm_fix_text_only_matrix.py
Expected new flags:
--dataset-source local|hf--hf-repo--hf-config--hf-split--hf-revision--hf-cache-dir
The shell wrappers for reduced API and text-only runs also accept
DATASET_SOURCE=hf plus the corresponding HF_DATASET_* environment
variables.
Unlike the VLM-Fix benchmark, VLMs-Are-Biased is not published as a config
inside the shared maveryn/vlm-fix HF dataset repo. The public workflow here
is:
- prepare the paper subset locally from
anvo25/vlms-are-biased - run the matrix or single-eval entrypoints against that local prepared cache