dawidmajewski commited on
Commit
30feb81
·
verified ·
1 Parent(s): 698984b

Release Pollock 1.2 (r004)

Browse files

Publish the verified r004 Transformers artifact, tokenizer, English benchmark results, model card, changelog, training history, and release manifest.

CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
 
3
  Revision numbers identify published model states independently of release names.
4
 
 
 
 
 
 
 
 
 
5
  ## r003 — Pollock 1.1
6
 
7
  - Kept the r002 architecture, tokenizer, dataset, context, effective batch, and four-pass token budget unchanged.
 
2
 
3
  Revision numbers identify published model states independently of release names.
4
 
5
+ ## r004 — Pollock 1.2
6
+
7
+ - Changed the architecture from 12/14/896 to 14/13/832 while keeping nearly the same parameter count.
8
+ - Kept the r003 tokenizer, dataset, context, effective batch, token budget, and 4e-4→4e-5 learning-rate range unchanged.
9
+ - Improved LAMBADA and SciQ over r003; the other five reported English primary metrics declined.
10
+
11
+ Full record: [`training-history/r004.md`](./training-history/r004.md)
12
+
13
  ## r003 — Pollock 1.1
14
 
15
  - Kept the r002 architecture, tokenizer, dataset, context, effective batch, and four-pass token budget unchanged.
README.md CHANGED
@@ -8,35 +8,35 @@ license_link: https://huggingface.co/SlayerLab/pollock-mini-lm-125m/blob/main/LI
8
  datasets: [SlayerLab/minimal-en-corpus-2.5b]
9
  tags: [causal-lm, gpt2, nanogpt, bpe, educational, base-model]
10
  model-index:
11
- - name: Pollock 1.1
12
  results:
13
  - task: {type: text-generation, name: Language modeling}
14
  dataset: {type: SlayerLab/minimal-en-corpus-2.5b, name: Minimal EN validation (sampled), split: validation}
15
- metrics: [{type: loss, value: 2.5528755188, name: Final sampled validation loss}]
16
  - task: {type: text-generation, name: Zero-shot evaluation}
17
  dataset: {type: blimp, name: BLiMP, split: train}
18
- metrics: [{type: acc, value: 0.7773880597}]
19
  - task: {type: text-generation, name: Zero-shot evaluation}
20
  dataset: {type: EleutherAI/lambada_openai, name: LAMBADA OpenAI, split: test}
21
- metrics: [{type: acc, value: 0.2899281972}, {type: perplexity, value: 47.70114023}]
22
  - task: {type: text-generation, name: Zero-shot evaluation}
23
  dataset: {type: hellaswag, name: HellaSwag, split: validation}
24
- metrics: [{type: acc_norm, value: 0.3034256124}]
25
  - task: {type: text-generation, name: Zero-shot evaluation}
26
  dataset: {type: piqa, name: PIQA, split: validation}
27
- metrics: [{type: acc_norm, value: 0.6109902067}]
28
  - task: {type: text-generation, name: Zero-shot evaluation}
29
  dataset: {type: sciq, name: SciQ, split: test}
30
- metrics: [{type: acc_norm, value: 0.659}]
31
  - task: {type: text-generation, name: Zero-shot evaluation}
32
  dataset: {type: allenai/ai2_arc, config: ARC-Easy, name: ARC-Easy, split: test}
33
- metrics: [{type: acc_norm, value: 0.428030303}]
34
  - task: {type: text-generation, name: Zero-shot evaluation}
35
  dataset: {type: allenai/ai2_arc, config: ARC-Challenge, name: ARC-Challenge, split: test}
36
- metrics: [{type: acc_norm, value: 0.2534129693}]
37
  ---
38
 
39
- # Pollock 1.1r003
40
 
41
  ![Pollock avatar](./assets/pollock-mini-lm-avatar-320.png)
42
 
@@ -48,23 +48,23 @@ model-index:
48
 
