---
license: apache-2.0
base_model: Qwen/Qwen3.5-9B
library_name: transformers
pipeline_tag: text-generation
tags:
- openeurollm
- european-languages
- multilingual
- instruction-tuning
- sft
- qwen3.5
language:
- sv
- fi
- de
- fr
- es
- it
- pt
- nl
- pl
- da
- 'no'
- cs
- el
- hu
- ro
- bg
- hr
- sk
- sl
- et
- lv
- lt
- mt
- ga
- en
---
# Qwen3.5-9B-EU-SFT (v1)
European-language instruction-tuned variant of **Qwen3.5-9B**, fine-tuned on the OpenEuroLLM
**Dolci / EuroBlocks** multilingual instruction mix. Part of the OpenEuroLLM Task 4.6
post-training effort, trained on the **LUMI** supercomputer (AMD MI250X / ROCm).
> **What it is:** a first-pass SFT bootstrap that measurably improves European-language
> instruction following and reasoning over the base model, while preserving English ability.
> Not a final artifact — see *Limitations* and *Roadmap*.
## Results — EU evaluation holdouts
Evaluated on [`birgermoell/oellm-eu-eval-holdouts-v1`](https://huggingface.co/datasets/birgermoell/oellm-eu-eval-holdouts-v1)
(deterministic per-task scoring, dev split). **Overall accuracy 59.3% → 68.1% (+8.8).**
| Task bucket | Base Qwen3.5-9B | This model (SFT) | Δ |
|---|---:|---:|---:|
| instruction_following | 6.7 | **73.3** | **+66.6** |
| reasoning_math | 73.3 | **93.3** | **+20.0** |
| grounded_qa | 100 | 100 | — |
| civic_safety | 100 | 100 | — |
| summarization | 100 | 100 | — |
| no_answer | 100 | 93.3 | −6.7 |
| translationese_preference | 53.3 | 53.3 | — |
| locale_formatting | 0 | 0 | — |
| tool_calling | 0 | 0 | — |
*(Quick read, 10 prompts/bucket — per-bucket trends are robust; treat absolute values for the
small buckets as indicative. A fuller eval is in progress.)*
The headline: **instruction following 6.7 → 73.3** — the base model rarely produced the
required answer format in European languages; this model reliably does.
## Example generation (Swedish)
Real output from this model. **Prompt:** `Vad är meningen med livet?`
(`max_new_tokens=2048`, `temperature=0.7`). The model is a **reasoning model** — it emits an
internal chain-of-thought inside `…`, then the final answer. For a clean,
answer-only response use `enable_thinking=False` in `tokenizer.apply_chat_template(...)` or
strip the `…` block.
Reasoning trace (the model's <think> block — click to expand)
```
Here's a thinking process that leads to the suggested response:
1. Analyze the Request:
* Question: "Vad är meningen med livet?" (What is the meaning of life?)
* Language: Swedish.
* Nature of Question: Philosophical, subjective, open-ended, potentially profound.
* Goal: Provide a thoughtful, balanced answer that acknowledges the complexity without
imposing a single definitive answer.
2. Determine the Approach: avoid a single dogmatic answer; present different perspectives
(philosophical, scientific, religious, personal); encourage the user to reflect.
3. Drafting the Content (Internal Monologue): existentialism (Sartre, Camus); religion;
science (evolution, purposelessness); personal meaning (happiness, relationships).
4. Refining in Swedish, 5. Polishing/Structuring (bullet points), 6. Final review (tone,
natural Swedish, not preachy), 7-8. Final polish.
Okay, let's write the response based on this thought process.
```
**Final answer (after ``):**
> Frågan om livets mening är en av de mest grundläggande och diskuterade frågorna i
> mänskligheten. Det finns inget enkelt eller universellt svar, men här är några olika
> perspektiv som kan hjälpa dig att tänka vidare:
>
> 1. **Filosofiskt perspektiv**: Många filosofer har diskuterat livets mening under
> årtusenden. Existentialister som Jean-Paul Sartre och Albert Camus menade att människor
> måste skapa sin egen mening, eftersom det inte finns en inbyggd mening.
> 2. **Religiöst perspektiv**: I många religioner finns det en tydlig mening med livet, som
> att tjäna Gud eller att följa en specifik väg till evigheten.
> 3. **Vetenskapligt perspektiv**: Från ett vetenskapligt perspektiv kan man argumentera för
> att livet inte har någon inneboende mening, eftersom universum inte verkar ha ett
> specifikt syfte.
> 4. **Personligt perspektiv**: För många människor är livets mening att hitta tillfredsställelse
> i vardagliga saker som att älska andra, skapa konst, hjälpa andra eller uppnå personliga mål.
> 5. **Existentialistiskt perspektiv**: Enligt existentialismen är det upp till varje individ
> att skapa sin egen mening.
> 6. **Humanistiskt perspektiv**: Många anser att livets mening är att skapa en bättre värld
> för andra, genom att främja jämlikhet och rättvisa.
> 7. **Spiritualistiskt perspektiv**: Många anser att livets mening är att lära sig och växa,
> genom att utforska sin andliga sida.
>
> Det finns ingen enda rätt svar på frågan om livets mening, och det är upp till varje individ
> att hitta sin egen mening. … Det är viktigare att leva ett meningsfullt liv, snarare än att
> hitta en specifik mening med livet. Livet är ett mysterium, och det är ok att inte ha alla svar.
*Observations: fluent, idiomatic Swedish with a clear structure; the long conclusion repeats
itself a few times (an over-generation tendency that the planned preference-optimization stage
should reduce).*
## Training
| | |
|---|---|
| Base model | `Qwen/Qwen3.5-9B` (instruct, native 262K context) |
| Method | Full-parameter SFT (FSDP ZeRO-3, bf16) |
| Data | Dolci `tulu3-euroblocks-85-15`: EuroBlocks EU-multilingual instructions (85%) + Tülu-3 English replay (15%) |
| Examples | ~400k (subset of 1.08M) |
| Sequence length | 4096, packed |
| Optimizer | AdamW, LR 1e-5, cosine, warmup 0.03 |
| Hardware | 1× LUMI-G node (8× MI250X GCD), ROCm 6.4 |
| Framework | TRL `SFTTrainer` + 🤗 Transformers |
Code & full reproduction: (`docs/RUNBOOK.md`).
## Intended use
European-language assistant / instruction following across 24+ EU languages, especially
mid/low-resource languages where the base model has the most headroom. Research artifact for
the OpenEuroLLM project.
## Limitations
- **First bootstrap run** — trained on synthetic + translated instruction data; translationese
is not yet addressed (that's the next, preference-tuning, stage).
- **No tool-use or locale-formatting training** — those buckets score 0 (as does the base).
- Preference optimization (SimPO) and verifiable RL (GRPO on EU exams) are planned follow-ups.
- Inherits the base model's biases and knowledge cutoff.
## Roadmap (OpenEuroLLM T4.6)
SFT (this model) → preference optimization (SimPO, reference-free) → RLVR/GRPO on European exam
MCQs → broad eval. See the repo for the full plan and the distillation strategy.
## License
Apache 2.0 (inherits `Qwen/Qwen3.5-9B`). Training data: Dolci/EuroBlocks (see OpenEuroLLM
dataset cards for component licenses).
## Citation
```
@misc{oellm-qwen35-9b-eu-sft,
title = {Qwen3.5-9B-EU-SFT: European-language instruction tuning of Qwen3.5-9B},
author = {Moëll, Birger and OpenEuroLLM Task 4.6},
year = {2026},
url = {https://github.com/BirgerMoell/qwen35-posttrain}
}
```