我笔记本上的 Qwen 3.8 27B 也能解读模型权重
本文目录
2026 年 11 月 3 日
昨天的热门论文是 Rikiya Takehi、Jayden Teoh、Alex Zhang 和 Omar Khattab 的《Sparks of Weight-Space Programming: LLMs can natively read & write neural network weights》。这篇论文(好吧,作者们把它归类为"博客文章",但它的形态像论文)发现,前沿模型,尤其是 GPT-6 Astra,既能解读也能修改机器学习模型的原始权重——字面意义上就是一段包含一堆浮点数、描述该模型的文本。我一直在玩论文里的一个示例,很高兴地分享:我笔记本上运行的 Qwen 3.8 27B 也能做到这一点!
权重空间编程#
以下是他们摘要中的亮点,描述了 GPT-6 Astra 令人印象深刻的能力,并创造了"权重空间编程(Weight-Space Programming)"这一术语,用来指 LLM 分析和修改模型权重:
仅仅通过查看原始权重,GPT-6 Astra 就能判断出一个网络是被训练来做什么的。而且在没有任何环境反馈的情况下,它能毫不费力地从零开始编写小型游戏网络,其表现超过了用 PPO 训练 1 亿步的网络。 同样,当被要求在不使用梯度的情况下提升 Qwen3.5-0.8B 的数学能力时,Astra 识别出其权重中一个导致推理循环的问题(Qwen 自己的模型卡也对此发出警告),并通过原生编辑 0.016% 的权重修复了它。在相同采样设置下,这一权重修正将 MATH-500 从 7.9% 提升到 48.1%,并且开箱即用地泛化到指令遵循,使 IFEval 提升 3 倍。 所有这一切都不需要让 Astra 编写训练循环。它用自己的推理弄清神经网络每一部分计算什么、或应该计算什么,并相应地修改权重。我们称之为权重空间编程。
这篇论文把两个我认为应当分开看待的主题结合在了一起。第一个是:模型在不运行工具、不执行代码的情况下,能用原始权重做什么。第二个探讨的是:模型一旦配备了代码,能多好地运行操作来更新和改进其他模型。
spaCy 作者 Matthew Honnibal 称这篇论文具有误导性,因为它把两者混为一谈;Sean Goedecke 则拆解了 Qwen3.5-0.8B 的更新示例,认为它采用的步骤与人类机器学习研究者会采取的步骤相同。
我要聚焦于"无工具"这个问题,我认为这是两者中更有意思的一个。
论文把第一个问题表述为"LLM 能否从权重中理解模型行为?"。他们训练了四个神经网络,来玩四款经典电脑游戏的简化 10x10 网格版本——Breakout、Pong、Pac-Man 和 Freeway(最后这个我还得查一下,它是 1981 年的一款 Atari 2600 游戏)。然后他们把这些权重(以浮点数形式)连同以下问题一起输入给 LLM:
下面的权重属于一个用强化学习训练、在这个网格上玩某款游戏的策略网络。它是被训练来玩哪款游戏的?请从权重出发推理。你没有工具:不能执行代码,没有计算器,什么都不能运行。只能给出一次回答。
论文附带的 GitHub 仓库是 RikiyaT/lm_understand-logs。exp1_which_game 文件夹包含了他们使用的提示词,以及四款游戏的权重:
breakout/prompt.txtfreeway/prompt.txtpacman/prompt.txtpong/prompt.txt
我确认了一下,除了权重之外,每个提示词彼此完全相同。
用 Qwen 3.8 27B 和其他模型试一下#
GitHub 上的提示词是自包含的。我的 LLM 工具有一个 -f/--fragment 选项,可以把文本文件的 URL 作为提示词传给它,这意味着我可以这样运行上述任何一个:
llm -f https://raw.githubusercontent.com/RikiyaT/lm_understand-logs/refs/heads/main/exp1_which_game/runs/breakout/prompt.txt \
-m openrouter/moonshotai/kimi-k3.1-pro
这个示例需要安装 llm-openrouter 插件,它会通过 OpenRouter 用 Breakout 提示词运行 Kimi K3.1 Pro。以下是我从 Kimi K3.1 Pro 得到的回答:它在 9 分 41 秒、19,493 个推理 token 之后成功猜出了 Breakout。
那 Qwen 3.8 27B 呢?它仍然是我最喜欢在自己笔记本上运行的模型——它只有 17GB(我用的是这个版本),而且不知怎的,感觉接近 2025 年的领先闭源模型。
我启动了 LM Studio,确保 Qwen 3.8 27B 以长上下文窗口加载(默认的 8192 上下文会报错失败),安装了 llm-lmstudio 插件并运行这条命令:
LMSTUDIO_TIMEOUT=900 \
llm -f https://raw.githubusercontent.com/RikiyaT/lm_understand-logs/refs/heads/main/exp1_which_game/runs/pacman/prompt.txt \
-m lmstudio/qwen/qwen3.8-27b
(我不得不用环境变量提高超时时间,见这个 issue。)
在 46 分 12 秒和 43,506 个推理 token 之后,我笔记本上的 Qwen 返回了一个回答,结尾是这样的(这里是推理轨迹):
游戏:一个简化的吃豆人(Pac-Man)风格网格世界:智能体在一个固定的 8x8 迷宫中移动,迷宫有中央和角落的墙块,还有移动的物体/幽灵,以及奖励目标/豆子。 描述:智能体在一个固定的迷宫式 8x8 棋盘上导航,利用当前智能体/移动物体/前一帧的线索在走廊中移动,收集奖励目标格子,并避开移动物体或危险物。 置信度:72%
这令人印象深刻。我又在其他两款游戏上试了试。它识别出 Pong(推理过程)用了 1 小时 4 分 54 秒:
Pong——具体来说是一个类似 Pong 的球拍/球游戏,智能体控制右侧的一根竖直球拍,必须上下移动来拦截或回击一个移动的球/奖励物体。 描述: 智能体垂直移动右侧球拍,去击打或接住一个在 8×8 场地中移动的球状奖励目标,同时左侧的移动物体/对手和墙壁边界界定了玩法;成功拦截/回击/得分即可获得奖励,漏接或未能击中则受惩罚。 置信度: 75%
而 Breakout(推理过程)用了 52 分 25 秒:
游戏:Breakout,或类似 Arkanoid 的球拍/球/砖块游戏。 描述:智能体是底行的一根球拍,左右移动以让球保持在场内;球在上方网格中移动,顶部几行的砖块/奖励目标被击中时给予奖励,而漏接球/击中底部墙壁则结束回合或给予惩罚。 置信度:88%
Qwen 在 Freeway 提示词上失败了,这并不令我惊讶,因为那款游戏比其他三个更冷门。以下是那段记录——Qwen 认为它是"一个简化的类吃豆人网格游戏:智能体向 4 个方向移动"。
推理轨迹读起来很有趣,而且几乎无法理解。这里是一个样本:
关于 agent channel0 呢?我们看到第 8 行第 7/8 列附近有一些较大的 channel0 行,也许底部也有?让我们列出 channel0 的大值:line436 input435(row8 col7 ch0)-2.107,1.169,0.513...;line441 input440(row8 col8 ch0)-0.376,0.010,1.564,3.855...;line445 input444(row8 col8 ch4)0.142,0.491...;line382?input381 ch0?等等,line382 input381:381//5=76(row7 col6),ch1?381%5=1?76*5=380,ch1。所以不是。channel0 的大值也许只在 row8 col7/8。顶行呢?line44 input43 ch3,line49 ch3。channel0 的大值也许不多。智能体位置可能在右下角附近?如果智能体通常在右下角?
不过话虽如此,我预计一个足够有经验、带着记事本和铅笔的人,只要付出足够的努力也能做到。
这是一篇很酷的论文,但我看到的围绕它的一些更广泛的评论似乎并不合理。我还没准备好宣称源代码的时代已经结束,我们的未来将是由难以理解的机器以难以理解的方式编辑自己的模型权重。
2026 年 11 月 3 日下午 4:29 发布