选择性左移:将测试时计算与基于难度的筛选转化为低资源代码生成的训练数据

arXiv cs.LG 论文

摘要

本文提出了一种三阶段流水线,将语法习得与算法推理解耦,以改进面向低资源编程语言(如Julia和Ballerina)的小型语言模型,在减少数据和成本的情况下实现了pass@1的显著提升。

arXiv:2607.07748v1 Announce Type: new 摘要:大型语言模型在Python和Java等高级语言上表现强劲,但在Julia等低资源编程语言(LRPLs)上性能急剧下降。改进这些语言的小型语言模型(SLMs)面临三难困境:监督微调(SFT)受数据稀缺瓶颈制约,推理时扩展对部署而言成本过高,而从零开始的强化学习几乎无优势。我们提出了一种三阶段流水线,通过将语法习得与算法推理解耦来解决这个三难困境。首先,我们将推理时计算\emph{左移}到一个离线数据合成引擎,该引擎利用迭代的编译器和测试反馈生成经过验证的训练样本。其次,我们在这些合成且经过验证的数据上微调SLM,以嵌入强语法先验。第三,我们应用基于语言无关的输入/输出测试的可验证奖励强化学习(RLVR),其中SFT先验将探索约束在远离语法错误的范围内。应用于Qwen3-8B,我们的流水线在Julia上的MultiPL-E和Agnostics LiveCodeBench中,与SOTA结果相比,pass@1分别提升了最多+7.6个百分点和+14.2个百分点。此外,该流水线仅使用了先前最优方法$\frac{1}{3}$的数据量和$\frac{1}{6}$的成本。我们进一步证明该流水线可推广到Ballerina,在MultiPL-E上达到了49.7%的Pass@1,而该语言在预训练中的表示几乎为零。消融实验证实,对于稳定训练,SFT阶段和基于执行的奖励都是必需的。
查看原文
查看缓存全文

缓存时间: 2026/07/10 06:14

