File size: 7,211 Bytes
88ebdb5 86b936e 56ac718 95488fa 86b936e 727b5f5 86b936e 727b5f5 86b936e 727b5f5 86b936e 727b5f5 86b936e 88ebdb5 474c86e 88ebdb5 474c86e 88ebdb5 474c86e 88ebdb5 98e99de 88ebdb5 474c86e 88ebdb5 474c86e eede7ab 88ebdb5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | ---
language:
- pl
- en
license: apache-2.0
library_name: pytorch
pipeline_tag: text-generation
tags:
- polish
- causal-lm
- from-scratch
datasets:
- SlayerLab/slayer-pl-8x3b
---
# Slayer1B 1.01
Decoder-only language model, 1 073 912 851 parameters, Polish-dominant. **Slayer1B 1.01 is Slayer1B 1.00 trained
further**: training resumed from the last checkpoint of 1.00 before its learning-rate decay (step 1050) and continued to
2860 steps, i.e. twice the tokens per parameter of 1.00 (2 998 927 360 tokens, β 2.8 tokens per parameter).
- Previous version: [SlayerLab/Slayer1B-1.00](https://huggingface.co/SlayerLab/Slayer1B-1.00)
- Training checkpoints (with optimizer state): [SlayerLab/Slayer1B-1.01-checkpoints](https://huggingface.co/SlayerLab/Slayer1B-1.01-checkpoints)
- Training curve and evaluations during training: https://track.fabryka.ai/run/4934429a-d393-42e0-8aac-03eae6b71ff7
## Results
Leaderboard protocol of https://track.fabryka.ai/models (`glint_parity_eval.py`, sha256 `d7a38ca0β¦`: zero-shot,
BLiMP raw summed log-probabilities, ARC-Easy raw accuracy, WikiText-2 non-overlapping 256-token chunks), fp32, final
checkpoint (step 2860, trainer checkpoint sha256 `b0a28879β¦`). The same instrument reproduces the published 1.00
numbers exactly. The released `model.safetensors` (sha256 `607d1a6cβ¦`) was exported twice from the step-2860
checkpoint, on two machines, with identical bytes.
| task | metric | n | 1.00 (step 1430) | **1.01 (step 2860)** |
|---|---|---:|---:|---:|
| BLiMP (67 phenomena) | accuracy | 67 000 | 71.51 % | **73.63 %** (49 335 correct) |
| ARC-Easy (test) | accuracy | 2 376 | 42.89 % | **47.98 %** (1 140 correct) |
| WikiText-2 (raw, test) | byte perplexity | 1 292 008 bytes | 2.5857 | **2.4230** |
| eff (leaderboard score from BLiMP, ARC-Easy and WikiText-2 byte perplexity) | leaderboard formula | β | 69.50 | **72.29** |
| MultiBLiMP, Polish (`jumelet/multiblimp` pol) | accuracy, summed log-probability, leading-space prefix | 3 272 | 97.89 % | **98.29 %** (3 216 correct) |
| ARC-Easy-PL (`Eurolingua/arcx` EU20, test) | accuracy, LL(q + choice) β LL(q) | 2 376 | 36.91 % | **40.36 %** (959 correct) |
### Evaluation history of 1.00 and 1.01

Measured values only (no fits, no trend lines): one checkpoint every 150 steps of both runs, same instrument.
Data: [`analysis/scores-history.csv`](analysis/scores-history.csv) (step, tokens, checkpoint sha256, scores, and which
of three GPUs computed the row; each GPU was checked against a known point before use). 1.00 at 1.26 B and 1.42 B tokens
is already in its learning-rate decay; 1.01 at the same token counts is not.
## Training loss vs. bands written before the run
Before the run, bands for the mean training loss were written down from the training-loss scenarios on the 1.00 card
(continuation of the 1.00 curve from step 1050):
| steps | band written before the run | measured mean of logged values |
|---|---|---:|
| 1700β1800 (constant lr, pack-00) | 2.692 β 2.882 | 2.6977 |
| 2770β2860 (end of the decay, pack-01) | 2.367 β 2.660 | 2.5083 |
Both bands were written before the run. The steps of the first window were also fixed before the run; the exact end of
the second window (the last 10 logged values, steps 2770β2860) was specified when 7 of those 10 values were already
logged. Both measurements fall inside their bands, the first one at the lower edge. This is one run, not a test of the
scenarios.
## Usage
The weights are a plain PyTorch state dict in safetensors; they are not a `transformers` AutoModel. The model class
is `GPT` in `train_gpt_ref_r23.py` (included).
```python
import torch, load_slayer
from tokenizers import Tokenizer
model = load_slayer.load(".") # directory with the files of this repository
tok = Tokenizer.from_file("tokenizer.json")
ids = torch.tensor([tok.encode("StolicΔ
Polski jest").ids])
logits, _ = model(ids) # [batch, seq, 32768]
```
## Model
| | |
|---|---|
| Parameters | 1 073 912 851 (input and output embeddings tied, counted once) |
| Architecture | decoder-only transformer, 20 layers, d_model 2048, 16 attention heads (MHA, head dim 128) |
| Blocks | pre-norm RMSNorm, QK-norm, RoPE (ΞΈ = 500 000), value residual, SwiGLU MLP (hidden 5462), no biases |
| Context | 4096 tokens |
| Tokenizer | byte-level BPE, 32 768 tokens (`tokenizer.json`, sha256 `0640d3bdβ¦`), EOS id 0 |
## Training data
Source: `SlayerLab/slayer-pl-8x3b`, revision `d50df04a6ad46876fa559a87cca5d3e2a96e7098`.
- Steps 1β1050 (from 1.00) and 1051β1801: the pack-00 stream of 1.00 (`train.bin` sha256 `760ef0ccβ¦`), each 4096-token
window at most once, the same windows as 1.00 up to its step 1050.
- Steps 1802β2860: a new stream from pack-01 (its own disjoint web slice; core, legal and English documents selected
from a hash interval disjoint from the one used for pack-00), `train.bin` sha256 `0494df58β¦`,
1 880 520 445 tokens available, of which 1 059 Γ 1 048 576 were consumed.
Mixing weights of the pack (cl100k tokens): web 0.63, core 0.19, legal 0.08, English 0.10. In this tokenizer's tokens
the training split (`train.bin`) of the pack-01 stream is web 52.16 %, core 22.14 %, legal 8.20 %, English 17.49 %
(pack-00 stream: 51.79 / 22.19 / 8.46 / 17.56).
Personal data: same rule-based masking as in 1.00 (tags `[EMAIL]`, `[TELEFON]`, `[PESEL]`, `[NIP]`, `[REGON]`,
`[DOWOD]`); masking does not guarantee removal of every personal datum.
Overlap with evaluation sets (13-gram, pack-01 stream vs. the task files): no evaluation item has 90 % or more of its
13-grams in the stream; MultiBLiMP-pl has 10 of 3 272 items with β₯ 50 % overlap, WikiText-2 has 26 of 62 documents with
any shared 13-gram (none β₯ 50 %).
## Training
| | |
|---|---|
| Hardware | 8 Γ NVIDIA RTX 5090 (32 GB), DDP |
| Batch | 256 Γ 4096 = 1 048 576 tokens per step |
| Steps | resumed at 1050, ran 1051 β 2860 (13:56 β 18:54 UTC, β 108 000 tokens/s) |
| Tokens | 2860 Γ 1 048 576 = 2 998 927 360 in total |
| Schedule | warmup 150, constant lr 6e-4 through step 2289, 1 β sqrt decay over steps 2290β2860 to lr / 10 (6.05e-5 at step 2860) |
| Optimizer | Muon (lr 0.02) for hidden weight matrices + AdamW (lr 6e-4, weight decay 0.1) for the rest |
| Final training loss | 2.5067 (step 2860); mean of the values logged at steps 2770β2860: 2.5083 (1.00, steps 1340β1430: 2.6990) |
| Resume check | training loss after the resume vs. the 1.00 run at the same steps (same batches, same lr): mean difference about 1e-4 nats (two independent computations: β0.00008 over steps 1060β1140, β0.00013 over 1060β1130), largest single-step difference 0.0007 |
| Checkpoints | every 150 steps + final; last before the decay: step 2250 |
## Limitations
- 1 073 912 851 parameters trained on 2 998 927 360 tokens (about 2.8 tokens per parameter).
- Polish-dominant data; English is a minority of the mixture.
- Base model: no instruction tuning, no safety tuning.
## License
Weights: Apache-2.0. Training data components carry their own licenses, including CC-BY-SA partitions (see the 1.00
card and the dataset card).
|