Het Nederlandse AI-handboek Nederland & België Bijgewerkt 3 november 2026

WatisAI.nl

AI uitgelegd in gewone taal — zonder hype, zonder bangmakerij.

Home

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.

Naar de diffkaart

Door Daan Koster ·

Streepjescode van de 130.188 gewijzigde Qwen-getallen in twee lagen

3 november 2026

130.188getallen verschillen tussen origineel en aangepast bestand
2 van 6gecontroleerde lagen verschillen: laag 15 en laag 19
51,0%MATH-500 bij de herberekening door Hugging Face, tegen 48,1% bij de auteurs

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%.

Laag 15: 65.260 getallen in 64 kolommenLaag 19: 64.928 getallen in 64 kolommenKolom 0 links, kolom 3.583 rechts. Elke streep is een aangepaste kolom.
Eigen meting, 3 november 2026: de aangepaste kolommen van laag 15 en laag 19 in de tabel down_proj (1.024 rijen, 3.584 kolommen), origineel Qwen/Qwen3.5-0.8B tegen de aangepaste versie van RikiyaT.

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.

Diffkaart Qwen3.5-0.8B · eigen meting van 3 november 2026 · rekent in je browser

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.

Antwoorden die tegen de limiet aanliepen
Qwen3.5-0.8BAandeel
Origineel
93,0%
Aangepast, 10 rondes
87,2%
Aangepast, 25 rondes
86,4%
Aangepast, 50 rondes
33,1%
Zelfde blog. Een antwoord dat de limiet haalt, is vastgelopen in herhaling en heeft geen eindantwoord.
MATH-500 per aantal proefrondes
Qwen3.5-0.8BGoed beantwoord
Origineel
7,9%
Aangepast, 10 rondes
12,3%
Aangepast, 25 rondes
14,1%
Aangepast, 50 rondes
48,1%
Eigen meting van de auteurs, blog van 2 november 2026. Denkmodus aan, maximaal 32.768 tokens per antwoord.

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.

Aangepaste Qwen per vak, MATH-500
VakGoed 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%
Eigen optelling uit eval/scores_edited_math500.json van de herberekening: 1.020 van 2.000 antwoorden goed. 162 van 500 opgaven kwamen nooit goed, 166 elke keer.
Hoe vaak komt een opgave goed uit de 4 pogingen?
Pogingen goedAantal opgaven
0 van 4
162
1 van 4
54
2 van 4
52
3 van 4
66
4 van 4
166
Eigen optelling uit de herberekening, aangepaste Qwen, 500 opgaven. Veel opgaven zijn alles of niets.
MATH-500, aangepaste Qwen, 4 pogingen per opgave
MetingGoed beantwoord
Auteurs, tekstversie
48,1%
Herberekening Hugging Face
51,0%
Auteurs: 33,1% tegen de limiet. Herberekening: 31,6% tegen de limiet, 500 opgaven, 2.000 antwoorden, 43,4 miljoen tokens, 51 minuten op een H200. Bron: modelpagina RikiyaT/Qwen3.5-0.8B-weight-space-programming, 2 november 2026.

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.

Dit laat het bestand zienWelke getallen veranderden, hoeveel en waar. Dat het bestand overeenkomt met de gepubliceerde hashes.
Dit laat het niet zienWie of wat de wijziging bedacht. Dat de score thuis standhoudt. Dat het bij een groter model werkt.
Wat de wijziging oplevert: Qwen tegenover Gemma
Model, MATH-500Goed 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%
Eigen meting van de auteurs, blog van 2 november 2026. Gemma liep bij 8,5% van de antwoorden tegen de limiet, Qwen bij 93,0%.

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.

Noteer bij elke score die je overneemt
ModelversieDe revisiecode van het bestand, niet alleen de naam
InstellingenTemperatuur 0,6, top-p 0,95, top-k 20, presence penalty 1,5
LimietMaximaal 32.768 tokens, en het aandeel dat die haalt
Pogingen4 per opgave bij MATH-500, 2 bij GSM8K en IFEval

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.

  1. Februari 2026Alibaba brengt Qwen3.5-0.8B uit
  2. 2 november 2026Blog van MIT CSAIL, logs op GitHub, aangepast model op Hugging Face
  3. 2 november 2026Hugging Face rekent MATH-500 opnieuw uit: 51,0%
  4. 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