dawidmajewski commited on
Commit
a2e53d9
·
verified ·
1 Parent(s): cd7e692

Release Pollock 1.4 (r006)

Browse files

## Summary

- Publishes Pollock 1.4 / r006 from the completed `r006-corrected-corpus-v2-s1337-lr0.0004` run.
- Returns to the corrected V2 `SlayerLab/minimal-en-corpus-2.5b` data and the r003-r004 tokenizer while retaining the 12/14/896 architecture.
- Updates the bilingual model card, changelog, licensing notice, structured benchmarks, and training record.

## Validation

- Final native checkpoint SHA-256: `580fbb3c039ea1f349285a9bf7a67731fb6d455de931b6b7601d4ed09fce9437`
- `model.safetensors` SHA-256: `8e74aa4d34464229e86a1831fb34d442f91e22aa600e0cf2503891957fdc6a43`
- Transformers 5.15.1 conversion parity: maximum absolute logit error `0.0` on the deterministic `[2, 64]` probe
- Local Transformers load, parameter count, special-token IDs, and forward pass verified
- Seven full zero-shot benchmark splits recorded with no truncated requests

The fixed-sampling artifacts and release manifest will be finalized in this PR against this commit immutable weights SHA.

CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
 
3
  Revision numbers identify published model states independently of release names.
4
 
 
 
 
 
 
 
 
 
 
5
  ## r005 — Pollock 1.3
6
 
7
  - Returned to the 12/14/896 architecture used by r003 while keeping the model below 128M native trainable parameters.
 
2
 
3
  Revision numbers identify published model states independently of release names.
4
 
5
+ ## r006 — Pollock 1.4
6
+
7
+ - Returned from the r005 5B corpus to V2 of `SlayerLab/minimal-en-corpus-2.5b`, including its corrected cleaning and record boundaries.
8
+ - Restored the tokenizer used by r003-r004 and trained the unchanged 12/14/896 architecture for approximately 4.02 data passes at the same 491,520-token effective batch and 4e-4→4e-5 learning-rate range.
9
+ - Replaced the legacy inclusive training loop with the exact configured 22,003-update budget while preserving the training, data, and evaluation seeds.
10
+ - Updated training evaluation, the seven-task English zero-shot suite, Transformers weights, and fixed inference samples.
11
+
12
+ Full record: [`training-history/r006.md`](./training-history/r006.md)
13
+
14
  ## r005 — Pollock 1.3
15
 
16
  - Returned to the 12/14/896 architecture used by r003 while keeping the model below 128M native trainable parameters.
LICENSE.md CHANGED
@@ -16,14 +16,14 @@ Code components distributed with the project remain subject to their respective
16
 
17
  ## Korpus i wagi / Corpus and weights
18
 
19
- Model został wytrenowany na `SlayerLab/minimal-en-corpus-5b`, agregacie danych z wielu źródeł. Korpus nie nadaje dokumentom jednej wspólnej licencji; każdy dokument zachowuje identyfikator źródła i podlega warunkom, licencjom oraz ograniczeniom właściwego upstreamowego datasetu.
20
 
21
  Ze względu na mieszany charakter tych warunków repozytorium modelu używa metadanej Hugging Face `license: other`. Nie jest to przyznanie dodatkowych praw do materiałów źródłowych. Użytkownik powinien przed użyciem, redystrybucją lub zastosowaniem komercyjnym zapoznać się z kartą korpusu i warunkami wszystkich właściwych źródeł:
22
 
23
- <https://huggingface.co/datasets/SlayerLab/minimal-en-corpus-5b>
24
 
25
- The model was trained on `SlayerLab/minimal-en-corpus-5b`, an aggregate of multiple data sources. The corpus does not apply a single common license to its documents; each document retains its source identifier and remains subject to the terms, licenses, and restrictions of the applicable upstream dataset.
26
 
27
  Because these terms are mixed, the model repository uses the Hugging Face metadata value `license: other`. This notice does not grant additional rights to upstream materials. Before use, redistribution, or commercial application, users should review the corpus card and the terms of every applicable source:
28
 
29
- <https://huggingface.co/datasets/SlayerLab/minimal-en-corpus-5b>
 
16
 
17
  ## Korpus i wagi / Corpus and weights
18
 
19
+ Model został wytrenowany na `SlayerLab/minimal-en-corpus-2.5b`, agregacie danych z wielu źródeł. Korpus nie nadaje dokumentom jednej wspólnej licencji; każdy dokument zachowuje identyfikator źródła i podlega warunkom, licencjom oraz ograniczeniom właściwego upstreamowego datasetu.
20
 
