Forskning
Helix, del 1: vi tränar en europeisk språkmodell
Vi tränar en egen språkmodell. Den är liten – 320 miljoner parametrar – men den läser alla 24 officiella språk i Europeiska unionen, och den tränar på grafikkort byggda för spel. Den här första delen berättar hur vi kom hit; den andra kommer när träningen är klar.

Innehåll
Varför en spelstudio tränar en språkmodell
NETBYTE gör spel, appar och webbplatser. Språkmodeller finns allt oftare inuti sådana produkter: som figurer som svarar, som hjälp som förstår en fråga, som verktyg som gör något. De flesta öppna modeller tänker på engelska först; estniska, iriska eller maltesiska hamnar i marginalen. Vi ville förstå hela kedjan själva – data, tokenizer, arkitektur, träning – och ta reda på vart pengarna faktiskt tar vägen.
- parametrar
- 320 milj.
- officiella EU-språk
- 24
- träningstokens
- 6,5 mdr
- för de hyrda GPU:erna
- ≈ 12 $
Helix började som en forskningsprototyp. Allt nedan är ett beslut som formade den, vart och ett underbyggt av en mätning – och de misstag som kostade oss mest tid.
Fyra idéer, en överlevde
Prototypen gav sig på fyra kända svagheter hos dagens textgeneratorer. Den skriver i block om 16 tokens i stället för en token i taget, den kan köra en delad kärna av lager flera gånger, den förutsäger en kompakt ”plan” för varje block, och den blandar billig lokal attention med linjär attention för långa avstånd.
Blockskrivandet fungerade direkt: en liten testmodell skrev 64 tokens på 13 genomlöpningar av nätet, där en vanlig modell behöver en genomlöpning per token – ungefär en femtedel av arbetet. De tre andra idéerna föll på ett hårdare test. Vi byggde uppgifter där svaret ligger långt utanför det lokala fönstret, så att modellen måste blicka tillbaka genom hela texten.
Visa data
| Variant | Rätt |
|---|---|
| Bara lokalt fönster | 23,1 % |
| + linjär attention, plan och loopar | 23,1 % |
| + 2 exakta globala huvuden | 49,4 % |
| Full attention (kontroll) | 49,0 % |
| Slump (25 %) | 25,0 % |
Bara exakt attention över hela avståndet löste dem. Linjär attention, plan och loopar stannade på slumpnivå; optimeraren hade till och med vridit ner det linjära minnet till en halveringstid på mindre än en token. Två exakta globala huvuden räckte för att komma ikapp full attention.
Den slutliga modellen behåller därför åtta lokala huvuden med ett fönster på 256 tokens i varje lager och lägger till två exakta globala huvuden i vartannat lager; lagren däremellan behåller två huvuden med grindad linjär attention. Plan och loopar är avstängda. De finns kvar i koden och är testade, men på riktig text tjänade de inte in sin kostnad.
- Lokal, fönster på 256 tokens
- Exakt global attention
- Grindad linjär attention
Visa data
| Huvudtyp | Lager | Huvuden per lager |
|---|---|---|
| Lokal, fönster på 256 tokens | 1–12 | 8 |
| Exakt global attention | 1, 3, 5, 7, 9, 11 | 2 |
| Grindad linjär attention | 2, 4, 6, 8, 10, 12 | 2 |
Mät, gissa inte
Vi testade varje träningsknep på en modell med 94 miljoner parametrar och samma budget per körning: 29,5 miljoner tokens, samma seed, samma dataordning. Två körningar av samma konfiguration skiljer sig med ±0,03, så allt mindre är brus.
Visa data
| Ändring | Δ förlust (nats) |
|---|---|
| Muon + WSD-schema | −0,587 |
| Muon-optimerare | −0,347 |
| Djupare, smalare nät | −0,099 |
| WSD-schema | −0,080 |
| Värderesidual | −0,007 |
| z-loss | +0,029 |
| Grouped-query attention | +0,088 |
Muon-optimeraren var den enda stora hävstången, och den går att kombinera med ett warmup-stable-decay-schema för inlärningstakten. Att flytta tillbaka embedding och utdatalager till AdamW, som Muon-författarna rekommenderar, gav ytterligare 0,12 och gjorde träningen 5 % snabbare. Kombinationer adderas inte bara: ett djupare, smalare nät hjälpte under AdamW och skadade under Muon. Därför fick varje lovande kombination en egen körning.
24 språk, 6,5 miljarder tokens
Helix läser webbtext från FineWeb-Edu för engelska och från FineWeb-2 för de övriga 23 språken – för de större från dess kvalitetsfiltrerade översta tiondel. Kod, matematik och en liten syntetisk chattström fullbordar blandningen. Engelska får en tredjedel. De andra språken viktas efter hur mycket text som finns, utjämnat så att iriska och maltesiska inte dränks, och ingen källa upprepas mer än fyra gånger – fram till dess är upprepning nästan lika bra som färska data.
Visa data
| Källa | Andel |
|---|---|
| 23 andra EU-språk | 51,6 % |
| Engelska | 33,0 % |
| Kod och märkspråk | 10,0 % |
| Matematik | 3,0 % |
| Syntetisk chatt och verktyg | 2,4 % |
Chattströmmen är extraktiv: svaren kopieras från riktiga stycken och verktygsresultat räknas ut i stället för att hittas på. Den lär ut format, inte kunskap. Tokenizern är en BPE på bytenivå med 64 000 poster; den packar mellan 3,3 och 4 byte text i en token för varje språk med latinsk skrift.
Tre buggar värda att berätta om
- Modellen som läste svaret. I en kodväg ignorerade de globala huvudena den kausala masken och kunde se framtida tokens. Förlusten föll från 6,85 till 1,71 på 75 steg, och en körning på 16 timmar var värdelös. En misstänkt bra förlust är en buggrapport; nu vaktar ett regressionstest exakt det fallet.
- Tecken är inte byte. Komprimeringen räknades i tecken i stället för UTF-8-byte. Det hittade på en ”svaghet” i kinesiska och fick grekiska och bulgariska att se nästan dubbelt så dåliga ut som de är.
- Dokument brutna vid varje tom rad. Kodaren delade dokument vid varje tom rad – och tomma rader står mitt i nästan varje källfil. Upp till 35 % av kod- och matematiktexten gick förlorad. Vi lagade avgränsaren och byggde om hela korpusen den 31 oktober; det tog 2 timmar och 12 minuter.
Från skrivbordet till en hyrd maskin
De första 1,66 miljarderna tokens kördes på ett enda AMD Radeon RX 7800 XT. Två saker gjorde det användbart: en kärnflagga för attention som är avstängd som standard – utan den var attention 12 gånger långsammare – och kompilering av varje lager med torch.compile. Med en median på 11 800 tokens per sekund hade resten tagit nästan fem dagar till.
Så vi skrev en autopilot. Den hyr GPU:er på Vast.ai, laddar upp kod, korpus och checkpoint, tränar, hämtar hem en checkpoint var tredje timme och stannar innan krediten tar slut. Den 2 november gick den igenom tre maskiner som leverantörerna aldrig startade och landade sedan på två RTX 4070 Ti Super i Tyskland för 0,363 $ i timmen. Uppladdningen på 15,4 GiB tog 40 minuter.
Visa data
| Uppsättning | Tokens/s |
|---|---|
| Lokalt, före optimering | 8 319 |
| Lokalt, kompilerat | 11 830 |
| Hyrt, 2 GPU:er | 41 367 |
41 400 tokens per sekund är 3,5 gånger skrivbordet. Den hyrda delen – 4,8 miljarder tokens på ungefär 33 timmar – kostar runt 12 $.
Var Helix står i dag
- Undanhållen
- Träning
Förlust (nats per token)
Lästa tokens i miljarder
Visa data
| Lästa tokens i miljarder | Undanhållen | 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 |
Den 3 november 2026 har Helix läst 5,35 av sina 6,5 miljarder tokens. Sedan 5,2 miljarder är den i nedkylningsfasen: inlärningstakten sjunker och blandningen förskjuts mot matematik, kod och chatt. På undanhållen text från alla strömmar ligger den på 3,12 nats per token.
Visa data
| Språk | Bitar per byte |
|---|---|
| grekiska | 0,721 |
| bulgariska | 0,844 |
| franska | 1,065 |
| engelska | 1,086 |
| spanska | 1,135 |
| portugisiska | 1,219 |
| tyska | 1,257 |
| nederländska | 1,268 |
| italienska | 1,277 |
| polska | 1,355 |
| danska | 1,364 |
| ungerska | 1,407 |
| slovakiska | 1,412 |
| maltesiska | 1,415 |
| rumänska | 1,416 |
| svenska | 1,418 |
| iriska | 1,422 |
| slovenska | 1,431 |
| tjeckiska | 1,444 |
| litauiska | 1,450 |
| lettiska | 1,451 |
| kroatiska | 1,507 |
| finska | 1,508 |
| estniska | 1,727 |
Vad det betyder i praktiken syns bäst i ett oredigerat prov från en checkpoint vid ungefär 4,9 miljarder tokens. Början är vår, resten är Helix:
Början: The history of the printing press begins in the fifteenth century, when Johannes Gutenberg introduced movable type to Europe. Before that, books
Modellens text: 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, ordval och ämne håller; fakta gör det inte. Det är ungefär vad man kan vänta sig av 320 miljoner parametrar och 6,5 miljarder tokens: en flytande modell som hittar på.
Vad som händer härnäst
Förträningen är klar om några timmar. Därefter följer en fas med lång kontext med böcker från Project Gutenberg och EU-rättstexter från EUR-Lex, finjustering för samtal och verktygsanvändning samt en liten utkastmodell som snabbar upp genereringen.