Forskning
Helix, del 1: vi trener en europeisk språkmodell
Vi trener vår egen språkmodell. Den er liten – 320 millioner parametere – men den leser alle de 24 offisielle språkene i Den europeiske union, og den trener på skjermkort laget for spill. Denne første delen forteller hvordan vi kom hit; den andre kommer når treningen er ferdig.

Innhold
Hvorfor et spillstudio trener en språkmodell
NETBYTE lager spill, apper og nettsteder. Språkmodeller sitter stadig oftere inne i slike produkter: som figurer som svarer, som hjelp som forstår et spørsmål, som verktøy som gjør noe. De fleste åpne modeller tenker engelsk først; estisk, irsk eller maltesisk havner i utkanten. Vi ville forstå hele kjeden selv – data, tokenizer, arkitektur, trening – og finne ut hvor pengene egentlig går.
- parametere
- 320 mill.
- offisielle EU-språk
- 24
- treningstokens
- 6,5 mrd.
- for de leide GPU-ene
- ≈ 12 $
Helix begynte som en forskningsprototype. Alt nedenfor er en beslutning som formet den, hver av dem støttet av en måling – pluss feilene som kostet oss mest tid.
Fire ideer, én overlevde
Prototypen gikk etter fire kjente svakheter ved dagens tekstgeneratorer. Den skriver i blokker på 16 tokens i stedet for ett token om gangen, den kan kjøre en felles kjerne av lag flere ganger, den forutsier en kompakt «plan» for hver blokk, og den blander billig lokal attention med lineær attention over lange avstander.
Blokkskrivingen virket med en gang: En liten testmodell skrev 64 tokens på 13 gjennomløp av nettverket, der en vanlig modell trenger ett gjennomløp per token – omtrent en femdel av arbeidet. De tre andre ideene strøk på en hardere test. Vi bygde oppgaver der svaret ligger langt utenfor det lokale vinduet, slik at modellen må se tilbake gjennom hele teksten.
Vis data
| Variant | Riktig |
|---|---|
| Bare lokalt vindu | 23,1 % |
| + lineær attention, plan og løkker | 23,1 % |
| + 2 eksakte globale hoder | 49,4 % |
| Full attention (kontroll) | 49,0 % |
| Tilfeldig (25 %) | 25,0 % |
Bare eksakt attention over hele avstanden løste dem. Lineær attention, plan og løkker ble liggende på tilfeldighetsnivå; optimalisereren hadde til og med skrudd det lineære minnet ned til en halveringstid på under ett token. To eksakte globale hoder var nok til å ta igjen full attention.
Den endelige modellen beholder derfor åtte lokale hoder med et vindu på 256 tokens i hvert lag og legger til to eksakte globale hoder i annethvert lag; lagene imellom beholder to hoder med portstyrt lineær attention. Plan og løkker er slått av. De ligger fortsatt i koden og er testet, men på ekte tekst tjente de ikke inn kostnaden.
- Lokal, vindu på 256 tokens
- Eksakt global attention
- Portstyrt lineær attention
Vis data
| Hodetype | Lag | Hoder per lag |
|---|---|---|
| Lokal, vindu på 256 tokens | 1–12 | 8 |
| Eksakt global attention | 1, 3, 5, 7, 9, 11 | 2 |
| Portstyrt lineær attention | 2, 4, 6, 8, 10, 12 | 2 |
Mål, ikke gjett
Vi testet hvert treningstriks på en modell med 94 millioner parametere og samme budsjett per kjøring: 29,5 millioner tokens, samme seed, samme datarekkefølge. To kjøringer av samme konfigurasjon skiller seg med ±0,03, så alt mindre er støy.
Vis data
| Endring | Δ tap (nats) |
|---|---|
| Muon + WSD-plan | −0,587 |
| Muon-optimaliserer | −0,347 |
| Dypere, smalere nettverk | −0,099 |
| WSD-plan | −0,080 |
| Verdiresidual | −0,007 |
| z-loss | +0,029 |
| Grouped-query attention | +0,088 |
Muon-optimalisereren var den eneste store spaken, og den lar seg kombinere med en warmup-stable-decay-plan for læringsraten. Å flytte embedding og utdatalag tilbake til AdamW, slik Muon-forfatterne anbefaler, ga ytterligere 0,12 og gjorde treningen 5 % raskere. Kombinasjoner legges ikke bare sammen: Et dypere, smalere nettverk hjalp under AdamW og skadet under Muon. Derfor fikk hver lovende kombinasjon sin egen kjøring.
24 språk, 6,5 milliarder tokens
Helix leser nettekst fra FineWeb-Edu for engelsk og fra FineWeb-2 for de øvrige 23 språkene – for de største fra dens kvalitetsfiltrerte øverste tidel. Kode, matematikk og en liten syntetisk chattestrøm fullfører blandingen. Engelsk får en tredjedel. De andre språkene vektes etter hvor mye tekst som finnes, utjevnet slik at irsk og maltesisk ikke drukner, og ingen kilde gjentas mer enn fire ganger – fram til da er gjentakelse nesten like bra som ferske data.
Vis data
| Kilde | Andel |
|---|---|
| 23 andre EU-språk | 51,6 % |
| Engelsk | 33,0 % |
| Kode og markering | 10,0 % |
| Matematikk | 3,0 % |
| Syntetisk chat og verktøy | 2,4 % |
Chattestrømmen er ekstraktiv: Svarene er kopiert fra ekte avsnitt, og verktøyresultater regnes ut i stedet for å bli funnet på. Den lærer bort format, ikke kunnskap. Tokenizeren er en BPE på bytenivå med 64 000 oppføringer; den pakker mellom 3,3 og 4 byte tekst inn i ett token for hvert språk med latinsk skrift.
Tre feil verdt å fortelle om
- Modellen som leste svaret. I én kodesti ignorerte de globale hodene den kausale masken og kunne se fremtidige tokens. Tapet falt fra 6,85 til 1,71 på 75 steg, og en kjøring på 16 timer var verdiløs. Et mistenkelig godt tap er en feilrapport; nå vokter en regresjonstest akkurat dette.
- Tegn er ikke byte. Komprimeringen ble talt i tegn i stedet for UTF-8-byte. Det fant opp en «svakhet» i kinesisk og fikk gresk og bulgarsk til å se nesten dobbelt så dårlige ut som de er.
- Dokumenter brutt ved hver tomme linje. Koderen delte dokumenter ved hver tomme linje – og tomme linjer står midt i nesten hver kildefil. Opptil 35 % av kode- og matematikkteksten gikk tapt. Vi rettet skilletegnet og bygde hele korpuset på nytt 31. oktober; det tok 2 timer og 12 minutter.
Fra skrivebordet til en leid maskin
De første 1,66 milliardene tokens kjørte på ett enkelt AMD Radeon RX 7800 XT. To ting gjorde det brukbart: et kjerneflagg for attention som er slått av som standard – uten det var attention 12 ganger tregere – og kompilering av hvert lag med torch.compile. Med en median på 11 800 tokens i sekundet ville resten ha tatt nesten fem dager til.
Så vi skrev en autopilot. Den leier GPU-er på Vast.ai, laster opp kode, korpus og sjekkpunkt, trener, henter et sjekkpunkt hjem hver tredje time og stopper før kreditten går tom. Den 2. november gikk den gjennom tre maskiner som leverandørene aldri startet, og landet så på to RTX 4070 Ti Super i Tyskland for 0,363 $ i timen. Opplastingen på 15,4 GiB tok 40 minutter.
Vis data
| Oppsett | Tokens/s |
|---|---|
| Lokalt, før optimalisering | 8 319 |
| Lokalt, kompilert | 11 830 |
| Leid, 2 GPU-er | 41 367 |
41 400 tokens i sekundet er 3,5 ganger skrivebordet. Den leide delen – 4,8 milliarder tokens på rundt 33 timer – koster omkring 12 $.
Hvor Helix står i dag
- Tilbakeholdt
- Trening
Tap (nats per token)
Leste tokens i milliarder
Vis data
| Leste tokens i milliarder | Tilbakeholdt | Trening |
|---|---|---|
| 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 |
Per 3. november 2026 har Helix lest 5,35 av sine 6,5 milliarder tokens. Siden 5,2 milliarder har den vært i nedkjølingsfasen: Læringsraten synker, og blandingen forskyves mot matematikk, kode og chat. På tilbakeholdt tekst fra alle strømmer ligger den på 3,12 nats per token.
Vis data
| Språk | Bit per byte |
|---|---|
| gresk | 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 |
| rumensk | 1,416 |
| svensk | 1,418 |
| irsk | 1,422 |
| slovensk | 1,431 |
| tsjekkisk | 1,444 |
| litauisk | 1,450 |
| latvisk | 1,451 |
| kroatisk | 1,507 |
| finsk | 1,508 |
| estisk | 1,727 |
Hva det betyr i praksis, ser man best i en uredigert prøve fra et sjekkpunkt ved omtrent 4,9 milliarder tokens. Begynnelsen er vår, resten er fra Helix:
Begynnelse: The history of the printing press begins in the fifteenth century, when Johannes Gutenberg introduced movable type to Europe. Before that, books
Modellens tekst: 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.
Grammatikk, ordvalg og emne holder; fakta gjør det ikke. Det er omtrent det man kan vente seg av 320 millioner parametere og 6,5 milliarder tokens: en flytende modell som finner på ting.
Hva som skjer videre
Fortreningen er ferdig om noen timer. Deretter følger en fase med lang kontekst med bøker fra Project Gutenberg og EU-rettstekster fra EUR-Lex, finjustering for samtale og verktøybruk og en liten utkastmodell som gjør genereringen raskere.