Icelandic ModernBERT warm-start study: ws-S-m-s0, 80 tokens/parameter
Paper: Beyond IceBERT: Open-Data ModernBERT Encoders for Icelandic from 12M to 1B Parameters (arXiv:2610.36230). If you use this model, please cite the paper. The BibTeX entry is at the end of this card.
Question this run answers. Does a warm start still pay off for an Icelandic encoder, from which source model, and how many Icelandic tokens does it save? IceBERT (Snæbjarnarson et al., LREC 2022) found that continuing a multilingual model "can lead to state-of-the-art results for some downstream tasks". Our size ladder uses the Ettin shapes, so every size has an English Ettin encoder of identical shape (and base has mmBERT-base), and a warm start changes only the starting weights: architecture, data, tokenizer, schedule and evaluation stay those of the scratch models. Every arm is trained at 10, 20, 40 and 80 Icelandic tokens per parameter.
This model is the scratch arm: random initialisation, the scratch ladder's recipe unchanged, size m, pretraining seed 0, at 80 tokens per parameter. This is the curve's main run to 80 tokens per parameter. It kept its state at the start of each shorter budget's decay phase, and the branches b10, b20 and b40 of this repo continue from those states.
Release. Released under the MIT licence with the paper; the training corpus is not released, because not every source states a licence that permits redistribution. In the paper this arm is called Scratch (the repo names keep the code names S, E, Erand, Mswap and Mkeep). Parts of the training data require attribution (CC BY 4.0: IGC; CC BY-SA: Wikipedia, Wikisource) or come from web crawls with mixed rights (IC3-v2 states no licence). MIM-GOLD and MIM-GOLD-NER, used only for evaluation, are licensed for research use, so no model fine-tuned on them is released.
Model
| Architecture | ModernBERT: pre-norm, GeGLU, no biases, RoPE (theta 160k global, 10k local), global attention every third layer and a 128-token window in the others |
| Shape | 19 layers, hidden 512, GeGLU inner 768, 8 heads |
| Parameters | 59.4M = 16.8M embedding + 42.7M non-embedding |
| Tokenizer | Icelandic byte-level BPE, 32,768 tokens (the scratch ladder's tokenizer) |
| Loads with | transformers AutoModelForMaskedLM (model_type modernbert); logits match our trainer exactly (export_check.json) |
Fill-mask. Write the mask token right after the previous word, with no space: Reykjavík er höfuðborg[MASK]. The tokenizer keeps each word's leading space inside the word's token, so a space typed before the mask becomes a token of its own. In training such a lone space comes mostly before a number, because digits are split off, so with the space the model predicts digits.
Training
| Tokens seen | 4.75B tokens = the text of 80 tokens per parameter of the scratch ladder at this size |
| Steps | 9,068 at 524,288 tokens per step |
| Objective | MLM, 30% masking, 15% in the decay phase |
| Optimiser | AdamW (0.9, 0.98), eps 1e-6, weight decay 0.0003, clip 1.0, bf16 autocast |
| Schedule | warmup-stable-decay: 143M warmup tokens, peak LR 0.0015 (the scratch LR; a pilot at xs found lower rates worse for warm starts), 1-sqrt decay over the last 15%, last 10% at 8,192 tokens |
| Data | the scratch ladder's corpus: 9.02B unique tokens from nine open sources (IGC-2024 open part, Icelandic Wikipedia, Dynaword non-IGC subsets, MaCoCu, FineWeb-2, FinePDFs, HPLT 3.0, MADLAD-400, IC3-v2), deduplicated, filtered and decontaminated against the evaluation sets |
| Hardware | MareNostrum 5 (4x H100 64 GB per node), DDP, FlexAttention with document masks |
Results
Held-out MLM loss (15% masking) per source at the end of training: {"dynaword": 0.832, "finepdfs": 1.752, "fineweb2": 1.626, "hplt3": 1.674, "ic3v2": 1.233, "igc": 1.203, "macocu": 1.538, "madlad": 1.379, "wiki": 1.03}.
Downstream point of this arm, size and budget (x100). Each point pools the arm's pretraining seeds at this size (so it is not this checkpoint alone at xs, s and m) and 3-5 fine-tuning seeds at the learning rate the 80-point model chose on dev. 95% CIs are a hierarchical bootstrap over pretraining seeds, fine-tuning seeds and test items; differences are paired over the same item draws. "Scratch at 160" is the ladder's model trained on twice the 80-point tokens (it also saw CulturaX's unique remainder, +3.7%).
| task | score [95% CI] | pretraining seeds pooled | fine-tuning runs | minus scratch, same budget | minus scratch at 160 |
|---|---|---|---|---|---|
| QA: NQiI + RUQuAD-1, token F1 | 52.3 [50.7, 54.0] | 2 | 10 | ||
| NER: MIM-GOLD-NER (IceBERT split), entity micro F1 | 92.2 [91.5, 93.0] | 2 | 10 | ||
| ScaLA-style acceptability from the Icelandic UD treebanks, MCC | 62.9 [58.5, 67.4] | 2 | 10 | ||
| IceEC sentence-level error detection, MCC | 44.5 [42.3, 46.8] | 2 | 10 | ||
| UD UPOS accuracy | 95.0 [94.7, 95.4] | 2 | 10 |
Caveats
- Two pretraining seeds per arm at xs, s and m (one for the Ettin-body arm); the pooled CIs include pretraining-seed noise.
- Branches reuse the fine-tuning learning rate chosen for the 80-point model of the same arm and size.
- The scratch arm reproduces the original ladder (base: 1.144 against 1.141 validation loss).
- Fine-tuning used bf16 autocast; parsers fall back to fp32 on non-finite losses.
Full numbers: the paper, arXiv:2610.36230.
Citation
@misc{einarsson2026icebertopendatamodernbertencoders,
title = {Beyond {IceBERT}: Open-Data {ModernBERT} Encoders for {Icelandic} from {12M} to {1B} Parameters},
author = {Hafsteinn Einarsson},
year = {2026},
eprint = {2610.36230},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
url = {https://arxiv.org/abs/2610.36230}
}