ARC
Tests whether a model can answer grade-school science exam questions; the Challenge split contains the ones simple word-matching cannot solve.
At a glance
What it tests
ARC is a pile of real science-exam questions. The authors ran two simple solvers over all of them — one based on retrieval, one on word co-occurrence — and put every question both solvers failed into the Challenge set. Everything else is Easy.
So ARC-Challenge is defined by what does not work: you cannot answer 'Which property of a mineral can be determined just by looking at it?' by matching keywords to a textbook sentence. You need to combine facts or reason about the options.
GPT-3 reached 51.5% on Challenge few-shot (and 70.1% on Easy). Frontier models now sit at 96–97% on Challenge, so it has effectively been retired in favour of harder sets like GPQA.
Examples
Items from the dataset (or representative items where the originals are not freely redistributable).
Reported results
Scores reported on this benchmark, with the evaluation setting each one used.
| Setting | Reported | Context |
|---|---|---|
| Few-shot (50 examples) | Challenge 51.5Easy 70.1 | Zero-shot 51.4 / 68.8; fine-tuned SOTA then 78.5 (UnifiedQA) / 92.0 |
State of the art
GPT-4o and Claude 3.5 Sonnet 96.7 on Challenge. Source: arxiv.org ↗ · checked October 2026.
Quickstart
Load the benchmark and score a Hugging Face causal LM on it in a few lines.
pip install -U datasets transformers evaluate lm-eval sacrebleu rouge-score scikit-learn
question, choices (dict with text list and label list), answerKey ('A'–'E' or '1'–'4')
from datasets import load_dataset ds = load_dataset("allenai/ai2_arc", "ARC-Challenge", split="test") print(ds) # columns: question, choices (dict with text list and label list), answerKey ('A'–'E' or '1'–'4') print(ds[0])
Two helpers cover every benchmark in this collection: loglik for anything multiple-choice (score each option, pick the highest) and generate for anything free-form. Swap MODEL for whatever you are evaluating.
import torch from transformers import AutoTokenizer, AutoModelForCausalLM MODEL = "gpt2" # or "Qwen/Qwen2.5-1.5B", "meta-llama/Llama-3.2-1B", … tok = AutoTokenizer.from_pretrained(MODEL); model = AutoModelForCausalLM.from_pretrained(MODEL, torch_dtype=torch.bfloat16).eval().to("cuda") @torch.no_grad() def loglik(context, continuation): """Sum of log-probs of `continuation` tokens given `context` — the standard multiple-choice scorer.""" ids = tok(context + continuation, return_tensors="pt").input_ids.to(model.device) n_ctx = len(tok(context).input_ids) logp = model(ids).logits.log_softmax(-1)[0, :-1] return logp.gather(1, ids[0, 1:, None])[n_ctx - 1:].sum().item() @torch.no_grad() def generate(prompt, max_new_tokens=32, stop=None): ids = tok(prompt, return_tensors="pt").input_ids.to(model.device) out = model.generate(ids, max_new_tokens=max_new_tokens, do_sample=False, pad_token_id=tok.eos_token_id) text = tok.decode(out[0, ids.shape[1]:], skip_special_tokens=True) return text.split(stop)[0] if stop else text
# Science MC: score each option text as a continuation of "Question: … Answer:" acc = 0 for ex in ds: q = ex.get("question") or ex["question_stem"] texts, labels = ex["choices"]["text"], ex["choices"]["label"] s = [loglik(f"Question: {q}\nAnswer:", " " + t) / max(1, len(t)) for t in texts] acc += int(labels[s.index(max(s))] == ex["answerKey"]) print("acc_norm", acc / len(ds))
Task name(s): arc_challenge, arc_easy. The harness reproduces the GPT-3 prompt formats and reports the standard metric.
lm_eval --model hf --model_args pretrained=gpt2,dtype=bfloat16 \
--tasks arc_challenge --num_fewshot 0 --batch_size auto --output_path results/Pitfalls
- Some questions have 3 or 5 options, and some use numeric labels — handle both.
- lm-eval's arc_challenge scores the option *text* by log-likelihood (acc_norm); the 'MMLU-style' letter prompt used by model cards gives much higher numbers. Say which.
- Easy and Challenge are reported separately; never average them.
References
- Paper (arXiv 1803.05457)https://arxiv.org/abs/1803.05457
- AI2 leaderboardhttps://leaderboard.allenai.org/arc/
- Hugging Facehttps://huggingface.co/datasets/allenai/ai2_arc