权重空间编程:前沿 LLM 能直接读写神经网络权重 · 干货攻略
- 链接: https://x.com/swyx/status/2117341332645826945
- 分类: x-tips
- 来源: X @swyx
- 作者: Jay
- 更新: 2026-11-03
- 仓库: https://github.com/RikiyaT/lm_understand-logs
这是什么
原帖是 @swyx 转发的一篇论文式博客截图,正文只有一句 "lmaoooo",配一张 MIT CSAIL 研究截图。截图内容是 2026 年 11 月 2 日发布的博客文章 《Sparks of Weight-Space Programming: LLMs can natively read & write neural network weights》,作者 Rikiya Takehi、Jayden Teoh、Alex Zhang、Omar Khattab(均属 MIT CSAIL)。
核心命题是一个新范式:Weight-Space Programming(权重空间编程)——通用大模型不经过优化器、不做梯度下降,直接以自然语言目标为准,把神经网络的原始权重当"可读可改的代码"来读和写。
配套发布的实验日志仓库 RikiyaT/lm_understand-logs 公开了每次实验的全部过程:发给模型的全部 prompt、模型返回内容(含推理摘要)、它跑过的每一段代码及其输出,以及每个论文数字背后的评测脚本。
原帖同时引用了 @latentspacepod 的一期播客(Recursive Language Models 主题),属于转发上下文,不是本篇技术内容。技术主体只有上面这篇博客。
核验来源
| 来源 | 用途 |
|---|---|
| https://x.com/swyx/status/2117341332645826945 | 原帖("lmaoooo" + 论文截图) |
| https://rikiyat.github.io/blog/weight-space-programming | 一手博客:全部数字、实验设置、限制条件 |
| https://github.com/RikiyaT/lm_understand-logs | 实验日志与 harness 代码(harness/codex_config.toml、harness/sandbox.py、harness/instructions.md) |
| https://huggingface.co/RikiyaT/Qwen3.5-0.8B-weight-space-programming | 实验 8 编辑后的权重模型 |
| https://huggingface.co/spaces/akhaliq/weight-space-programming-demo | Ahsen Khaliq 重建的在线 demo |
截图上的 TL;DR 与博客原文逐字一致,博客数字与日志仓库 README 描述一致,两处独立来源对得上。关键数字均取自博客正文,并已用结构参数反算校验:
- 实验 1 网络 MLP
500→32→32→5(tanh)= 16032 + 1056 + 165 = 17,253 权重 ✓ - 实验 4 Kinetix actor
679→128→(128×5)→16= 87040 + 82560 + 2064 = 171,664 权重 ✓ - 实验 6 Go 网络
243→512×6→82= 124928 + 1313280 + 42066 = 1,480,274 权重 ✓ - 实验 8 改动量:2 层 × 64 输出列 × 1024 = 131,072 权重,占 0.8B 的 0.016% ✓
未核验项:Hugging Face 上的模型权重与 demo 空间页面内容本次未抓取,仅记录链接。博客声明该 demo 由 Ahsen Khaliq 依据日志重建并重跑评测,此说法未由我独立验证。
上手步骤
日志仓库 README 已给出完整的运行方式,照做即可复现:
- 拉取日志仓库
bash
git clone https://github.com/RikiyaT/lm_understand-logs
-
模型与运行形态:文中代号 "Astra" 即 OpenAI 的
gpt-6-astra。每个 turn 是一次 Codex CLI 调用——codex exec,续接用codex exec resume <thread>,prompt 从 stdin 灌入。推理档位按实验区分并记录在每 turn 的run.json:实验 1/2/4 用high,实验 3/5/6/7 用xhigh,实验 8 用max。 -
关闭模型自带工具:shell、文件编辑、web 搜索、看图、子 agent、插件全部关掉,配置见
harness/codex_config.toml,系统指令只有一行中性描述harness/instructions.md。全部 1,125 个 turn 都做过审计,确认 tool-free(run.json的audit.tool_free)。 -
需要跑代码时(实验 3/6/7/8):模型每 turn 写一个 Python 块,交给作者自己的沙箱
harness/sandbox.py执行——bubblewrap 隔离、无网络、工作目录跨 run 保留、带超时;打印输出回传为下一条消息。代码与输出记录在tool_calls.jsonl。实验 6/8 里"forward pass"是唯一的观测手段,沙箱里不许跑网络、不许训练、不许搜索。 -
对照表读日志:
exp1_which_game/…exp8_math/各目录独立对应论文的一张表或一行,每个目录的 README 说明"哪次 run 对应哪个数字、哪个文件是这个数字的来源"。评测脚本在eval/,模型读写的网络在networks/。 -
复算实验 8 的编辑:编辑以精确 diff 形式对公开基座权重给出,并附应用脚本。
实测曲线(采样固定为 temperature 0.6、top-p 0.95、top-k 20、presence penalty 1.5,thinking on,上限 32,768 token):
| Qwen3.5-0.8B | MATH-500 (%) | GSM8K (%) | IFEval (%) | 撞 token 上限 (%) |
|---|---|---|---|---|
| Base | 7.9 | 13.8 | 21.0 | 93.0 |
| 编辑,10 次 forward pass | 12.3 | 25.7 | 49.0 | 87.2 |
| 编辑,25 次 forward pass | 14.1 | 25.1 | 39.9 | 86.4 |
| 编辑,50 次 forward pass | 48.1 | 67.1 | 62.3 | 33.1 |
- 推理链要点:Astra 先诊断出 Qwen3.5-0.8B 的"思维循环"源自第 15、19 层 MLP 写下的某一个方向,然后从这两层各 64 个输出列(合计 131,072 权重)里减去该方向——效果类似"从权重里删掉一个行为方向"。loops 不是数学专属,所以指令跟随能力顺带从 21.0% 涨到 62.3%(约 3 倍)。
适用边界
能力覆盖(8 组实验)
- 读权重:从 PPO 训练的 4 个网格游戏策略(Breakout / Pong / Pac-Man / Freeway)权重里认出训练的是哪个游戏;从不带输入输出层的 4 层 transformer 中间块(7.16M 参数)认出训练语言(Python / romaji / English),并准确定位全部 induction head(ground truth 是 2.1/3.1/3.5、3.3、3.1,一个不多一个不少);从 DDPM 权重(23,824 权重)认出生成的是圆/方/三角。
- 改权重:修好 Kinetix 斜坡关卡里永远过不去的赛车策略——单次尝试、改动 3.5% 权重,1,024 局全过(原本 256 局全败)。
- 从零写权重:MinAtar 三个游戏,网络
600→32→32→6,全部权重从 0 开始、零训练零梯度零数据,Astra 写出的网络在 Breakout 得 517.4 分,碾压 PPO 100M 步的 15.8 分和 500M 步的 25.3 分;Seaquest 53.1(Astra)vs 5.6(100M)/88.9(500M);Asterix 53.2 vs 25.8/55.2。 - 放大到 150 万参数:9×9 围棋,
243→512×6→82,允许 0–50 次 forward pass。0 次 forward pass 时写出的 336 行 Python 已能赢过两个小 PPO 网络的一半以上对局;50 次时击败等宽、训练了 2000 万局的 PPO 网络。
明确的失败与限制
- 实验 7 纯权重读取失败:两份同样微调、一份诚实一份谄媚的 Gemma 3 270M,光看权重 A 四次全都没认对——它能列出大量权重空间差异,但无法映射到行为差异。放宽到"只许看注意力模式、且文本由自己写"后,三对全部识别成功(谄媚模型 head 10.2 看用户答案 85.7%,诚实模型看问题数字 94.3%)。
- 修 loops ≠ 提升数学能力:在本身不循环的 Gemma 3 270M 上,Astra 找不到可关掉的单一组件,MATH-500 最好从 6.8% 到 7.7%,连 Astra 自己都报告"该增益不成立"。结论是:编辑权重能移除遮蔽能力的障碍,但加不出模型本来没有的能力。
- 早期结果受上下文长度和 harness 效率限制;作者称正在建设统一的 benchmark 与 harness,尚未发布。
- 所有"读权重"实验的网络都很小(最大 0.8B 语言模型 + 150 万权重 Go 网络),大规模未验证。
不要外推的地方
- 博客标题用 "Sparks"(火星),作者自述是 "very early results",不是可复现的生产流程。
- GPT-6 Astra 的权重读写能力究竟有多少来自模型本身、多少来自"关掉工具 + 给 Python 沙箱 + 给 forward pass 预算"的编排,日志仓库只能让人看到编排方式,看不到闭源模型的内部。
- 论文未涉及后门审计、能力注入、模型合并等"下个阶段"设想的可验证证据,那一节全是展望。
给工程师的现实用法:目前最可用的是"诊断并移除一个已知的失效方向"——例如小模型的思维循环、某个坏神经元导致的行为。这类改动只动万分之几的权重、不需重训、几乎不触发灾难性遗忘。但"让模型变得更聪明"这条路目前没有证据支持。