dawidmajewski commited on
Commit
698984b
·
verified ·
1 Parent(s): 5e571cd

Release Pollock 1.1 (r003)

Browse files

Publish the verified r003 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
  ## r002 — Pollock 1.0
6
 
7
  - Expanded the architecture from 12/12/768 to 12/14/896 while remaining below 128M total parameters.
 
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.
8
+ - Increased the learning-rate range from 3e-4→3e-5 to 4e-4→4e-5 and trained on 2× NVIDIA L40S.
9
+ - Improved all seven reported English zero-shot primary metrics over r002.
10
+
11
+ Full record: [`training-history/r003.md`](./training-history/r003.md)
12
+
13
  ## r002 — Pollock 1.0
14
 
15
  - Expanded the architecture from 12/12/768 to 12/14/896 while remaining below 128M total parameters.
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.0
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.577547, 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.7669701493}]
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.2780904328}, {type: perplexity, value: 53.66752251}]
22
  - task: {type: text-generation, name: Zero-shot evaluation}
23
  dataset: {type: hellaswag, name: HellaSwag, split: validation}
24
- metrics: [{type: acc_norm, value: 0.2987452699}]
25
  - task: {type: text-generation, name: Zero-shot evaluation}
26
  dataset: {type: piqa, name: PIQA, split: validation}
27
- metrics: [{type: acc_norm, value: 0.6033732318}]
28
  - task: {type: text-generation, name: Zero-shot evaluation}
29
  dataset: {type: sciq, name: SciQ, split: test}
30
- metrics: [{type: acc_norm, value: 0.658}]
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.422979798}]
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.2414675768}]
37
  ---
38
 
39
- # Pollock 1.0r002
40
 
41
  ![Pollock avatar](./assets/pollock-mini-lm-avatar-320.png)
42
 
@@ -46,15 +46,15 @@ model-index:
46
 
47
  ### Opis
48
 
