--- license: mit language: - en library_name: transformers pipeline_tag: text-generation tags: - gpt2 datasets: - craa/exceptions --- # exceptions GPT-2 language models trained from scratch for the exceptions project (Leong and Linzen, [Language Models Can Learn Exceptions to Syntactic Rules](https://doi.org/10.7275/h25z-0y75), and follow-up experiments). Code: [github.com/craaaa/exceptions](https://github.com/craaaa/exceptions). All models are GPT-2 small (12 layers, 12 heads, 768 hidden). Each folder holds the final model of one training run (best checkpoint by validation loss), with its tokenizer and Trainer logs (`trainer_state.json`, `all_results.json`). ## Contents | Folder | Runs | Naming | Seeds | Vocab | |---|---|---|---|---| | `exp1b/` | 5 | `100M_` | 1001, 2128, 3591, 5039, 40817 | 50,257 (GPT-2) | | `exp2a/` | 60 | `_to__frequency_` — cond ∈ {cost, last, resemble}, verb ∈ {carry, drop, hit, push} | 1001, 2128, 3591, 5039, 40817 | 50,257 (GPT-2) | | `exp2b/` | 180 | `swap__to__` — src ∈ {last, require, take}; and `swap_

__to__` — p ∈ {0.3, 0.7}, cond ∈ {cost, last, resemble}; verb ∈ {carry, drop, hit, push} | 1032, 2128, 3591, 5039, 40817 | 50,257 (GPT-2) | | `exp3/` | 170 | `{high,low}__` — n ∈ {0, 1, 2, 4, 8, 16, 32, 64, 10, 100, 128, 256, 500, 512, 1000, 1500, 2000} | 495, 634, 1208, 6910, 8397 | 52,000 (custom) | | `base/` | 10 | `100M__`, `100M_default_` — baseline runs from 2024 | 495, 634, 1208, 6910, 8397 | 52,000 (custom) | Training corpora are in the dataset repo [`craa/exceptions`](https://huggingface.co/datasets/craa/exceptions); the `exp2a` folder names correspond to its `frequency__to_` configs, and `exp2b` `swap__to_` to its `swap__to_` folders. ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer repo, run = "craa/exceptions", "exp3/high_0_1208" model = AutoModelForCausalLM.from_pretrained(repo, subfolder=run) tokenizer = AutoTokenizer.from_pretrained(repo, subfolder=run) ``` `base/100M_default_*` has no tokenizer files; it uses the same 52,000-token vocab as `exp3/`, so load the tokenizer from e.g. `base/100M__` or any `exp3/` run. Intermediate checkpoints are not published here.