Skip to content

Commit c7db581

Browse files
committed
Adding task based on the PisaBench benchmark
1 parent 68b0365 commit c7db581

17 files changed

+485
-0
lines changed

lm_eval/tasks/pisa/README.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# PisaBench
2+
3+
### Paper
4+
5+
Title: PISA-Bench: The PISA Index as a Multilingual and Multimodal Metric for the Evaluation of Vision-Language Models
6+
7+
Abstract: https://arxiv.org/abs/2510.24792
8+
9+
Vision-language models (VLMs) have demonstrated remarkable progress in multimodal reasoning. However, existing benchmarks remain limited in terms of high-quality, human-verified examples. Many current datasets rely on synthetically generated content by large language models (LLMs). Furthermore, most datasets are limited to English, as manual quality assurance of translated samples is time-consuming and costly. To fill this gap, we introduce PISA-Bench, a multilingual benchmark derived from English examples of the expert-created PISA tests, a unified framework for the assessment of student competencies in over eighty countries. Each example consists of human-extracted instructions, questions, answer options, and images, enriched with question type categories, and has been translated from English into five additional languages (Spanish, German, Chinese, French, and Italian), resulting in a fully parallel corpus covering six languages. We evaluate state-of-the-art vision-language models on PISA-Bench and find that especially small models (<20B parameters) fail to achieve high test scores. We further find substantial performance degradation on non-English splits as well as high error-rates when models are tasked with spatial and geometric reasoning. By releasing the dataset and evaluation framework, we provide a resource for advancing research on multilingual multimodal reasoning.
10+
11+
HuggingFace Dataset: https://huggingface.co/datasets/PisaBench/pisa-bench
12+
13+
### Citation
14+
15+
```@misc{haller2025pisabenchpisaindexmultilingual,
16+
title={PISA-Bench: The PISA Index as a Multilingual and Multimodal Metric for the Evaluation of Vision-Language Models},
17+
author={Patrick Haller and Fabio Barth and Jonas Golde and Georg Rehm and Alan Akbik},
18+
year={2025},
19+
eprint={2510.24792},
20+
archivePrefix={arXiv},
21+
primaryClass={cs.CV},
22+
url={https://arxiv.org/abs/2510.24792},
23+
}```
24+
25+
### Groups, Tags, and Tasks
26+
27+
#### Groups
28+
29+
* `pisa`: Evaluates over all language splits with substring matching for answer evaluation.
30+
* `pisa_llm_judged`: Evaluates over all language splits with LLM-based answer evaluation (requires OpenAI api key).
31+
32+
#### Tags
33+
34+
None.
35+
36+
#### Tasks
37+
38+
* `pisa_en`
39+
* `pisa_de`
40+
* `pisa_es`
41+
* `pisa_fr`
42+
* `pisa_it`
43+
* `pisa_ch`
44+
* `pisa_en_llm_judged`
45+
* `pisa_de_llm_judged`
46+
* `pisa_es_llm_judged`
47+
* `pisa_fr_llm_judged`
48+
* `pisa_it_llm_judged`
49+
* `pisa_ch_llm_judged`
50+
51+
### Checklist
52+
53+
For adding novel benchmarks/datasets to the library:
54+
* [x] Is the task an existing benchmark in the literature?
55+
* [x] Have you referenced the original paper that introduced the task?
56+
* [ ] If yes, does the original paper provide a reference implementation? If so, have you checked against the reference implementation and documented how to run such a test?
57+
58+
59+
If other tasks on this dataset are already supported:
60+
* [ ] Is the "Main" variant of this task clearly denoted?
61+
* [ ] Have you provided a short sentence in a README on what each new variant adds / evaluates?
62+
* [ ] Have you noted which, if any, published evaluation setups are matched by this variant?

lm_eval/tasks/pisa/_pisa.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
group: pisa
2+
task:
3+
- pisa_de
4+
- pisa_fr
5+
- pisa_it
6+
- pisa_en
7+
- pisa_es
8+
- pisa_ch
9+
10+
aggregate_metric_list:
11+
- metric: acc # or acc_norm, ppl, etc.
12+
weight_by_size: false
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
group: pisa_llm_judged
2+
task:
3+
- pisa_de_llm_judged
4+
- pisa_fr_llm_judged
5+
- pisa_it_llm_judged
6+
- pisa_en_llm_judged
7+
- pisa_es_llm_judged
8+
- pisa_ch_llm_judged
9+
10+
aggregate_metric_list:
11+
- metric: acc # or acc_norm, ppl, etc.
12+
weight_by_size: false

lm_eval/tasks/pisa/_template.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
dataset_path: PisaBench/pisa-bench
2+
output_type: generate_until
3+
doc_to_text: !function utils.pisa_doc_to_text
4+
doc_to_choice: ["A", "B", "C", "D"]
5+
doc_to_target: answer
6+
process_results: !function utils.pisa_process_results
7+
doc_to_image: !function utils.pisa_doc_to_visual
8+
9+
generation_kwargs:
10+
until:
11+
- "<|endoftext|>"
12+
13+
metric_list:
14+
- metric: acc
15+
aggregation: mean
16+
higher_is_better: true

lm_eval/tasks/pisa/pisa_ch.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
task: pisa_ch
2+
include: _template.yaml
3+
task_alias: pisa_ch
4+
test_split: ch
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
task: pisa_ch_llm_judged
2+
include: _template.yaml
3+
task_alias: pisa_ch
4+
test_split: ch
5+
process_results: !function utils.pisa_process_results_llm_judged

lm_eval/tasks/pisa/pisa_de.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
task: pisa_de
2+
include: _template.yaml
3+
task_alias: pisa_de
4+
test_split: de
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
task: pisa_de_llm_judged
2+
include: _template.yaml
3+
task_alias: pisa_de
4+
test_split: de
5+
process_results: !function utils.pisa_process_results_llm_judged

lm_eval/tasks/pisa/pisa_en.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
task: pisa_en
2+
include: _template.yaml
3+
task_alias: pisa_en
4+
test_split: en
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
task: pisa_en_llm_judged
2+
include: _template.yaml
3+
task_alias: pisa_en
4+
test_split: en
5+
process_results: !function utils.pisa_process_results_llm_judged

0 commit comments

Comments
 (0)