21
  Ze względu na mieszany charakter tych warunków repozytorium modelu używa metadanej Hugging Face `license: other`. Nie jest to przyznanie dodatkowych praw do materiałów źródłowych. Użytkownik powinien przed użyciem, redystrybucją lub zastosowaniem komercyjnym zapoznać się z kartą korpusu i warunkami wszystkich właściwych źródeł:
22
 
23
+ <https://huggingface.co/datasets/SlayerLab/minimal-en-corpus-2.5b>
24
 
25
+ The model was trained on `SlayerLab/minimal-en-corpus-2.5b`, an aggregate of multiple data sources. The corpus does not apply a single common license to its documents; each document retains its source identifier and remains subject to the terms, licenses, and restrictions of the applicable upstream dataset.
26
 
27
  Because these terms are mixed, the model repository uses the Hugging Face metadata value `license: other`. This notice does not grant additional rights to upstream materials. Before use, redistribution, or commercial application, users should review the corpus card and the terms of every applicable source:
28
 
29
+ <https://huggingface.co/datasets/SlayerLab/minimal-en-corpus-2.5b>
README.md CHANGED
@@ -5,38 +5,38 @@ pipeline_tag: text-generation
5
  license: other
6
  license_name: mixed-upstream-dataset-terms
7
  license_link: https://huggingface.co/SlayerLab/pollock-mini-lm-125m/blob/main/LICENSE.md
8
- datasets: [SlayerLab/minimal-en-corpus-5b]
9
  tags: [causal-lm, gpt2, nanogpt, bpe, educational, base-model]
10
  model-index:
11
- - name: Pollock 1.3
12
  results:
13
  - task: {type: text-generation, name: Language modeling}
14
- dataset: {type: SlayerLab/minimal-en-corpus-5b, name: Minimal EN validation (sampled), split: validation}
15
- metrics: [{type: loss, value: 2.5406661582, 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.7753134328}]
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.2974966039}, {type: perplexity, value: 47.32861410}]
22
  - task: {type: text-generation, name: Zero-shot evaluation}
23
  dataset: {type: hellaswag, name: HellaSwag, split: validation}
24
- metrics: [{type: acc_norm, value: 0.3045210118}]
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.6760000000}]
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.4297138047}]
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.2320819113}]
37
  ---
38
 
39
- # Pollock 1.3 — r005
40
 
41
  ![Pollock avatar](./assets/pollock-mini-lm-avatar-320.png)
42
 