49
- Pollock 1.0 (`r002`) 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/r002.md`](./training-history/r002.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 | r002 / Pollock 1.0 |
58
  | Typ | decoder-only Transformer w stylu GPT-2 |
59
  | Warstwy / głowy / embedding | 12 / 14 / 896 |
60
  | Maksymalny kontekst | 1024 tokeny |
@@ -79,29 +79,29 @@ Model wytrenowano na [`SlayerLab/minimal-en-corpus-2.5b`](https://huggingface.co
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 | 3e-4 → 3e-5, cosine decay |
83
  | Warmup / weight decay / grad clip | 440 / 0.1 / 1.0 |
84
  | Precyzja | BF16 |
85
- | Sprzęt | 2× NVIDIA GeForce RTX 4090 24 GB |
86
  | Framework | PyTorch 2.8.0+cu128, nanoGPT commit `3adf61e` |
87
 
88
  ### Ewaluacja
89
 
90
- Loss treningowy szacowano na 100 losowo próbkowanych batchach na split. Finalny checkpoint uzyskał validation loss **2.577547**; najlepszy próbkowany wynik to **2.5600** w kroku 20 000. Nie należy porównywać tych wartości bezpośrednio z pełną, deterministyczną walidacją r001.
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.766970 | 67 000 |
97
- | LAMBADA OpenAI | accuracy | 0.278090 | 5 153 |
98
- | HellaSwag | normalized accuracy | 0.298745 | 10 042 |
99
- | PIQA | normalized accuracy | 0.603373 | 1 838 |
100
- | SciQ | normalized accuracy | 0.658000 | 1 000 |
101
- | ARC-Easy | normalized accuracy | 0.422980 | 2 376 |
102
- | ARC-Challenge | normalized accuracy | 0.241468 | 1 172 |
103
 
104
- LAMBADA osiągnęła perplexity 53.667523. Pełne metryki i protokół zapisano w historii r002.
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 r002 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
 
@@ -134,15 +134,15 @@ Model używa standardowego `GPT2LMHeadModel`; `trust_remote_code=True` nie jest
134
 
135
  ### Overview
136
 
137
- Pollock 1.0 (`r002`) 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/r002.md`](./training-history/r002.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 | r002 / Pollock 1.0 |
146
  | Type | GPT-2-style decoder-only Transformer |
147
  | Layers / heads / width | 12 / 14 / 896 |
148
  | Maximum context | 1,024 tokens |
@@ -167,33 +167,33 @@ The model was trained on [`SlayerLab/minimal-en-corpus-2.5b`](https://huggingfac
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 | 3e-4 → 3e-5, cosine decay |
171
  | Warmup / weight decay / grad clip | 440 / 0.1 / 1.0 |
172
  | Precision | BF16 |
173
- | Hardware | 2× NVIDIA GeForce RTX 4090 24 GB |
174
  | Framework | PyTorch 2.8.0+cu128, nanoGPT commit `3adf61e` |
175
 
176
  ### Evaluation
177
 
178
- Training-time loss was estimated from 100 randomly sampled batches per split. The final checkpoint achieved validation loss **2.577547**; the best sampled result was **2.5600** at step 20,000. These values are not directly comparable with r001's full deterministic validation.
179
 
180
- Benchmarks used complete splits with `lm-evaluation-harness` 0.4.12, zero-shot evaluation, batch size 8, and BF16.
181
 
182
  | Benchmark | Primary metric | Score | Samples |
183
  |---|---|---:|---:|
184
- | BLiMP | accuracy | 0.766970 | 67,000 |
185
- | LAMBADA OpenAI | accuracy | 0.278090 | 5,153 |
186
- | HellaSwag | normalized accuracy | 0.298745 | 10,042 |
187
- | PIQA | normalized accuracy | 0.603373 | 1,838 |
188
- | SciQ | normalized accuracy | 0.658000 | 1,000 |
189
- | ARC-Easy | normalized accuracy | 0.422980 | 2,376 |
190
- | ARC-Challenge | normalized accuracy | 0.241468 | 1,172 |
191
 
192
- LAMBADA perplexity was 53.667523. Full metrics and protocol details are recorded in the r002 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 r002 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
 
@@ -208,7 +208,7 @@ Use the Transformers example in the Polish section. The artifact uses standard `
208
 
209
  Kod nanoGPT jest na licencji MIT. Korpus łączy źródła o różnych warunkach i nie ma jednej wspólnej licencji, dlatego model oznaczono jako `license: other`. Szczegóły: [`LICENSE.md`](./LICENSE.md) i karta datasetu.
210
 
211
- nanoGPT code is MIT-licensed. The corpus combines sources governed by different terms and has no single common license, so the model is marked `license: other`. See [`LICENSE.md`](./LICENSE.md) and the dataset card.
212
 
213
  ## Pochodzenie / Attribution
214
 
 
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
 
 
46
 
47
  ### Opis
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 |
 
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
  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
 
 
134
 
135
  ### Overview
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 |
 
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
 
 
208
 
209
  Kod nanoGPT jest na licencji MIT. Korpus łączy źródła o różnych warunkach i nie ma jednej wspólnej licencji, dlatego model oznaczono jako `license: other`. Szczegóły: [`LICENSE.md`](./LICENSE.md) i karta datasetu.
210
 
211
+ nanoGPT code is MIT-licensed. The corpus combines sources governed by different terms and has no single common license, so the model is marked as `license: other`. See [`LICENSE.md`](./LICENSE.md) and the dataset card.
212
 
213
  ## Pochodzenie / Attribution
214
 
benchmarks/english.json CHANGED
The diff for this file is too large to render. See raw diff
 
config.json CHANGED
@@ -12,7 +12,7 @@
12
  "initializer_range": 0.02,
13
  "layer_norm_epsilon": 1e-05,
14
  "model_type": "gpt2",
15
- "model_version": "1.0",
16
  "n_ctx": 1024,
17
  "n_embd": 896,
18
  "n_head": 14,
 
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,
model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:2aada5b26abe9ce3b70af393d77be4ed1a799a7205b9c0dd5cfaff8bcaabce68
3
  size 510713512
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3a9964a0ba5f6d20ef6061d2a7e4442c1b001209ebe80f7b7148a25573decaa9
3
  size 510713512
release_manifest.json CHANGED
@@ -1,12 +1,12 @@
1
  {
2
  "schema_version": 2,
3
- "revision": 2,
4
- "revision_id": "r002",
5
- "release": "Pollock 1.0",
6
  "model_id": "SlayerLab/pollock-mini-lm-125m",
7
  "source_checkpoint": {
8
- "path_in_training_workspace": "runs/minimal-en-125m-4ep/ckpt.pt",
9
- "sha256": "026f54a390036b35792aa8fb131c8b0d394efb6d933753fb0e1257e55a67374b",
10
  "iteration": 22004,
11
  "tokens_seen": 10815406080,
12
  "native_nanogpt_parameters": 126637952,
@@ -30,8 +30,8 @@
30
  "ddp_world_size": 2,
31
  "effective_batch_tokens": 491520,
32
  "optimizer": "fused AdamW",
33
- "learning_rate": 0.0003,
34
- "min_learning_rate": 0.00003,
35
  "schedule": "cosine",
36
  "warmup_iters": 440,
37
  "lr_decay_iters": 22003,
@@ -43,26 +43,21 @@
43
  "compile": true,
44
  "backend": "nccl",
45
  "seed": 1337,
46
- "hardware": "2x NVIDIA GeForce RTX 4090 24 GB",
47
- "nanogpt_commit": "3adf61e"
 
48
  },
49
  "evaluation": {
50
- "final_sampled_validation_loss": 2.577547,
51
- "best_sampled_validation_loss": 2.56,
52
- "best_sampled_validation_step": 20000,
53
- "training_eval_batches": 100,
 
54
  "benchmark_harness": "lm-evaluation-harness 0.4.12",
55
  "benchmark_num_fewshot": 0,
56
  "benchmark_batch_size": 8,
57
- "benchmarks": {
58
- "blimp": {"acc": 0.7669701492537313, "samples": 67000},
59
- "lambada_openai": {"acc": 0.2780904327576169, "perplexity": 53.66752251060021, "samples": 5153},
60
- "hellaswag": {"acc_norm": 0.29874526986656047, "acc": 0.2818163712407887, "samples": 10042},
61
- "piqa": {"acc_norm": 0.6033732317736671, "acc": 0.6137105549510338, "samples": 1838},
62
- "sciq": {"acc_norm": 0.658, "acc": 0.737, "samples": 1000},
63
- "arc_easy": {"acc_norm": 0.42297979797979796, "acc": 0.4659090909090909, "samples": 2376},
64
- "arc_challenge": {"acc_norm": 0.24146757679180889, "acc": 0.20819112627986347, "samples": 1172}
65
- }
66
  },
67
  "conversion": {
68
  "target_class": "GPT2LMHeadModel",
@@ -73,19 +68,15 @@
73
  "max_absolute_logit_error": 0.0
74
  },
75
  "artifacts": {
76
- "README.md": {"sha256": "789645020a3864ad81e8a5271118aeed322c9a56039209e715689866d781342f"},
77
- "CHANGELOG.md": {"sha256": "379bf0c49f8a8c4a2d40e3ae1775876c37de2e6dac8125385be77742c96529d0"},
78
- "training-history/r001.md": {"sha256": "5e3cb7664fa09902369bb650d1f94cc63b1f0bd1c8a7ffea5c1e6c16c8c4c5df"},
79
- "training-history/r002.md": {"sha256": "bf4364b27d966fe32676d75c269dfd1e53a4939246a0888c0cce7cd63641952d"},
80
- "benchmarks/english.json": {"sha256": "eff82f7d45c82d715c536ac728787ea1eee42515501d4a0544934badab69ce2d"},
81
- "LICENSE.md": {"sha256": "46cbe928ed0aa24875f02f774313b27ec9d8abdf41f0c9ef67e0adb4e0614de4"},
82
- "config.json": {"sha256": "0ad9e47efb8d2ddf4666f016a286604365faa4ff6ece9654718c3e4daa43c41e"},
83
  "generation_config.json": {"sha256": "435beb27be51f0ed054f4a011e5109d125cdadc118b8799b18b155cc798d94d2"},
84
- "model.safetensors": {"sha256": "2aada5b26abe9ce3b70af393d77be4ed1a799a7205b9c0dd5cfaff8bcaabce68"},
85
  "special_tokens_map.json": {"sha256": "8b2257a17ea997bb038f43b133aefec82344ad2b8abc2b8a02a6c0a994ed624e"},
86
  "tokenizer.json": {"sha256": "6cda4e5ec8293f3b821e02253f9c0e88e43ad4f7c6e1324763e1fb91749fef51"},
87
- "tokenizer_config.json": {"sha256": "4cdabe37dbdc1adfcc017ee9a1f86ab89bdf184827d2d9f05181cae0f8af19bf"},
88
- "logs/training.log": {"sha256": "ff856088bdf504759600553a4e9ad5a23f965d54646838adcf0599bb1621d6e1"},
89
- "logs/benchmark-english.log": {"sha256": "f81ad6c915ae49a0d49f61c15ea86a265c31364e5418150c35aa416d4809e22a"}
90
  }
91
  }
 
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,
 
30
  "ddp_world_size": 2,
31
  "effective_batch_tokens": 491520,
32
  "optimizer": "fused AdamW",
33
+ "learning_rate": 0.0004,
34
+ "min_learning_rate": 0.00004,
35
  "schedule": "cosine",
36
  "warmup_iters": 440,
37
  "lr_decay_iters": 22003,
 
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,
59
+ "truncated_benchmark_requests": 80,
60
+ "results_file": "benchmarks/english.json"
 
 
 
 
 
 
 
61
  },
62
  "conversion": {
63
  "target_class": "GPT2LMHeadModel",
 
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"}
 
 
81
  }
82
  }
training-history/r003.md ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # r003 - Pollock 1.1 training record
2
+
3
+ ## Identity and provenance
4
+
5
+ | Field | Value |
6
+ |---|---|
7
+ | Revision / release | `r003` / Pollock 1.1 |
8
+ | Model ID | `SlayerLab/pollock-mini-lm-125m` |
9
+ | Source run | `runs/r003-lr4e-4-v4` |
10
+ | Source checkpoint | `checkpoints/ckpt.pt` |
11
+ | Checkpoint iteration / SHA-256 | 22,004 / `912483b44bb177c7a62fe19a53fc6db7b333cf881c57de15daf9dd7209d90a6b` |
12
+ | Benchmark adapter SHA-256 | `0f53aa6b8454e856f8c4c489c7e6cbf207b8e124fe06bbb239315c017fe16fc0` |
13
+ | nanoGPT commit | `3adf61e154c3fe3fca428ad6bc3818b27a3b8291` (dirty workspace recorded) |
14
+ | W&B run | [`uro1w8l1`](https://wandb.ai/dawidmajewski-ezotic/minimal-en/runs/uro1w8l1) |
15
+ | Training environment | [DMPod GPT](https://github.com/dawidmajewski/dmpod-gpt) on RunPod |
16
+ | Run status | completed, exit code 0 |
17
+
18
+ The native checkpoint reports `iter_num=22004`. The wrapper's pre-run estimate in `config.json` used 22,003 target updates and is one effective batch lower because the legacy nanoGPT loop is inclusive. This record follows the native checkpoint and r002 release convention: 22,004 updates and 10,815,406,080 token presentations.
19
+
20
+ ## Architecture and parameter accounting
21
+
22
+ | Setting | Value |
23
+ |---|---:|
24
+ | Type | GPT-2-style decoder-only Transformer |
25
+ | Layers / heads / width | 12 / 14 / 896 |
26
+ | Head dimension / MLP width | 64 / 3,584 |
27
+ | Context / vocabulary | 1,024 / 12,288 |
28
+ | Activation / dropout / bias | GELU / 0.0 / false |
29
+ | Position representation | learned absolute embeddings |
30
+ | Input/output token weights | tied |
31
+ | nanoGPT reported count | 126,637,952 |
32
+ | Native unique trainable total | 127,555,456 |
33
+
34
+ The architecture and parameter counts are unchanged from r002. The Transformers artifact has 127,674,624 unique serialized parameters, including 119,168 zero-valued compatibility bias parameters.
35
+
36
+ ## Tokenizer and dataset
37
+
38
+ The custom tokenizer is byte-level BPE with GPT-2-style pretokenization, 12,288 vocabulary entries, and the special tokens `<|endoftext|>`, `<|im_start|>`, and `<|im_end|>`. Tokenizer SHA-256: `6cda4e5ec8293f3b821e02253f9c0e88e43ad4f7c6e1324763e1fb91749fef51`.
39
+
40
+ Training used [Minimal EN Corpus 2.5B](https://huggingface.co/datasets/SlayerLab/minimal-en-corpus-2.5b).
41
+
42
+ | Split | BPE tokens | Binary SHA-256 |
43
+ |---|---:|---|
44
+ | Train | 2,703,768,815 | `5396834c25664080c14793a4880f86b86ae94074a6036f8f54a58686b02d30dc` |
45
+ | Validation | 5,267,742 | `bf07bd1fb1f956a92ee7788f2a8110e1837f5b880ce432f6cd2a22d05f8ac135` |
46
+
47
+ Dataset and tokenizer identities match r002.
48
+
49
+ ## Complete training configuration
50
+
51
+ | Setting | Value |
52
+ |---|---:|
53
+ | Initialization | scratch |
54
+ | Final checkpoint iteration | 22,004 |
55
+ | Sequence / micro-batch per GPU | 1,024 / 12 |
56
+ | Global / per-GPU accumulation | 40 / 20 micro-steps |
57
+ | DDP world size / effective batch | 2 / 491,520 tokens |
58
+ | Token presentations / passes | 10,815,406,080 / approximately 4.0 |
59
+ | Optimizer / betas | fused AdamW / 0.9, 0.95 |
60
+ | Maximum / minimum LR | 4e-4 / 4e-5 |
61
+ | Schedule / warmup / decay | cosine / 440 / 22,003 iterations |
62
+ | Weight decay / grad clip | 0.1 / 1.0 |
63
+ | Evaluation interval / batches | 1,000 / 100 per split |
64
+ | Evaluation subset | fixed 1,228,800 tokens per split |
65
+ | Training / data / evaluation seeds | 1,337 / 1,337 / 4,242 |
66
+ | Precision / compilation / backend | BF16 / `torch.compile` / NCCL |
67
+ | Hardware | 2x NVIDIA L40S |
68
+ | PyTorch / CUDA | 2.8.0+cu128 / 12.8 |
69
+ | Runtime | approximately 11 h 40 min |
70
+
71
+ The controlled change from r002 was the maximum/minimum learning rate. Hardware and the evaluation sampling implementation also differed operationally.
72
+
73
+ ## Training-time validation
74
+
75
+ Loss estimates used fixed offset files containing 1,200 sequence starts per split. They are internally comparable within r003 but not directly comparable with r002's randomly sampled batches or r004's differently seeded offsets.
76
+
77
+ | Step | Train loss | Validation loss |
78
+ |---:|---:|---:|
79
+ | 0 | 9.5797 | 9.5732 |
80
+ | 1,000 | 3.3896 | 3.4346 |
81
+ | 2,000 | 3.0458 | 3.0779 |
82
+ | 3,000 | 2.8829 | 2.9362 |
83
+ | 4,000 | 2.8210 | 2.8694 |
84
+ | 5,000 | 2.7688 | 2.8231 |
85
+ | 6,000 | 2.6991 | 2.7486 |
86
+ | 7,000 | 2.6873 | 2.7129 |
87
+ | 8,000 | 2.6536 | 2.6828 |
88
+ | 9,000 | 2.6451 | 2.6794 |
89
+ | 10,000 | 2.5838 | 2.6674 |
90
+ | 11,000 | 2.5810 | 2.6154 |
91
+ | 12,000 | 2.5351 | 2.6060 |
92
+ | 13,000 | 2.5606 | 2.5888 |
93
+ | 14,000 | 2.5332 | 2.5935 |
94
+ | 15,000 | 2.5207 | 2.5801 |
95
+ | 16,000 | 2.4850 | 2.5726 |
96
+ | 17,000 | 2.4773 | 2.5945 |
97
+ | 18,000 | 2.4851 | 2.5548 |
98
+ | 19,000 | 2.4698 | 2.5561 |
99
+ | 20,000 | 2.4437 | **2.5362** |
100
+ | 21,000 | 2.4602 | 2.5417 |
101
+ | 22,000 | **2.4282** | 2.5529 |
102
+
103
+ The final W&B value is 2.5528755188 with perplexity 12.8439838496. The released source checkpoint is the final checkpoint, not the step-20,000 sampled minimum.
104
+
105
+ ## English zero-shot benchmarks
106
+
107
+ Tasks used complete splits with `lm-evaluation-harness` 0.4.12, zero few-shot examples, batch size 8, BF16, and 1,024 maximum context. The adapter recorded 80 requests truncated to the model context.
108
+
109
+ | Benchmark | Primary | Additional | Samples | Delta vs r002 |
110
+ |---|---:|---:|---:|---:|
111
+ | BLiMP | acc 0.7773880597 | - | 67,000 | +0.010418 |
112
+ | LAMBADA OpenAI | acc 0.2899281972 | perplexity 47.7011402302 | 5,153 | +0.011838 acc |
113
+ | HellaSwag | acc_norm 0.3034256124 | acc 0.2850029875 | 10,042 | +0.004680 |
114
+ | PIQA | acc_norm 0.6109902067 | acc 0.6147986942 | 1,838 | +0.007617 |
115
+ | SciQ | acc_norm 0.6590000000 | acc 0.7660000000 | 1,000 | +0.001000 |
116
+ | ARC-Easy | acc_norm 0.4280303030 | acc 0.4861111111 | 2,376 | +0.005051 |
117
+ | ARC-Challenge | acc_norm 0.2534129693 | acc 0.2201365188 | 1,172 | +0.011945 |
118
+
119
+ All seven primary scores improved over r002. LAMBADA perplexity decreased by 5.966382. Because the r002 artifact reported zero truncated requests, the cross-revision comparison is informative but not a byte-for-byte identical evaluation protocol.
120
+
121
+ Structured English results: [`../benchmarks/english.json`](../benchmarks/english.json).
122
+
123
+ ## Release preparation status
124
+
125
+ - Native training checkpoint verified against the backup archive.
126
+ - Benchmark adapter hash verified against the benchmark result record.
127
+ - Dataset, tokenizer, source snapshots, and fixed evaluation offsets are present.
128
+ - 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`.
129
+ - No files have been uploaded to Hugging Face for this revision.
130
+
131
+ ## Licensing and limitations
132
+
133
+ 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`.