Qwen-sprong nagerekend: 130.188 getallen
Aangepaste Qwen: 130.188 getallen verschillen, in 2 van 6 gecontroleerde lagen. Zie waar, tel zelf na en lees waarom de score pas bij 50 rondes springt.

3 november 2026
130.188 getallen. Zoveel verschillen er tussen Qwen3.5-0.8B van Alibaba en de aangepaste versie waarmee MIT CSAIL op 2 november een sprong op MATH-500 meldde, van 7,9% naar 48,1%. Wij legden de twee bestanden naast elkaar en telden zelf na. Alle verschillen zitten in twee tabellen, in laag 15 en laag 19. In de vier lagen die wij ernaast controleerden (14, 16, 18 en 20) verschilt niets.
De score zelf hebben wij niet opnieuw gemeten. Dat kost rekentijd op een GPU: bij Hugging Face duurde één volledige run 51 minuten op een H200. Wel lazen wij de uitslag van die herberekening, en die kwam op 51,0%.
Wat verandert er in de gewichten van Qwen?
Gewichten zijn de getallen waarin een taalmodel zijn kennis bewaart. Nieuw met deze termen? Begin bij wat is AI. Volgens de auteurs vond GPT-6 Astra, een gesloten model, één richting die de feed-forward lagen 15 en 19 schrijven. Die zou het model laten vastlopen in herhaling. Astra trok die richting af van 64 kolommen in elke laag. Dat zijn 131.072 getallen.
In het bestand verschillen er 130.188. Bij 884 getallen bleef het opgeslagen getal gelijk: volgens het manifest rondt de wijziging daar terug naar de oude waarde. Dat aantal staat ook in het manifest in de logs op GitHub. Onze telling komt er onafhankelijk op uit. De kaart hieronder is onze eigen meting van 3 november 2026.
aangepast gelijk aan het origineel. Elk vakje is één kolom van 1.024 getallen, 64 vakjes per rij.
Waarom springt de score pas bij 50 proefrondes?
De auteurs lieten Astra 10, 25 of 50 keer het model laten rekenen voordat het zijn wijziging maakte. Bij 10 en 25 rondes liepen nog bijna alle antwoorden vast. Pas bij 50 daalde dat aandeel van 93% naar 33,1%.
Wie de twee tabellen naast elkaar legt, ziet dat de score meebeweegt met het aantal antwoorden dat wél eindigt. Dat is onze lezing, geen uitspraak van de auteurs. Het zijn bovendien vier aparte wijzigingen, elk één keer gemeten. Dat meer rondes beter werken, volgt hier niet uit.
| Qwen3.5-0.8B | Aandeel |
|---|---|
| Origineel | 93,0% |
| Aangepast, 10 rondes | 87,2% |
| Aangepast, 25 rondes | 86,4% |
| Aangepast, 50 rondes | 33,1% |
| Qwen3.5-0.8B | Goed beantwoord |
|---|---|
| Origineel | 7,9% |
| Aangepast, 10 rondes | 12,3% |
| Aangepast, 25 rondes | 14,1% |
| Aangepast, 50 rondes | 48,1% |
Haalt een tweede meting dezelfde sprong?
Op de modelpagina staat een herberekening door Ahsen Khaliq van Hugging Face, met dezelfde instellingen als de blog. Het aangepaste model haalde 51,0% en 31,6% van de antwoorden liep tegen de limiet. Dat ligt dicht bij de 48,1% en 33,1% van de auteurs, maar het is geen exacte kopie. Eén verschil noemt het README zelf: de blog gebruikte een tekstversie, de herberekening het volledige model met beeldonderdeel.
Het origineel hebben ze in die herberekening niet volledig opnieuw gemeten. Er is alleen een proef met 25 opgaven: 5,0% goed en 95% tegen de limiet. De 7,9% is dus nog steeds de meting van de auteurs.
De uitslag per vak laat zien waar de wijziging het meest oplevert. Bij algebra beantwoordt het model bijna vier van de vijf pogingen goed. Bij intermediate algebra ruim een kwart.
| Vak | Goed beantwoord |
|---|---|
| Algebra | 79,2% |
| Prealgebra | 61,9% |
| Getaltheorie | 53,6% |
| Meetkunde | 39,0% |
| Precalculus | 33,5% |
| Kansrekening en tellen | 31,6% |
| Intermediate algebra | 26,8% |
| Pogingen goed | Aantal opgaven |
|---|---|
| 0 van 4 | 162 |
| 1 van 4 | 54 |
| 2 van 4 | 52 |
| 3 van 4 | 66 |
| 4 van 4 | 166 |
| Meting | Goed beantwoord |
|---|---|
| Auteurs, tekstversie | 48,1% |
| Herberekening Hugging Face | 51,0% |
Dit bewijst een reparatie, geen nieuwe rekenvaardigheid
Het bestand laat een nette ingreep zien: 128 kolommen, twee lagen, één klein model. Wie een lusrichting weghaalt, krijgt een model dat zijn antwoorden vaker afmaakt. De auteurs zeggen het zelf ook. Bij Gemma 3 270M, dat nauwelijks vastloopt (8,5% tegen de limiet), kwam MATH-500 van 6,8% naar hooguit 7,7%.
Het woord ‘programmeren in de gewichtenruimte’ is groter dan wat dit nu laat zien. Ontwikkelaars Matthew Honnibal en Sean Goedecke stellen volgens R&D World (3 november 2026) dat het hoofdresultaat het soort Python-analyse is dat ook een mens zou schrijven, en Goedecke noemt het een vorm van steering. Eén richting in een model aanpassen is niet nieuw: in het pijnpaper over Llama 3.1 8B draaide iemand ook aan een knop binnen het model. Dat Astra dit zelf bedacht, valt niet uit de gewichten af te lezen. Dat staat in de logs: volgens R&D World 80 Python-uitvoeringen over 20,3 uur.
| Model, MATH-500 | Goed beantwoord |
|---|---|
| Qwen3.5-0.8B origineel | 7,9% |
| Qwen3.5-0.8B aangepast | 48,1% |
| Gemma 3 270M origineel | 6,8% |
| Gemma 3 270M, beste wijziging | 7,7% |
Wij vergeleken zes lagen, niet het hele bestand
Onze controle heeft grenzen. Wij haalden alleen de tabellen van laag 14, 15, 16, 18, 19 en 20 op, niet alle 488. Dat alleen deze twee tabellen verschillen, volgt uit het README van Hugging Face en wij hebben het niet zelf voor de rest nagerekend. Ook voor de scores geldt: wij lazen ze, wij draaiden het model niet.
Wat wel klopt: onze hashes van beide tabellen (82e2d733ea64 en 8ef3c61bc36a) komen overeen met de hashes in het README. Het script hieronder doet dezelfde telling bij ons in ongeveer twaalf seconden, zonder het hele model van 1,7 GB binnen te halen.
Draai de telling zelf (Python, alleen standaardbibliotheek)
# Telt hoeveel getallen verschillen tussen Qwen3.5-0.8B en de aangepaste versie.
# Alleen standaardbibliotheek. Haalt met Range-verzoeken per laag een tensor van
# ongeveer 7 MB op, niet het hele model van 1,7 GB.
import array, hashlib, json, struct, sys, urllib.request
BASIS = ("Qwen/Qwen3.5-0.8B", "2fc06364715b967f1860aea9cf38778875588b17")
AANGEPAST = ("RikiyaT/Qwen3.5-0.8B-weight-space-programming", "d1671a178705bcab7644806d23c535517f35723b")
BESTAND = "model.safetensors-00001-of-00001.safetensors"
LAGEN = [int(x) for x in sys.argv[1:]] or [14, 15, 16, 18, 19, 20]
def bytes_van(repo, rev, a, b):
url = "https://huggingface.co/%s/resolve/%s/%s" % (repo, rev, BESTAND)
req = urllib.request.Request(url, headers={"Range": "bytes=%d-%d" % (a, b)})
return urllib.request.urlopen(req, timeout=180).read()
def kop(repo, rev):
n = struct.unpack("<Q", bytes_van(repo, rev, 0, 7))[0]
return n, json.loads(bytes_van(repo, rev, 8, 8 + n - 1))
def tensor(repo, rev, n, k, naam):
a, b = k[naam]["data_offsets"]
return bytes_van(repo, rev, 8 + n + a, 8 + n + b - 1)
nb, kb = kop(*BASIS)
na, ka = kop(*AANGEPAST)
print("tensors basis/aangepast:", len(kb), len(ka) - 1)
for L in LAGEN:
naam = "model.language_model.layers.%d.mlp.down_proj.weight" % L
rijen, kolommen = kb[naam]["shape"]
xb = array.array("H"); xb.frombytes(tensor(*BASIS, nb, kb, naam))
xa = array.array("H"); xa.frombytes(tensor(*AANGEPAST, na, ka, naam))
kol = set(); n_verschil = 0
for i in range(len(xb)):
if xb[i] != xa[i]:
n_verschil += 1
kol.add(i % kolommen)
sha = hashlib.sha256(xa.tobytes()).hexdigest()
print("laag %d: %d verschillende getallen in %d kolommen (van %d), sha256 aangepast %s" % (L, n_verschil, len(kol), kolommen, sha[:16]))
if kol:
print(" kolommen:", ",".join(str(c) for c in sorted(kol)))
Gemeten op 3 november 2026 met modelversie d1671a178705 (aangepast) en 2fc06364715b (origineel). SHA256 van dit script: 64f156b1e3aeb161665bf4326b658a6bd1f6401ce589e9acedaefed886ae85b6. Draai je het later, dan kan een nieuwe revisie andere uitkomsten geven.
Voor je een benchmarkscore overneemt: schrijf dit op
Een sprong zoals 7,9% naar 48,1% is pas iets waard als iemand dezelfde proef kan herhalen. Voordat je zo’n getal in je eigen verslag, offerte of presentatie zet, leg je vast onder welke voorwaarden het is gemeten. Hetzelfde probleem kwam eerder voor bij een model van 27 miljard parameters in 5,9 GB: zonder instellingen zegt een score weinig.
Open modellen laten zich zo naast het origineel leggen, gesloten modellen niet. Dat maakt ze controleerbaar. Hoe die vergelijking uitpakt als je met een echt document werkt, zie je bij open source AI getest op één contract en bij de Nemotron Transcribe-test met een Kamerdebat.
Een score telt pas als een ander hem kan nameten
De auteurs bouwen naar eigen zeggen een benchmark en een harnas om modellen op deze vaardigheid te vergelijken. Dat is het moment om op te letten. Pas als iemand dezelfde wijziging op een groter model herhaalt, of een ander model als editor inzet, zegt de 48,1% iets over de methode in plaats van over één kleine checkpoint met een bekend defect.
- Februari 2026Alibaba brengt Qwen3.5-0.8B uit
- 2 november 2026Blog van MIT CSAIL, logs op GitHub, aangepast model op Hugging Face
- 2 november 2026Hugging Face rekent MATH-500 opnieuw uit: 51,0%
- 3 november 2026Wij leggen de twee bestanden naast elkaar
Bronnen: blog “Sparks of Weight-Space Programming” van Takehi, Teoh, Zhang en Khattab (MIT CSAIL), 2 november 2026; modelpagina RikiyaT/Qwen3.5-0.8B-weight-space-programming op Hugging Face, 2 november 2026; R&D World, 3 november 2026; Pasquale Pillitteri, 3 november 2026.
Welke van de 3.584 kolommen is jouw getal?
Tik een kolomnummer in en zie of het in laag 15 of 19 is aangepast. Kolom 2066 in laag 15 is er één van.
Naar de diffkaart