+++ Treffen Sie uns auf der SCCON in Berlin, 13.–15. Oktober +++ Erleben Sie Kolibri, unser neues souveränes Modell, live im Einsatz für den öffentlichen Sektor +++ Halle 26A, Stand 126 +++

Aleph Alpha
Abstrakter Verlauf von hellem Grau zu dunklem Anthrazit, durchzogen von einem geschwungenen gelben Lichtbogen
Research

Niklas FinkenSimon Thel

Durch das Tal der Tränen: Wie LLMs auf Deutsch denken lernen

TL;DR


Warum die Sprache des Reasonings zählt

Die deutsche Lücke

Reasoning Cold-Start

Keine Daten in Sicht

Ein Rezept, drei Domänen

The seed is a topic and a task type. The teacher writes the prompt from them. There is no reference answer for chat, so the checks are language checks only. The stages and their order are the pipeline’s; the German text under them is an illustrative example. Coral text was prefilled by us.

follow-up × n
data
Curiosity seed
subject × question kind
LLM
User simulator
writes the German user turns
LLM
Solver
German reasoning, prefilled opener
LLM
Language healer
quotes slips, applies fixes
code
Language gate
clean German, lengths, no <think> leak
data
General sample
German, multi-turn, healed
Curiosity seed
Bereich (subject)
Sauerteig
Fragetyp (kind)
Entscheidung

Seed-Prompts

Reasoning-Prefill-Distillation

Prompt
Ein Bäcker verkauft drei Dutzend Brötchen zu je 0,45 €. Was ist sein Einkommen?

The source explains that Brötchen are bread rolls; after translation that becomes the tautology “Brötchen sind Brötchen”, which adds no information.

English source trace
Hmm, the problem is in German. "Ein Bäcker verkauft drei Dutzend Brötchen" – a baker sells three dozen rolls. "Dutzend" is dozen, so 3 × 12 = 36. "Brötchen" are bread rolls, doesn't matter for the math. "zu je 0,45 €" – note the comma is the decimal separator in German, so 0,45 € is 0.45 euros, not 45. So 36 × 0.45 = 16.2. Let me compute: 36 × 0.45 = 16.2. The answer should be in German: "Sein Einkommen beträgt 16,20 €."
Machine-translated trace
Hmm, die Aufgabe ist auf Deutsch. "Ein Bäcker verkauft drei Dutzend Brötchen" – ein Bäcker verkauft drei Dutzend Brötchen. "Dutzend" ist Dutzend, also 3 × 12 = 36. "Brötchen" sind Brötchen, spielt für die Mathematik keine Rolle. "zu je 0,45 €" – beachte, dass das Komma im Deutschen das Dezimaltrennzeichen ist, also ist 0,45 € 0.45 Euro, nicht 45. Also 36 × 0.45 = 16.2. Lass mich rechnen: 36 × 0.45 = 16.2. Die Antwort sollte auf Deutsch sein: "Sein Einkommen beträgt 16,20 €."

The system prompt asks the model to reason in German. The model opens the think block itself. 67% of traces stayed German. Measured with a German-versus-English stop-word check over 8,721 stored traces. A failing trace counts as switching partway if its first 600 characters pass. The exchange below is illustrative. It shows the three observed outcomes: fully German, switching partway, English from the start. Coral text is ours. Dark text is the model’s. Grey text is English.

measured over 8,721 solves67% German
German67%switches partway22%ignores11%
Systemsent by us
Du bist ein sorgfältiger Mathematiker. Denke ausschließlich auf Deutsch nach und antworte auf Deutsch. Gib die endgültige Antwort als \boxed{...} an.
Usersent by us
Wie viele positive ganze Zahlen n ≤ 1000 gibt es, für die n² + 1 durch 5 teilbar ist?
Reasoningby the modelthe think block, hidden from the user
<think>Wir müssen die Anzahl der n ≤ 1000 bestimmen, für die 5 ein Teiler von n² + 1 ist, also n² ≡ 4 (mod 5). Die Quadratreste modulo 5 sind 0, 1 und 4; n² ≡ 4 gilt genau für n ≡ 2 oder n ≡ 3 (mod 5). Von 1 bis 1000 gibt es 200 volle Fünferblöcke mit je zwei Treffern, also 400 Zahlen. Probe: n = 2 liefert 5, n = 3 liefert 10, beide durch 5 teilbar.</think>
Answerby the modelwhat the user sees
Die Bedingung 5 | n² + 1 ist gleichbedeutend mit n² ≡ 4 (mod 5), was genau für n ≡ 2 oder n ≡ 3 (mod 5) gilt. Unter den Zahlen 1 bis 1000 liegen 200 vollständige Restklassenblöcke, jeder mit zwei passenden Zahlen. Es gibt also \boxed{400} solche Zahlen.

Antworten, Prüfung und Rückfragen

Tool Calling

Daten zählen

Conversations produced per domain, about 796,000 in total. The table gives each domain’s share of the pool. Hover a domain to split its wedge into conversations with and without a German reasoning trace. Overall, 83% carry one.

