Hovedresultatet ble negativt: haleleddet gjorde varslene av kraftig nedbør dårligere, fordi ensemblet ble for sikkert på seg selv. Men det viste også at Bris kan påvirkes med relativt lite regnekraft. Tre tusen steg på ett grafikkort var nok til å rette opp at modellen er for tørr.
Neste steg er å prøve varianter av haleleddet som angriper det som gikk galt: en lavere vekt, en terskel som passer døgnnedbør, og kanskje en mykere terskel. Problemet er prisen. Hvert forsøk koster rundt 30 timer trening og 20 timer evaluering på et grafikkort som flere deler, og køen har vært lang. Med den prisen rekker jeg bare en håndfull forsøk før våren.
Så før neste runde vil jeg finne ut hvor mye av regnekraften som faktisk trengs.
Å fryse deler av modellen
Den mest kjente måten å spare regnekraft på er å fryse det meste av modellen og bare trene den siste delen. Bris består grovt sett av fire deler:
| Del | Hva den gjør |
|---|---|
| Koder | oversetter værtilstanden på rutenettet, 1,36 millioner punkter, til modellens interne nettverk |
| Prosessor | flytter været fram i tid inne i nettverket |
| Støykilde | gjør ensemblemedlemmene forskjellige fra hverandre |
| Dekoder | oversetter tilbake til rutenettet, og lager blant annet nedbøren |
Treningsrammeverket støtter å fryse hvilke som helst av disse. Å trene bare dekoderen er det som kalles siste lag-finjustering.
Gevinsten er mindre enn man kanskje tror. En frossen del må fortsatt kjøres forover i hvert steg. Det man sparer, er å regne baklengs gjennom den og å oppdatere vektene. Jeg venter at det gir en og en halv til to ganger raskere trening, ikke ti. Den største gevinsten er minne, som kan brukes på noe annet.
Den virkelige risikoen
Det er et viktigere problem enn farten. De to tingene vi har lært om Bris sitter trolig i forskjellige deler av modellen.
Rettingen av tørrheten sitter sannsynligvis i dekoderen, siden det er der nedbøren lages. Den kan en frossen modell trolig gjenskape.
Men haleleddets problem, at ensemblet ble for sikkert, oppstår der medlemmene blir forskjellige: i prosessoren og støykilden. Fryser jeg dem, kan haleleddet ikke gjøre ensemblet for sikkert. En billig test ville da få en variant til å se bra ut som feiler når hele modellen trenes, nettopp fordi testen skjuler feilen jeg fant.
Løsningen er å kalibrere den billige metoden mot et svar jeg allerede har. Jeg trener kontrollarmen og halearmen på nytt med den billige oppskriften og ser om den gjenskaper det kjente resultatet: halearmen dårligere, og ensemblet for sikkert. Gjør den det, kan den brukes til å sile ut varianter. Gjør den det ikke, har jeg lært hvor i modellen effekten sitter, og det er et funn i seg selv.
Kanskje trengs ikke alle stegene
Den største besparelsen ligger trolig et annet sted. Treningstapet til kontrollarmen falt mest i starten:
Over halvparten av fallet kom i løpet av de første 900 stegene. Hvis det samme gjelder for valideringstapet, som måler data modellen ikke trener på, kunne hvert forsøk vært tre ganger så kort, rundt 10 timer i stedet for 30.
Treningstapet er ikke nok til å avgjøre det. Det støyer mye fra steg til steg, og det måler bare dataene modellen allerede ser. Men jeg har lagret sjekkpunkter for hvert 500. steg for begge armene, og valideringstapet kan regnes ut på vanlige prosessorer, uten grafikkort.
Det er det som kjører nå: valideringstapet for steg 500, 1 000, 1 500, 2 000 og 2 500, for både kontrollarmen og halearmen, på de samme valideringsdagene som før. Steg 0, urørt Bris, og steg 3 000 er målt fra før. Til sammen gir det en læringskurve som viser hvor stor del av den endelige gevinsten hvert sjekkpunkt hadde nådd.
Billigere retting også
Evalueringen er den andre halvparten av prisen. Den endelige testen trenger et helt år med varsler, 60 timer fram, fordi kraftig nedbør er sjeldent. Men for å velge mellom varianter holder det med færre dager fra valideringsperioden og varsler 30 timer fram. Det er noen få timer på et grafikkort i stedet for rundt 20.
Det finnes også grep jeg vil unngå. Å trene med to ensemblemedlemmer i stedet for tre er raskere, men spredningen i ensemblet er akkurat det som gikk galt. Adaptere som LoRA sparer minne, men lite tid, og de er ikke bygget inn i rammeverket.
Planen
- Gratis: læringskurven fra sjekkpunktene, som kjører nå.
- Rundt én time på grafikkort: en kort prøvekjøring som måler hvor raskt og med hvor mye minne de frosne variantene trener.
- Kalibrering: kontrollarm og halearm med den billige oppskriften. Gjenskaper den det kjente resultatet?
- Siling: flere varianter av haleleddet med den billige oppskriften, valgt på valideringsperioden.
- Bekreftelse: full finjustering av vinneren, og testperioden med en ny låst plan.
Hvis det holder, går prisen per variant fra rundt 50 timer på grafikkort til 8–12. Det er nok til fem ganger så mange forsøk på det samme budsjettet.
Og uansett utfall er sammenligningen i seg selv verdt noe: hvor langt kan man stole på en billig, delvis finjustering når man skal velge hva som er verdt å trene fullt ut?
