Icelandic ModernBERT warm-start study: ws-Mkeep-base-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 mmBERT-base continued as is, with its own Gemma 2 tokenizer (256k), as IceBERT continued XLM-R; it is matched to the other arms in text, not tokens (the Gemma tokenizer needs 1.60x the tokens for our corpus), size base, 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 mmBERT-keep (the repo names keep
the code names S, E, Erand, Mswap and Mkeep). The starting weights come from jhu-clsp/mmBERT-base (MIT licence). 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 on global and local layers, the source models' setting), global attention every third layer and a 128-token window in the others |
| Shape | 22 layers, hidden 768, GeGLU inner 1152, 12 heads |
| Parameters | 307.8M = 196.6M embedding + 111.2M non-embedding |
| Tokenizer | Gemma 2 SentencePiece, 256,000 tokens (mmBERT's own) |
| Loads with | transformers AutoModelForMaskedLM (model_type modernbert); logits match our trainer exactly (export_check.json) |
Training
| Tokens seen | 17.46B Gemma tokens = the text of 80 tokens per parameter of the scratch ladder at this size |
| Steps | 16,655 at 1,048,576 tokens per step |
| Objective | MLM, 30% masking, 15% in the decay phase |
| Optimiser | AdamW (0.9, 0.98), eps 1e-6, weight decay 1e-05, clip 1.0, bf16 autocast |
| Schedule | warmup-stable-decay: 524M warmup tokens, peak LR 0.0008 (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 (per Gemma token, not comparable with the 32k-vocabulary arms): {"dynaword": 0.135, "finepdfs": 0.561, "fineweb2": 0.357, "hplt3": 0.388, "ic3v2": 0.32, "igc": 0.173, "macocu": 0.315, "madlad": 0.37, "wiki": 0.266}.
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.1 [50.5, 53.7] | 1 | 5 | -2.3 [-3.4, -1.2] | -2.5 [-3.8, -1.2] |
| NER: MIM-GOLD-NER (IceBERT split), entity micro F1 | 94.4 [93.7, 95.0] | 1 | 5 | +1.1 [+0.6, +1.6] | +0.8 [+0.3, +1.3] |
| ScaLA-style acceptability from the Icelandic UD treebanks, MCC | 70.1 [65.4, 74.5] | 1 | 5 | +2.5 [-1.5, +6.4] | +0.1 [-4.1, +4.3] |
| IceEC sentence-level error detection, MCC | 49.6 [47.5, 51.7] | 1 | 5 | +2.3 [+0.3, +4.1] | +1.4 [-0.7, +3.6] |
| UD UPOS accuracy | 95.4 [95.1, 95.8] | 1 | 5 | +0.2 [-0.0, +0.4] | +0.1 [-0.1, +0.3] |
IceBERT's benchmarks and the added tasks (v2 protocol: learning-rate grids extended until the choice is interior; five fine-tuning seeds; PoS over the ten MIM-GOLD folds):
| task (metric) | score [95% CI] | IceBERT | minus IceBERT [95% CI] |
|---|---|---|---|
| const (f1) | 90.5 [89.8, 91.2] | 90.5 | -0.0 [-0.5, +0.4] |
| dep_icepahc (las) | 86.6 [86.3, 86.9] | 87.2 | -0.6 [-0.7, -0.4] |
| dep_icepahc_clean (las) | 86.0 [85.6, 86.5] | 86.6 | -0.6 [-0.8, -0.3] |
| dep_modern (las) | 78.6 [77.7, 79.5] | 79.2 | -0.6 [-1.1, +0.0] |
| gedcat (f1) | 35.1 [33.0, 37.3] | 34.2 | +0.9 [-0.5, +2.2] |
| gedcat_macro (macro_f1) | 36.2 [33.3, 39.7] | 32.9 | +3.3 [+0.6, +6.5] |
| gedtok (f1) | 41.1 [39.3, 43.0] | 39.1 | +2.1 [+0.8, +3.5] |
| gedtok_macro (macro_f1) | 69.5 [68.5, 70.4] | 68.5 | +1.0 [+0.4, +1.7] |
| iceec (mcc) | 49.6 [47.4, 52.0] | 47.1 | +2.5 [+0.5, +4.3] |
| iwg (acc) | 50.1 [47.7, 52.7] | 53.8 | -3.7 [-7.3, -0.5] |
| ner (f1) | 94.4 [93.7, 95.1] | 94.1 | +0.2 [-0.2, +0.7] |
| pos (acc) | 95.4 [95.1, 95.8] | 95.4 | +0.0 [-0.2, +0.3] |
| posmim (acc) | 97.8 [97.5, 98.1] | 97.8 | +0.1 [-0.0, +0.1] |
| qa (f1) | 52.1 [50.6, 53.5] | 56.9 | -4.8 [-6.0, -3.7] |
| scala (mcc) | 70.1 [65.6, 74.5] | 73.6 | -3.5 [-7.6, +0.7] |
Caveats
- One pretraining seed at base, large and xl (1B); the CIs cover fine-tuning and test-item noise only.
- 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}
}