Program-as-Weights (PAW) 是一种新的编程方法:你用大白话描述一个函数,它就会用一个40亿参数的编译器把这个描述编译成一个很小的神经程序,然后交给一个6亿参数的解释器在本地运行。效果跟直接调用320亿参数的大模型差不多,但内存占用只有它的五十分之一。 这个可信吗

32 次阅读

本文最后更新于 2026年8月22日。

这个概念在学术和工程原理上是完全可信且合理的,并非“空头支票”。来自哈佛、康奈尔与滑铁卢大学的研究团队发表了论文《Program-as-Weights: A Programming Paradigm for Fuzzy Functions》,并在 GitHub 与 Hugging Face 开源了相关成果。

这项技术的核心逻辑不是“凭空让小模型变聪明”,而是改变了大模型的使用范式。

一、 它是怎么做到“50分之一内存”的?

传统的做法是:每次执行任务,都把你的要求(Prompt)和数据一起塞给一个 320 亿(32B)参数的大模型,这需要消耗极大的算力和显存。

PAW 的解法是“编译与运行分离”:

  1. 编译阶段(只做一次,可放在云端): 40 亿参数(4B)的“编译器”模型读取你的自然语言描述,将其编译生成一个极小的神经网络插件(通常是一个十几 MB 到二十几 MB 的 LoRA 权重)。

  2. 运行阶段(本地无限次重复使用): 你的本地设备上只部署一个 6 亿参数(0.6B,如 Qwen3-0.6B)的冻结“解释器”模型。当需要运行这个函数时,加载刚刚生成的 LoRA 权重,本地运行。

因为本地常驻的只有一个 0.6B 的小模型加上微小的权重文件,所以相比于部署一个 32B 的大模型,内存占用自然能暴降到约 1/50(MacBook M3 上实测约 30 tokens/s)。

二、 性能真的能媲美 32B 大模型吗?

论文在包含 1000 万样本的数据集 FuzzyBench(涵盖分类、语义重排、文本解析、工具调用等任务)上进行了测试,0.6B 解释器加载 PAW 权重后,准确率确实达到甚至略微超越了直接 Prompt 32B 大模型的水平。

为什么小模型加了权重就能“打”大模型?

  • 任务聚焦: 32B 模型是一个“全才”,而 PAW 生成的权重把 0.6B 小模型瞬间塑造成了一个针对特定任务的“极客单项冠军”。

  • 参数效率: 通过 Hypernetwork(超网络)或 LoRA 生成技术,将泛化推理的成本提前收割在编译期,运行期只需执行确定性的领域推理。

三、 局限性与现实约束

虽然原理可信,但在实际落地时需要注意它的适用边界:

  • 仅适用于固定/高频的“模糊函数” (Fuzzy Functions): 比如日志分类、意图提取、结构化 JSON 修复、特定格式解析等。如果你的任务是需要强大常识与逻辑链的多轮开放式对话,PAW 无法替代大模型。

  • 编译需要时间: 第一次定义函数时,依然需要经过 4B 编译器的计算(大约需要几秒到十几秒),它适合“一次编译、调用万次”的开发场景。

  • 边界条件依赖数据集: 编译器(4B)的效果很大程度上取决于它在 1000 万级数据集 FuzzyBench 上的泛化能力。如果遇到极其生僻、跨度极大的领域指令,编译出来的 LoRA 效果可能会打折扣。

如果你想了解这一范式在实际落地中的细节和推理机制,可以参考这个关于 PAW 论文的详细拆解视频:PAW: Compiling Tasks into Local LLM Weights,它深入讲解了如何通过将大模型任务编译为本地轻量级权重来降低推理成本。···