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:

pip install torch tiktoken
python 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

@inproceedings{shah2025words,
  title     = {Words That Unite The World: A Unified Framework for Deciphering
               Central Bank Communications Globally},
  author    = {Shah, Agam and Sukhani, Siddhant and Pardawala, Huzaifa and others},
  booktitle = {NeurIPS 2025 Datasets and Benchmarks Track},
  year      = {2025}
}

The WCB dataset is released under CC-BY-NC-SA 4.0; these derived models carry the same terms.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Paper for charliebrown2/wcb-gpt2-124m-from-scratch