49
  Pollock to niewielki, anglojęzyczny model bazowy typu decoder-only, wytrenowany od zera jako czytelny eksperyment edukacyjny. Implementacja bazuje na [nanoGPT](https://github.com/karpathy/nanoGPT) i własnym tokenizerze byte-level BPE. Jest to model do uzupełniania tekstu, nie asystent konwersacyjny.
50
 
51
- Nazwa luźno nawiązuje do gestu malarskiego Jacksona Pollocka: nanoGPT jest płótnem, na którym dane, konfiguracja i decyzje treningowe tworzą różne wzorce zachowania. Pełne dane techniczne tej wersji znajdują się w [`training-history/r003.md`](./training-history/r003.md), a różnice między wydaniami w [`CHANGELOG.md`](./CHANGELOG.md).
52
 
53
  ### Architektura i tokenizer
54
 
55
  | Właściwość | Wartość |
56
  |---|---:|
57
- | Rewizja / wydanie | r003 / Pollock 1.1 |
58
  | Typ | decoder-only Transformer w stylu GPT-2 |
59
- | Warstwy / głowy / embedding | 12 / 14 / 896 |
60
  | Maksymalny kontekst | 1024 tokeny |
61
  | Słownik | 12 288 tokenów |
62
- | Parametry nanoGPT | 126 637 952 |
63
- | Łączne unikalne parametry trenowalne | 127 555 456 |
64
  | Tokenizer | byte-level BPE, pretokenizacja w stylu GPT-2 |
65
  | Tokeny specjalne | <code>&lt;&#124;endoftext&#124;&gt;</code>, <code>&lt;&#124;im_start&#124;&gt;</code>, <code>&lt;&#124;im_end&#124;&gt;</code> |
66
 
67
- Artefakt Transformers ma 127 674 624 parametrów, w tym 119 168 zerowych parametrów bias dla zgodności z `GPT2LMHeadModel`. Natywny model był trenowany z `bias=False`.
68
 
69
  ### Dane i trening
70
 
@@ -73,35 +73,35 @@ Model wytrenowano na [`SlayerLab/minimal-en-corpus-2.5b`](https://huggingface.co
73
  | Parametr | Wartość |
74
  |---|---:|
75
  | Tokeny treningowe / walidacyjne | 2 703 768 815 / 5 267 742 |
76
- | Finalny checkpoint | iteracja 22 004 |
77
  | Przetworzone tokeny | 10 815 406 080 (około 4 epoki) |
78
  | Sekwencja / micro-batch na GPU | 1024 / 12 |
79
- | Akumulacja globalna / na GPU | 40 / 20 micro-stepów |
80
  | Effective batch | 491 520 tokenów |
81
  | Optymalizator | fused AdamW, betas 0.9/0.95 |
82
  | Learning rate | 4e-4 → 4e-5, cosine decay |
83
  | Warmup / weight decay / grad clip | 440 / 0.1 / 1.0 |
84
  | Precyzja | BF16 |
85
- | Sprzęt | 2× NVIDIA L40S |
86
  | Framework | PyTorch 2.8.0+cu128, nanoGPT commit `3adf61e` |
87
 
88
  ### Ewaluacja
89
 
90
- Loss treningowy szacowano na stałych podzbiorach po 1 228 800 tokenów na split. Finalny checkpoint uzyskał validation loss **2.552876**; najlepszy wynik to **2.5362** w kroku 20 000. Nie należy porównywać tych wartości bezpośrednio z losowo próbkowaną walidacją r002.
91
 
92
  Benchmarki wykonano zero-shot na pełnych splitach przy użyciu `lm-evaluation-harness` 0.4.12, batch size 8 i BF16.
93
 
94
  | Benchmark | Główna metryka | Wynik | Próbki |
95
  |---|---|---:|---:|
96
- | BLiMP | accuracy | 0.777388 | 67 000 |
97
- | LAMBADA OpenAI | accuracy | 0.289928 | 5 153 |
98
- | HellaSwag | normalized accuracy | 0.303426 | 10 042 |
99
- | PIQA | normalized accuracy | 0.610990 | 1 838 |
100
- | SciQ | normalized accuracy | 0.659000 | 1 000 |
101
- | ARC-Easy | normalized accuracy | 0.428030 | 2 376 |
102
- | ARC-Challenge | normalized accuracy | 0.253413 | 1 172 |
103
 
104
- LAMBADA osiągnęła perplexity 47.701140. Pełne metryki i protokół zapisano w historii r003.
105
 
106
  ### Użycie z Transformers
107
 
@@ -119,7 +119,7 @@ output = model.generate(
119
  print(tokenizer.decode(output[0], skip_special_tokens=True))
120
  ```
121
 
122
- Model używa standardowego `GPT2LMHeadModel`; `trust_remote_code=True` nie jest potrzebne. Dla r003 nie opublikowano jeszcze próbek generacji. Historyczne próbki są przypisane do poprzednich wag w historii r001.
123
 
124
  ### Ograniczenia i odpowiedzialne użycie
125
 
@@ -136,23 +136,23 @@ Model używa standardowego `GPT2LMHeadModel`; `trust_remote_code=True` nie jest
136
 
137
  Pollock is a small English decoder-only base language model trained from scratch as a readable educational experiment. It is based on [nanoGPT](https://github.com/karpathy/nanoGPT) and a custom byte-level BPE tokenizer. It is a completion model, not a conversational assistant.
138
 
139
- The name loosely refers to Jackson Pollock's painterly gesture: nanoGPT is the canvas on which data, configuration, and training decisions create different behavioral patterns. See [`training-history/r003.md`](./training-history/r003.md) for the complete technical record and [`CHANGELOG.md`](./CHANGELOG.md) for release-to-release changes.
140
 
141
  ### Architecture and tokenizer
142
 
143
  | Property | Value |
144
  |---|---:|
145
- | Revision / release | r003 / Pollock 1.1 |
146
  | Type | GPT-2-style decoder-only Transformer |
147
- | Layers / heads / width | 12 / 14 / 896 |
148
  | Maximum context | 1,024 tokens |
149
  | Vocabulary | 12,288 tokens |
150
- | nanoGPT parameters | 126,637,952 |
151
- | Total unique trainable parameters | 127,555,456 |
152
  | Tokenizer | byte-level BPE, GPT-2-style pretokenization |
153
  | Special tokens | `<|endoftext|>`, `<|im_start|>`, `<|im_end|>` |
154
 
155
- The Transformers artifact has 127,674,624 parameters, including 119,168 zero-valued compatibility bias parameters required by `GPT2LMHeadModel`. The native model was trained with `bias=False`.
156
 
157
  ### Data and training
158
 
@@ -161,39 +161,39 @@ The model was trained on [`SlayerLab/minimal-en-corpus-2.5b`](https://huggingfac
161
  | Setting | Value |
162
  |---|---:|
163
  | Training / validation tokens | 2,703,768,815 / 5,267,742 |
164
- | Final checkpoint | iteration 22,004 |
165
  | Token presentations | 10,815,406,080 (approximately 4 epochs) |
166
  | Sequence / micro-batch per GPU | 1,024 / 12 |
167
- | Global / per-GPU accumulation | 40 / 20 micro-steps |
168
  | Effective batch | 491,520 tokens |
169
  | Optimizer | fused AdamW, betas 0.9/0.95 |
170
  | Learning rate | 4e-4 → 4e-5, cosine decay |
171
  | Warmup / weight decay / grad clip | 440 / 0.1 / 1.0 |
172
  | Precision | BF16 |
173
- | Hardware | 2× NVIDIA L40S |
174
  | Framework | PyTorch 2.8.0+cu128, nanoGPT commit `3adf61e` |
175
 
176
  ### Evaluation
177
 
178
- Training-time loss was estimated on fixed subsets of 1,228,800 tokens per split. The final checkpoint achieved validation loss **2.552876**; the best result was **2.5362** at step 20,000. These values are not directly comparable with r002's randomly sampled training validation.
179
 
180
  Benchmarks used complete splits with `lm-evaluation-harness` 0.4.12, zero few-shot examples, batch size 8, and BF16.
181
 
182
  | Benchmark | Primary metric | Score | Samples |
183
  |---|---|---:|---:|
184
- | BLiMP | accuracy | 0.777388 | 67,000 |
185
- | LAMBADA OpenAI | accuracy | 0.289928 | 5,153 |
186
- | HellaSwag | normalized accuracy | 0.303426 | 10,042 |
187
- | PIQA | normalized accuracy | 0.610990 | 1,838 |
188
- | SciQ | normalized accuracy | 0.659000 | 1,000 |
189
- | ARC-Easy | normalized accuracy | 0.428030 | 2,376 |
190
- | ARC-Challenge | normalized accuracy | 0.253413 | 1,172 |
191
 
192
- LAMBADA perplexity was 47.701140. Full metrics and protocol details are recorded in the r003 history.
193
 
194
  ### Usage
195
 
196
- Use the Transformers example in the Polish section. The artifact uses standard `GPT2LMHeadModel`; `trust_remote_code=True` is unnecessary. No r003 generation samples have been published yet. Historical samples are explicitly attached to the predecessor weights in the r001 history.
197
 
198
  ### Limitations and responsible use
199
 
 
8
  datasets: [SlayerLab/minimal-en-corpus-2.5b]
9
  tags: [causal-lm, gpt2, nanogpt, bpe, educational, base-model]
10
  model-index:
11
+ - name: Pollock 1.2
12
  results:
13
  - task: {type: text-generation, name: Language modeling}
14
  dataset: {type: SlayerLab/minimal-en-corpus-2.5b, name: Minimal EN validation (sampled), split: validation}
15
+ metrics: [{type: loss, value: 2.5352059555, name: Final sampled validation loss}]
16
  - task: {type: text-generation, name: Zero-shot evaluation}
17
  dataset: {type: blimp, name: BLiMP, split: train}
18
+ metrics: [{type: acc, value: 0.7720149254}]
19
  - task: {type: text-generation, name: Zero-shot evaluation}
20
  dataset: {type: EleutherAI/lambada_openai, name: LAMBADA OpenAI, split: test}
21
+ metrics: [{type: acc, value: 0.2928391228}, {type: perplexity, value: 47.56334054}]
22
  - task: {type: text-generation, name: Zero-shot evaluation}
23
  dataset: {type: hellaswag, name: HellaSwag, split: validation}
24
+ metrics: [{type: acc_norm, value: 0.3006373232}]
25
  - task: {type: text-generation, name: Zero-shot evaluation}
26
  dataset: {type: piqa, name: PIQA, split: validation}
27
+ metrics: [{type: acc_norm, value: 0.6077257889}]
28
  - task: {type: text-generation, name: Zero-shot evaluation}
29
  dataset: {type: sciq, name: SciQ, split: test}
30
+ metrics: [{type: acc_norm, value: 0.67}]
31
  - task: {type: text-generation, name: Zero-shot evaluation}
32
  dataset: {type: allenai/ai2_arc, config: ARC-Easy, name: ARC-Easy, split: test}
33
+ metrics: [{type: acc_norm, value: 0.4225589226}]
34
  - task: {type: text-generation, name: Zero-shot evaluation}
35
  dataset: {type: allenai/ai2_arc, config: ARC-Challenge, name: ARC-Challenge, split: test}
36
+ metrics: [{type: acc_norm, value: 0.2346416382}]
37
  ---
38
 
39
+ # Pollock 1.2r004
40
 
41
  ![Pollock avatar](./assets/pollock-mini-lm-avatar-320.png)
42
 
 
48
 
49
  Pollock to niewielki, anglojęzyczny model bazowy typu decoder-only, wytrenowany od zera jako czytelny eksperyment edukacyjny. Implementacja bazuje na [nanoGPT](https://github.com/karpathy/nanoGPT) i własnym tokenizerze byte-level BPE. Jest to model do uzupełniania tekstu, nie asystent konwersacyjny.
50
 
51
+ Nazwa luźno nawiązuje do gestu malarskiego Jacksona Pollocka: nanoGPT jest płótnem, na którym dane, konfiguracja i decyzje treningowe tworzą różne wzorce zachowania. Pełne dane techniczne tej wersji znajdują się w [`training-history/r004.md`](./training-history/r004.md), a różnice między wydaniami w [`CHANGELOG.md`](./CHANGELOG.md).
52
 
53
  ### Architektura i tokenizer
54
 
55
  | Właściwość | Wartość |
56
  |---|---:|
57
+ | Rewizja / wydanie | r004 / Pollock 1.2 |
58
  | Typ | decoder-only Transformer w stylu GPT-2 |
59
+ | Warstwy / głowy / embedding | 14 / 13 / 832 |
60
  | Maksymalny kontekst | 1024 tokeny |
61
  | Słownik | 12 288 tokenów |
62
+ | Parametry nanoGPT | 126 541 376 |
63
+ | Łączne unikalne parametry trenowalne | 127 393 344 |
64
  | Tokenizer | byte-level BPE, pretokenizacja w stylu GPT-2 |
65
  | Tokeny specjalne | <code>&lt;&#124;endoftext&#124;&gt;</code>, <code>&lt;&#124;im_start&#124;&gt;</code>, <code>&lt;&#124;im_end&#124;&gt;</code> |
66
 
67
+ Artefakt Transformers ma 127 522 304 parametry, w tym 128 960 zerowych parametrów bias dla zgodności z `GPT2LMHeadModel`. Natywny model był trenowany z `bias=False`.
68
 
69
  ### Dane i trening
70
 
 
73
  | Parametr | Wartość |
74
  |---|---:|
75
  | Tokeny treningowe / walidacyjne | 2 703 768 815 / 5 267 742 |
76
+ | Finalny checkpoint | aktualizacja 22 004 |
77
  | Przetworzone tokeny | 10 815 406 080 (około 4 epoki) |
78
  | Sekwencja / micro-batch na GPU | 1024 / 12 |
79
+ | Akumulacja globalna / na GPU | 40 / 40 micro-stepów |
80
  | Effective batch | 491 520 tokenów |
81
  | Optymalizator | fused AdamW, betas 0.9/0.95 |
82
  | Learning rate | 4e-4 → 4e-5, cosine decay |
83
  | Warmup / weight decay / grad clip | 440 / 0.1 / 1.0 |
84
  | Precyzja | BF16 |
85
+ | Sprzęt | 1× NVIDIA GeForce RTX 5090 |
86
  | Framework | PyTorch 2.8.0+cu128, nanoGPT commit `3adf61e` |
87
 
88
  ### Ewaluacja
89
 
90
+ Loss treningowy szacowano na stałych podzbiorach po 1 228 800 tokenów na split. Finalny checkpoint uzyskał validation loss **2.535206**; najlepszy wynik to **2.535055** w kroku 22 000. Nie należy porównywać tych wartości bezpośrednio z r003, ponieważ rewizje używały różnych offsetów podzbioru walidacyjnego.
91
 
92
  Benchmarki wykonano zero-shot na pełnych splitach przy użyciu `lm-evaluation-harness` 0.4.12, batch size 8 i BF16.
93
 
94
  | Benchmark | Główna metryka | Wynik | Próbki |
95
  |---|---|---:|---:|
96
+ | BLiMP | accuracy | 0.772015 | 67 000 |
97
+ | LAMBADA OpenAI | accuracy | 0.292839 | 5 153 |
98
+ | HellaSwag | normalized accuracy | 0.300637 | 10 042 |
99
+ | PIQA | normalized accuracy | 0.607726 | 1 838 |
100
+ | SciQ | normalized accuracy | 0.670000 | 1 000 |
101
+ | ARC-Easy | normalized accuracy | 0.422559 | 2 376 |
102
+ | ARC-Challenge | normalized accuracy | 0.234642 | 1 172 |
103
 
104
+ LAMBADA osiągnęła perplexity 47.563341. Pełne metryki i protokół zapisano w historii r004.
105
 
106
  ### Użycie z Transformers
107
 
 
119
  print(tokenizer.decode(output[0], skip_special_tokens=True))
120
  ```
121
 
122
+ Model używa standardowego `GPT2LMHeadModel`; `trust_remote_code=True` nie jest potrzebne. Dla r004 nie opublikowano jeszcze próbek generacji. Historyczne próbki są przypisane do poprzednich wag w historii r001.
123
 
124
  ### Ograniczenia i odpowiedzialne użycie
125
 
 
136
 
137
  Pollock is a small English decoder-only base language model trained from scratch as a readable educational experiment. It is based on [nanoGPT](https://github.com/karpathy/nanoGPT) and a custom byte-level BPE tokenizer. It is a completion model, not a conversational assistant.
138
 
139
+ The name loosely refers to Jackson Pollock's painterly gesture: nanoGPT is the canvas on which data, configuration, and training decisions create different behavioral patterns. See [`training-history/r004.md`](./training-history/r004.md) for the complete technical record and [`CHANGELOG.md`](./CHANGELOG.md) for release-to-release changes.
140
 
141
  ### Architecture and tokenizer
142
 
143
  | Property | Value |
144
  |---|---:|
145
+ | Revision / release | r004 / Pollock 1.2 |
146
  | Type | GPT-2-style decoder-only Transformer |
147
+ | Layers / heads / width | 14 / 13 / 832 |
148
  | Maximum context | 1,024 tokens |
149
  | Vocabulary | 12,288 tokens |
150
+ | nanoGPT parameters | 126,541,376 |
151
+ | Total unique trainable parameters | 127,393,344 |
152
  | Tokenizer | byte-level BPE, GPT-2-style pretokenization |
153
  | Special tokens | `<|endoftext|>`, `<|im_start|>`, `<|im_end|>` |
154
 
155
+ The Transformers artifact has 127,522,304 parameters, including 128,960 zero-valued compatibility bias parameters required by `GPT2LMHeadModel`. The native model was trained with `bias=False`.
156
 
157
  ### Data and training
158
 
 
161
  | Setting | Value |
162
  |---|---:|
163
  | Training / validation tokens | 2,703,768,815 / 5,267,742 |
164
+ | Final checkpoint | update 22,004 |
165
  | Token presentations | 10,815,406,080 (approximately 4 epochs) |
166
  | Sequence / micro-batch per GPU | 1,024 / 12 |
167
+ | Global / per-GPU accumulation | 40 / 40 micro-steps |
168
  | Effective batch | 491,520 tokens |
169
  | Optimizer | fused AdamW, betas 0.9/0.95 |
170
  | Learning rate | 4e-4 → 4e-5, cosine decay |
171
  | Warmup / weight decay / grad clip | 440 / 0.1 / 1.0 |
172
  | Precision | BF16 |
173
+ | Hardware | 1× NVIDIA GeForce RTX 5090 |
174
  | Framework | PyTorch 2.8.0+cu128, nanoGPT commit `3adf61e` |
175
 
176
  ### Evaluation
177
 
178
+ Training-time loss was estimated on fixed subsets of 1,228,800 tokens per split. The final checkpoint achieved validation loss **2.535206**; the best result was **2.535055** at step 22,000. These values are not directly comparable with r003 because the revisions used different validation-subset offsets.
179
 
180
  Benchmarks used complete splits with `lm-evaluation-harness` 0.4.12, zero few-shot examples, batch size 8, and BF16.
181
 
182
  | Benchmark | Primary metric | Score | Samples |
183
  |---|---|---:|---:|
184
+ | BLiMP | accuracy | 0.772015 | 67,000 |
185
+ | LAMBADA OpenAI | accuracy | 0.292839 | 5,153 |
186
+ | HellaSwag | normalized accuracy | 0.300637 | 10,042 |
187
+ | PIQA | normalized accuracy | 0.607726 | 1,838 |
188
+ | SciQ | normalized accuracy | 0.670000 | 1,000 |
189
+ | ARC-Easy | normalized accuracy | 0.422559 | 2,376 |
190
+ | ARC-Challenge | normalized accuracy | 0.234642 | 1,172 |
191
 
192
+ LAMBADA perplexity was 47.563341. Full metrics and protocol details are recorded in the r004 history.
193
 
194
  ### Usage
195
 
196
+ Use the Transformers example in the Polish section. The artifact uses standard `GPT2LMHeadModel`; `trust_remote_code=True` is unnecessary. No r004 generation samples have been published yet. Historical samples are explicitly attached to the predecessor weights in the r001 history.
197
 
198
  ### Limitations and responsible use
199
 
benchmarks/english.json CHANGED
@@ -1,11 +1,11 @@
1
  {
2
  "schema_version": 1,
3
- "revision_id": "r003",
4
- "release": "Pollock 1.1",
5
- "source_result": "runs/r003-lr4e-4-v4/benchmarks/results.json",
6
  "checkpoint": {
7
- "path": "runs/r003-lr4e-4-v4/checkpoints/ckpt-benchmark-compatible.pt",
8
- "sha256": "0f53aa6b8454e856f8c4c489c7e6cbf207b8e124fe06bbb239315c017fe16fc0",
9
  "source_iteration": 22004
10
  },
11
  "execution": {
@@ -19,37 +19,37 @@
19
  },
20
  "results": {
21
  "blimp": {
22
- "acc": 0.7773880597014925,
23
  "samples": 67000
24
  },
25
  "lambada_openai": {
26
- "acc": 0.289928197166699,
27
- "perplexity": 47.70114023017106,
28
  "samples": 5153
29
  },
30
  "hellaswag": {
31
- "acc_norm": 0.30342561242780325,
32
- "acc": 0.28500298745269864,
33
  "samples": 10042
34
  },
35
  "piqa": {
36
- "acc_norm": 0.6109902067464635,
37
- "acc": 0.6147986942328618,
38
  "samples": 1838
39
  },
40
  "sciq": {
41
- "acc_norm": 0.659,
42
- "acc": 0.766,
43
  "samples": 1000
44
  },
45
  "arc_easy": {
46
- "acc_norm": 0.42803030303030304,
47
- "acc": 0.4861111111111111,
48
  "samples": 2376
49
  },
50
  "arc_challenge": {
51
- "acc_norm": 0.25341296928327645,
52
- "acc": 0.22013651877133106,
53
  "samples": 1172
54
  }
55
  }
 
1
  {
2
  "schema_version": 1,
3
+ "revision_id": "r004",
4
+ "release": "Pollock 1.2",
5
+ "source_result": "runs/pollock-r004-shape/benchmarks/results.json",
6
  "checkpoint": {
7
+ "path": "runs/pollock-r004-shape/checkpoints/ckpt-final.pt",
8
+ "sha256": "4e38589ca422597ff808bc93cc17ddcc441f734a4e0f671ee6d4527c545972e0",
9
  "source_iteration": 22004
10
  },
11
  "execution": {
 
19
  },
20
  "results": {
21
  "blimp": {
22
+ "acc": 0.7720149253731343,
23
  "samples": 67000
24
  },
25
  "lambada_openai": {
26
+ "acc": 0.29283912284106345,
27
+ "perplexity": 47.5633405379111,
28
  "samples": 5153
29
  },
30
  "hellaswag": {
31
+ "acc_norm": 0.300637323242382,
32
+ "acc": 0.2846046604262099,
33
  "samples": 10042
34
  },
35
  "piqa": {
36
+ "acc_norm": 0.6077257889009793,
37
+ "acc": 0.6207834602829162,
38
  "samples": 1838
39
  },
40
  "sciq": {
41
+ "acc_norm": 0.67,
42
+ "acc": 0.767,
43
  "samples": 1000
44
  },
45
  "arc_easy": {
46
+ "acc_norm": 0.4225589225589226,
47
+ "acc": 0.4730639730639731,
48
  "samples": 2376
49
  },
50
  "arc_challenge": {
51
+ "acc_norm": 0.23464163822525597,
52
+ "acc": 0.20648464163822525,
53
  "samples": 1172
54
  }
55
  }
config.json CHANGED
@@ -12,12 +12,12 @@
12
  "initializer_range": 0.02,
13
  "layer_norm_epsilon": 1e-05,
14
  "model_type": "gpt2",
15
- "model_version": "1.1",
16
  "n_ctx": 1024,
17
- "n_embd": 896,
18
- "n_head": 14,
19
  "n_inner": null,
20
- "n_layer": 12,
21
  "n_positions": 1024,
22
  "pad_token_id": 12285,
23
  "reorder_and_upcast_attn": false,
 
12
  "initializer_range": 0.02,
13
  "layer_norm_epsilon": 1e-05,
14
  "model_type": "gpt2",
15
+ "model_version": "1.2",
16
  "n_ctx": 1024,
17
+ "n_embd": 832,
18
+ "n_head": 13,
19
  "n_inner": null,
20
+ "n_layer": 14,
21
  "n_positions": 1024,
22
  "pad_token_id": 12285,
23
  "reorder_and_upcast_attn": false,
model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:3a9964a0ba5f6d20ef6061d2a7e4442c1b001209ebe80f7b7148a25573decaa9
3
- size 510713512
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3c453f22d4bb70228e5cca79e183a425e0f0221e54bd782d12027c42c943c880
3
+ size 510106688
release_manifest.json CHANGED
@@ -1,21 +1,21 @@
1
  {
2
  "schema_version": 2,
3
- "revision": 3,
4
- "revision_id": "r003",
5
- "release": "Pollock 1.1",
6
  "model_id": "SlayerLab/pollock-mini-lm-125m",
7
  "source_checkpoint": {
8
- "path_in_training_workspace": "runs/r003-lr4e-4-v4/checkpoints/ckpt.pt",
9
- "sha256": "912483b44bb177c7a62fe19a53fc6db7b333cf881c57de15daf9dd7209d90a6b",
10
  "iteration": 22004,
11
  "tokens_seen": 10815406080,
12
- "native_nanogpt_parameters": 126637952,
13
- "native_unique_trainable_parameters": 127555456
14
  },
15
  "architecture": {
16
- "n_layer": 12,
17
- "n_head": 14,
18
- "n_embd": 896,
19
  "block_size": 1024,
20
  "vocab_size": 12288,
21
  "dropout": 0.0,
@@ -27,7 +27,7 @@
27
  "init_from": "scratch",
28
  "micro_batch_per_gpu": 12,
29
  "gradient_accumulation_global": 40,
30
- "ddp_world_size": 2,
31
  "effective_batch_tokens": 491520,
32
  "optimizer": "fused AdamW",
33
  "learning_rate": 0.0004,
@@ -43,16 +43,18 @@
43
  "compile": true,
44
  "backend": "nccl",
45
  "seed": 1337,
46
- "evaluation_seed": 4242,
47
- "hardware": "2x NVIDIA L40S",
48
  "nanogpt_commit": "3adf61e154c3fe3fca428ad6bc3818b27a3b8291"
49
  },
50
  "evaluation": {
51
  "protocol": "fixed sampled subset",
52
  "subset_tokens_per_split": 1228800,
53
- "final_validation_loss": 2.552875518798828,
54
- "best_validation_loss": 2.5362,
55
- "best_validation_step": 20000,
 
 
56
  "benchmark_harness": "lm-evaluation-harness 0.4.12",
57
  "benchmark_num_fewshot": 0,
58
  "benchmark_batch_size": 8,
@@ -62,19 +64,19 @@
62
  "conversion": {
63
  "target_class": "GPT2LMHeadModel",
64
  "transformers_version": "5.15.1",
65
- "unique_serialized_parameters": 127674624,
66
- "compatibility_zero_bias_parameters": 119168,
67
  "validation_probe_shape": [2, 64],
68
  "max_absolute_logit_error": 0.0
69
  },
70
  "artifacts": {
71
- "README.md": {"sha256": "5ab395ed94618c311257fed4c16c40ed558919e6b0b0f12177eca4250dc41f5a"},
72
- "CHANGELOG.md": {"sha256": "00a60accbe6dfe0734326124c789f842141f61ecc26d7cd2f8291b148bfd125f"},
73
- "training-history/r003.md": {"sha256": "4ae07419880227300a5c6c2ae259d7f609d928f33ab9c0c91cbce44dc6b56428"},
74
- "benchmarks/english.json": {"sha256": "7dd602e81a79bbdad4393b9031d0f584148076310d85cbda71fb6867b1ad63d8"},
75
- "config.json": {"sha256": "89816fc9a57e4915ef884864dfb7b0502dbc16e3da749e781ce41b2a2c7ce26d"},
76
  "generation_config.json": {"sha256": "435beb27be51f0ed054f4a011e5109d125cdadc118b8799b18b155cc798d94d2"},
77
- "model.safetensors": {"sha256": "3a9964a0ba5f6d20ef6061d2a7e4442c1b001209ebe80f7b7148a25573decaa9"},
78
  "special_tokens_map.json": {"sha256": "8b2257a17ea997bb038f43b133aefec82344ad2b8abc2b8a02a6c0a994ed624e"},
79
  "tokenizer.json": {"sha256": "6cda4e5ec8293f3b821e02253f9c0e88e43ad4f7c6e1324763e1fb91749fef51"},
80
  "tokenizer_config.json": {"sha256": "4cdabe37dbdc1adfcc017ee9a1f86ab89bdf184827d2d9f05181cae0f8af19bf"}
 
1
  {
2
  "schema_version": 2,
3
+ "revision": 4,
4
+ "revision_id": "r004",
5
+ "release": "Pollock 1.2",
6
  "model_id": "SlayerLab/pollock-mini-lm-125m",
7
  "source_checkpoint": {
8
+ "path_in_training_workspace": "runs/pollock-r004-shape/checkpoints/ckpt-final.pt",
9
+ "sha256": "4e38589ca422597ff808bc93cc17ddcc441f734a4e0f671ee6d4527c545972e0",
10
  "iteration": 22004,
11
  "tokens_seen": 10815406080,
12
+ "native_nanogpt_parameters": 126541376,
13
+ "native_unique_trainable_parameters": 127393344
14
  },
15
  "architecture": {
16
+ "n_layer": 14,
17
+ "n_head": 13,
18
+ "n_embd": 832,
19
  "block_size": 1024,
20
  "vocab_size": 12288,
21
  "dropout": 0.0,
 
27
  "init_from": "scratch",
28
  "micro_batch_per_gpu": 12,
29
  "gradient_accumulation_global": 40,
30
+ "ddp_world_size": 1,
31
  "effective_batch_tokens": 491520,
32
  "optimizer": "fused AdamW",
33
  "learning_rate": 0.0004,
 
43
  "compile": true,
44
  "backend": "nccl",
45
  "seed": 1337,
46
+ "evaluation_seed": 1337,
47
+ "hardware": "1x NVIDIA GeForce RTX 5090",
48
  "nanogpt_commit": "3adf61e154c3fe3fca428ad6bc3818b27a3b8291"
49
  },
50
  "evaluation": {
51
  "protocol": "fixed sampled subset",
52
  "subset_tokens_per_split": 1228800,
53
+ "final_train_loss": 2.4665083193778994,
54
+ "final_validation_loss": 2.535205955505371,
55
+ "best_validation_loss": 2.5350550031661987,
56
+ "best_validation_step": 22000,
57
+ "final_validation_perplexity": 12.61902953902636,
58
  "benchmark_harness": "lm-evaluation-harness 0.4.12",
59
  "benchmark_num_fewshot": 0,
60
  "benchmark_batch_size": 8,
 
64
  "conversion": {
65
  "target_class": "GPT2LMHeadModel",
66
  "transformers_version": "5.15.1",
67
+ "unique_serialized_parameters": 127522304,
68
+ "compatibility_zero_bias_parameters": 128960,
69
  "validation_probe_shape": [2, 64],
70
  "max_absolute_logit_error": 0.0
71
  },
72
  "artifacts": {
73
+ "README.md": {"sha256": "64513cc6cf3cdc52544a02010293c97b58683c815ef952815954b44fa2b15a0f"},
74
+ "CHANGELOG.md": {"sha256": "5203517a875ca3f04747305a80f732aca54a05ca132a4a4b4fb1453d9d2557ea"},
75
+ "training-history/r004.md": {"sha256": "d9893a5a9f998cfc93e986d63eb36c9a39f519e1cb74f7a6bf6ac4d3cf6f6f12"},
76
+ "benchmarks/english.json": {"sha256": "ffe1e417bef440b1e6a84e05beccb96aa191f6f22141b388cc7ed08297318a7d"},
77
+ "config.json": {"sha256": "296c495f22edddb9828ff9c9ca486cddbacff510742f4aff6a04552d2da3b8d4"},
78
  "generation_config.json": {"sha256": "435beb27be51f0ed054f4a011e5109d125cdadc118b8799b18b155cc798d94d2"},
79
+ "model.safetensors": {"sha256": "3c453f22d4bb70228e5cca79e183a425e0f0221e54bd782d12027c42c943c880"},
80
  "special_tokens_map.json": {"sha256": "8b2257a17ea997bb038f43b133aefec82344ad2b8abc2b8a02a6c0a994ed624e"},
81
  "tokenizer.json": {"sha256": "6cda4e5ec8293f3b821e02253f9c0e88e43ad4f7c6e1324763e1fb91749fef51"},
82
  "tokenizer_config.json": {"sha256": "4cdabe37dbdc1adfcc017ee9a1f86ab89bdf184827d2d9f05181cae0f8af19bf"}
training-history/r004.md ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # r004 - Pollock 1.2 training record
2
+
3
+ ## Identity and provenance
4
+
5
+ | Field | Value |
6
+ |---|---|
7
+ | Revision / release | `r004` / Pollock 1.2 |
8
+ | Model ID | `SlayerLab/pollock-mini-lm-125m` |
9
+ | Source run | `runs/pollock-r004-shape` |
10
+ | Final checkpoint | `checkpoints/ckpt-final.pt` |
11
+ | Final checkpoint update / SHA-256 | 22,004 / `4e38589ca422597ff808bc93cc17ddcc441f734a4e0f671ee6d4527c545972e0` |
12
+ | Best-validation checkpoint | update 22,000 / `181673699af41ebd9e0c2b6517a0a3a0b8eb7111d35fc2884152ca5c4d20815c` |
13
+ | nanoGPT commit | `3adf61e154c3fe3fca428ad6bc3818b27a3b8291` (dirty workspace recorded) |
14
+ | W&B run | [`7aa623ae`](https://wandb.ai/dawidmajewski-ezotic/minimal-en/runs/7aa623ae) |
15
+ | Training environment | [DMPod GPT](https://github.com/dawidmajewski/dmpod-gpt) on RunPod |
16
+ | Run status | completed, exit code 0, target budget completed |
17
+
18
+ `ckpt-final.pt` and `ckpt-last.pt` are byte-identical and share the SHA-256 shown above. Benchmarks used the final checkpoint.
19
+
20
+ ## Experiment hypothesis
21
+
22
+ R004 tests whether two additional Transformer blocks and a narrower residual stream improve language modeling at effectively the same parameter budget. R003's 12/14/896 shape is replaced by 14/13/832, retaining a 64-dimensional attention head. The parameter difference is 162,112, approximately 0.127%.
23
+
24
+ ## Architecture and parameter accounting
25
+
26
+ | Setting | Value |
27
+ |---|---:|
28
+ | Type | GPT-2-style decoder-only Transformer |
29
+ | Layers / heads / width | 14 / 13 / 832 |
30
+ | Head dimension / MLP width | 64 / 3,328 |
31
+ | Context / vocabulary | 1,024 / 12,288 |
32
+ | Activation / dropout / bias | GELU / 0.0 / false |
33
+ | Position representation | learned absolute embeddings |
34
+ | Input/output token weights | tied |
35
+ | Transformer excluding token/position embeddings | 116,317,760 |
36
+ | Tied token embedding/output matrix | 10,223,616 |
37
+ | nanoGPT reported count | 126,541,376 |
38
+ | Learned position embedding | 851,968 |
39
+ | Native unique trainable total | 127,393,344 |
40
+
41
+ The Transformers artifact has 127,522,304 unique serialized parameters, including 128,960 zero-valued compatibility bias parameters.
42
+
43
+ ## Tokenizer and dataset
44
+
45
+ The custom byte-level BPE tokenizer and packed dataset binaries are unchanged. Tokenizer SHA-256: `6cda4e5ec8293f3b821e02253f9c0e88e43ad4f7c6e1324763e1fb91749fef51`.
46
+
47
+ | Split | BPE tokens | Binary SHA-256 |
48
+ |---|---:|---|
49
+ | Train | 2,703,768,815 | `5396834c25664080c14793a4880f86b86ae94074a6036f8f54a58686b02d30dc` |
50
+ | Validation | 5,267,742 | `bf07bd1fb1f956a92ee7788f2a8110e1837f5b880ce432f6cd2a22d05f8ac135` |
51
+
52
+ The backup intentionally excludes the dataset binaries. Their identities and hashes remain recorded in the run manifest.
53
+
54
+ ## Complete training configuration
55
+
56
+ | Setting | Value |
57
+ |---|---:|
58
+ | Initialization | scratch |
59
+ | Optimizer updates | 22,004 |
60
+ | Sequence / micro-batch per GPU | 1,024 / 12 |
61
+ | Global / per-GPU accumulation | 40 / 40 micro-steps |
62
+ | GPU count / effective batch | 1 / 491,520 tokens |
63
+ | Token presentations / passes | 10,815,406,080 / 4.000122 |
64
+ | Optimizer / betas | fused AdamW / 0.9, 0.95 |
65
+ | Maximum / minimum LR | 4e-4 / 4e-5 |
66
+ | Schedule / warmup / decay | cosine / 440 / 22,003 updates |
67
+ | Weight decay / grad clip | 0.1 / 1.0 |
68
+ | Evaluation interval / batches | 500 / 100 per split |
69
+ | Evaluation subset | fixed 1,228,800 tokens per split |
70
+ | Training / data / evaluation seeds | 1,337 / 1,337 / 1,337 |
71
+ | Precision / compilation / backend | BF16 / `torch.compile` / NCCL |
72
+ | Maximum checkpoint interval | 15 minutes |
73
+ | Hardware | 1x NVIDIA GeForce RTX 5090 |
74
+ | PyTorch / CUDA | 2.8.0+cu128 / 12.8 |
75
+ | Mean throughput | 191,468.895 tokens/s |
76
+ | Runtime | 16.052 hours |
77
+
78
+ Dataset, tokenizer, context, effective batch, token budget, optimizer settings, and learning-rate range match r003. Architecture, hardware, evaluation seed/frequency, and checkpoint frequency differ.
79
+
80
+ ## Training-time validation
81
+
82
+ The table shows the start, warmup end, each 1,000-update point, the recorded minimum, and the final budget evaluation. The raw run evaluated every 500 updates.
83
+
84
+ | Step | Train loss | Validation loss |
85
+ |---:|---:|---:|
86
+ | 0 | 9.544133 | 9.548397 |
87
+ | 440 | 4.767136 | 4.817189 |
88
+ | 1,000 | 3.415107 | 3.455676 |
89
+ | 2,000 | 3.040967 | 3.082571 |
90
+ | 3,000 | 2.898505 | 2.940333 |
91
+ | 4,000 | 2.816346 | 2.859951 |
92
+ | 5,000 | 2.757871 | 2.803232 |
93
+ | 6,000 | 2.714673 | 2.763016 |
94
+ | 7,000 | 2.682473 | 2.730678 |
95
+ | 8,000 | 2.650815 | 2.701713 |
96
+ | 9,000 | 2.625189 | 2.677834 |
97
+ | 10,000 | 2.603702 | 2.657582 |
98
+ | 11,000 | 2.584919 | 2.639393 |
99
+ | 12,000 | 2.566821 | 2.622251 |
100
+ | 13,000 | 2.548589 | 2.608235 |
101
+ | 14,000 | 2.535984 | 2.594993 |
102
+ | 15,000 | 2.522074 | 2.582463 |
103
+ | 16,000 | 2.510117 | 2.571717 |
104
+ | 17,000 | 2.498652 | 2.562398 |
105
+ | 18,000 | 2.488918 | 2.554044 |
106
+ | 19,000 | 2.480739 | 2.547309 |
107
+ | 20,000 | 2.474230 | 2.541554 |
108
+ | 21,000 | 2.470307 | 2.537608 |
109
+ | 22,000 | 2.466657 | **2.535055** |
110
+ | 22,004 | **2.466508** | 2.535206 |
111
+
112
+ Final validation perplexity is 12.6190295390. R003 used evaluation seed 4,242 and different offset hashes, so its 2.552876 final value cannot be directly subtracted from this value as a controlled comparison.
113
+
114
+ ## English zero-shot benchmarks
115
+
116
+ Tasks used complete splits with `lm-evaluation-harness` 0.4.12, zero few-shot examples, batch size 8, BF16, and 1,024 maximum context. As in r003, the adapter recorded 80 requests truncated to model context.
117
+
118
+ | Benchmark | Primary | Additional | Samples | Delta vs r003 |
119
+ |---|---:|---:|---:|---:|
120
+ | BLiMP | acc 0.7720149254 | - | 67,000 | -0.005373 |
121
+ | LAMBADA OpenAI | acc 0.2928391228 | perplexity 47.5633405379 | 5,153 | +0.002911 acc |
122
+ | HellaSwag | acc_norm 0.3006373232 | acc 0.2846046604 | 10,042 | -0.002788 |
123
+ | PIQA | acc_norm 0.6077257889 | acc 0.6207834603 | 1,838 | -0.003264 |
124
+ | SciQ | acc_norm 0.6700000000 | acc 0.7670000000 | 1,000 | +0.011000 |
125
+ | ARC-Easy | acc_norm 0.4225589226 | acc 0.4730639731 | 2,376 | -0.005471 |
126
+ | ARC-Challenge | acc_norm 0.2346416382 | acc 0.2064846416 | 1,172 | -0.018771 |
127
+
128
+ The deeper shape improves two primary metrics and reduces five. It does not support a general claim that additional depth is better at this parameter budget. Relative to r002, five primary metrics are higher and two are lower.
129
+
130
+ Structured English results: [`../benchmarks/english.json`](../benchmarks/english.json).
131
+
132
+ ## Release preparation status
133
+
134
+ - The Zstandard backup passed integrity testing and was extracted successfully.
135
+ - All 11 run-manifest file hashes and all three checkpoint hashes were verified after extraction.
136
+ - Final training status, target budget, summary metrics, and English benchmark results are present.
137
+ - Transformers 5.15.1 conversion is complete; the `[2, 64]` deterministic parity probe produced a maximum absolute logit error of 0.0, and artifact hashes are recorded in `release_manifest.json`.
138
+ - No files have been uploaded to Hugging Face for this revision.
139
+
140
+ ## Licensing and limitations
141
+
142
+ This is an English, unaligned base model, not an instruction-following assistant. It may hallucinate, generate harmful or biased content, and reproduce training patterns. It is unsuitable for high-risk or production decisions without independent safeguards. The dataset combines sources with different terms; see the dataset card and the model repository's `LICENSE.md`.