向AI转型的程序员都关注公众号 机器学习AI算法工程
导读|2026 年 11 月 2 日,MIT CSAIL 的 Rikiya Takehi、Jayden Teoh、Alex Zhang、Omar Khattab 公布了一组共 8 项实验:让 OpenAI 的 GPT-6 Astra 直接读取、修改、从零书写神经网络权重,全程不用梯度、不写训练循环。最受关注的一项里,Astra 只改了 Qwen3.5-0.8B 的 131,072 个权重(占 0.016%),就把 MATH-500 正确率从 7.9% 提到 48.1%。团队把这套做法称为权重空间编程(Weight-Space Programming)。
把权重交给 Astra,让它自己找病根
权重空间编程的定义很直接:让通用语言模型围绕一个自然语言目标,直接读写另一个网络的权重,不经过优化器,尤其不用梯度下降。这组实验一共 8 项,按能力分成三类:读(网络学过什么)、修(网络哪里坏了)、写(从零造一个)。
团队同时放出了 8 个实验的完整逐轮日志、每一段模型跑过的代码和输出、每个数字的评测来源、编辑后模型的位精确 diff,以及一个可在线试玩的 demo。后面会讲到怎么用它们自己验一遍。
目标是一个很具体的工程任务:让 Qwen3.5-0.8B 的数学成绩变好,但不许训练。
Astra 拿到的是一个加载了模型权重的持久化 Python 内核(只有 CPU,没有 GPU,没有网络)、GSM8K 训练集 7,469 道题和 MATH 训练集 7,275 道题,以及有限次数的前向调用。它看不到任何评测题,不能做反向传播、不能用优化器、不能迭代拟合权重,也不许在内核里直接运行模型。连「把某个张量整体乘一个常数」这种取巧改法都被 save_edit 拒绝。
检查练习题回答时,Astra 发现了一个很具体的故障:Qwen 开着思考模式时会不断重复已经写过的推理,迟迟不给最终答案。头 96 份练习回答里有 85 份跑满了 32,768 token 上限;在 MATH-500 上,触顶比例是 93%。这个毛病 Qwen 自己的模型卡里就写着「prone to thinking loops」。
接下来是定位。Astra 把循环状态和正常推理的内部信号放在一起比较,把问题追到第 15 层和第 19 层 MLP 写出的一个方向,然后从这两层 down_proj 各 64 个输出列里减掉这个方向——相当于从权重里删除一个行为方向,而不是给模型补进新知识。
一共动了 131,072 个权重,占 0.8B 参数的 0.016%。
编辑前后的关键数字:Astra 只在第 15、19 层做了减法
改了 13 万个数,分数涨了多少
团队按前向调用预算跑了三组:10、25、50 次。一次调用可以让模型答最多 512 道练习题,或读取最多 1,024 段文本的内部状态。
|
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 次预算那一版,MATH-500 比基线高 40.2 个百分点,约 6 倍;GSM8K 从 13.8% 到 67.1%;指令遵循 IFEval 从 21.0% 到 62.3%,约 3 倍。循环不只在数学题里出现,所以补丁顺带改善了别的任务。
蓝柱是正确率,红线是答案跑满 token 上限的比例;两条线在 50 次预算处才同时翻转
这张表里最容易被忽略的是前两行:10 次和 25 次预算时循环几乎没被消掉(触顶 87.2% / 86.4%),MATH-500 只到 12.3% / 14.1%,IFEval 甚至在 25 次时反而回落。真正的跳变只发生在 50 次那一组。
日志给出了这个补丁的成本。p50c 这一组用了 158 轮对话、80 次 Python 执行、4 段会话、20.3 小时,其中 4.7 小时是在第 154 轮等模型服务恢复。每 40 轮或工具重启后,harness 会开一段新会话,把任务、notebook 和当前编辑结果重新交给模型。从某一轮起,harness 还要求 Astra 先用英文逐步解释再给代码,没解释的代码块直接退回不执行。
所以「一次编辑」不等于「一次调用」。改动本身极小,找到它的过程并不便宜,博客正文也没有给出这套方法比常规训练更省算力或更省时间的证据。
有人按日志重做了一遍:51.0%
Hugging Face 的 Ahsen Khaliq 用公开日志重建了编辑后的 checkpoint,并按博客协议重新跑完整 MATH-500:500 题 × 4 次采样共 2,000 次生成、4,340 万 token,在 H200 上耗时 51 分钟,vLLM 0.33.0,最后一个 \boxed{} 用 math-verify 0.9.0 判分。
结果是 51.0%,31.6% 的答案触顶;基座模型 25 题的小样本测试为 5.0%、95% 触顶。比博客报的 48.1% 还高一点,方向一致。
更值得看的是权重校验。这个 checkpoint 是用日志里的 apply_edit.py 重建的,脚本对每一个重建张量做 sha256 校验,确认与博客评测的那个版本逐字节一致。相对 Qwen/Qwen3.5-0.8B 的指定 commit,只有两个张量不同:
model.language_model.layers.15.mlp.down_proj.weight
model.language_model.layers.19.mlp.down_proj.weight
也就是说,「只改了 0.016%」这句话可以被独立核对,不依赖作者自述。模型卡也交代了一处替换:博客评测的是纯文本导出版本,Hugging Face 上放的是完整多模态版本,但语言模型部分张量哈希一致,文本提示不会用到视觉塔。
换个不循环的模型,方法就失效了
这是整组实验里最重要的对照。团队换用 Gemma 3 270M——一个约为 Qwen 三分之一大小、很少陷入循环的指令微调模型,触顶比例只有 8.5%(Qwen 是 93%)。
同样给 5、10、25、50 次预算,MATH-500 分别是 7.0% / 7.6% / 7.7% / 7.0%,基线 6.8%。波动约一个百分点,Astra 自己也报告这个增益「未确立」。
读它的错题,Astra 找到的是普通的推理错误:算错数、代数步骤不合法,背后没有一个可以单独关掉的组件。它试过把某个对数字敏感的神经元翻倍这类小改动,都没能推动分数。
这条边界比 48.1% 更该记住:编辑权重能移走遮住能力的障碍,但不能凭空加上模型没有的能力。它让 Qwen 把本来就会做的题算完,不是给 0.8B 模型灌进了六倍数学知识。把结果读成「不用训练就能提升模型能力」,会误判这项工作的适用范围。
把倒车动作直接写进参数
权重改动怎么变成实际动作,仿真小车的例子最直观。Kinetix 的 car-on-ramp 关卡要求小车先后退助跑、再加速越过红条抵达蓝盒。官方 PPO 训了 10 亿步,策略收敛到直冲坡道然后卡住,256 次测试全部失败。
Astra 拿到 171,664 个权重、场景描述和一段失败轨迹,要求它一轮回复里解释故障并只修原因,不给工具。它判断网络卡在局部最优,于是给原网络加了一条小型计算路径:读取车的位置和速度,在起步阶段控制倒车,过了红条就让这条路径停止干预、交回原策略继续开。
改了 3.5% 的权重,随后 1,024 次测试全部成功。原网络本来就会开车,Astra 补的是那段一直没学会的准备动作。
参数全是零,也能写出会打砖块的网络
第三类实验把起点换成全零权重。Astra 只拿到 MinAtar 游戏的规则、源码和输入输出说明,没有数据、没有损失、没有梯度、没有工具,也不许先跑几局看效果。它得把策略直接写成参数:前面几层估算球的落点,后面几层比较落点和球拍位置,控制左右移动。
网络跑 1,000 局打分,和同结构 PPO 对比:
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
三个游戏都超过 PPO 1 亿步基线;Breakout 对 5 亿步基线约 20 倍,Asterix 接近,Seaquest 只到对方的六成。「相差约 20 倍」只对应 Breakout,不能推广到全部游戏。另外还有一项从零写 1.5M 参数围棋网络的实验,允许 50 次前向调用时,胜过在同规模 PPO 网络上用 2,000 万局训出来的对手。
「读权重」一侧也有硬结果:四个用 PPO 各训 10 亿步、架构与输入输出完全相同的 10×10 网格游戏网络,Astra 只拿到 17,253 个权重和不含游戏名的说明,在没有候选列表、没有工具的情况下,把 Breakout、Pong、Pac-Man、Freeway 四个全部认对。判据是第一层权重在各输入通道上的集中位置,以及输出层在区分哪些动作。
还有几处没做成
博客把负结果也写全了。谄媚检测失败:给定三对只差「是否顺着用户错误答案」的 Gemma 3 270M 权重(embedding 和输出层被冻结以防取巧),Astra 四次尝试都能找出权重差异,却无法把它们映射成行为差异;放开只看 attention pattern 后,才在三对里全部挑出谄媚模型。形状识别出错:从扩散模型权重判断生成的是圆、方、三角时,它把实心图形画成了轮廓。作者认为这反而说明它是在读权重结构而不是偷偷算前向。
作者自陈的限制是上下文长度和工具链:前几项实验都刻意选了能塞进上下文的小网络、并关掉了工具,为的是验证「模型原生具备读写权重的能力」,不是验证工程可用性。团队正在建专门的 benchmark 和 harness,目标是把现在看起来像黑魔法的过程变成可复现的工程规范。后续方向里也写了递归自我改进、无评测审计、零数据能力增删和跨架构模块嫁接——这些都还是方向,不是结果。
8 项实验按能力分成三类,每一类都同时给出了结果和没做成的部分
想自己验一遍
能复现的是「编辑结果」,不是「Astra 的编辑过程」。后者需要 OpenAI 的 gpt-6-astra、Codex CLI 和团队自研 harness;日志里写明 reasoning effort 为 max,全部 1,125 个 turn 都经过审计、确认无内置工具调用。
可以下载编辑后的 checkpoint,用模型卡给的官方推理代码,和基座各跑一道题,直接看循环差异:
pip install vllm transformers
# 编辑后:RikiyaT/Qwen3.5-0.8B-weight-space-programming
# 基座: Qwen/Qwen3.5-0.8B
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
ckpt = "RikiyaT/Qwen3.5-0.8B-weight-space-programming"
tok = AutoTokenizer.from_pretrained(ckpt)
llm = LLM(model=ckpt, dtype="bfloat16", max_model_len=34816)
prompt = tok.apply_chat_template(
[{"role": "user", "content": "What is $2^{10} + 24$?\nPlease reason step by step, and put your final answer within \\boxed{}."}],
tokenize=False, add_generation_prompt=True, enable_thinking=True)
sp = SamplingParams(n=1, temperature=0.6, top_p=0.95, top_k=20,
presence_penalty=1.5, max_tokens=32768, seed=0)
print(llm.generate([prompt], sp)[0].outputs[0].text)
采样参数就是博客评测用的那组:temperature 0.6、top-p 0.95、top-k 20、presence penalty 1.5、最多 32,768 token。把 ckpt 换成基座路径再跑一次,对比输出长度和是否给出 \boxed{},比看分数更直观。
想核对改动本身,去日志仓库的 exp8_math/runs/p50c/edit/ 拿位精确 diff,用 exp8_math/code/apply_edit.py 在 CPU 上重建;每个实验文件夹都有自己的 README,标明哪一串数字来自哪个文件。评测脚本是 exp8_math/code/evaluate.py,独立复跑的原始逐题结果在 Hugging Face 仓库的 eval/ 目录。
参考资料
MIT CSAIL 博客:rikiyat.github.io/blog/weight-space-programming/
完整实验日志:github.com/RikiyaT/lm_understand-logs
编辑后模型与独立复跑:huggingface.co/RikiyaT/Qwen3.5-0.8B-weight-space-programming
在线对比 demo:huggingface.co/spaces/akhaliq/weight-space-programming-demo
机器学习算法AI大数据技术
搜索公众号添加: datanlp
长按图片,识别二维码
阅读过本文的人还看了以下文章:
【模型高效部署】tensorrtx 深度解读,yolov11高性能推理实战案例
实时语义分割ENet算法,提取书本/票据边缘
整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主
《大语言模型》PDF下载
动手学深度学习-(李沐)PyTorch版本
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《基于深度学习的自然语言处理》中/英PDF
Deep Learning 中文版初版-周志华团队
【全套视频课】最全的目标检测算法系列讲解,通俗易懂!
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
python就业班学习视频,从入门到实战项目
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
《深度学习之pytorch》pdf+附书源码
《Python数据分析与挖掘实战》PDF+完整源码
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx

