NETBYTE
Aloita projekti

Tutkimus

Helix, osa 1: koulutamme eurooppalaisen kielimallin

Koulutamme omaa kielimallia. Se on pieni – 320 miljoonaa parametria – mutta se lukee kaikkia Euroopan unionin 24 virallista kieltä ja oppii peleihin tehdyillä näytönohjaimilla. Tämä ensimmäinen osa kertoo, miten päädyimme tähän; toinen osa seuraa, kun koulutus on valmis.

Kirjoittanut Marcus Weitschat 8 min lukuaika

Pistematriisi siitä, mihin kukin Helixin token voi kiinnittää huomionsa: sininen kaista paikalliselle ikkunalle, keltaiset pisteet omalle lohkolle ja hajanaiset oranssit pisteet pitkän matkan muistamiselle.

Miksi pelistudio kouluttaa kielimallin

NETBYTE tekee pelejä, sovelluksia ja verkkosivustoja. Kielimallit ovat yhä useammin tällaisten tuotteiden sisällä: hahmoina, jotka vastaavat, apuna, joka ymmärtää kysymyksen, työkaluina, jotka tekevät jotakin. Useimmat avoimet mallit ajattelevat ensin englanniksi; viro, iiri tai malta jäävät sivuosaan. Halusimme ymmärtää koko ketjun itse – data, tokenisoija, arkkitehtuuri, koulutus – ja selvittää, mihin rahat todella menevät.

parametria
320 milj.
EU:n virallista kieltä
24
koulutustokenia
6,5 mrd.
vuokratuista GPU:ista
≈ 12 $

Helix sai alkunsa tutkimusprototyyppinä. Kaikki alla oleva on päätös, joka muovasi sitä, ja jokainen niistä perustuu mittaukseen – samoin kuin virheet, jotka veivät meiltä eniten aikaa.

Neljä ideaa, yksi jäi

Prototyyppi tähtäsi nykyisten tekstigeneraattoreiden neljään tunnettuun heikkouteen. Se kirjoittaa 16 tokenin lohkoina eikä token kerrallaan, se voi ajaa jaetun kerrosytimen useaan kertaan, se ennustaa jokaiselle lohkolle tiiviin ”suunnitelman”, ja se yhdistää edullisen paikallisen tarkkaavaisuuden lineaariseen tarkkaavaisuuteen pitkillä etäisyyksillä.

Lohkoittain kirjoittaminen toimi heti: pieni testimalli kirjoitti 64 tokenia 13 verkon läpikäynnillä, kun tavallinen malli tarvitsee yhden läpikäynnin tokenia kohden – noin viidesosan työstä. Muut kolme ideaa kaatuivat kovemmassa testissä. Rakensimme tehtäviä, joissa vastaus on kaukana paikallisen ikkunan ulkopuolella, joten mallin on katsottava taaksepäin koko tekstin yli.

Kuva 1 Muistaminen pitkien etäisyyksien yli Oikeiden vastausten osuus muistamistehtävässä, jonka vihje on paikallisen ikkunan ulkopuolella. Pieni vertailumalli, sama budjetti jokaiselle vaihtoehdolle.
  1. Vain paikallinen ikkuna 23,1 %
  2. + lineaarinen tarkkaavaisuus, suunnitelma ja silmukat 23,1 %
  3. + 2 tarkkaa globaalia päätä 49,4 %
  4. Täysi tarkkaavaisuus (vertailu) 49,0 %
Näytä tiedot
VaihtoehtoOikein
Vain paikallinen ikkuna23,1 %
+ lineaarinen tarkkaavaisuus, suunnitelma ja silmukat23,1 %
+ 2 tarkkaa globaalia päätä49,4 %
Täysi tarkkaavaisuus (vertailu)49,0 %
Sattuma (25 %)25,0 %

Ne ratkaisi vain tarkka tarkkaavaisuus koko matkan yli. Lineaarinen tarkkaavaisuus, suunnitelma ja silmukat jäivät sattuman tasolle; optimoija oli jopa säätänyt lineaarisen muistin puoliintumisajaksi alle yhden tokenin. Kaksi tarkkaa globaalia päätä riitti saavuttamaan täyden tarkkaavaisuuden.

Lopullinen malli pitää siksi jokaisessa kerroksessa kahdeksan paikallista päätä 256 tokenin ikkunalla ja lisää joka toiseen kerrokseen kaksi tarkkaa globaalia päätä; välikerrokset säilyttävät kaksi portitetun lineaarisen tarkkaavaisuuden päätä. Suunnitelma ja silmukat on kytketty pois. Ne ovat yhä koodissa ja testattuja, mutta oikealla tekstillä ne eivät maksaneet itseään takaisin.

Kuva 2 Mihin kukin kerros katsoo Kymmenen tarkkaavaisuuspäätä kerrosta kohden, kaksitoista kerrosta. Jokaisessa kerroksessa on kahdeksan paikallista päätä; parittomat kerrokset lisäävät kaksi tarkkaa globaalia päätä, parilliset kaksi portitetun lineaarisen tarkkaavaisuuden päätä.
  • Paikallinen, 256 tokenin ikkuna
  • Tarkka globaali tarkkaavaisuus
  • Portitettu lineaarinen tarkkaavaisuus
Näytä tiedot
PäätyyppiKerroksetPäitä kerroksessa
Paikallinen, 256 tokenin ikkuna1–128
Tarkka globaali tarkkaavaisuus1, 3, 5, 7, 9, 112
Portitettu lineaarinen tarkkaavaisuus2, 4, 6, 8, 10, 122

Mittaa, älä oleta

Testasimme jokaisen koulutuskikan 94 miljoonan parametrin mallilla samalla budjetilla ajoa kohden: 29,5 miljoonaa tokenia, sama siemen, sama datan järjestys. Saman kokoonpanon kaksi ajoa eroavat ±0,03, joten kaikki sitä pienempi on kohinaa.

Kuva 3 Mikä auttoi – ja mikä oli kohinaa Validointihävikin muutos AdamW-perustasoon verrattuna. 94 milj. parametrin malli, 29,5 miljoonaa tokenia ajoa kohden. Nollan alapuolella on parempi; harmaa kaista on ajojen välinen kohina (±0,03).
  1. Muon + WSD-aikataulu −0,587
  2. Muon-optimoija −0,347
  3. Syvempi, kapeampi verkko −0,099
  4. WSD-aikataulu −0,080
  5. Arvojäännös −0,007
  6. z-loss +0,029
  7. Ryhmitetyn kyselyn tarkkaavaisuus +0,088
Näytä tiedot
MuutosΔ hävikki (natia)
Muon + WSD-aikataulu−0,587
Muon-optimoija−0,347
Syvempi, kapeampi verkko−0,099
WSD-aikataulu−0,080
Arvojäännös−0,007
z-loss+0,029
Ryhmitetyn kyselyn tarkkaavaisuus+0,088

Muon-optimoija oli ainoa suuri vipu, ja se toimii yhdessä warmup-stable-decay-oppimisnopeusaikataulun kanssa. Upotuksen ja tuloskerroksen palauttaminen AdamW:lle, kuten Muonin tekijät suosittelevat, toi vielä 0,12 lisää ja nopeutti koulutusta 5 %. Yhdistelmät eivät vain summaudu: syvempi ja kapeampi verkko auttoi AdamW:n kanssa ja haittasi Muonin kanssa. Siksi jokainen lupaava yhdistelmä sai oman ajonsa.

24 kieltä, 6,5 miljardia tokenia

Helix lukee verkkotekstiä FineWeb-Edusta englanniksi ja FineWeb-2:sta muille 23 kielelle – suuremmilla kielillä sen laadun mukaan suodatetusta ylimmästä kymmenyksestä. Koodi, matematiikka ja pieni synteettinen keskusteluvirta täydentävät sekoituksen. Englanti saa kolmanneksen. Muut kielet painotetaan saatavilla olevan tekstin määrän mukaan, tasoitettuna niin, etteivät iiri ja malta huku, eikä mitään lähdettä toisteta yli neljää kertaa – siihen asti toisto on lähes yhtä hyvää kuin tuore data.

