Command Palette
Search for a command to run...
训练即编译:将自然语言规约转化为本地神经函数
训练即编译:将自然语言规约转化为本地神经函数
Yuntian Deng Pengyu Nie Stuart Shieber
摘要
许多重复出现的文本函数易于描述却难以用规则实现,而对每个输入都调用大型远程模型则会带来重复成本、延迟和对服务商的依赖。我们提出“训练即编译”,它将自然语言规约转化为可复用的神经函数。在编译阶段,教师模型生成任务特定的示例,用于训练一个紧凑解释器的小型适配器。生成的函数无需教师模型即可运行,并能像普通软件一样被存储、版本化和组合。在 FuzzyBench-Hard 子集上(Program-as-Weights 快速编译器在该子集上未产生任何精确匹配),“训练即编译”达到了 83.6% 的语义准确率。这一更高的准确率伴随着更高的编译时间成本:约一分钟,而快速编译器仅需数秒。我们将该编译器部署在一个公开的交互式服务中,并在一个多站点网站助手、一个语言控制的 3D 虚拟形象以及一个双向英语–Claudish 翻译器中展示了编译得到的函数。
一句话总结
滑铁卢大学和哈佛大学的研究人员提出了 compile by training,该方法通过在教师模型生成的示例上训练一个小型适配器,将自然语言规范转换为可复用的神经函数,在 FuzzyBench-Hard 上实现了 83.6% 的语义准确率,并支持离线组合函数,用于网站助手和语言控制虚拟形象。
核心贡献
- compile by training 通过使用教师模型合成任务特定示例,并在一个紧凑的冻结解释器上微调 LoRA 适配器,将自然语言函数规范编译为可复用的神经程序。
- 在 FuzzyBench-Hard 上,之前的快速编译器无法产生精确匹配,而 compile by training 以大约一分钟的编译成本达到了 83.6% 的语义准确率。
- 该编译器已部署在公开的交互式服务中,编译后的函数在跨站点网站助手、语言控制的 3D 虚拟形象以及双向英语-Claudish 翻译器中进行了演示。
引言
许多现实世界的文本处理任务,如邮件分类或消息过滤,处于一个困难的中间地带:它们对于传统规则来说过于模糊,但又过于狭窄和频繁,不值得为每个输入调用大型远程模型。作者在 Program-as-Weights (PAW) 的基础上进行构建,PAW 引入了一种摊销编译器,通过单次前向传播预测紧凑的神经函数。虽然速度快,但该方法每个函数花费固定的计算量,并且在更困难的规范上经常失败。关键贡献是 compile by training,它将适配视为构建步骤。开发者编写自然语言规范,教师模型生成示例行为,然后梯度下降从摊销预测开始,为共享解释器微调 LoRA 适配器。这种分钟级的编译在保持相同轻量级运行时接口的同时,显著提高了准确率,使神经函数能够像普通软件一样进行版本控制、缓存和组合。
数据集
作者使用一个或多个教师模型,从自然语言规范 s 合成任务特定数据集 Ds。该数据集由输入-输出对 {(xi,yi)} 组成,用于说明所需的映射,并且针对每个规范按需生成。
-
组成与来源
- 每个示例都是一个 (x,y) 对,由解释规范的教师模型生成。
- 教师模型通过结构化的 JSON 请求/响应格式运行,能够自动接入训练流水线。
- 公开服务结合了一个成本较低的教师模型(提供大部分示例)和一个更大的教师模型,后者提供补充监督。
-
子集细节与过滤
- 没有定义固定的子集;数据集针对每个规范创建。
- 编译器验证每个教师响应,并在示例被接受用于训练之前拒绝格式错误或不完整的批次。
- 论文未报告预定的数据集大小;示例数量取决于规范和教师输出。
-
在模型中的使用
- 接受的示例直接流入训练流水线,将规范“编译”为模型。
- 整个验证集 Ds 用于训练;未提及明确的训练/验证划分或混合比例。
-
处理与元数据
- 未应用裁剪或复杂的预处理。数据是原始的输入-输出文本对。
- 元数据极少,仅包含经过验证的 JSON 结构,将每个输入与其预期输出配对。
方法
作者提出了一个将神经函数的构建与执行分离的系统。开发者用自然语言描述所需的行为,然后将其编译为可复用的程序。该程序可以在新输入上重复调用,而无需进一步调用教师模型。形式上,该系统公开了以下接口:
ps=Compile(s),y^=Run(ps,x),其中 s 是自然语言函数规范,ps 是编译后的程序,x 是新输入,y^ 是输出。一个共享的冻结语言模型充当解释器,而每个编译后的程序提供适配器和提示,以对其进行特化。
用户工作流包括三个阶段:用自然语言指定文本到文本函数,提交构建任务以监控训练进度,以及通过 SDK 在新输入上调用完成的程序。编译产物打包了规范以及特化共享解释器所需的组件,使其能够存储、版本化和复用。
编译过程通过两个主要阶段将自然语言规范转换为可复用的神经程序。首先,教师模型合成所需函数的示例。由于单独的规范缺乏足够的标注示例,系统使用一个或多个教师模型生成任务特定数据集:
Ds={(xi,yi)}i=1n∼T(s),其中每对示例说明了从输入 xi 到输出 yi 的映射。教师请求使用结构化的 JSON 格式,编译器验证每个响应,在训练前拒绝格式错误的批次。
为避免为每个规范训练单独完整模型的高昂成本,所有程序共享一个冻结的 Qwen3-0.6B 解释器。每个函数由一个轻量级 LoRA 适配器和一个运行时支架表示,该支架是编译器生成的提示模板,将规范编码为结构化指令。编译器提供初始适配器参数 θs(0) 和支架 rs,然后通过最小化以下目标,使用合成数据集进行优化:
L(θs)=(x,y)∈Ds∑−logpθs(y∣rs(x)).优化后,编译器将适配器 θs、支架 rs、原始规范和解释器元数据打包到程序 ps 中。
为了使编译过程能够交互式使用,系统缩短了关键路径,并允许用户在编译进行时继续工作。在顺序流水线中,编译器会等待所有教师生成的示例完成后才开始优化,导致 GPU 空闲。相反,部署的流式编译路径同时启动教师请求、模型加载和训练。一旦第一批示例可用,训练就开始,只有在追上合成速度时才会阻塞。
服务架构将任务协调与编译工作器分离。API 维护每个任务的持久记录,而共享队列将待处理任务分派给可用的 GPU 工作器。工作器在请求新示例之前检查缓存,以复用匹配的教师输出。完成的程序被写入共享产物存储,并链接回持久任务记录。
作者通过构建一个实时的双向翻译服务来展示系统能力,该服务在普通英语和 Claudish(一种独特的散文风格)之间进行翻译。他们为每个方向编写了自然语言规范。对于英语到 Claudish,规范指示程序采用特征性词汇、复合词和修辞模式。对于反向,它要求程序用直接英语重写输入,去除冗余对比。compile by training 从这些规范合成示例,并为共享解释器微调每个方向一个适配器。
生成的程序驱动着实时服务,允许用户来回翻译文本。两个程序都可以下载并在本地运行。
实验
评估在 FuzzyBench-Hard 上使用语义精确匹配指标 (LEM),在该基准上精确匹配编译器会失败。训练编译器显著提高了正确性,尽管编译时间更长,但仍支持交互式使用。监督质量和数据规模进一步提升了准确率,而部署的应用表明,编译后的函数可以组合用于模糊决策,如网站辅助、动作生成和风格翻译等任务。
将较强的教师模型 (GPT-5.5) 与较弱的模型 (GPT-5.4-mini) 以 2:1 的比例混合,相比单独使用较弱模型,显著提高了平均 LEM。在数据规模扫描中,将唯一训练对从 1440 增加到 7200 带来了适度的整体改进,并在 2400 和 3600 对时出现平台期,两者产生相同的平均 LEM。GPT-5.4-mini 和 GPT-5.5 监督的 2:1 混合,相比单独使用 GPT-5.4-mini,平均 LEM 提高了 0.105。将唯一训练对从 1440 扩展到 7200,平均 LEM 增加了 0.045,但在 2400 和 3600 对之间没有观察到增益。
实验评估了将较强教师模型的监督与较弱模型混合以及扩展训练数据对平均 LEM 的影响。与单独使用较弱模型相比,较强和较弱教师模型的 2:1 混合显著提升了性能。增加唯一训练对的数量只带来适度的整体增益并出现平台期,在中等数据集大小之后没有进一步改进。