Sommerfugl-31B-v2

Sommerfugl ("butterfly") is a family of Norwegian language models by oolabs.no.

Built with Gemma. This model is a finetune of google/gemma-4-31B-it, modified by oolabs.no. Use is governed by the Gemma Terms of Use.

Why

Google's instruction tuning of Gemma 4 damages its Norwegian: on the National Library of Norway's leaderboard, gemma-4-31B-it ranks in the top 3 on eleven categories but collapses to ~rank 48 on Norwegian language knowledge and ~rank 51 on Norwegian summarization. Sommerfugl-31B-v2 repairs both while retaining the base's strengths.

What changed from v1

Sommerfugl-31B-v1 often answered simple closed-book questions ("Who wrote Et dukkehjem?") with "Det er ikke oppgitt…" ("that is not stated") instead of the answer. v2 answers them directly, and improves TruthfulQA, NCB and NorQuAD over v1.

Results

Evaluated under the National Library's published leaderboard protocol (lm-evaluation-harness + NorEval; cloze MC, chat template, best over prompt versions × {0,5}-shot, greedy decoding). Gemma column: NB's own leaderboard row. Sommerfugl and both Borealis 2 previews (26B-A4B, August 2026; 31B, September 2026) evaluated by us under the identical protocol.

task (metric) gemma-4-31B-it Sommerfugl-31B-v2 Borealis 2 26B-A4B Borealis 2 31B
Language knowledge: NoCoLA (acc) 0.828 0.866 0.834 0.873
Language knowledge: NCB (acc) 0.755 0.849 0.774 0.830
Summaries: NorSumm nob / nno (bleu) 4.08 / 3.37 6.82 / 7.02 6.62 / 5.15 7.75 / 5.93
Summarize on request (bleu) 0.98 4.54 1.75 1.78
Rewrite (bleu) 0.03 3.96 0.11 0.69
Idioms nob / nno (fscore) 0.085 / 0.141 0.441 / 0.507 0.121 / 0.160 0.079 / 0.129
Grammar correction (exact match) 0.294 0.405 0.342 0.358
Reading comp.: NorQuAD (f1) 0.445 0.881 0.799 0.841
Translation en→nb / en→nn (bleu) 59.5 / 48.5 61.3 / 49.3 59.6 / 48.4 60.6 / 49.4
Translation nb→en / nn→en (bleu) 60.4 / 60.4 62.4 / 59.5 63.0 / 61.3 63.5 / 63.1
Belebele (acc) 0.938 0.940 0.904 0.941
OpenbookQA nob / nno (acc) 0.968 / 0.944 0.960 / 0.944 0.955 / 0.911 0.968 / 0.956
CommonsenseQA nob / nno (acc) 0.860 / 0.705 0.838 / 0.747 0.808 / 0.642 0.850 / 0.737
NoReC sentiment (acc) 0.910 0.935 0.918 0.928
TruthfulQA mc nob / nno (acc) 0.850 / 0.930 0.738 / 0.789 0.811 / 0.842 0.832 / 0.912
TruthfulQA gen nob / nno (rougeL acc) 0.566 / 0.608 0.558 / 0.552 0.561 / 0.592 0.584 / 0.592
MMLU English (acc) 0.831 0.834 0.550 0.829
MMLU Norwegian (acc) 0.859 0.797¹ — —

¹ 0-shot only; the 5-shot run was not completed. Differences of 0.01 or less are treated as noise (1 point for BLEU, which runs 0–100), so every value within that margin of the row's best is bold. Paired values count separately, giving 25 tasks where all models have numbers.

Against Borealis 2 31B

Borealis 2 31B is built on the same base model as Sommerfugl (gemma-4-31B-it), so it is the closest comparison. With the 0.01 noise margin it stands at 8 wins, 9 ties, 8 losses:

  • Sommerfugl is better on 8: idioms nob and nno, rewriting, summarize-on-request, NorSumm nno, grammar correction, NorQuAD, NCB.
  • Tied on 9: NoCoLA, NorSumm nob, translation en→nb and en→nn, Belebele, OpenbookQA nob, CommonsenseQA nno, NoReC, MMLU English.
  • Borealis 2 31B is better on 8: all four TruthfulQA tasks, translation nb→en and nn→en, OpenbookQA nno, CommonsenseQA nob.

Using the harness's own 95% error margin per number instead: Sommerfugl is clearly ahead on 6, Borealis 2 31B on 1, and 18 are too close to call. Against the earlier Borealis 2 26B-A4B preview, with the 0.01 margin: 16 wins, 5 ties, 4 losses.

Known limitations (reported deliberately)

  • TruthfulQA (mc) is below the base -it (−0.11 nob / −0.14 nno): supervised finetuning erodes part of the base's truthfulness calibration. Verify facts, figures and sources in its answers before relying on them.
  • MMLU-nb is below the base -it (0.797 0-shot vs 0.859).
  • Translation into English trails Borealis 2 31B (−1.1 / −3.6 bleu), and Borealis 2 31B is higher on all four TruthfulQA tasks.
  • No knowledge of recent events: same knowledge cutoff as Gemma 4; it may describe recent events as not having happened yet.
  • Not safety-evaluated: NB's safety sets are among the tasks we could not run. Put your own filters and policies in front of it before exposing it to end users.
  • Not evaluated: NB's unpublished internal tasks (translated ARC/GSM8K/IFEval/GoldenSwag, safety sets — ~8% of their suite); exclusions applied identically to every model we compare.
  • We publish no overall/aggregate score: that number belongs to the National Library's own evaluation pipeline.

Evaluation integrity

Training data was quality-gated and decontaminated against all 19 Norwegian evaluation datasets used above (all splits), so the reported numbers are not inflated by train/test overlap.

Usage

from transformers import AutoTokenizer, AutoModelForCausalLM
tok = AutoTokenizer.from_pretrained("oolabs/sommerfugl-31b-v2")
model = AutoModelForCausalLM.from_pretrained("oolabs/sommerfugl-31b-v2", dtype="bfloat16", device_map="auto")
msgs = [{"role": "user", "content": "Skriv et kort sammendrag av teksten under."}]
inputs = tok.apply_chat_template(msgs, add_generation_prompt=True, return_dict=True, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
print(tok.decode(out[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
Downloads last month
40
Safetensors
Model size
31B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for oolabs/sommerfugl-31b-v2

Finetuned
(297)
this model
Quantizations
3 models