Kuva 4 Mitä Helix lukee Koulutustokenien osuus lähderyhmittäin. 6,5 miljardin tokenin korpus 34 virrassa; koodi ja merkintäkielet kattavat Pythonin, JavaScriptin, C:n, C++:n, Javan, HTML:n, CSS:n ja Markdownin.
  1. Muut 23 EU-kieltä 51,6 %
  2. Englanti 33,0 %
  3. Koodi ja merkintäkielet 10,0 %
  4. Matematiikka 3,0 %
  5. Synteettinen keskustelu ja työkalut 2,4 %
Näytä tiedot
LähdeOsuus
Muut 23 EU-kieltä51,6 %
Englanti33,0 %
Koodi ja merkintäkielet10,0 %
Matematiikka3,0 %
Synteettinen keskustelu ja työkalut2,4 %

Keskusteluvirta on poimiva: vastaukset kopioidaan oikeista kappaleista, ja työkalujen tulokset lasketaan eikä keksitä. Se opettaa muotoa, ei tietoa. Tokenisoija on tavutason BPE, jossa on 64 000 merkintää; se pakkaa jokaisella latinalaisin kirjaimin kirjoitetulla kielellä 3,3–4 tavua tekstiä yhteen tokeniin.

Kolme kertomisen arvoista bugia

  • Malli, joka luki vastauksen. Yhdessä koodipolussa globaalit päät ohittivat kausaalisen maskin ja näkivät tulevat tokenit. Hävikki putosi 75 askeleessa 6,85:stä 1,71:een, ja 16 tunnin ajo meni hukkaan. Epäilyttävän hyvä hävikki on bugiraportti; nyt regressiotesti vartioi juuri tätä.
  • Merkit eivät ole tavuja. Pakkaus laskettiin merkeissä UTF-8-tavujen sijaan. Se keksi kiinaan ”heikkouden” ja sai kreikan ja bulgarian näyttämään lähes kaksi kertaa todellista huonommilta.
  • Dokumentit katkottuina joka tyhjällä rivillä. Enkooderi jakoi dokumentit jokaisen tyhjän rivin kohdalta – ja tyhjiä rivejä on lähes jokaisen lähdetiedoston keskellä. Jopa 35 % koodi- ja matematiikkatekstistä katosi. Korjasimme erottimen ja rakensimme koko korpuksen uudelleen 31. lokakuuta; siihen meni 2 tuntia 12 minuuttia.

Työpöydältä vuokrakoneelle

Ensimmäiset 1,66 miljardia tokenia ajettiin yhdellä AMD Radeon RX 7800 XT:llä. Kaksi asiaa teki siitä käyttökelpoista: tarkkaavaisuusytimen lippu, joka on oletuksena pois päältä – ilman sitä tarkkaavaisuus oli 12 kertaa hitaampi – ja jokaisen kerroksen kääntäminen torch.compile:lla. Mediaanilla 11 800 tokenia sekunnissa loppuosa olisi vienyt vielä lähes viisi päivää.

Kirjoitimme siis autopilotin. Se vuokraa GPU:ita Vast.ai-palvelusta, lataa koodin, korpuksen ja tarkistuspisteen, kouluttaa, tuo tarkistuspisteen kotiin kolmen tunnin välein ja pysähtyy ennen kuin saldo loppuu. Marraskuun 2. päivänä se kävi läpi kolme konetta, joita palveluntarjoajat eivät koskaan käynnistäneet, ja päätyi sitten kahteen RTX 4070 Ti Super -korttiin Saksassa hintaan 0,363 $ tunnilta. 15,4 GiB:n lataus kesti 40 minuuttia.

Kuva 5 Koulutusnopeus Tokenia sekunnissa 320M-mallille sekvenssin pituudella 1 024 (mediaani). Paikallisesti: yksi AMD Radeon RX 7800 XT. Vuokrattuna: kaksi NVIDIA RTX 4070 Ti Superia.
  1. Paikallisesti, ennen optimointia 8 319
  2. Paikallisesti, käännettynä 11 830
  3. Vuokrattu, 2 GPU:ta 41 367
Näytä tiedot
KokoonpanoTokenia/s
Paikallisesti, ennen optimointia8 319
Paikallisesti, käännettynä11 830
Vuokrattu, 2 GPU:ta41 367

41 400 tokenia sekunnissa on 3,5-kertainen työpöytään verrattuna. Vuokrattu osuus – 4,8 miljardia tokenia noin 33 tunnissa – maksaa suunnilleen 12 $.

