Skip to content

Repository files navigation

Centauri

socius Collection Paper Dataset License

Centauri

Centauri is a research codebase for training and evaluating small foundation models of human cognition and behaviour. It fine-tunes small pretrained LLMs with LoRA to predict human choices on the Psych-101 benchmark, extending Centaur-style SFT (Binz et al., 2025) down to sub-billion-parameter models.

TL;DR

Centaur (Binz et al., 2025) showed a fine-tuned 70B LLM can predict human behaviour across psychology experiments. Our study asks how small that model can be, and what it actually learns. We LoRA-fine-tune four families of base models (Llama, Qwen, SmolLM, OLMo) — 135M to 14B parameters — on Psych-101 (transcribed human behaviour across 160 psychological experiments), varying adapter rank (r = 4, 8, 16, 32, 64) and training-set size (6.25, 12.5, 25, 50, 100%) independently of scale.

How small? In-distribution, scale barely matters — all fourteen models sit in a narrow band, and 0.6B to 1B parameters suffice to match a reproduced Centaur-70B on held-out participants. Out of distribution that band opens into a markedly steeper gradient, so scale is worth buying for transfer rather than for fit.

Adapter rank against model size on Psych-101, all fourteen models

What do they learn? Stripping the four prompt channels — instruction, stimuli, feedback and choice history — shows the predictions rest on what the participant saw and was told, not on choice-history shortcuts. Masking stimulus and feedback content destroys 75.7% of learned information and drives models below chance, while permuting trial order changes predictions only where the task makes order informative.

Model families

Family Base Sizes
Llama-Centaur Llama 3.2 / 3.1 1B · 3B · 8B
Qwentaur Qwen3 0.6B · 1.7B · 4B · 8B · 14B
Olmotaur OLMo 2 / 3 · fully open 1B · 7B
Smoltaur SmolLM2 / 3 0.1B · 0.4B · 1.7B · 3B

Exact base checkpoints are pinned per size in each family’s train_*.py.

Quickstart

git clone https://github.com/socius-org/Centauri.git && cd Centauri
pip install torch transformers datasets peft unsloth trl wandb pandas numpy huggingface_hub
pip install matplotlib scienceplots scipy scikit-learn        # analysis / figures

All scripts run from the repo root.

# Train one cell
python qwentaur/train_qwentaur.py --size 0.6B --lora_rank 16 --wandb

# Schedule a whole family sweep (LoRA-rank sweep + dataset-size ablation)
python build_dataset_fractions.py                       # one-time: stratified subset indices
python schedule_training_runs.py --family smollm        # add --dry_run to preview the plan
python schedule_training_runs.py --family qwen --sizes 1.7B --ranks 8   # just a subset

# Evaluate in-distribution (Psych-101, resumable)
python schedule_eval_runs.py --family qwen --resume

# Evaluate out-of-distribution (Psych-201 held-out experiments)
python schedule_eval_runs.py --family smollm --eval_script ./eval_model_ood.py \
    --output_dir ./results/psych201 --resume

# A single model, directly
python eval_model.py --model socius/Qwentaur-8B-LoRA-r16 --backend unsloth \
    --output_dir ./results/psych101

The experiment grid (which size/rank/fraction cells exist per family) lives in one place — utils.py — shared by both schedulers, the uploader and the figure scripts, so the design stays in sync.

Repository structure

utils.py                    shared grid (FAMILIES) + cell helpers + HF naming + fraction loader
schedule_training_runs.py   enumerate + launch training cells per family
schedule_eval_runs.py       enumerate + launch eval per cell (against the socius HF repos)
build_dataset_fractions.py  one-time: stratified subset indices for the data ablation
eval_model.py               Psych-101 evaluator (unsloth / transformers backends)
eval_model_ood.py           Psych-201 held-out evaluator
upload_adapters.py          push trained adapters to socius/<RepoName>
organise_collections.py     group HF adapter repos into collections

llama-centaur/  qwentaur/  olmotaur/  smoltaur/     each: train_<x>.py + assets/

results/
  psych101/   flat per-task eval CSVs + psych101_aggr.csv + figures/ + tables/
  psych201/   flat per-task OOD eval CSVs + figures/ + tables/
  4bit/       4-bit base + finetuned eval CSVs
lm_eval/      standard-benchmark results (cogsoc, metabench) + model-card generation
prompt_decomposition/   prompt-ablation studies

Experiments: (1) main scale curve at r=16; (2) LoRA-rank sweep r ∈ {4, 8, 16, 32, 64} at full data; (3) dataset-size ablation at fixed r=16 over {6.25, 12.5, 25, 50, 100}%; (4) 4-bit QLoRA vs bf16; (5) out-of-distribution eval on 18 held-out Psych-201 experiments; (6) prompt-channel ablation and order permutation.

Reproducing the results

Each figure/table generator resolves its data relative to its own location — no arguments needed:

python results/psych101/figures/generate_scaling_plots.py          # scale + precision curves
python results/psych101/figures/generate_ablation_plots.py --family qwen   # rank / data-size
python results/psych101/figures/cognitive_baseline_comparison.py   # vs domain-specific models
python results/psych101/tables/generate_heatmap_tables.py          # LaTeX tables
python results/psych201/figures/generate_scaling_plots.py          # out-of-distribution

Per-task CSVs live flat in results/psych101 and results/psych201, named socius-<Family>-<size>-LoRA-r<rank>[-f<fraction>].csv; psych101_aggr.csv is the aggregate the figures read.

Released artifacts

Everything is hosted under the socius HuggingFace organisation:

Citation

@inproceedings{oh2026smallcogfm,
  title     = {Small Foundation Models of Human Cognition and Behaviour},
  author    = {Oh, Nick and Gobet, Fernand},
  booktitle = {Third Conference on Language Modeling (COLM)},
  year      = {2026},
  note      = {arXiv:2608.05224}
}

Built on the Centaur methodology and the Psych-101 dataset (Binz et al.).

License

Released under the MIT License. Fine-tuned model weights inherit the licenses of their respective base models (Llama, Qwen, OLMo, SmolLM).

About

Small foundation models of human cognition and behaviour

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages