Hoppa till huvudinnehållet

Programmering i viktutrymmet: Hur LLM:er läser och redigerar neurala nätverks vikter

Programmering i viktutrymmet låter en LLM läsa och redigera ett nätverks vikter utan träning. MIT:s GPT-6 Astra-experiment, resultat, begränsningar och vad de betyder.
Tom Farnschläder
Tom Farnschläder

Skapa ditt gratiskonto

Öva och håll koll på dina framsteg.

Fortsätt med GoogleGenom att fortsätta godkänner du vår användarvillkor, våra integritetspolicy och att dina uppgifter lagras i USA.

Programmering i viktutrymmet är en metod där en allmän LLM läser ett neuralt nätverks råa vikter och redigerar eller skriver dem direkt utifrån ett mål formulerat i naturligt språk, utan gradientnedstigning och utan träningsslinga. I ett blogginlägg publicerat den 2 november 2026 rapporterar fyra forskare vid MIT CSAIL att GPT-6 Astra redan kan göra detta: den redigerade 0,016% av Qwen3.5-0.8B:s vikter och höjde modellens MATH-500-poäng från 7,9% till 48,1%.

Författarna är Rikiya Takehi, Jayden Teoh, Alex Zhang och Omar Khattab, förstaförfattare till den ursprungliga DSPy-artikeln. Resultaten är tidiga och kommer från en enda LLM, men teamet publicerade varje prompt, svar och utvärdering bakom dem.

I den här artikeln går jag igenom vad programmering i viktutrymmet är, vad experimenten visade, var metoden brister och vad det betyder för ditt arbete. Om du behöver en uppfräschning kring modellen som gör redigeringen, se vår guide till GPT-6 Astra.

Vad är programmering i viktutrymmet?

Programmering i viktutrymmet är praktiken att be en LLM läsa, fixa eller skriva ett neuralt nätverks vikter direkt, utifrån en specifikation i naturligt språk, ibland helt utan återkoppling från omgivningen. LLM:en räknar ut vad varje del av nätverket beräknar, eller bör beräkna, och ställer in siffrorna därefter.

Det är en annan väg än hur vikter normalt tas fram. I dag kommer vikter från gradientnedstigning med optimerare som Adam eller Muon, från nätverk tränade för att generera andra nätverks vikter, eller från kompilatorer som förvandlar formella program till nätverk. I MIT:s upplägg skriver GPT-6 Astra ingen träningsslinga. Den resonerar om vikterna på samma sätt som en ingenjör resonerar om kod.

LLM:er optimerar redan prompts, program och träningskod. Författarnas argument är att denna resonemangsdrivna optimering nu når själva vikterna.

Vad MIT-forskarna visade

De åtta experimenten faller i tre grupper: läsa vikter, fixa dem och skriva dem från grunden. De flesta använder små nätverk vars vikter ryms i Astras kontextfönster som text; de större lägger till en Python-sandlåda och några en budget av framåtpasser.

GPT-6 Astra läste, fixade, skrev och förbättrade nätverk utan träning

Att läsa ett nätverks vikter

Teamet tränade fyra policies med proximal policy optimization (PPO), den standardiserade förstärkningsinlärningsalgoritmen för spelagenter, på rutnätsversioner av Breakout, Pong, Pac-Man och Freeway, alla med samma arkitektur på 17 253 vikter. Utan att få listan över spel namngav Astra rätt spel för alla fyra nätverken, genom att läsa av ledtrådar som att Breakout-agentens första lagers vikter låg längs nedersta raden där paddeln finns.

Två svårare varianter följde:

  • Diffusionsmodeller: Utifrån vikterna för 3 små DDPM:er, utan tillåten framåtpass, identifierade Astra vilken som genererar cirklar, kvadrater eller trianglar. Den ritade dem som konturer trots att modellerna producerar fyllda former, en antydan om att den läste vikternas geometri snarare än simulerade nätverket.
  • Språkmodeller: Givet endast de 4 mellersta transformerblocken i teckenmodeller med 7,2 miljoner parametrar, namngav Astra träningsspråket (Python, japanska i romaji eller engelska) för alla 3, i båda försöken. Den hittade också varje copying head, även kallat en induction head, och namngav inget annat huvud som ett sådant. Vår guide till multi-head attention förklarar vad dessa huvuden gör.

Att reparera en trasig policy

En PPO-policy tränad i 1 miljard steg på en bil-och-ramp-bana i Kinetix-miljön körde rakt mot rampen och stannade varje gång. Med 171 664 vikter, scenen och ett inspelat avsnitt förklarade Astra felet och skrev en lösning i ett enda svar utan verktyg. Redigeringen ändrade 3,5% av vikterna och tog framgångsgraden från 0% till 100% över 1 024 avsnitt.

Lösningen går att läsa: en liten extra väg som backar bilen och sedan stängs av när bilen passerat remsan.

Att skriva nätverk från grunden