# 选择性左移:将推理时计算与基于难度的数据筛选转化为低资源代码生成的训练数据来源:https://arxiv.org/html/2607.07748###### 摘要。大型语言模型在 Python 和 Java 等富资源编程语言上的代码生成表现强劲,但在 Julia 等低资源编程语言上性能急剧下降。针对这些语言改进小型语言模型面临一个三难困境:监督微调受限于数据稀缺,推理时扩展部署成本过高,而从头训练的强化学习几乎不产生优势。我们提出一个三阶段流水线,通过解耦语法习得与算法推理来解决这一三难困境。首先,我们将推理时计算“左移”到一个离线数据合成引擎,该引擎利用迭代的编译器和测试反馈生成经过验证的训练样本。其次,我们在这些合成的、经过验证的数据上微调一个小型语言模型,以嵌入强语法先验。第三,我们应用基于可验证奖励的强化学习,该学习基于与语言无关的输入/输出测试进行验证,其中 SFT 先验将探索约束在避免语法错误的范围内。应用在 Qwen3-8B 上,我们的流水线在 Julia 的 MultiPL-E 上 pass@1 提升高达 +7.6 分,在 Agnostics LiveCodeBench 上提升 +14.2 分,超越了当前最先进的结果。此外,该流水线仅使用了先前最先进结果 \(\frac{1}{3}\) 的数据和 \(\frac{1}{6}\) 的成本。我们进一步证明该流水线可推广到 Ballerina,在 MultiPL-E 上达到 49.7% 的 Pass@1 成绩,这是一种预训练表示几乎为零的语言。消融实验确认,SFT 阶段和执行基础奖励对于稳定训练都是必需的。代码生成,低资源编程语言,小型语言模型,强化学习,推理时扩展,监督微调††会议:预印本;2026;††版权:无## 1\. 引言大型语言模型在 Python 和 Java 等富资源编程语言的代码生成方面已展现出卓越能力 (Chen 等人, 2021 (https://arxiv.org/html/2607.07748#bib.bib24))。然而,当应用于低资源编程语言时,其性能急剧下降 (Cassano 等人, 2023 (https://arxiv.org/html/2607.07748#bib.bib22); Joel 等人, 2024 (https://arxiv.org/html/2607.07748#bib.bib31))。这种差异并非仅仅是学术问题:像 Julia(科学计算)和 Ballerina(云原生微服务)这样的语言在多样化的软件工程领域中扮演着关键角色。随着编程语言生态系统的持续增长,新语言不断涌现以满足专门需求,为低资源语言实现可靠的代码生成成为软件工程社区日益紧迫的挑战,这映射了低资源自然语言处理的历史轨迹 (Ranathunga 等人, 2023 (https://arxiv.org/html/2607.07748#bib.bib25))。MultiPL-E (Julia) Ag-LCB (Julia) MultiPL-E (Bal.) Ag-LCB (Bal.) 0 0 20 20 40 40 60 60 80 80 100 100 4 4 4.9 4.9 2.9 2.9 28.4 28.4 41.2 41.2 62 62 15 15 61 61 25 25 57.9 57.9 18.8 18.8 56 56 9.9 9.9 68.6 68.6 39.2 39.2 49.7 49.7 25 25 Pass@1 (%) Qwen3-8B CodeLlama-7B DeepSeek Coder Qwen3-4B-MBPP Qwen3-8B-CFO Ours (SFT) Ours (Full)图 1\. 代码生成性能综合评估 (Pass@1 %)。我们的完整流水线在所有划分上均优于 Qwen3-8B 基础模型,匹配或显著超越其他基线和先前最先进的方法。...增强面向低资源语言的小型语言模型面临着三个不同的挑战。首先,监督微调对于较小参数模型非常有效 (Giagnorio 等人, 2025 (https://arxiv.org/html/2607.07748#bib.bib33)),但其根本上受限于严重的数据稀缺。例如,像 CodeNet (Puri 等人, 2021 (https://arxiv.org/html/2607.07748#bib.bib8)) 这样的数据集仅包含 10.8k 个 Julia 样本,而 Python 则有 320 万个样本。其次,测试时扩展(例如,迭代自纠错、基于反思的优化)能有效提升性能 (Wang 等人, 2025 (https://arxiv.org/html/2607.07748#bib.bib16); Ren 等人, 2024 (https://arxiv.org/html/2607.07748#bib.bib18)),但会为实际部署引入不可接受的延迟和计算开销。第三,直接将强化学习应用于基础模型会受到稀疏奖励的困扰:例如,模型生成大量语法错误,以至于很少收到正面反馈从而学习。本文基于两个关键假设来改进面向低资源语言的小型语言模型。我们的第一个假设是:*推理时扩展和监督微调并非竞争策略,而是可以作为一个单一流水线的互补阶段*。与其在实时使用中部署计算昂贵的迭代优化,我们可以将这个计算“左移”,仅将其作为离线数据整理引擎。通过利用迭代的编译器和测试用例反馈——将编译错误或单个失败测试用例(显示预期与实际输出)反馈给模型进行自纠错——我们合成了缺失的真实数据,从而实现高质量监督微调。该流水线中的一个核心挑战是确保合成生成数据的质量:大语言模型可能会生成流畅但语义错误的代码,训练这类样本会植入有缺陷的先验。我们通过一种适应可用资源的灵活验证策略来解决这个问题。当高资源语言(例如 Python)中存在真实解时,我们可以采用*差分测试*,在共享输入上执行候选的低资源语言解和参考实现,并比较它们的输出。差分测试在可用时更受青睐,因为它能捕获固定输入/输出测试套件可能遗漏的微妙语义分歧,例如浮点精度差异、依赖于语言环境的字符串格式化,或原始测试套件未明确覆盖的边界条件下的边缘情况。当没有参考解可用时,我们回退到*输入/输出测试验证*,在一个基于问题规范导出的输入/输出测试用例套件上运行候选解。在实践中,我们的大多数种子问题来源于提供输入/输出测试套件但不提供目标低资源语言参考解的竞赛编程数据集,这使得输入/输出验证成为我们实验中的主要验证路径。这种双层方法是有意实用的:验证方法完全由给定问题可用的工件决定,不需要额外的人工标注。我们的第二个假设是:*强化学习所获得的改进取决于它获得反馈的问题的难度*。对于非常简单的问题,学不到什么东西;对于非常难的问题,模型的所有答案都将是错误的,因此模型不知道如何取得进展。具有适当难度的问题可以加速学习。例如,Pikus 等人 (Pikus 等人, 2025 (https://arxiv.org/html/2607.07748#bib.bib36)) 也观察到困难样本有助于 GRPO 学习。这个想法也可以看作是主动学习的一种变体 (Ren 等人, 2021 (https://arxiv.org/html/2607.07748#bib.bib37)),其中我们主动选择合适的数据包含在训练集中,以最大化模型输出。基于这个想法,我们使用难度分数(问题的 ELO 评分)来筛选数据,从而创建一个用于可验证奖励强化学习训练的数据集。随后,我们通过组相对策略优化 (Shao 等人, 2024 (https://arxiv.org/html/2607.07748#bib.bib14)) 应用可验证奖励强化学习,直接采用 Boruch-Gruszecki 等人 (Boruch-Gruszecki 等人, 2026 (https://arxiv.org/html/2607.07748#bib.bib12)) 提出的与语言无关的基于输入/输出的评估框架。为了最大化学习信号,我们采用与通过的测试用例比例和成功编译成正比的局部奖励,使得优势估计能够捕获完成结果之间的细微差异。正如我们将在结果分析中看到的,由于 SFT 先验将动作空间约束在远离琐碎语法错误的地方,RL 阶段可以高效地探索更丰富的功能逻辑空间。此外,为了防止策略收敛到次优状态,我们使用*零优势掩码* (Chen 等人, 2025 (https://arxiv.org/html/2607.07748#bib.bib32)):如果组内没有任何完成结果达到最大奖励,则整个组的优势设为零,从而有效丢弃该更新。这避免了强化次优解,并确保策略只向真正强的完成结果更新。我们使用两个基准在 Qwen3-8B (Qwen 团队, 2025 (https://arxiv.org/html/2607.07748#bib.bib3)) 上评估我们的流水线:MultiPL-E (Cassano 等人, 2023 (https://arxiv.org/html/2607.07748#bib.bib22)) 和 Agnostics LiveCodeBench (Ag-LCB) (Boruch-Gruszecki 等人, 2026 (https://arxiv.org/html/2607.07748#bib.bib12))。对于 Julia,我们的完整流水线在 MultiPL-E 上 pass@1 提升了 +24.6 分,在 Ag-LCB 上提升了 +30.2 分。对于 Ballerina,基础模型先前知识几乎为零,我们在 MultiPL-E 上观察到相对于基线提升了 +45.3 分,在 Ag-LCB 上提升了 +22.1 分。值得注意的是,仅 SFT 阶段就达到了与当前最先进水平相当的结果,这表明左移的推理时计算可以通过一次性离线投资来匹配昂贵的在线扩展策略。此外,验证我们的第二个假设,我们仅使用了 \(\frac{1}{3}\) 的数据和 \(\frac{1}{6}\) 的成本就达到了上述结果。我们进一步证明该流水线可推广到 Ballerina,这是一种用于集成和微服务的云原生编程语言,在大语言模型预训练语料库中几乎没有表示。与 Julia 在训练数据中受益于一些偶然覆盖不同,Ballerina 呈现了真正的冷启动场景:基础模型此前实际上没有接触过其语法、类型系统或标准库。尽管如此,我们的流水线仅依靠编译器反馈和与语言无关的测试套件就启动了功能性的 Ballerina 代码生成,不需要人工编写的 Ballerina 训练样本。这一结果提供了强有力的证据,表明任何低资源语言都可以被启动,使得该流水线在新编程语言出现时即可立即应用。我们的贡献如下: - • 我们提出了一个三阶段流水线:通过迭代编译器和测试反馈的离线推理扩展、监督微调,以及基于难度筛选数据集的组相对策略优化,该流水线使用 80 亿参数模型,在更少的训练轮次和更低的成本下,在 Julia 和 Ballerina 的 MultiPL-E 及 Ag-LCB 上达到了最先进的结果。 - • 我们证明,将推理时计算左移至离线数据合成解决了数据稀缺瓶颈,无需人工标注,将昂贵的迭代优化转变为一次性投入。 - • 我们展示该流水线以最少的适应就能推广到极端低资源语言(Ballerina),为启动任何低资源语言的代码生成建立了实用的配方。 - • 我们为 Ballerina 扩展了 MultiPL-E 基准,向评估套件添加了一种新语言,并为未来低资源语言代码生成研究提供了标准化的测试平台。 ## 2\. 相关工作在低资源语言上对 LLM 进行基准测试依赖于从富资源环境调整而来的框架,例如 MultiPL-E (Cassano 等人, 2023 (https://arxiv.org/html/2607.07748#bib.bib22)) 和 Agnostic-LiveCodeBench (Jain 等人, 2024 (https://arxiv.org/html/2607.07748#bib.bib23))。虽然这些基准能有效衡量性能,但提升性能需要应对严重的数据限制并选择最优的学习策略。我们沿着三个轴组织先前工作,这些轴对应于我们流水线的各个阶段。 ### 2\.1\. 监督微调与数据稀缺的挑战监督微调仍然是使模型适应低资源语言的最普遍策略。Cassano 等人 (Cassano 等人, 2024 (https://arxiv.org/html/2607.07748#bib.bib7)) 引入了 MultiPL-T,这是一个将训练数据从富资源语言翻译到低资源语言的流水线,展示了对于最多 80 亿参数的模型的显著提升。Giagnorio 等人 (Giagnorio 等人, 2025 (https://arxiv.org/html/2607.07748#bib.bib33)) 进一步表明,在专门的、领域特定的数据上训练的较小模型(约 10 亿参数)通常优于较大的通用模型,因为监督微调可能会逆向降低更适合检索增强生成的较大模型的性能。WizardCoder (Luo 等人, 2024 (https://arxiv.org/html/2607.07748#bib.bib5)) 和 OpenCoder (Huang 等人, 2024 (https://arxiv.org/html/2607.07748#bib.bib2)) 通过指令微调和开源训练方法推进了监督微调,但它们的重点仍放在富资源语言上。Joel 等人 (Joel 等人, 2024 (https://arxiv.org/html/2607.07748#bib.bib31)) 提供了对基于 LLM 的低资源和领域特定语言代码生成的全面综述。监督微调的根本瓶颈是数据稀缺。像 CodeNet (Puri 等人, 2021 (https://arxiv.org/html/2607.07748#bib.bib8)) 这样的数据集提供了基础,但低资源语言的可用数据与富资源语言相比相形见绌。利用有机数据需要严格的整理,包括去重和严格的反污染以防止基准泄漏。为了绕过有机数据的限制,最近的研究强调合成数据流水线:Magicoder (Wei 等人, 2024 (https://arxiv.org/html/2607.07748#bib.bib4)) 利用 OSS-Instruct 从开源片段生成训练数据,而 KODCODE (Xu 等人, 2025 (https://arxiv.org/html/2607.07748#bib.bib6)) 构建了一个多样化、可验证的合成数据集。我们的工作通过引入*编译器/测试反馈驱动的*数据合成扩展了这一方向,其中迭代执行和错误纠正提供了纯粹生成式流水线所缺乏的验证。 ### 2\.2\. 强化学习与接地在监督微调之外,强化学习正在为代码生成建立新的最先进水平。早期方法使用近端策略优化:CodeRL (Le 等人, 2022 (https://arxiv.org/html/2607.07748#bib.bib9)) 将预训练模型与基于执行的强化学习奖励相结合,而 Shojaee 等人 (Shojaee 等人, 2023 (https://arxiv.org/html/2607.07748#bib.bib10)) 证明基于执行的反馈优于静态启发式策略优化。最近,组相对策略优化 (Shao 等人, 2024 (https://arxiv.org/html/2607.07748#bib.bib14)) 作为一种更简单的替代方案出现,消除了对单独价值网络的需求。CodeReasoner (Tang 等人, 2025 (https://arxiv.org/html/2607.07748#bib.bib11)) 应用组相对策略优化来增强通用模型中的代码推理。对于低资源语言,最近的技术依赖于与语言无关的数据集和测试反馈循环。同时,自我对弈框架可以在没有人工标注的情况下实现迭代优化 (Lin 等人, 2025 (https://arxiv.org/html/2607.07748#bib.bib13))。然而,无基础的自我对弈通常会产生次优结果。为了解决这个问题,Boruch-Gruszecki 等人 (Boruch-Gruszecki 等人, 2026 (https://arxiv.org/html/2607.07748#bib.bib12)) 引入了 Agnostics,一个通用的强化学习环境,能够学习合成...

相似文章

无语义的语法:教会大语言模型用未见过的语言编程

arXiv cs.CL

本文介绍了PyLang,一种在所有预训练语料库中都不存在的编程语言,并表明在其上微调的大语言模型可以学习语法但无法迁移算法推理,导致出现“实现忠实度差距”——模型理解算法但无法用不熟悉的语言表达它们。