GPT-2 124M (from scratch) fine-tuned on World Central Banks
Fine-tuned classifiers for the three tasks of the
World Central Banks (WCB)
benchmark from
Words That Unite The World
(NeurIPS 2025 Datasets & Benchmarks):
| task | classes |
|---|
stance | dovish / hawkish / irrelevant / neutral |
temporal | forward looking / not forward looking |
uncertainty | certain / uncertain |
The backbone is a GPT-2 124M implemented from scratch (no transformers modelling
code) and pretrained from random init on FineWeb-Edu. LoRA and QLoRA (blockwise NF4
with double-quantized scales) are also hand-written -- no peft, no bitsandbytes.
Checkpoints
| file | task | mode | weighted F1 | macro F1 | trainable params | size |
|---|
stance/full.pt | stance | full | 0.667 | 0.669 | 124,478,976 | 498.0 MB |
stance/lora.pt | stance | lora | 0.657 | 0.657 | 445,440 | 1.8 MB |
stance/qlora.pt | stance | qlora | 0.664 | 0.659 | 445,440 | 1.8 MB |
temporal/full.pt | temporal | full | 0.863 | 0.862 | 124,477,440 | 498.0 MB |
temporal/lora.pt | temporal | lora | 0.868 | 0.866 | 443,904 | 1.8 MB |
temporal/qlora.pt | temporal | qlora | 0.864 | 0.863 | 443,904 | 1.8 MB |
uncertainty/full.pt | uncertainty | full | 0.833 | 0.772 | 124,477,440 | 498.0 MB |
uncertainty/lora.pt | uncertainty | lora | 0.839 | 0.768 | 443,904 | 1.8 MB |
uncertainty/qlora.pt | uncertainty | qlora | 0.835 | 0.764 | 443,904 | 1.8 MB |
Metrics are on the WCB test split for seed config 5768. The published checkpoint is
that seed; the numbers reported in the paper-comparison tables below are means over all
three of the paper's seed configs (5768, 78516, 944601).
Base model: base/pretrain_fineweb_edu_9.9B.pt
GPT-2 124M written from scratch and pretrained from random init on one epoch of
FineWeb-Edu's 9.9B-token sample, 3x RTX 6000 Ada with DistributedDataParallel,
10.89 h wall.
| this model | OpenAI GPT-2 124M | Karpathy llm.c @10B |
|---|
| val loss (FineWeb-Edu val) | 3.0793 | 3.2924 | ~3.28 |
| HellaSwag acc_norm | 0.3035 | 0.2955 | ~0.305 |
Beating OpenAI's checkpoint on val loss is partly home-turf advantage: the loss is
measured on FineWeb-Edu's own validation split, and FineWeb-Edu is a cleaner corpus
than the WebText GPT-2 trained on. HellaSwag is the fairer comparison and the margin
there is small (+0.008).
The LoRA and QLoRA checkpoints require this file -- they contain only adapters and
a classifier head.
Loading
These are not transformers checkpoints -- AutoModel will not load them. The
repo ships the model code:
1pip install torch tiktoken
2python load_example.py stance lora
model.py (GPT-2 + classifier head), peft.py (NF4 + LoRA) and metrics.py are
included, and load_example.py shows the full path for each mode.
The classifier reads the hidden state of the last real token. Padding is on the
right and attention is causal, so pad positions cannot influence that vector and no
attention mask is needed.
Results in context
Weighted F1, mean +- std over the paper's three seeds:
| stance | temporal | uncertainty |
|---|
| majority class | 0.181 | 0.404 | 0.677 |
| TF-IDF + logistic regression | 0.612 | 0.842 | 0.817 |
| GPT-2 124M random init, full FT | 0.601 | 0.839 | 0.823 |
| GPT-2 124M this pretrain, full FT | 0.668 | 0.862 | 0.838 |
| GPT-2 124M this pretrain, LoRA r=8 | 0.652 | 0.862 | 0.843 |
| GPT-2 124M this pretrain, QLoRA NF4 r=8 | 0.654 | 0.858 | 0.841 |
| GPT-2 124M OpenAI weights, full FT | 0.684 | 0.868 | 0.846 |
| RoBERTa-Large, full FT (reproduced) | 0.734 | 0.873 | 0.849 |
| paper's best PLM | 0.740 | 0.868 | 0.846 |
| paper's best zero-shot LLM (70B-class) | 0.620 | 0.864 | 0.816 |
Pretraining is worth +0.067 weighted F1 on stance and much less on the other two
tasks, which are largely cued by surface lexis that 17.5k labelled examples teach
directly. The reproduced BERT/RoBERTa baselines land within 0.006 of the paper's
published numbers on identical splits, which is the evidence that these GPT-2 rows are
measured on the same footing.
LoRA trains 0.36% of the weights and still matches full fine-tuning on temporal and
beats it on uncertainty -- with 17.5k examples against 124M parameters, freezing the
backbone regularizes.
Full evaluation record, including per-bank breakdowns and per-epoch histories for every
run, is in results/.
Limitations
- 124M parameters: below the paper's fine-tuned encoder PLMs on
stance (0.668 vs
0.740 for RoBERTa-Large).
- Near-useless zero-shot (0.218 calibrated on stance). These are fine-tuned
classifiers, not instruction-followers.
- Trained on English-language central bank communications, 1996-2024. Stance labels
encode the annotation guidelines of the source paper; do not treat outputs as
financial advice.
Citation
1@inproceedings{shah2025words,
2 title = {Words That Unite The World: A Unified Framework for Deciphering
3 Central Bank Communications Globally},
4 author = {Shah, Agam and Sukhani, Siddhant and Pardawala, Huzaifa and others},
5 booktitle = {NeurIPS 2025 Datasets and Benchmarks Track},
6 year = {2025}
7}
The WCB dataset is released under CC-BY-NC-SA 4.0; these derived models carry the
same terms.