För tre MinAtar-spel fick Astra reglerna, källkoden och ett helt nollställt nätverk, och skrev sedan varje vikt som text i ett svar, utan data, gradienter eller verktyg. Alla tre nätverken slog PPO-agenter tränade i 100 miljoner steg.

SpelPPO, 100M stegPPO, 500M stegAstra, ett försök
Breakout15,825,3517,4
Seaquest5,688,953,1
Asterix25,855,253,2

Breakout sticker ut eftersom Astra skrev det som ett program: det första lagret beräknar var bollen kommer att landa, det andra flyttar paddeln dit. Ett 9x9 Go-nätverk med 1 480 274 vikter, skrivet i en Python-sandlåda, slog ett lika stort PPO-nätverk tränat på 20 miljoner partier när Astra fick 50 framåtpass för att testa mot.

Att fixa tänkeslingor i Qwen3.5-0.8B

Det mest praktiska resultatet riktar sig mot ett känt fel. Qwens egen model card varnar för att Qwen3.5-0.8B är benägen till tänkeslingor, och i MIT-testerna gick 93,0% av dess MATH-500-svar upp till gränsen 32 768 token. Genom att arbeta i en Python-kärna med 50 framåtpass på övningsuppgifter från GSM8K och MATH spårade Astra slingorna till en riktning skriven av MLP:erna i lager 15 och 19 och subtraherade den från 64 utgångskolumner i vardera.

Redigerade vikter
0,016%
131 072 av 0,8 miljarder
MATH-500
7,9% → 48,1%
Bas vs. redigerad
GSM8K
13,8% → 67,1%
Bas vs. redigerad
IFEval
21,0% → 62,3%
Instruktionsföljning

Andelen svar som slog i tokengränsen föll till 33,1%, och eftersom slingor inte är specifika för matematik förbättrades även instruk­tionsföljningen. Budgeten spelade roll: med 10 eller 25 framåtpass försvann slingorna knappt. Hugging Faces Ahsen Khaliq byggde om den redigerade checkpointen från loggarna och körde MATH-500 igen med samma inställningar, och fick 51,0%.

Var programmering i viktutrymmet brister

Programmering i viktutrymmet brister där problemet inte är ett enskilt, lokalt fel i vikterna. Författarna rapporterar två tydliga misslyckanden, och båda är informativa.

  • Fjäsksynthet var osynlig i vikterna. Givet en ärlig och en fjäskande finjustering av Gemma 3 270M kunde Astra inte skilja dem åt utifrån vikterna ensamt i något av sina fyra försök. När den väl kunde se deras uppmärksamhetsmönster pekade den ut den fjäskande i alla tre paren.
  • Gemma 3 270M blev inte bättre på matematik. Gemma loopar sällan, så det fanns inget enskilt fel att ta bort, och Astras bästa redigering flyttade MATH-500 från 6,8% till 7,7%. Som författarna uttrycker det: att redigera vikter kunde ta bort ett hinder som dolde en förmåga, men det kunde inte lägga till en förmåga som modellen saknade.

De bredare förbehållen: varje experiment använder en LLM, det största nätverket har 0,8 miljarder vikter, och detta är ett blogginlägg med tidiga resultat, inte en peer-reviewad artikel. Författarna säger att de fortfarande bygger ett riktmärke för uppgiften.

Vad detta betyder för data- och AI-praktiker

För praktiker är programmering i viktutrymmet en forskningssignal i dag, men ännu inte ett verktyg. Två delar är värda att följa redan nu.

Den första är tolkbarhet. Attributionsmetoder som SHAP förklarar en modell via dess indata, och mekanistisk tolkbarhet behöver verktyg byggda för uppgiften. Astra återfann induction heads med en känd matris-multiplikationsmetod som forskarna aldrig nämnde för den. Om det håller i större modeller blir ”fråga en framkantsmodell vad det här lagret gör” ett första steg före den tunga verktygslådan.

Den andra är riktad reparation. När en liten modell har ett smalt fel, som Qwens slingor, är den vanliga lösningen att finjustera den på nya data. En redigering på 131 072 vikter lämnar resten av modellen orörd, vilket författarna menar undviker den katastrofala glömska som finjustering kan orsaka. Jag skulle behandla det som en hypotes: Gemma-resultatet visar att redigeringen bara fungerar när det finns en enda skyldig att hitta. Författarnas bredare önskelista, från att granska modeller för bakdörrar utan att köra dem till att avlära förmågor utan data, har ännu inte visats.

Hur du provar programmering i viktutrymmet själv