Missä Helix on tänään

Kuva 6 Koulutus tähän mennessä Hävikki natteina tokenia kohden, pienempi on parempi. Erillään pidetty: tekstiä, jolla malli ei koskaan opi. Koulutus: keskiarvo 50 miljoonan tokenin välein; jäähdytyksessä se laskee nopeammin, osin koska datasekoitus muuttuu. Akseli päättyy suunniteltuun 6,5 miljardiin tokeniin.
  • Erillään pidetty
  • Koulutus

Hävikki (natia tokenia kohden)

Luetut tokenit miljardeina

Näytä tiedot
Luetut tokenit miljardeinaErillään pidettyKoulutus
0,064,5714,261
0,553,7763,574
1,043,6943,469
1,543,5963,421
2,033,4263,238
2,523,3293,143
3,013,2913,113
3,503,2633,076
3,993,2253,079
4,493,2443,076
4,983,2183,036
5,353,1232,884

3. marraskuuta 2026 Helix on lukenut 5,35 miljardia 6,5 miljardista tokenistaan. 5,2 miljardista lähtien se on ollut jäähdytysvaiheessa: oppimisnopeus laskee ja sekoitus painottuu matematiikkaan, koodiin ja keskusteluun. Kaikkien virtojen erilleen pidetyllä tekstillä hävikki on 3,12 natia tokenia kohden.

Kuva 7 Missä kukin kieli on Bittiä tavua kohden erillään pidetyllä tekstillä 5,35 miljardin tokenin jälkeen, pienempi on parempi. Kreikka ja bulgaria näyttävät paremmilta osin siksi, että niiden jokainen kirjain vie kaksi tavua.
  1. kreikka 0,721
  2. bulgaria 0,844
  3. ranska 1,065
  4. englanti 1,086
  5. espanja 1,135
  6. portugali 1,219
  7. saksa 1,257
  8. hollanti 1,268
  9. italia 1,277
  10. puola 1,355
  11. tanska 1,364
  12. unkari 1,407
  13. slovakki 1,412
  14. malta 1,415
  15. romania 1,416
  16. ruotsi 1,418
  17. iiri 1,422
  18. sloveeni 1,431
  19. tšekki 1,444
  20. liettua 1,450
  21. latvia 1,451
  22. kroatia 1,507
  23. suomi 1,508
  24. viro 1,727
Näytä tiedot
KieliBittiä tavua kohden
kreikka0,721
bulgaria0,844
ranska1,065
englanti1,086
espanja1,135
portugali1,219
saksa1,257
hollanti1,268
italia1,277
puola1,355
tanska1,364
unkari1,407
slovakki1,412
malta1,415
romania1,416
ruotsi1,418
iiri1,422
sloveeni1,431
tšekki1,444
liettua1,450
latvia1,451
kroatia1,507
suomi1,508
viro1,727

Mitä tämä tarkoittaa käytännössä, näkyy parhaiten muokkaamattomasta näytteestä tarkistuspisteestä noin 4,9 miljardin tokenin kohdalla. Alku on meidän, loput Helixin:

Englanninkielinen näyte, tarkistuspiste 4,9 miljardin tokenin kohdalla, muokkaamaton

Alku: The history of the printing press begins in the fifteenth century, when Johannes Gutenberg introduced movable type to Europe. Before that, books Mallin teksti: 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.

Kielioppi, sanavalinnat ja aihe pitävät; faktat eivät. Suunnilleen tätä voi odottaa 320 miljoonalta parametrilta ja 6,5 miljardilta tokenilta: sujuvaa mallia, joka keksii asioita.

Mitä seuraavaksi

Esikoulutus päättyy muutaman tunnin kuluttua. Sen jälkeen tulevat pitkän kontekstin vaihe Project Gutenbergin kirjoilla ja EUR-Lexin EU-oikeustekstillä, hienosäätö keskusteluun ja työkalujen käyttöön sekä pieni luonnosmalli, joka nopeuttaa tekstin tuottamista.

Takaisin kaikkiin kirjoituksiin

Seuraava askel

Mitä seuraavaksi pitäisi syntyä?

Kerro meille pelistäsi, sovelluksestasi, verkkosivustostasi tai tekoälyprojektistasi. Lyhyt viesti riittää alkuun.