Text Generation
Transformers
Safetensors
English
gpt2
causal-lm
nanogpt
bpe
educational
base-model
Eval Results (legacy)
text-generation-inference
Instructions to use SlayerLab/pollock-mini-lm-125m with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use SlayerLab/pollock-mini-lm-125m with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="SlayerLab/pollock-mini-lm-125m")# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("SlayerLab/pollock-mini-lm-125m") model = AutoModelForCausalLM.from_pretrained("SlayerLab/pollock-mini-lm-125m", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use SlayerLab/pollock-mini-lm-125m with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "SlayerLab/pollock-mini-lm-125m" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SlayerLab/pollock-mini-lm-125m", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/SlayerLab/pollock-mini-lm-125m
- SGLang
How to use SlayerLab/pollock-mini-lm-125m with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "SlayerLab/pollock-mini-lm-125m" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SlayerLab/pollock-mini-lm-125m", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "SlayerLab/pollock-mini-lm-125m" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SlayerLab/pollock-mini-lm-125m", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use SlayerLab/pollock-mini-lm-125m with Docker Model Runner:
docker model run hf.co/SlayerLab/pollock-mini-lm-125m
Release Pollock 1.2 (r004)
Browse filesPublish the verified r004 Transformers artifact, tokenizer, English benchmark results, model card, changelog, training history, and release manifest.
- CHANGELOG.md +8 -0
- README.md +48 -48
- benchmarks/english.json +18 -18
- config.json +4 -4
- model.safetensors +2 -2
- release_manifest.json +26 -24
- training-history/r004.md +142 -0
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.
|
| 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.
|
| 16 |
- task: {type: text-generation, name: Zero-shot evaluation}
|
| 17 |
dataset: {type: blimp, name: BLiMP, split: train}
|
| 18 |
-
metrics: [{type: acc, value: 0.
|
| 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.
|
| 22 |
- task: {type: text-generation, name: Zero-shot evaluation}
|
| 23 |
dataset: {type: hellaswag, name: HellaSwag, split: validation}
|
| 24 |
-
metrics: [{type: acc_norm, value: 0.
|
| 25 |
- task: {type: text-generation, name: Zero-shot evaluation}
|
| 26 |
dataset: {type: piqa, name: PIQA, split: validation}
|
| 27 |
-
metrics: [{type: acc_norm, value: 0.
|
| 28 |
- task: {type: text-generation, name: Zero-shot evaluation}
|
| 29 |
dataset: {type: sciq, name: SciQ, split: test}
|
| 30 |
-
metrics: [{type: acc_norm, value: 0.
|
| 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.
|
| 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.
|
| 37 |
---
|
| 38 |
|
| 39 |
-
# Pollock 1.
|
| 40 |
|
| 41 |

|
| 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/
|
| 52 |
|
| 53 |
### Architektura i tokenizer
|
| 54 |
|
| 55 |
| Właściwość | Wartość |
|
| 56 |
|---|---:|
|
| 57 |
-
| Rewizja / wydanie |
|
| 58 |
| Typ | decoder-only Transformer w stylu GPT-2 |
|
| 59 |
-
| Warstwy / głowy / embedding |
|
| 60 |
| Maksymalny kontekst | 1024 tokeny |
|
| 61 |
| Słownik | 12 288 tokenów |
|
| 62 |
-
| Parametry nanoGPT | 126
|
| 63 |
-
| Łączne unikalne parametry trenowalne | 127
|
| 64 |
| Tokenizer | byte-level BPE, pretokenizacja w stylu GPT-2 |
|
| 65 |
| Tokeny specjalne | <code><|endoftext|></code>, <code><|im_start|></code>, <code><|im_end|></code> |
|
| 66 |
|
| 67 |
-
Artefakt Transformers ma 127
|
| 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 |
|
| 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 /
|
| 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 |
|
| 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.
|
| 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.
|
| 97 |
-
| LAMBADA OpenAI | accuracy | 0.
|
| 98 |
-
| HellaSwag | normalized accuracy | 0.
|
| 99 |
-
| PIQA | normalized accuracy | 0.
|
| 100 |
-
| SciQ | normalized accuracy | 0.
|
| 101 |
-
| ARC-Easy | normalized accuracy | 0.
|
| 102 |
-
| ARC-Challenge | normalized accuracy | 0.
|
| 103 |
|
| 104 |
-
LAMBADA osiągnęła perplexity 47.
|
| 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
|
| 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/
|
| 140 |
|
| 141 |
### Architecture and tokenizer
|
| 142 |
|
| 143 |
| Property | Value |
|
| 144 |
|---|---:|
|
| 145 |
-
| Revision / release |
|
| 146 |
| Type | GPT-2-style decoder-only Transformer |
|
| 147 |
-
| Layers / heads / width |
|
| 148 |
| Maximum context | 1,024 tokens |
|
| 149 |
| Vocabulary | 12,288 tokens |
|
| 150 |
-
| nanoGPT parameters | 126,
|
| 151 |
-
| Total unique trainable parameters | 127,
|
| 152 |
| Tokenizer | byte-level BPE, GPT-2-style pretokenization |
|
| 153 |
| Special tokens | `<|endoftext|>`, `<|im_start|>`, `<|im_end|>` |
|
| 154 |
|
| 155 |
-
The Transformers artifact has 127,
|
| 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 |
|
| 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 /
|
| 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 |
|
| 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.
|
| 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.
|
| 185 |
-
| LAMBADA OpenAI | accuracy | 0.
|
| 186 |
-
| HellaSwag | normalized accuracy | 0.
|
| 187 |
-
| PIQA | normalized accuracy | 0.
|
| 188 |
-
| SciQ | normalized accuracy | 0.
|
| 189 |
-
| ARC-Easy | normalized accuracy | 0.
|
| 190 |
-
| ARC-Challenge | normalized accuracy | 0.
|
| 191 |
|
| 192 |
-
LAMBADA perplexity was 47.
|
| 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
|
| 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.2 — r004
|
| 40 |
|
| 41 |

|
| 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><|endoftext|></code>, <code><|im_start|></code>, <code><|im_end|></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": "
|
| 4 |
-
"release": "Pollock 1.
|
| 5 |
-
"source_result": "runs/
|
| 6 |
"checkpoint": {
|
| 7 |
-
"path": "runs/
|
| 8 |
-
"sha256": "
|
| 9 |
"source_iteration": 22004
|
| 10 |
},
|
| 11 |
"execution": {
|
|
@@ -19,37 +19,37 @@
|
|
| 19 |
},
|
| 20 |
"results": {
|
| 21 |
"blimp": {
|
| 22 |
-
"acc": 0.
|
| 23 |
"samples": 67000
|
| 24 |
},
|
| 25 |
"lambada_openai": {
|
| 26 |
-
"acc": 0.
|
| 27 |
-
"perplexity": 47.
|
| 28 |
"samples": 5153
|
| 29 |
},
|
| 30 |
"hellaswag": {
|
| 31 |
-
"acc_norm": 0.
|
| 32 |
-
"acc": 0.
|
| 33 |
"samples": 10042
|
| 34 |
},
|
| 35 |
"piqa": {
|
| 36 |
-
"acc_norm": 0.
|
| 37 |
-
"acc": 0.
|
| 38 |
"samples": 1838
|
| 39 |
},
|
| 40 |
"sciq": {
|
| 41 |
-
"acc_norm": 0.
|
| 42 |
-
"acc": 0.
|
| 43 |
"samples": 1000
|
| 44 |
},
|
| 45 |
"arc_easy": {
|
| 46 |
-
"acc_norm": 0.
|
| 47 |
-
"acc": 0.
|
| 48 |
"samples": 2376
|
| 49 |
},
|
| 50 |
"arc_challenge": {
|
| 51 |
-
"acc_norm": 0.
|
| 52 |
-
"acc": 0.
|
| 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.
|
| 16 |
"n_ctx": 1024,
|
| 17 |
-
"n_embd":
|
| 18 |
-
"n_head":
|
| 19 |
"n_inner": null,
|
| 20 |
-
"n_layer":
|
| 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:
|
| 3 |
-
size
|
|
|
|
| 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":
|
| 4 |
-
"revision_id": "
|
| 5 |
-
"release": "Pollock 1.
|
| 6 |
"model_id": "SlayerLab/pollock-mini-lm-125m",
|
| 7 |
"source_checkpoint": {
|
| 8 |
-
"path_in_training_workspace": "runs/
|
| 9 |
-
"sha256": "
|
| 10 |
"iteration": 22004,
|
| 11 |
"tokens_seen": 10815406080,
|
| 12 |
-
"native_nanogpt_parameters":
|
| 13 |
-
"native_unique_trainable_parameters":
|
| 14 |
},
|
| 15 |
"architecture": {
|
| 16 |
-
"n_layer":
|
| 17 |
-
"n_head":
|
| 18 |
-
"n_embd":
|
| 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":
|
| 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":
|
| 47 |
-
"hardware": "
|
| 48 |
"nanogpt_commit": "3adf61e154c3fe3fca428ad6bc3818b27a3b8291"
|
| 49 |
},
|
| 50 |
"evaluation": {
|
| 51 |
"protocol": "fixed sampled subset",
|
| 52 |
"subset_tokens_per_split": 1228800,
|
| 53 |
-
"
|
| 54 |
-
"
|
| 55 |
-
"
|
|
|
|
|
|
|
| 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":
|
| 66 |
-
"compatibility_zero_bias_parameters":
|
| 67 |
"validation_probe_shape": [2, 64],
|
| 68 |
"max_absolute_logit_error": 0.0
|
| 69 |
},
|
| 70 |
"artifacts": {
|
| 71 |
-
"README.md": {"sha256": "
|
| 72 |
-
"CHANGELOG.md": {"sha256": "
|
| 73 |
-
"training-history/
|
| 74 |
-
"benchmarks/english.json": {"sha256": "
|
| 75 |
-
"config.json": {"sha256": "
|
| 76 |
"generation_config.json": {"sha256": "435beb27be51f0ed054f4a011e5109d125cdadc118b8799b18b155cc798d94d2"},
|
| 77 |
-
"model.safetensors": {"sha256": "
|
| 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`.
|