@@ -48,13 +48,13 @@ 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/r005.md`](./training-history/r005.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 | r005 / Pollock 1.3 |
58
  | Typ | decoder-only Transformer w stylu GPT-2 |
59
  | Warstwy / głowy / embedding | 12 / 14 / 896 |
60
  | Maksymalny kontekst | 1024 tokeny |
@@ -68,40 +68,40 @@ Artefakt Transformers ma 127 674 624 parametry, w tym 119 168 zerowych parametr
68
 
69
  ### Dane i trening
70
 
71
- Model wytrenowano na [`SlayerLab/minimal-en-corpus-5b`](https://huggingface.co/datasets/SlayerLab/minimal-en-corpus-5b), subiektywnie dobranej mieszance 15 anglojęzycznych źródeł. Przygotowanie obejmowało deduplikację dokładną i przybliżoną, filtrowanie języka oraz decontaminację benchmarków. Tokenizer BPE został przebudowany dla nowego korpusu; zachowuje rozmiar słownika i identyfikatory tokenów specjalnych z r004, ale pozostałe identyfikatory tokenów nie są zgodne między tymi rewizjami.
72
 
73
  | Parametr | Wartość |
74
  |---|---:|
75
- | Tokeny treningowe / walidacyjne | 5 425 901 705 / 5 269 579 |
76
- | Finalny checkpoint | aktualizacja 22 078 |
77
- | Przetworzone tokeny | 10 851 778 560 (około 2 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.540666**; najlepszy wynik to **2.540605** po 10 813 440 000 przetworzonych tokenów. Nie należy porównywać tych wartości bezpośrednio z r001-r004, ponieważ r005 używa innego korpusu, tokenizera i zbioru 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 | acc | 0.775313 | 67 000 |
97
- | LAMBADA | acc | 0.297497 | 5 153 |
98
- | HellaSwag | acc_norm | 0.304521 | 10 042 |
99
- | PIQA | acc_norm | 0.603373 | 1 838 |
100
- | SciQ | acc_norm | 0.676000 | 1 000 |
101
- | ARC-Easy | acc_norm | 0.429714 | 2 376 |
102
- | ARC-Challenge | acc_norm | 0.232082 | 1 172 |
103
 
104
- LAMBADA osiągnęła perplexity 47.328614. Pełne metryki i protokół zapisano w [`benchmarks/english.json`](./benchmarks/english.json).
105
 
106
  ### Użycie z Transformers
107
 
@@ -123,11 +123,12 @@ Model używa standardowego `GPT2LMHeadModel`; `trust_remote_code=True` nie jest
123
 
124
  ### Stałe próbki inferencji
125
 
126
- Wspólny zestaw [`fixed-sampling-v1`](./inference-samples/README.md) pokazuje te same cztery prompty wygenerowane przez r001-r005. Wszystkie rewizje są ładowane z pełnych, niezmiennych SHA commitów, a SHA-256 każdego pliku z wagami jest sprawdzane przed inferencją. Referencyjny protokół używa macOS 26.2 na arm64, CPU, float32, jednego wątku, Transformers 5.15.1, seed 1337 resetowanego dla każdego promptu, temperature 0.7, top-k 50 i limitu 100 nowych tokenów.
127
 
128
  | Rewizja | Wydanie | Wagi | Historia |
129
  |---|---|---|---|
130
- | **r005** | **Pollock 1.3** | [`e780025`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/e780025f15e06bc3765a74d973906eb8a11c022c) | [`r005.md`](./training-history/r005.md) |
 
131
  | r004 | Pollock 1.2 | [`30feb81`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/30feb81e5097eef13b939e1827d98e0458bf602d) | [`r004.md`](./training-history/r004.md) |
132
  | r003 | Pollock 1.1 | [`698984b`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/698984b1d1b96c9b6ffaff00c7fc2e78e140e842) | [`r003.md`](./training-history/r003.md) |
133
  | r002 | Pollock 1.0 | [`5e571cd`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/5e571cde09ef2d1124e13d1c31d0b75f8bd0e513) | [`r002.md`](./training-history/r002.md) |
@@ -150,13 +151,13 @@ Pełne teksty są przeznaczone do porównywania zachowania, nie są benchmarkiem
150
 
151
  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.
152
 
153
- 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/r005.md`](./training-history/r005.md) for the complete technical record and [`CHANGELOG.md`](./CHANGELOG.md) for release-to-release changes.
154
 
155
  ### Architecture and tokenizer
156
 
157
  | Property | Value |
158
  |---|---:|
159
- | Revision / release | r005 / Pollock 1.3 |
160
  | Type | GPT-2-style decoder-only Transformer |
161
  | Layers / heads / width | 12 / 14 / 896 |
162
  | Maximum context | 1,024 tokens |
@@ -170,40 +171,40 @@ The Transformers artifact has 127,674,624 parameters, including 119,168 zero-val
170
 
171
  ### Data and training
172
 
