当权重变成代码:PAW 如何用 0.6B 模型打败 32B 大模型

Neural Compilation LoRA Fuzzy Functions Small Model Future
arXiv: 2607.02512 · Waterloo / Cornell / Harvard
核心 insight:不把大模型当每次调用的求解器,而是一次性调用让它建造工具——输出一个小到可以本地运行、快到能离线执行的"神经二进制"。0.6B + PAW 的精度超过 Qwen3-32B 直接调用,推理内存只有 1/50。
73.78%
0.6B + PAW 精度
68.70%
32B 直接调用
50×
内存节省
23 MB
每个"程序"体积

你每天在调用大模型做的事,其实不该叫"编程"

判断一条日志是否紧急、修复残缺的 JSON、按意图排序搜索结果——这些任务有个共同特点:你脑子里知道该怎么做,但写不出干净的正则或规则。于是代码里越来越多地出现 gpt("extract answer", text) 这种调用:每次输入都跑一遍 32B 参数的大模型,花钱、慢、依赖网络、还不可复现。

Waterloo 和哈佛团队在这篇论文里问了一个更根本的问题:能不能把这些"模糊函数"编译一次、本地运行?答案就是 PAW(Program-as-Weights)——一个全新的编程范式。

编译一次,运行无数次

PAW Overview
Figure 1: PAW 范式概览。上方:云端编译——自然语言描述输入神经编译器,输出神经程序。下方:本地运行——小型冻结解释器加载编译产物,像普通函数一样执行。

PAW 把传统编程的"编译-运行"二分法搬到了神经网络世界:

翻译成人话:你写"判断邮件是否紧急",编译器给你一个 23MB 的文件,之后每次判断邮件都不需要联网,0.6B 小模型就能搞定。

Text-to-LoRA Architecture
Figure 2: Text-to-LoRA 实例化架构。训练好的 LoRA 编译器读取函数规格和伪程序,输出注入解释器的低秩适配权重。

0.6B 打败 32B:靠的不是魔法,是架构

PAW 的程序是混合体——离散和连续两部分:

离散部分的作用被鲁棒性实验完美验证了。当用户规格有拼写错误时,带伪程序的 PAW 只下降 1.6 分,跳过伪程序直接用原始规格则下降 4.5 分——编译器在编译阶段就把噪声过滤掉了,解释器看到的是干净输入。

部署数据:430MB 跑出 30 tokens/s

配置基座大小适配器精度
PyTorch bf161515 MB65.80%
Q6_K + Q4_0 LoRA623 MB23 MB65.75%
Q4_K_M + Q4_0 LoRA484 MB23 MB64.53%
IQ4_XS + Q4_0 LoRA430 MB23 MB64.62%

在 MacBook M3 上,量化后的系统跑 31.6 tokens/s,冷启动 0.48 秒。430MB 共享基座 + 每个程序 23MB——比很多 npm 包都小。还有一条 GPT-2 124M 的路径,完全能在浏览器 WebAssembly 里跑。

五个真实场景 + 多模态

论文给了五个端到端 case study:日志分流、意图分类、模糊搜索重排、Agent 工具调用管线(ToolCall-15 达 93%)、多语言猜词游戏。

更优雅的是,PAW 的编译器-解释器分离支持多模态扩展:解释器不用改,只换编译器——换成 Qwen3-VL-4B 后,同一个 0.6B 文字解释器就能处理图像条件任务。

PAW Program Library
Figure 19: 编译后的 PAW 程序库。三个自然语言规格各自编译成独立神经程序,由同一个设备端解释器统一运行——"一个运行时,多个程序"。

本质:从"每次求解"到"一次建造"

PAW 最深层的 insight 是重新定义了基础模型的用途。传统用法是 per-input solver——每来一个输入,调一次大模型。PAW 把大模型变成 tool builder——只在编译时调用一次,产出一个小而可复用的"神经二进制",之后每次调用廉价且离线。

这和传统编程的类比非常精确:编译器只在构建时运行,编译出的程序可以被调用无数次。PAW 做的,是把"程序"的形式从符号代码扩展到了权重空间。

10M 例子的 FuzzyBench 数据集也已开源,覆盖 800+ 类别的模糊文本任务。代码在 GitHub,demo 在 programasweights.com。