alitrack

Program-as-Weights:编译一次,本地运行

想象这样一个场景:你需要一个函数来修复损坏的 JSON,但写 if-else 覆盖不了所有边缘情况,调 LLM API 又嫌贵——一天调用几万次,token 费用比服务器还高。

Waterloo 大学联合 Cornell 和 Harvard 的研究者 7 月 2 号发了一篇论文,试图解决这个问题。他们提出的 Program-as-Weights(PAW),把大模型的角色从「每次帮你解题」变成了「一次性替你造工具」。

● ● ●

怎么工作

你只需要用大白话描述函数——比如「修复损坏的 JSON:补缺失引号、删多余逗号」——一个 40 亿参数的编译器就会把这个描述编译成一个 23MB 的 LoRA 适配器文件。

之后,一个冻结的 6 亿参数解释器(Qwen3-0.6B,量化后大约 430MB)加载这个适配器,本地执行。编译只需要一次,之后每个函数调用都跑在本地,不需要联网,不需要 API key。

Image

这个设计的精髓在混合程序。每个 PAW 程序包含两部分:一段自然语言改写的伪程序(告诉解释器「我在做什么」),和一个 LoRA 权重(告诉解释器「怎么做」)。文本部分防歧义,权重部分提供精细控制。缺了哪一半效果都会打折扣。

● ● ●

效果

在团队自己发布的 FuzzyBench 基准(1000 万样本,覆盖 800 多种模糊文本任务)上:

方法Exact Match推理内存
**PAW (0.6B + LoRA)****73.78%**~430MB
Qwen3-32B 直接提示68.70%~24GB
0.6B 全量微调58.4%~430MB

一个 6 亿参数的模型,通过编译器生成的 LoRA,在模糊文本任务上超越了 320 亿参数模型,内存只用 1/50。在 MacBook M3 上跑到 30 tokens/s。

更反直觉的是:PAW 的 LoRA 不是普通的 LoRA 微调。同样是 0.6B 的 Qwen3 模型,全量微调只拿到 58.4%,直接加固定 LoRA 只有 52%。编译生成的 LoRA 比它们高了 15-21 个百分点——说明效果来自编译器,不是模型。

还有一条轻量路径:GPT-2 124M 做解释器,5MB 的程序文件,通过 WebAssembly 跑在浏览器里。精度低一些,但做到了完全客户端运行,数据不离开设备。

● ● ●

五个验证场景

论文拿 PAW 在五个生产场景做了验证:

  1. 01日志分诊:从海量日志中过滤关键行,事件驱动告警
  2. 02意图分类:把用户消息路由到正确的功能入口
  3. 03模糊搜索:拼写错误容忍的语义搜索重排序
  4. 04Agent 预处理:工具调用管线预处理,在 TOOLCALL-15 上达到 93%
  5. 05创意生成:多语言猜词游戏

每个场景都符合一个特征:写规则太脆,调大模型太贵,但又不是需要多步推理链的复杂任务。Paper 把这类问题称为「模糊函数」。

● ● ●

范式意义

那个 73.78% 的 benchmark 数字不是重点。重点是它背后的命题:大模型的终局,也许不是每调用一次收一次钱。

今天的 LLM 被当成运行时求解器——每次发一个 prompt,等它回答。PAW 说:能不能把大模型当编译器用?沉重的推理在编译时做完一次,日常执行只要一个便宜的小模型就够了。

如果这个范式成立,大量「高频调用、低复杂度」的 AI 推理任务,就不该按 token 计费。编译一次,运行十亿次——跟传统软件一样。

● ● ●

开源状态

模型权重、Python SDK、Browser SDK、FuzzyBench 数据集全在 GitHub 和 HuggingFace 上公开。但编译服务走云端 API,需要 PAW_API_KEY,训练代码也没有公开。

Python SDK 已经可以用了:

pip install programasweights
import programasweights as paw

fn = paw.function("email-triage")
fn("Urgent: the server is down!")  # → "immediate"

# 编译自己的函数
program = paw.compile("Fix malformed JSON")
fn = paw.function(program.id)
fn("{name: 'Alice',}")  # → '{"name":"Alice"}'

● ● ●

局限

说实话,现在还早。几个需要观望的点:

  • FuzzyBench 和 PAW 出自同一团队,独立验证还没出现
  • 编译器依赖 Qwen3 骨干,换解释器要重训
  • 只验证了单步函数,能不能扩展到多步推理未知
  • 编译产物是权重 blob,行为不可解释——不像代码可以 review

另外,解释器用的是阿里 Qwen3。自托管部署不存在数据路由问题,但如果你在政府或国防场景,要评估一下合规性。


论文: arxiv.org/abs/2607.02512

代码: github.com/programasweights

演示: programasweights.com

模型: huggingface.co/programasweights/paw-4b-qwen3-0.6b

数据集: huggingface.co/datasets/yuntian-deng/fuzzy_bench_verified