173
- The model was trained on [`SlayerLab/minimal-en-corpus-5b`](https://huggingface.co/datasets/SlayerLab/minimal-en-corpus-5b), a subjectively selected mixture of 15 English-language sources. Preparation included exact and approximate deduplication, language filtering, and benchmark decontamination. The BPE tokenizer was rebuilt for the new corpus; it retains r004's vocabulary size and special-token IDs, but other token IDs are not compatible across the two revisions.
174
 
175
  | Setting | Value |
176
  |---|---:|
177
- | Training / validation tokens | 5,425,901,705 / 5,269,579 |
178
- | Final checkpoint | update 22,078 |
179
- | Token presentations | 10,851,778,560 (approximately 2 epochs) |
180
  | Sequence / micro-batch per GPU | 1,024 / 12 |
181
- | Global / per-GPU accumulation | 40 / 40 micro-steps |
182
  | Effective batch | 491,520 tokens |
183
  | Optimizer | fused AdamW, betas 0.9/0.95 |
184
  | Learning rate | 4e-4 → 4e-5, cosine decay |
185
  | Warmup / weight decay / grad clip | 440 / 0.1 / 1.0 |
186
  | Precision | BF16 |
187
- | Hardware | 1× NVIDIA GeForce RTX 5090 |
188
  | Framework | PyTorch 2.8.0+cu128, nanoGPT commit `3adf61e` |
189
 
190
  ### Evaluation
191
 
192
- Training-time loss was estimated on fixed subsets of 1,228,800 tokens per split. The final checkpoint achieved validation loss **2.540666**; the best result was **2.540605** after 10,813,440,000 token presentations. These values are not directly comparable with r001-r004 because r005 uses a different corpus, tokenizer, and validation set.
193
 
194
  Benchmarks used complete splits with `lm-evaluation-harness` 0.4.12, zero few-shot examples, batch size 8, and BF16.
195
 
196
  | Benchmark | Primary metric | Score | Samples |
197
  |---|---|---:|---:|
198
- | BLiMP | acc | 0.775313 | 67,000 |
199
- | LAMBADA | acc | 0.297497 | 5,153 |
200
- | HellaSwag | acc_norm | 0.304521 | 10,042 |
201
- | PIQA | acc_norm | 0.603373 | 1,838 |
202
- | SciQ | acc_norm | 0.676000 | 1,000 |
203
- | ARC-Easy | acc_norm | 0.429714 | 2,376 |
204
- | ARC-Challenge | acc_norm | 0.232082 | 1,172 |
205
 
206
- LAMBADA perplexity was 47.328614. Full metrics and protocol details are recorded in [`benchmarks/english.json`](./benchmarks/english.json).
207
 
208
  ### Usage
209
 
@@ -211,11 +212,12 @@ Use the Transformers example in the Polish section. The artifact uses standard `
211
 
212
  ### Fixed inference samples
213
 
214
- The shared [`fixed-sampling-v1`](./inference-samples/README.md) suite runs the same four prompts on r001-r005. All revisions are loaded from full immutable commit SHAs, and every weight-file SHA-256 is verified before inference. The reference protocol uses macOS 26.2 on arm64, CPU float32 with one thread, Transformers 5.15.1, seed 1337 reset for every prompt, temperature 0.7, top-k 50, and a 100-new-token limit.
215
 
216
  | Revision | Release | Weights | History |
217
  |---|---|---|---|
218
- | **r005** | **Pollock 1.3** | [`e780025`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/e780025f15e06bc3765a74d973906eb8a11c022c) | [`r005.md`](./training-history/r005.md) |
 
219
  | r004 | Pollock 1.2 | [`30feb81`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/30feb81e5097eef13b939e1827d98e0458bf602d) | [`r004.md`](./training-history/r004.md) |
220
  | r003 | Pollock 1.1 | [`698984b`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/698984b1d1b96c9b6ffaff00c7fc2e78e140e842) | [`r003.md`](./training-history/r003.md) |
221
  | r002 | Pollock 1.0 | [`5e571cd`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/5e571cde09ef2d1124e13d1c31d0b75f8bd0e513) | [`r002.md`](./training-history/r002.md) |
 
5
  license: other
6
  license_name: mixed-upstream-dataset-terms
7
  license_link: https://huggingface.co/SlayerLab/pollock-mini-lm-125m/blob/main/LICENSE.md
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.4
12
  results:
13
  - task: {type: text-generation, name: Language modeling}
14
+ dataset: {type: SlayerLab/minimal-en-corpus-2.5b, name: Minimal EN 2.5B V2 validation (fixed subset), split: validation}
15
+ metrics: [{type: loss, value: 2.5363565445, name: Final fixed-subset 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.7691641791}]
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.2769260625}, {type: perplexity, value: 49.9072065519}]
22
  - task: {type: text-generation, name: Zero-shot evaluation}
23
  dataset: {type: hellaswag, name: HellaSwag, split: validation}
24
+ metrics: [{type: acc_norm, value: 0.3013343955}]
25
  - task: {type: text-generation, name: Zero-shot evaluation}
26
  dataset: {type: piqa, name: PIQA, split: validation}
27
+ metrics: [{type: acc_norm, value: 0.5968443961}]
28
  - task: {type: text-generation, name: Zero-shot evaluation}
29
  dataset: {type: sciq, name: SciQ, split: test}
30
+ metrics: [{type: acc_norm, value: 0.6640000000}]
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.4343434343}]
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.4 — r006
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/r006.md`](./training-history/r006.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 | r006 / Pollock 1.4 |
58
  | Typ | decoder-only Transformer w stylu GPT-2 |
59
  | Warstwy / głowy / embedding | 12 / 14 / 896 |
60
  | Maksymalny kontekst | 1024 tokeny |
 
68
 
69
  ### Dane i trening
70
 
71
+ Model wytrenowano na wersji V2 datasetu [`SlayerLab/minimal-en-corpus-2.5b`](https://huggingface.co/datasets/SlayerLab/minimal-en-corpus-2.5b) przypiętej do commita `d68d992`. Jest to subiektywnie dobrana mieszanka 15 anglojęzycznych źródeł po filtrowaniu języka, deduplikacji dokładnej i przybliżonej, decontaminacji benchmarków oraz dodatkowym czyszczeniu boilerplate'u i błędnie połączonych rekordów. R006 wraca do tokenizera używanego przez r003-r004; nie jest on zgodny z tokenizerem r005 poza rozmiarem słownika i identyfikatorami tokenów specjalnych.
72
 
73
  | Parametr | Wartość |
74
  |---|---:|
75
+ | Tokeny treningowe / walidacyjne | 2 689 323 439 / 5 236 486 |
76
+ | Finalny checkpoint | aktualizacja 22 003 |
77
+ | Przetworzone tokeny | 10 814 914 560 (około 4,02 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 GeForce RTX 4090 |
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.536357**; najlepszy wynik to **2.536231** po 10 813 440 000 przetworzonych tokenów. Nie należy porównywać tych wartości bezpośrednio z r005, ponieważ r006 używa innego korpusu, tokenizera i zbioru 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 | acc | 0.769164 | 67 000 |
97
+ | LAMBADA | acc | 0.276926 | 5 153 |
98
+ | HellaSwag | acc_norm | 0.301334 | 10 042 |
99
+ | PIQA | acc_norm | 0.596844 | 1 838 |
100
+ | SciQ | acc_norm | 0.664000 | 1 000 |
101
+ | ARC-Easy | acc_norm | 0.434343 | 2 376 |
102
+ | ARC-Challenge | acc_norm | 0.241468 | 1 172 |
103
 
104
+ LAMBADA osiągnęła perplexity 49.907207. Pełne metryki i protokół zapisano w [`benchmarks/english.json`](./benchmarks/english.json).
105
 
106
  ### Użycie z Transformers
107
 
 
123
 
124
  ### Stałe próbki inferencji
125
 
126
+ Wspólny zestaw [`fixed-sampling-v1`](./inference-samples/README.md) pokazuje te same cztery prompty wygenerowane przez r001-r006. Wszystkie opublikowane rewizje są ładowane z pełnych, niezmiennych SHA commitów, a SHA-256 każdego pliku z wagami jest sprawdzane przed inferencją. Referencyjny protokół używa macOS 26.2 na arm64, CPU, float32, jednego wątku, Transformers 5.15.1, seed 1337 resetowanego dla każdego promptu, temperature 0.7, top-k 50 i limitu 100 nowych tokenów.
127
 
128
  | Rewizja | Wydanie | Wagi | Historia |
129
  |---|---|---|---|
130
+ | **r006** | **Pollock 1.4** | PR commit pending | [`r006.md`](./training-history/r006.md) |
131
+ | r005 | Pollock 1.3 | [`e780025`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/e780025f15e06bc3765a74d973906eb8a11c022c) | [`r005.md`](./training-history/r005.md) |
132
  | r004 | Pollock 1.2 | [`30feb81`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/30feb81e5097eef13b939e1827d98e0458bf602d) | [`r004.md`](./training-history/r004.md) |
133
  | r003 | Pollock 1.1 | [`698984b`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/698984b1d1b96c9b6ffaff00c7fc2e78e140e842) | [`r003.md`](./training-history/r003.md) |
134
  | r002 | Pollock 1.0 | [`5e571cd`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/5e571cde09ef2d1124e13d1c31d0b75f8bd0e513) | [`r002.md`](./training-history/r002.md) |
 
151
 
152
  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.
153
 
154
+ 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/r006.md`](./training-history/r006.md) for the complete technical record and [`CHANGELOG.md`](./CHANGELOG.md) for release-to-release changes.
155
 
156
  ### Architecture and tokenizer
157
 
158
  | Property | Value |
159
  |---|---:|
160
+ | Revision / release | r006 / Pollock 1.4 |
161
  | Type | GPT-2-style decoder-only Transformer |
162
  | Layers / heads / width | 12 / 14 / 896 |
163
  | Maximum context | 1,024 tokens |
 
171
 
172
  ### Data and training
173
 
174
+ The model was trained on V2 of [`SlayerLab/minimal-en-corpus-2.5b`](https://huggingface.co/datasets/SlayerLab/minimal-en-corpus-2.5b), pinned to commit `d68d992`. It is a subjectively selected mixture of 15 English-language sources after language filtering, exact and approximate deduplication, benchmark decontamination, and additional cleanup of boilerplate and incorrectly concatenated records. R006 returns to the tokenizer used by r003-r004; it is not compatible with r005's tokenizer beyond the vocabulary size and special-token IDs.
175
 
176
  | Setting | Value |
177
  |---|---:|
178
+ | Training / validation tokens | 2,689,323,439 / 5,236,486 |
179
+ | Final checkpoint | update 22,003 |
180
+ | Token presentations | 10,814,914,560 (approximately 4.02 epochs) |
181
  | Sequence / micro-batch per GPU | 1,024 / 12 |
182
+ | Global / per-GPU accumulation | 40 / 20 micro-steps |
183
  | Effective batch | 491,520 tokens |
184
  | Optimizer | fused AdamW, betas 0.9/0.95 |
185
  | Learning rate | 4e-4 → 4e-5, cosine decay |
186
  | Warmup / weight decay / grad clip | 440 / 0.1 / 1.0 |
187
  | Precision | BF16 |
188
+ | Hardware | 2× NVIDIA GeForce RTX 4090 |
189
  | Framework | PyTorch 2.8.0+cu128, nanoGPT commit `3adf61e` |
190
 
191
  ### Evaluation
192
 
193
+ Training-time loss was estimated on fixed subsets of 1,228,800 tokens per split. The final checkpoint achieved validation loss **2.536357**; the best result was **2.536231** after 10,813,440,000 token presentations. These values are not directly comparable with r005 because r006 uses a different corpus, tokenizer, and validation set.
194
 
195
  Benchmarks used complete splits with `lm-evaluation-harness` 0.4.12, zero few-shot examples, batch size 8, and BF16.
196
 
197
  | Benchmark | Primary metric | Score | Samples |
198
  |---|---|---:|---:|
199
+ | BLiMP | acc | 0.769164 | 67,000 |
200
+ | LAMBADA | acc | 0.276926 | 5,153 |
201
+ | HellaSwag | acc_norm | 0.301334 | 10,042 |
202
+ | PIQA | acc_norm | 0.596844 | 1,838 |
203
+ | SciQ | acc_norm | 0.664000 | 1,000 |
204
+ | ARC-Easy | acc_norm | 0.434343 | 2,376 |
205
+ | ARC-Challenge | acc_norm | 0.241468 | 1,172 |
206
 
207
+ LAMBADA perplexity was 49.907207. Full metrics and protocol details are recorded in [`benchmarks/english.json`](./benchmarks/english.json).
208
 
209
  ### Usage
210
 
 
212
 
213
  ### Fixed inference samples
214
 
215
+ The shared [`fixed-sampling-v1`](./inference-samples/README.md) suite runs the same four prompts on r001-r006. All published revisions are loaded from full immutable commit SHAs, and every weight-file SHA-256 is verified before inference. The reference protocol uses macOS 26.2 on arm64, CPU float32 with one thread, Transformers 5.15.1, seed 1337 reset for every prompt, temperature 0.7, top-k 50, and a 100-new-token limit.
216
 
217
  | Revision | Release | Weights | History |
218
  |---|---|---|---|
219
+ | **r006** | **Pollock 1.4** | PR commit pending | [`r006.md`](./training-history/r006.md) |
220
+ | r005 | Pollock 1.3 | [`e780025`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/e780025f15e06bc3765a74d973906eb8a11c022c) | [`r005.md`](./training-history/r005.md) |
221
  | r004 | Pollock 1.2 | [`30feb81`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/30feb81e5097eef13b939e1827d98e0458bf602d) | [`r004.md`](./training-history/r004.md) |
222
  | r003 | Pollock 1.1 | [`698984b`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/698984b1d1b96c9b6ffaff00c7fc2e78e140e842) | [`r003.md`](./training-history/r003.md) |
223
  | r002 | Pollock 1.0 | [`5e571cd`](https://huggingface.co/SlayerLab/pollock-mini-lm-125m/commit/5e571cde09ef2d1124e13d1c31d0b75f8bd0e513) | [`r002.md`](./training-history/r002.md) |
benchmarks/english.json CHANGED
@@ -1,12 +1,22 @@
1
  {
2
  "schema_version": 1,
3
- "revision_id": "r005",
4
- "release": "Pollock 1.3",
5
- "source_result": "runs/pollock-r005-v1p3/benchmarks/results.json",
6
  "checkpoint": {
7
- "path": "runs/pollock-r005-v1p3/checkpoints/ckpt-final.pt",
8
- "sha256": "bc68b2cb8a736fb00fa26b40c425dc1944b2ea02eb9514937ce5ca0908bbe9d2",
9
- "source_iteration": 22078
 
 
 
 
 
 
 
 
 
 
10
  },
11
  "execution": {
12
  "harness": "lm-evaluation-harness 0.4.12",
@@ -19,43 +29,43 @@
19
  },
20
  "results": {
21
  "blimp": {
22
- "acc,none": 0.7753134328358209,
23
  "sample_len": 67000.0,
24
  "samples": 67000
25
  },
26
  "lambada_openai": {
27
- "acc,none": 0.29749660392004657,
28
- "perplexity,none": 47.32861410229832,
29
  "sample_len": 5153.0,
30
  "samples": 5153
31
  },
32
  "hellaswag": {
33
- "acc,none": 0.28450507866958774,
34
- "acc_norm,none": 0.3045210117506473,
35
  "sample_len": 10042.0,
36
  "samples": 10042
37
  },
38
  "piqa": {
39
- "acc,none": 0.6099020674646355,
40
- "acc_norm,none": 0.6033732317736671,
41
  "sample_len": 1838.0,
42
  "samples": 1838
43
  },
44
  "sciq": {
45
- "acc,none": 0.772,
46
- "acc_norm,none": 0.676,
47
  "sample_len": 1000.0,
48
  "samples": 1000
49
  },
50
  "arc_easy": {
51
- "acc,none": 0.48358585858585856,
52
- "acc_norm,none": 0.4297138047138047,
53
  "sample_len": 2376.0,
54
  "samples": 2376
55
  },
56
  "arc_challenge": {
57
- "acc,none": 0.19197952218430034,
58
- "acc_norm,none": 0.23208191126279865,
59
  "sample_len": 1172.0,
60
  "samples": 1172
61
  }
 
1
  {
2
  "schema_version": 1,
3
+ "revision_id": "r006",
4
+ "release": "Pollock 1.4",
5
+ "source_result": "runs/r006-corrected-corpus-v2-s1337-lr0.0004/benchmarks/results.json",
6
  "checkpoint": {
7
+ "path": "runs/r006-corrected-corpus-v2-s1337-lr0.0004/checkpoints/ckpt-final.pt",
8
+ "sha256": "580fbb3c039ea1f349285a9bf7a67731fb6d455de931b6b7601d4ed09fce9437",
9
+ "source_iteration": 22003
10
+ },
11
+ "benchmark_checkpoint": {
12
+ "path": "/workspace/cache/dmpod-tokenizers/r006-final-benchmark.pt",
13
+ "sha256": "9339d20ea32d24bc9777518a2f0ec553e4a3871647d342db92d7c5b6c18c7b56",
14
+ "trusted_input_required": true
15
+ },
16
+ "tokenizer": {
17
+ "dataset_revision": "d68d992622e9fc11f19e7d7fb8547c4e653439a4",
18
+ "sha256": "6cda4e5ec8293f3b821e02253f9c0e88e43ad4f7c6e1324763e1fb91749fef51",
19
+ "version": "V2.0@d68d992622e9fc11f19e7d7fb8547c4e653439a4"
20
  },
21
  "execution": {
22
  "harness": "lm-evaluation-harness 0.4.12",
 
29
  },
30
  "results": {
31
  "blimp": {
32
+ "acc,none": 0.7691641791044775,
33
  "sample_len": 67000.0,
34
  "samples": 67000
35
  },
36
  "lambada_openai": {
37
+ "acc,none": 0.27692606248787116,
38
+ "perplexity,none": 49.907206551888116,
39
  "sample_len": 5153.0,
40
  "samples": 5153
41
  },
42
  "hellaswag": {
43
+ "acc,none": 0.2830113523202549,
44
+ "acc_norm,none": 0.3013343955387373,
45
  "sample_len": 10042.0,
46
  "samples": 10042
47
  },
48
  "piqa": {
49
+ "acc,none": 0.6071817192600653,
50
+ "acc_norm,none": 0.5968443960826986,
51
  "sample_len": 1838.0,
52
  "samples": 1838
53
  },
54
  "sciq": {
55
+ "acc,none": 0.768,
56
+ "acc_norm,none": 0.664,
57
  "sample_len": 1000.0,
58
  "samples": 1000
59
  },
60
  "arc_easy": {
61
+ "acc,none": 0.4877946127946128,
62
+ "acc_norm,none": 0.43434343434343436,
63
  "sample_len": 2376.0,
64
  "samples": 2376
65
  },
66
  "arc_challenge": {
67
+ "acc,none": 0.21075085324232082,
68
+ "acc_norm,none": 0.24146757679180889,
69
  "sample_len": 1172.0,
70
  "samples": 1172
71
  }
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.3",
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.4",
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:3db43dfa44622e8156f060fee6f16875e108db4f5f949969cb91c0ca8cdce32c
3
  size 510713512
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8e74aa4d34464229e86a1831fb34d442f91e22aa600e0cf2503891957fdc6a43
3
  size 510713512
tokenizer.json CHANGED
The diff for this file is too large to render. See raw diff
 
training-history/r006.md ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # r006 — Pollock 1.4 training record
2
+
3
+ ## Identity and provenance
4
+
5
+ | Field | Value |
6
+ |---|---|
7
+ | Revision / release | `r006` / Pollock 1.4 |
8
+ | Source run | `r006-corrected-corpus-v2-s1337-lr0.0004` |
9
+ | Final checkpoint SHA-256 | `580fbb3c039ea1f349285a9bf7a67731fb6d455de931b6b7601d4ed09fce9437` |
10
+ | `model.safetensors` SHA-256 | `8e74aa4d34464229e86a1831fb34d442f91e22aa600e0cf2503891957fdc6a43` |
11
+
12
+ ## Architecture and training
13
+
14
+ | Setting | Value |
15
+ |---|---:|
16
+ | Layers / heads / width | 12 / 14 / 896 |
17
+ | Context / vocabulary | 1024 / 12288 |
18
+ | Native trainable parameters | 127,555,456 |
19
+ | Dataset | SlayerLab/minimal-en-corpus-2.5b V2 (`d68d992`) |
20
+ | Tokenizer SHA-256 | `6cda4e5ec8293f3b821e02253f9c0e88e43ad4f7c6e1324763e1fb91749fef51` |
21
+ | Token presentations / passes | 10,814,914,560 / 4.021426 |
22
+ | Effective batch | 491,520 tokens |
23
+ | LR range | 4e-04 → 4e-05 |
24
+ | Precision / hardware | BF16 / 2× NVIDIA GeForce RTX 4090 |
25
+ | Runtime / mean throughput | 15.227 h / 199,894.6 tokens/s |
26
+
27
+ The frozen training source stores the same tokenizer mapping in nanoGPT's native merge format, whose SHA-256 is `d0d126f0a59e51e8cb1b26d77b5527870be0e8ea1e84adefd730fff906c48234`.
28
+
29
+ ## Training-time evaluation
30
+
31
+ Final train-eval loss: **2.489748**. Final validation loss: **2.536357** (perplexity 12.633557). Minimum validation loss: **2.536231** at 10,813,440,000 tokens.
32
+
33
+ ## English zero-shot benchmarks
34
+
35
+ | Benchmark | Primary metric | Score | Samples |
36
+ |---|---|---:|---:|
37
+ | BLiMP | acc | 0.769164 | 67,000 |
38
+ | LAMBADA | acc | 0.276926 | 5,153 |
39
+ | HellaSwag | acc_norm | 0.301334 | 10,042 |
40
+ | PIQA | acc_norm | 0.596844 | 1,838 |
41
+ | SciQ | acc_norm | 0.664000 | 1,000 |
42
+ | ARC-Easy | acc_norm | 0.434343 | 2,376 |
43
+ | ARC-Challenge | acc_norm | 0.241468 | 1,172 |
44
+
45
+ LAMBADA perplexity was **49.907207**. Benchmarks used complete splits, zero few-shot examples, `lm-evaluation-harness` 0.4.12, BF16, batch size 8, and a 1,024-token maximum context. No requests were truncated. The exact temporary benchmark-checkpoint and tokenizer hashes are preserved in [`../benchmarks/english.json`](../benchmarks/english.json).
46
+
47
+ ## Conversion and release status
48
+
49
+ The native final checkpoint was converted to `GPT2LMHeadModel` with Transformers 5.15.1. A deterministic `[2, 64]` parity probe produced maximum absolute logit error **0.0**. Publication and immutable remote replay details are recorded in `release_manifest.json`.