- PaperScorer-7B-Text-OpenReview-ICLR
PaperScorer-7B-Text-OpenReview-ICLR
SFT fine-tune of Qwen/Qwen2.5-7B-Instruct trained to predict ICLR-style Accept/Reject verdicts on academic papers from the paper text.
- Modality: text
- Training data: iclr-21k (85/5/10 balanced split)
- Checkpoint: step 1322, end of epoch 2 of 4 (7B โ ep2 by convention)
- Hyperparams: LR 1e-6, cosine_then_constant scheduler (decay_ratio 0.75, min_lr_rate 0.001), batch size 32, cutoff_len 24480, framework LLaMA-Factory + FSDP2.
Quickstart โ serve + submit a PDF or LaTeX source dir
Easiest path uses the PaperScorer orchestrator (paperprep + scoring server + web UI all wired up). Clone, run setup, and chain into the UI:
git clone https://github.com/zlab-princeton/PaperScorer.git
cd PaperScorer
uv tool install . # installs the `paperscorer` CLI globally on PATH
paperscorer setup --serve # in the wizard, pick: size=7B ยท modality=text ยท domain=iclr
# โ web UI on http://localhost:8003 (PDF upload + LaTeX dir browse)
Or hit the API directly (FastAPI on the same port):
# Submit an anonymized PDF; poll for the verdict
JOB=$(curl -s -F file=@anonymized.pdf http://localhost:8003/submit | jq -r .job_id)
curl http://localhost:8003/status/$JOB # โ job dict: state, verdict, p_accept, ...
# Submit a LaTeX source directory (anonymized) or an arXiv id
curl -X POST http://localhost:8003/submit_latex \
-H "Content-Type: application/json" \
-d '{"path": "/abs/path/to/anonymized_latex_dir"}'
curl -X POST http://localhost:8003/submit_arxiv \
-H "Content-Type: application/json" \
-d '{"arxiv_id": "2511.08364"}'
Headless one-shot (no server):
paperscorer run /abs/path/to/anonymized.pdf
Lower-level: stand up just a vLLM scoring server with pre-prep'd sharegpt rows (skips paperprep):
vllm serve skonan/PaperScorer-7B-Text-OpenReview-ICLR --task generate --gpu-memory-utilization 0.85
# OpenAI-compat API on :8000 โ format prompts per the "Prompt format" section below.
Test results (in-distribution)
Evaluated on iclr-balanced-test (2025/26 papers). The prediction is the model's own decision: Accept when the decision-token log-odds โ = logprob(Accept) โ logprob(Reject) is โฅ 0, which is the same as parsing the \boxed{} answer. No threshold is tuned. pA = predicted accept rate; A_rec / R_rec = accept / reject recall.
| n_test | Acc | AUC | pA | A_rec | R_rec |
|---|---|---|---|---|---|
| 1667 | 66.0% | 0.720 | 47% | 62.8% | 69.3% |
Calibration (temperature scaling with a base-rate term)
โ measures the evidence for Accept under the balanced 50/50 prior the model was trained on. To turn it into a calibrated chance of acceptance at a venue's acceptance rate ฯ, divide by the temperature ฯ = 1.135 and add the prior log-odds:
p_accept = ฯ(โ / ฯ + log(ฯ / (1 โ ฯ))), with ฯ = 1.135 and ฯ = 0.306 for this model.
import math
ell = logprob_accept - logprob_reject # at the decision token; use -50 for a token missing from the top-5
def p_accept(ell, tau=1.135, pi=0.306):
# pi = the venue's acceptance rate; default is this model's validation acceptance rate
return 1 / (1 + math.exp(-(ell / tau + math.log(pi / (1 - pi)))))
p_accept(ell) # chance of acceptance at ICLR's rate (ฯ = 0.306)
p_accept(ell, pi=0.5) # balanced 50/50 pool: the shift vanishes, giving ฯ(โ / ฯ)
ฯ was fit by negative log-likelihood on the natural-acceptance-rate validation split (30.6% accepts), which matches deployment, where most papers are rejected. The base-rate term is inside the fit, with ฯ set to that split's acceptance rate, so the shift handles the base rate and ฯ only sets how sharp the probabilities are. p_accept is the model's chance of acceptance for the paper at a venue that accepts a fraction ฯ of submissions.
- Decisions are unchanged. The model accepts iff
โ โฅ 0, which is exactlyp_accept โฅ ฯ. Neither ฯ nor ฯ ever changes a decision, so the test results above hold as reported. - Other venues. Plug in a different venue's acceptance rate as
pito get the chance of acceptance there, e.g.p_accept(ell, pi=0.25)for a venue that accepts 25% of submissions. - Balanced pools. On a 50/50 pool, set
ฯ = 0.5: the shift vanishes andp_accept = ฯ(โ / ฯ).
Expected calibration error (10 bins): on iclr-balanced-test (ฯ = 0.5), 0.027 raw โ 0.023 calibrated; on the natural-rate ICLR test split, 0.128 without the base-rate term โ 0.038 with it. Method and numbers follow the paper's calibration section (Section 5, "Confidence tracks accuracy"; Appendix I.3, "Calibration Details", Table I.1).
Note on training-size asymmetry
ICLR-trained models saw ~21k examples (4 epochs โ 2644 / 5296 steps). Arxiv-trained vs ICLR-trained models saw a ~3ร data gap โ direct comparisons should account for it.
Prompt format
Inputs are sharegpt-style 3-turn conversations: system, human, gpt. SYSTEM is the same string across all 8 PaperScorer models. USER preamble differs per training domain. Vision variants append one <image> token per page-screenshot at the end of the user message.
SYSTEM (all PaperScorer models)
You are an expert academic reviewer tasked with evaluating research papers.
ICLR-trained USER preamble (verbatim)
I am giving you a paper. I want to predict its acceptance outcome at ICLR.
- Your answer will either be: \boxed{Accept} or \boxed{Reject}
- Note: ICLR generally has a ~30% acceptance rate
# <PAPER TITLE>
...paper body in markdown...
ASSISTANT (gold)
Outcome: \boxed{Accept}
or
Outcome: \boxed{Reject}
At inference, the decision logprobs at the boxed-token position (5th generated token under the qwen template) give โ for temperature scaling (see Calibration above); either parse the text for the decision or read logprobs directly.
Concrete example (TEXT, ARXIV-trained)
[SYSTEM]
You are an expert academic reviewer tasked with evaluating research papers.
[USER]
I am giving you a paper submitted to a top machine-learning venue. Predict its acceptance outcome.
- Your answer will either be: \boxed{Accept} or \boxed{Reject}
- Note: typical top-tier ML venues have ~25-30% acceptance rates
# SSAST: SELF-SUPERVISED AUDIO SPECTROGRAM TRANSFORMER
## Abstract
... ~32k chars of paper body ...
[ASSISTANT]
Outcome: \boxed{Accept}
Related models + datasets in the PaperScorer collection
All 8 single-domain SFT models (this one plus 7 siblings) plus the companion PaperScorer-Text and PaperScorer-Vision datasets live in the PaperScorer collection. Pairwise comparisons across {3B, 7B} ร {text, vision} ร {arxiv, openreview-iclr} are intended.
Citation
If you use PaperScorer, please cite our NeurIPS 2026 paper:
@inproceedings{konan2026paperscorer,
title = {PaperScorer: How Predictable Is Paper Acceptance?},
author = {Konan, Sachin and Liu, Jonathan and Liu, Zhuang},
booktitle = {Advances in Neural Information Processing Systems},
year = {2026}
}
- Downloads last month
- 28