File size: 4,387 Bytes
303acd0
ac0141a
303acd0
ac0141a
 
303acd0
 
 
ac0141a
 
 
303acd0
1dbf237
ac0141a
1dbf237
1e3ad93
a3a2f23
 
ac0141a
 
 
a3a2f23
 
 
ac0141a
a3a2f23
ac0141a
 
 
1e3ad93
ac0141a
 
 
 
 
a3a2f23
 
ac0141a
1e3ad93
 
a3a2f23
ac0141a
 
a3a2f23
 
 
 
 
 
 
ac0141a
 
a3a2f23
 
 
ac0141a
a3a2f23
ac0141a
a3a2f23
 
 
 
 
 
 
 
ac0141a
 
 
a3a2f23
ac0141a
 
 
 
 
a3a2f23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ac0141a
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
---
license: mit
library_name: pytorch
language:
- en
tags:
- nanochat
- language-model
- pre-1930
- historical
- vintage
---

# BART

A 2.8B-parameter language model whose knowledge ends in **1930**. BART is trained from scratch on
pre-1930 public-domain books β€” no modern text anywhere in the corpus β€” to study what a model learns
when its entire world is historical.

πŸ“ [Read the write-up](https://www.unboundedlab.com/blog/bart) Β· 🌐 [Unbounded Labs](https://unboundedlab.com)

This repository holds **the final base model only**. For the other 38 training runs see
[bart-experiments](https://huggingface.co/jbduran/bart-experiments); for the instruction-tuned
version see [bart-sft](https://huggingface.co/jbduran/bart-sft).

## Specifications

| | |
|---|---|
| Parameters | 2,818,575,450 (~2.8B, including embeddings) |
| Depth | 32 |
| Context | 4,096 (SSSL window pattern) |
| Vocab | 32,768 (`rustbpe`) |
| Training tokens | 20.13B |
| Precision | fp8 (tensorwise) |
| Final step | 9,600 |
| Run | `Think.Unbounded-d32-v2mix-cont` |

> **On the parameter count.** `scaling_params` in `config.json` reads 1,677,724,672 β€” that figure is the scaling-law budget and excludes the value-embedding matrices. The model carries a full `32768 x 2048` value embedding on every other layer (16 of 32), which is another 1,073,741,824 parameters. Counting everything, the model is 2,818,575,450 parameters.

## Contents

```
model_009600.pt     final weights (8.99 GB)
meta_009600.json    checkpoint metadata
config.json         full training configuration
run.json            lineage record
summary.json        run summary
tokenizer/          rustbpe tokenizer, vocab 32,768
evals/              val_bpb, samples, vintage-core results
```

The optimizer shard and the eight earlier checkpoints (steps 6000–9500) live in
[bart-experiments](https://huggingface.co/jbduran/bart-experiments) under
`experiments/Think.Unbounded-d32-v2mix-cont/`.

## Training

Pretrained on [bart-dataset-v3](https://huggingface.co/datasets/jbduran/bart-dataset-v3), then
midtrained on [bart-midtrain](https://huggingface.co/datasets/zachnorton03/bart-midtrain) with a
three-stage schedule that shifts the mixture from 0% β†’ 21% β†’ 45% midtrain while the learning rate
decays (nanochat WSD, decay from ~35%).

This run branches from `Think.Unbounded-d32` at step 5500, carrying optimizer state, and continues
on corrected token-based mixtures. The parent had computed its mixture ratios by document count,
which under-delivered midtrain content badly β€” this continuation is the repair.

| Stage | Dataset |
|---|---|
| Pretraining | [v3](https://huggingface.co/datasets/jbduran/bart-dataset-v3) ← [v2](https://huggingface.co/datasets/jbduran/bart-dataset-v2) ← [v1](https://huggingface.co/datasets/jbduran/bart-dataset-v1) |
| Midtraining | [bart-midtrain](https://huggingface.co/datasets/zachnorton03/bart-midtrain) |

Pipelines: [bart-dataset-scripts](https://github.com/OwenVoorhees/bart-dataset-scripts) Β·
[bart-midtrain-scripts](https://github.com/OwenVoorhees/bart-midtrain-scripts)

## What it's for

BART exists to answer what a model trained *only* on historical text actually knows and how it
writes. Because nothing after 1930 appears in training, it can be probed for period-authentic prose
and for historical reasoning without contamination from modern sources β€” and measured on whether
modern concepts leak in at all. The companion benchmarks
([vintage-core](https://huggingface.co/datasets/jbduran/vintage-core),
[vintage-gsm8k](https://huggingface.co/datasets/jbduran/vintage-gsm8k),
[history-event-reconstruction](https://huggingface.co/datasets/jbduran/history-event-reconstruction))
are period-adapted so the model isn't penalized for lacking knowledge it was never given.

This is a base model shipped as a raw nanochat checkpoint β€” not instruction-tuned and not a chat
model. Use [bart-sft](https://huggingface.co/jbduran/bart-sft) for that.

> **Note.** `config.json` records repo and dataset names as they were at training time
> (`jbduran/think.nano`, `think-dataset-clean-1930s`, `think-midtrain`). Those still resolve via
> Hub redirects, but the midtrain mixture subfolders it points at have since moved. The config is
> kept as a historical record of the run rather than rewritten.

## License

MIT

---

Built by [Unbounded Labs](https://unboundedlab.com).