Forskning
Helix, del 1: vi træner en europæisk sprogmodel
Vi træner vores egen sprogmodel. Den er lille – 320 millioner parametre – men den læser alle 24 officielle sprog i Den Europæiske Union, og den træner på grafikkort bygget til spil. Første del fortæller, hvordan vi kom hertil; anden del følger, når træningen er færdig.

Indhold
Hvorfor et spilstudie træner en sprogmodel
NETBYTE laver spil, apps og websites. Sprogmodeller sidder oftere og oftere inde i den slags produkter: som figurer, der svarer igen, som hjælp, der forstår et spørgsmål, som værktøjer, der gør noget. De fleste åbne modeller tænker engelsk først; estisk, irsk eller maltesisk kommer i periferien. Vi ville forstå hele kæden selv – data, tokenizer, arkitektur, træning – og finde ud af, hvor pengene egentlig går hen.
- parametre
- 320 mio.
- officielle EU-sprog
- 24
- træningstokens
- 6,5 mia.
- for de lejede GPU’er
- ≈ 12 $
Helix begyndte som en forskningsprototype. Alt herunder er en beslutning, der formede den, hver især bakket op af en måling – plus de fejl, der kostede os mest tid.
Fire idéer, én overlevede
Prototypen gik efter fire kendte svagheder ved nutidens tekstgeneratorer. Den skriver i blokke på 16 tokens i stedet for ét token ad gangen, den kan køre en fælles kerne af lag flere gange, den forudsiger en kompakt „plan“ for hver blok, og den blander billig lokal attention med lineær attention over lange afstande.
Blokskrivningen virkede med det samme: En lille testmodel skrev 64 tokens på 13 gennemløb af netværket, hvor en almindelig model skal bruge ét gennemløb pr. token – omkring en femtedel af arbejdet. De tre andre idéer faldt på en hårdere test. Vi byggede opgaver, hvor svaret ligger langt uden for det lokale vindue, så modellen må se tilbage gennem hele teksten.
Vis data
| Variant | Korrekt |
|---|---|
| Kun lokalt vindue | 23,1 % |
| + lineær attention, plan og løkker | 23,1 % |
| + 2 præcise globale hoveder | 49,4 % |
| Fuld attention (kontrol) | 49,0 % |
| Tilfældighed (25 %) | 25,0 % |
Kun præcis attention over hele afstanden løste dem. Lineær attention, plan og løkker blev på tilfældighedsniveau; optimeringsalgoritmen havde endda skruet den lineære hukommelse ned til en halveringstid på under ét token. To præcise globale hoveder var nok til at matche fuld attention.
Den endelige model beholder derfor otte lokale hoveder med et vindue på 256 tokens i hvert lag og tilføjer to præcise globale hoveder i hvert andet lag; lagene imellem beholder to hoveder med gated lineær attention. Plan og løkker er slået fra. De ligger stadig i koden og er testet, men på rigtig tekst tjente de ikke deres pris hjem.
- Lokal, vindue på 256 tokens
- Præcis global attention
- Gated lineær attention
Vis data
| Hovedtype | Lag | Hoveder pr. lag |
|---|---|---|
| Lokal, vindue på 256 tokens | 1–12 | 8 |
| Præcis global attention | 1, 3, 5, 7, 9, 11 | 2 |
| Gated lineær attention | 2, 4, 6, 8, 10, 12 | 2 |
Mål, gæt ikke
Vi testede hvert træningstrick på en model med 94 millioner parametre og samme budget pr. kørsel: 29,5 millioner tokens, samme seed, samme datarækkefølge. To kørsler af samme konfiguration afviger med ±0,03, så alt mindre er støj.
Vis data
| Ændring | Δ tab (nats) |
|---|---|
| Muon + WSD-plan | -0,587 |
| Muon-optimering | -0,347 |
| Dybere, smallere netværk | -0,099 |
| WSD-plan | -0,080 |
| Value-residual | -0,007 |
| z-loss | +0,029 |
| Grouped-query attention | +0,088 |
Muon-optimeringen var den eneste store løftestang, og den kan kombineres med en warmup-stable-decay-plan for læringsraten. At flytte embedding og outputlag tilbage til AdamW, som Muon-forfatterne anbefaler, gav yderligere 0,12 og gjorde træningen 5 % hurtigere. Kombinationer lægger sig ikke bare sammen: Et dybere, smallere netværk hjalp under AdamW og skadede under Muon. Derfor fik hver lovende kombination sin egen kørsel.
24 sprog, 6,5 milliarder tokens
Helix læser webtekst fra FineWeb-Edu til engelsk og fra FineWeb-2 til de øvrige 23 sprog – for de største fra dens kvalitetsfiltrerede øverste tiendedel. Kode, matematik og en lille syntetisk chatstrøm fuldender blandingen. Engelsk får en tredjedel. De andre sprog vægtes efter, hvor meget tekst der findes, udglattet så irsk og maltesisk ikke drukner, og ingen kilde gentages mere end fire gange – indtil da er gentagelse næsten lige så godt som friske data.
Vis data
| Kilde | Andel |
|---|---|
| 23 andre EU-sprog | 51,6 % |
| Engelsk | 33,0 % |
| Kode og opmærkning | 10,0 % |
| Matematik | 3,0 % |
| Syntetisk chat og værktøjer | 2,4 % |
Chatstrømmen er ekstraktiv: Svarene er kopieret fra rigtige afsnit, og værktøjsresultater beregnes i stedet for at blive opfundet. Den lærer format, ikke viden. Tokenizeren er en byte-level BPE med 64.000 poster; den pakker mellem 3,3 og 4 bytes tekst i ét token for hvert sprog med latinsk skrift.
Tre fejl, der er værd at fortælle om
- Modellen, der læste svaret. I én kodesti ignorerede de globale hoveder den kausale maske og kunne se fremtidige tokens. Tabet faldt fra 6,85 til 1,71 på 75 skridt, og en kørsel på 16 timer var værdiløs. Et mistænkeligt godt tab er en fejlrapport; nu vogter en regressionstest præcis det.
- Tegn er ikke bytes. Komprimeringen blev talt i tegn i stedet for UTF-8-bytes. Det opfandt en „svaghed“ i kinesisk og fik græsk og bulgarsk til at se næsten dobbelt så dårlige ud, som de er.
- Dokumenter brudt ved hver tom linje. Encoderen delte dokumenter ved hver tom linje – og tomme linjer står midt i næsten enhver kildefil. Op til 35 % af kode- og matematikteksten gik tabt. Vi rettede separatoren og byggede hele korpusset om den 31. oktober; det tog 2 timer og 12 minutter.
Fra skrivebordet til en lejet maskine
De første 1,66 milliarder tokens kørte på et enkelt AMD Radeon RX 7800 XT. To ting gjorde det brugbart: et kernel-flag til attention, der som standard er slået fra – uden det var attention 12 gange langsommere – og kompilering af hvert lag med torch.compile. Med en median på 11.800 tokens i sekundet ville resten have taget næsten fem dage mere.
Så vi skrev en autopilot. Den lejer GPU’er på Vast.ai, uploader kode, korpus og checkpoint, træner, henter et checkpoint hjem hver tredje time og stopper, før kreditten slipper op. Den 2. november gik den igennem tre maskiner, som udbyderne aldrig fik startet, og landede så på to RTX 4070 Ti Super i Tyskland for 0,363 $ i timen. Uploaden på 15,4 GiB tog 40 minutter.
Vis data
| Opsætning | Tokens/s |
|---|---|
| Lokalt, før optimering | 8.319 |
| Lokalt, kompileret | 11.830 |
| Lejet, 2 GPU’er | 41.367 |
41.400 tokens i sekundet er 3,5 gange skrivebordet. Den lejede del – 4,8 milliarder tokens på cirka 33 timer – koster omkring 12 $.
Hvor Helix står i dag
- Tilbageholdt
- Træning
Tab (nats pr. token)
Læste tokens i milliarder
Vis data
| Læste tokens i milliarder | Tilbageholdt | Træning |
|---|---|---|
| 0,06 | 4,571 | 4,261 |
| 0,55 | 3,776 | 3,574 |
| 1,04 | 3,694 | 3,469 |
| 1,54 | 3,596 | 3,421 |
| 2,03 | 3,426 | 3,238 |
| 2,52 | 3,329 | 3,143 |
| 3,01 | 3,291 | 3,113 |
| 3,50 | 3,263 | 3,076 |
| 3,99 | 3,225 | 3,079 |
| 4,49 | 3,244 | 3,076 |
| 4,98 | 3,218 | 3,036 |
| 5,35 | 3,123 | 2,884 |
Pr. 3. november 2026 har Helix læst 5,35 af sine 6,5 milliarder tokens. Siden 5,2 milliarder har den været i nedkølingsfasen: Læringsraten falder, og blandingen skifter mod matematik, kode og chat. På tilbageholdt tekst fra alle strømme ligger den på 3,12 nats pr. token.
Vis data
| Sprog | Bits pr. byte |
|---|---|
| græsk | 0,721 |
| bulgarsk | 0,844 |
| fransk | 1,065 |
| engelsk | 1,086 |
| spansk | 1,135 |
| portugisisk | 1,219 |
| tysk | 1,257 |
| nederlandsk | 1,268 |
| italiensk | 1,277 |
| polsk | 1,355 |
| dansk | 1,364 |
| ungarsk | 1,407 |
| slovakisk | 1,412 |
| maltesisk | 1,415 |
| rumænsk | 1,416 |
| svensk | 1,418 |
| irsk | 1,422 |
| slovensk | 1,431 |
| tjekkisk | 1,444 |
| litauisk | 1,450 |
| lettisk | 1,451 |
| kroatisk | 1,507 |
| finsk | 1,508 |
| estisk | 1,727 |
Hvad det betyder i praksis, ses bedst i en uredigeret prøve fra et checkpoint ved cirka 4,9 milliarder tokens. Begyndelsen er vores, resten er Helix’:
Begyndelse: The history of the printing press begins in the fifteenth century, when Johannes Gutenberg introduced movable type to Europe. Before that, books
Modellens output: for printing were usually in the form of texts, usually in the format of illustrations. In its introduction to the printing press, Gutenberg uses one line-of-action model to illustrate a series of printed pieces of a book.
Grammatik, ordvalg og emne holder; fakta gør ikke. Det er cirka, hvad man kan forvente af 320 millioner parametre og 6,5 milliarder tokens: en flydende model, der finder på.
Hvad der kommer nu
Fortræningen slutter om få timer. Derefter følger en fase med lang kontekst med bøger fra Project Gutenberg og EU-retstekster fra EUR-Lex, finjustering til samtale og brug af værktøjer og en lille kladdemodel, der gør genereringen hurtigere.