43%21%20%11%
DomainConversationsShare
General344,07143%
Tool calling (Wikipedia)167,05521%
Tool calling (translated)159,11520%
Math87,37311%
Science27,2233.4%
Code10,8941.4%
Total795,731100%

Wie viel Deutsch ist genug?

Versuchsaufbau

The thirteen mixes. Each cell shows how often a German group was sampled, relative to its natural share. English data comes from the same distribution in every run. It shrinks as German grows. The last column is the German share of all training samples.

×0not in the mix×1in proportion to its size×4four times that×16sixteen times that
German data ×German share
sweeprungeneralmathtoolscodescienceof all samples
baselinede-0×0×0×0×0×00.0%
aggregatede-1×1×1×1×1×12.2%
de-4×4×4×4×4×48.2%
de-16×16×16×16×16×1626.5%
generalgeneral-0×0×1×1×1×11.3%
general-4×4×1×1×1×15.0%
general-16×16×1×1×1×114.7%
mathmath-0×1×0×1×1×11.8%
math-4×1×4×1×1×13.4%
math-16×1×16×1×1×17.9%
toolstools-0×1×1×0×1×11.6%
tools-4×1×1×4×1×14.0%
tools-16×1×1×16×1×110.6%

Umweg über Englisch

One row per SFT mix, grouped by sweep. Each column is shaded from worst (red) to best (turquoise); a solid frame marks the best run per column. The pooled column is the mean of all seven benchmarks.

Hover or focus a benchmark name to see what it measures.

EnglishGermanPooled
sweeprun
baselinede-064.0%82.4%66.7%70.2%70.0%36.5%32.5%60.3%
aggregatede-171.3%83.0%69.2%57.1%62.4%23.5%35.5%57.4%
de-478.1%82.4%69.7%59.0%66.1%16.4%35.0%58.1%
de-1676.0%79.8%66.0%65.8%68.1%23.1%41.5%60.1%
generalgeneral-075.6%80.4%67.3%57.3%66.8%24.2%40.5%58.9%
general-482.1%82.9%67.6%52.1%67.2%17.0%35.5%57.8%
general-1683.8%81.6%71.9%57.9%68.5%25.7%34.0%60.5%
mathmath-082.3%81.8%68.3%48.3%62.7%24.7%36.0%57.7%
math-469.0%84.2%69.6%61.3%64.6%22.9%32.5%57.7%
math-1682.1%80.8%65.3%67.3%64.1%23.0%34.0%59.5%
toolstools-067.9%81.5%61.6%57.9%65.8%27.5%29.5%56.0%
tools-478.3%82.7%71.3%53.5%59.6%18.8%42.5%58.1%
tools-1681.9%81.5%74.5%53.5%58.8%28.3%34.5%59.0%

Sprachkonsistenz der Antwort

Scores on the German benchmarks along the aggregate sweep. The black line counts every correct answer. The turquoise line counts only correct answers written in German. The shaded gap is correct answers given in English or in mixed language.

scoreGerman answers onlycorrect, but not in German
0%50%100%AIME 2026 · German×0×1×4×1642.370.257.159.065.8
0%50%100%IFEval · German×0×1×4×1658.470.052.162.457.766.156.568.1
0%50%100%MuSiQue · German×0×1×4×1630.036.523.516.423.1
0%50%100%Kulturbank×0×1×4×1632.535.535.041.5

Das Tal

How each benchmark’s rollouts ended, per run. Answered after German or English reasoning, killed as a loop, or no answer. English on top, German below. The line is the score. The rows underneath show the German share of training samples. One row for the swept group, one for the other German groups.

sweep
reasoning in Germanreasoning in Englishrepetition loopno answerscore
0%50%100%AIME 2026 · English64.082.371.369.082.1
0%50%100%AIME 2026 · German70.248.357.161.367.3
no Germande-0×0math-0×1de-1×4math-4×16math-16
German share of training samples
math0.0%0.0%0.4%1.6%6.2%
other German0.0%1.8%1.8%1.8%1.7%

expected signalGerman math is the group we’d expect to move German AIME 2026.

Once we are in the valley, does more German data help climb out? The no-German baseline is left out; only the twelve runs with German data count. Pick a German group. Each cell is the Spearman rank correlation between that group’s share of training samples and one outcome: the score, the share of rollouts without an answer, or the share killed as loops. Ranks rather than a straight-line fit, because the doses are spaced ×1, ×4, ×16.

share of
German share→ scoreGerman share→ no answerGerman share→ loops
GermanAIME 2026+0.34−0.20−0.44
IFEval+0.27+0.13+0.09
MuSiQue−0.13−0.29n/a
Kulturbank−0.01+0.17+0.17
EnglishAIME 2026+0.45−0.73+0.02
IFEval−0.22+0.20−0.12
MuSiQue+0.38−0.13n/a

Bold: |ρ| ≥ 0.59, significant at the 5% level for twelve runs. n/a: no variation. The MuSiQue harness never flags loops.

Fazit

Danksagungen