Det mest direkta sättet att testa programmering i viktutrymmet är att återskapa ett av experimenten: loggarna innehåller de exakta prompts Astra fick, och GPT-6 Astra finns som gpt-6-astra i OpenAI API, i Amazon Bedrock och i betalda ChatGPT-planer. Experiment 1, att namnge spelet utifrån en policys vikter, är den enklaste starten:

  1. Hämta loggarna. Klona lm_understand-logs-repot. Varje experimentmapp har en README som mappar varje siffra i inlägget till filen den kommer från.

  2. Välj ett verktygsfritt experiment. Experiment 1, 2, 4 och 5 gav Astra inga verktyg, så en enda prompt reproducerar varje körning. I Experiment 1 har varje körmapp en prompt.txt med nätverksbeskrivningen, frågan och alla 17 253 vikter som text.

  3. Skicka det på samma sätt som författarna gjorde. De anropade gpt-6-astra via Codex CLI (codex exec, prompt på stdin) med varje inbyggt verktyg avstängt, med hög resonemangsinsats för Experiment 1. Resten av konfigurationen finns i harness/codex_config.toml, men dess standarder är gpt-6-luna på medium insats, så ange modell och resonemangsinsats vid varje anrop, som författarna gjorde.

  4. Jämför svaren. Varje körmapp innehåller också Astras answer.md, och eval/ innehåller poängsättningen och facit.

En körning använde cirka 73 700 indata-token och under 2 000 utdata-token, så med API:ets 10 och 50 USD per miljon token kostar en återskapning under 1 USD. Python-sandlådeförsöken (3, 6, 7 och 8) behöver författarnas harness/sandbox.py och många fler vändor, så planera budget därefter.

Om du hellre inte vill köra något finns den redigerade Qwen3.5-0.8B på Hugging Face under Apache-2.0, med hasharna för de 2 ändrade tensorerna på dess model card. Hugging Face Space låter dig skriva in ett problem och se basmodellen loopa medan den redigerade löser det.

Avslutande tankar

Programmering i viktutrymmet visar att en framkants-LLM kan läsa och redigera neurala nätverks vikter genom resonemang, åtminstone för små nätverk och enskilda, lokala fel. Qwen-fixen är resultatet som kommer att få uppmärksamhet, och den förtjänar det, delvis eftersom Hugging Face reproducerade den inom en dag.

Jag är mer försiktig med de större påståendena. En modell, små nätverk och inget riktmärke är en tunn bas för författarnas inramning att ”våra neurala nätverks vikter snart kommer att optimeras nativt av LLM:er.” Samtidigt rapporteras misslyckandena lika noggrant som framgångarna, och det får mig att ta framgångarna på större allvar.

Om du vill förstå transformer-internalsen som dessa redigeringar riktar sig mot rekommenderar jag vår utbildningsväg Developing Large Language Models.

FAQs

Vad är programmering i viktutrymmet?

Programmering i viktutrymmet är en metod där en allmän LLM läser ett neuralt nätverks råa vikter och redigerar eller skriver dem direkt utifrån ett mål i naturligt språk, utan gradientnedstigning eller träningsslinga. Begreppet kommer från ett blogginlägg i november 2026 av MIT CSAIL-forskarna Rikiya Takehi, Jayden Teoh, Alex Zhang och Omar Khattab, som testade det med GPT-6 Astra.

Kan LLM:er redigera neurala nätverks vikter direkt?

Ja, åtminstone för små nätverk. I MIT CSAIL:s experiment redigerade GPT-6 Astra 3,5% av vikterna i en misslyckad styrpolicy och tog den från 0% till 100% framgång, och redigerade 0,016% av Qwen3.5-0.8B:s vikter för att minska dess tänkeslingor, med svar som nådde tokengränsen fallande från 93% till 33%. Den misslyckades när det inte fanns något enskilt fel att ta bort, som med Gemma 3 270M:s matematikfel.

Hur förbättrade GPT-6 Astra Qwen3.5-0.8B utan träning?

Astra spårade Qwen3.5-0.8B:s tänkeslingor till en riktning skriven av MLP:erna i lager 15 och 19 och subtraherade den sedan från 64 utgångskolumner i vardera, vilket ändrade 131 072 vikter. Med 50 framåtpass på övningsuppgifter steg MATH-500 från 7,9% till 48,1%, GSM8K från 13,8% till 67,1% och IFEval från 21,0% till 62,3%.

Är programmering i viktutrymmet en ersättning för finjustering?

Inte än. Det fungerade för ett enskilt, lokalt fel som Qwens tänkeslingor, men det kunde inte lägga till förmågor som en modell saknade, och det har bara testats med en LLM på nätverk upp till 0,8 miljarder vikter. Tills vidare är finjustering det praktiska sättet att ändra en modells beteende.

Kan jag prova programmering i viktutrymmet själv?

Du kan inspektera och testa resultaten utan tillgång till GPT-6 Astra. Forskarna publicerade fullständiga experimentloggar på GitHub, den redigerade Qwen3.5-0.8B finns på Hugging Face under Apache-2.0, och ett Hugging Face Space låter dig jämföra bas- och redigerade modeller på dina egna problem.

Tom Farnschläder

Författare

Tom Farnschläder

Tom är redaktör inom data science på DataCamp. Han skriver och redigerar AI-handledningar, jämför nya LLM-släpp och bygger AI-drivna arbetsflöden. Tidigare arbetade han med data science på Deutsche Telekom. Utanför jobbet förutspår han fotbollsmatcher med maskininlärning.

Ämnen