- Je onderscheidt een empirisch schaalmodel van een gegarandeerde natuurwet.
- Je balanceert parameter- en tokenaantallen bij een vast benaderd trainingsbudget.
Je hebt een vast trainingsbudget. Een groter model verwerkt dan minder tokens: waar ligt de beste balans? Scaling laws beschrijven empirische verbanden waarmee je zulke experimenten kunt plannen, zonder ieder mogelijk model te trainen.
De onderzoeken van Kaplan en Hoffmann gebruikten verschillende meetopzetten en vonden verschillende optimale verhoudingen. Hun fits zijn geen natuurwet voor iedere architectuur of datamix. Hier gebruiken we eigen synthetische coëfficiënten; de uitkomsten zijn rekenvoorbeelden, geen actuele benchmark of trainingsadvies.
1. Maak een machtswet zichtbaar
Neem verlies L(N)=E+A/N^α bij parameteromvang N. E is een vooraf gegeven verliesvloer, A een positieve schaal en α de exponent. Trek de vloer af voordat je logaritmeert; anders fit je een andere relatie.
Voor E=1, A=2 en α=.5 geven N=[1,4,16] verliezen [3,2,1.5]. De resten zijn [2,1,.5]; iedere verviervoudiging van N halveert het resterende verlies. Een rechte lijn in logruimte heeft hier helling −.5 en intercept log(2).
n = np.array([1.,4.,16.])
losses = np.array([3.,2.,1.5])
a,alpha = fit_powerlaw(n,losses,1.)
print(round(a,4),round(alpha,4))
# 2.0 .5
Maak fit_powerlaw met minstens twee verschillende positieve groottes en verliezen boven E. Onze gecentreerde kleinste-kwadratenfit gebruikt een bekende vloer; hij is niet de robuuste gezamenlijke meerparameterfit uit het Chinchilla-paper. Een verkeerde vloer of extrapolatie buiten het meetbereik kan misleiden.
012. Geef model en data een eigen foutterm
Nu gebruiken we L(N,D)=E+A/N^α+B/D^β. D is het aantal verwerkte trainingstokens. Groter N verkleint de modelterm en groter D de dataterm, zolang deze gekozen benadering bruikbaar blijft.
loss = scaling_loss(
10.,10.,1.,1.,1.,1.,1.)
print(round(loss,4)) # 1.2
De laatste vijf argumenten zijn A, B, α, β en E. Bij N=D=10 dragen beide fouttermen .1 bij aan vloer één. Maak scaling_loss voor de opgegeven eindige, positieve scalars; alleen E mag nul zijn.
Coëfficiënten horen bij hun eenheden. Duizenden parameters gebruiken in plaats van losse parameters zonder A aan te passen verandert het verliesmodel. Verwerkte tokens zijn bovendien niet noodzakelijk unieke tokens: herhaling vervangt datadiversiteit niet vanzelf.
Synthetisch model: L = 1 + 4/√N + 9/√D, met C = 6ND. N en D zijn continue rekenwaarden.
Budget C = 60.000 benaderde FLOPs. Geen echte modelmeting of tijdsraming; buiten het gemeten bereik is extrapolatie onzeker. De verticale schaal past zich aan het budget aan.
3. Houd het budget vast
Een ruwe dichte-transformerraming gebruikt C≈6ND FLOPs. C telt benaderd rekenwerk, geen doorlooptijd; exacte architectuur-, context-, communicatie- en hardwarekosten vallen erbuiten. Bij vast C volgt D=C/(6N), dus meer parameters laten minder tokens over.
Voor C=600 en A=B=α=β=1 geeft N=D=10 verlies 1.2. N=20 en D=5 gebruikt hetzelfde budget, maar verlies 1+.05+.2=1.25. Alleen groter kiezen is hier dus niet beter.
n,d = compute_allocation(
600.,1.,1.,1.,1.)
print(np.round([n,d],4)) # [10. 10.]
print(round(6*n*d,4)) # 600.0
other = scaling_loss(
20.,5.,1.,1.,1.,1.,1.)
print(round(other,4)) # 1.25
Om het continue optimum te vinden vervang je D door C/(6N). De modelterm daalt met N, terwijl de dataterm stijgt. Op het evenwicht zijn de gewogen bijdragen gelijk: αA/N^α=βB/D^β.
Noem h de logverhouding van de gewogen coëfficiënten. De losse logaritmen voorkomen dat producten al overlopen vóór je log toepast. Oplossen van de evenwichtsvoorwaarde geeft:
Bij ongelijke exponenten hoef je de twee ruwe fouttermen dus niet gelijk te maken. Neem C=192, A=B=1, α=1 en β=2. N=8 en D=4 geeft 1/8=2/16 voor de gewogen termen en loss 1.1875.
n,d = compute_allocation(
192.,1.,1.,1.,2.)
print(np.round([n,d],4)) # [8. 4.]
loss = scaling_loss(
n,d,1.,1.,1.,2.,1.)
print(round(loss,4)) # 1.1875
Maak compute_allocation in logruimte, ook voor de producten en verhoudingen van coëfficiënten. De vloer E verschuift de loss, maar niet dit optimum. Een echt ontwerp moet vervolgens discrete architecturen, dataplafonds, inferentiekosten en nieuwe meetresultaten meenemen.
03Wat neem je mee?
- Een schaalfit is een empirisch model binnen een bepaalde meetopzet.
- Parameter- en datatermen reageren anders op dezelfde budgetkeuze.
- Een analytisch optimum helpt plannen en vraagt daarna praktische verificatie.
Je hebt nu de taalmodelroute van tokenisatie tot aanpassing doorlopen. Hierna werk je aan betrouwbare invoer, uitvoer en evaluatie bij het gebruiken van LLM’s.