HyperAIHyperAI

Command Palette

Search for a command to run...

X-Coder:基于全合成任务、解法与测试的竞赛编程新范式

Jie Wu Haoling Li Xin Zhang Jiani Guo Jane Luo Steven Liu Yangyu Huang Ruihang Chu Scarlett Li Yujiu Yang

Abstract

竞赛编程对代码大语言模型(Code LLMs)构成了严峻挑战,因其对推理能力要求极高且逻辑结构复杂。然而,当前的代码大模型仍严重依赖真实世界数据,这限制了其可扩展性。本文提出一种完全基于合成数据的全新方法:通过完全自动生成的任务、解决方案与测试用例来训练代码大模型,从而实现无需依赖真实编程数据的代码推理能力提升。为支持该方法,我们引入基于特征的合成技术,提出一种新型数据合成流水线——SynthSmith。SynthSmith展现出在生成多样化且具有挑战性的编程任务方面的强大潜力,同时可提供经过验证的解决方案与测试用例,适用于监督微调(Supervised Fine-Tuning, SFT)与强化学习(Reinforcement Learning, RL)两种训练范式。基于所构建的合成SFT与RL数据集,我们推出了X-Coder模型系列,在LiveCodeBench v5上实现了平均62.9%的通过率(avg@8),在v6版本上达到55.8%,显著优于参数量达14B的DeepCoder-14B-Preview与AReal-boba2-14B,尽管X-Coder仅拥有7B参数。深入分析表明,我们的合成数据集上仍遵循缩放定律(scaling laws),并进一步探究了不同维度在模型扩展中的相对有效性。此外,本文还深入探讨了以代码为中心的强化学习机制,通过详尽的消融实验与分析,揭示了影响模型性能的关键因素。研究结果表明,通过规模化高质量合成数据并采用分阶段训练策略,可显著推动代码推理能力的发展,同时有效降低对真实世界编程数据的依赖。

一句话总结

清华大学、微软和武汉大学的研究人员提出了 X-Coder,一个基于全新 SynthSmith 数据生成流水线,完全通过合成任务训练的 70 亿参数代码大语言模型(Code LLM),该流水线实现了高质量、可扩展的代码推理数据合成;通过在完全合成数据上采用分阶段训练与强化学习,X-Coder 在 LiveCodeBench v5 和 v6 上达到了最先进水平的通过率,证明了合成数据能够有效替代真实世界数据,同时保持强大的缩放规律和性能提升。

主要贡献

  • 竞赛编程对代码大语言模型构成重大挑战,因其高度复杂的逻辑与深层推理需求,但现有模型受限于有限的真实世界数据集,难以扩展且多样性不足。
  • 作者提出 SynthSmith,一种基于特征的合成数据流水线,能够从零开始生成多样且具有挑战性的任务、经过验证的解决方案以及准确的测试用例,从而在无需真实世界数据的情况下支持监督微调与强化学习。
  • 所得 X-Coder 模型在 LiveCodeBench v5(62.9 avg@8)和 v6(55.8 avg@8)上均达到最先进性能,仅使用 70 亿参数,证明高质量合成数据与分阶段训练可有效扩展代码推理能力。

引言

竞赛编程因其高度复杂的逻辑与深层推理需求,对代码语言模型构成重大挑战,但现有模型受限于数量有限、难以扩展且常被重复使用的真实世界数据集。以往的合成数据方法依赖于对已有问题的演化,限制了数据的多样性和复杂度。作者提出 SynthSmith,一种专为竞赛编程设计的基于特征的数据合成流水线,通过面向竞赛的特征提取与双重验证策略,生成多样、具有挑战性的任务、经过验证的解决方案以及高保真测试用例。利用这一完全合成的数据,作者训练了 X-Coder 系列模型,在仅 70 亿参数下实现了 LiveCodeBench v5 和 v6 的最先进通过率,证明合成数据可有效支持监督微调与强化学习。其分析确认了缩放规律在合成数据上依然成立,强调了分阶段训练与解决方案验证的重要性,并为以代码为中心的强化学习提供了可操作的洞见,推动了无需依赖真实世界数据的代码推理发展。

数据集

  • 数据集包含 24 万条高质量样本,通过迭代式特征演化流水线生成,显著扩展了多个领域任务的数量与多样性。
  • 数据来源包括通过 CYaRon(一个开源 Python 库,专为信息学奥林匹克竞赛级别问题生成随机测试用例)进行的合成生成,结合人工介入验证与模型生成的解决方案。
  • 每个任务均依据严格标准筛选:描述长度超过 200 token 的样本被丢弃,解决方案必须包含完整的 think-and-answer 标签,仅包含一个有效 Python 代码块,通过 AST 验证,且总长度不超过 25k token,以避免过度思考并降低训练成本。
  • 最终数据集遵循正态 token 分布,中位长度为 16k token,如表 11 与图 19 所示,确保序列长度均衡,利于高效训练。
  • 测试用例生成方面,作者使用 CYaRon 内置模板生成图、树、多边形、向量和字符串类数据,通过明确提示要求模型生成可执行的 Python 程序,以生成多样化的测试用例——包括基础、边界与大规模随机输入,并使用可配置随机种子以保证可复现性。
  • 生成的测试用例保存为 .in 文件,仅包含纯输入数据,无注释或验证逻辑,且必须使用 Python 内置 random 模块在单次运行中生成。
  • 数据集用于监督微调(SFT),混合多种任务类型,每个样本包含问题描述、推理过程与最终解决方案,经处理以确保一致性和可靠性。
  • 数据收集过程中采用裁剪策略,排除过长或不完整的样本,任务难度、领域与测试用例类型等元数据则自动从生成代码与输入结构中提取。

方法

作者提出一个全面的框架,用于为竞赛编程生成高质量合成数据,核心为 SynthSmith 流水线。该流水线旨在生成任务描述与对应测试用例,支持大语言模型的完全合成训练流程。整体架构如图所示,包含四个主要阶段:任务生成、测试输入生成、候选解决方案生成与双重验证策略。

第一阶段为任务生成,始于从现有代码片段语料库中提取特征。这些特征(如算法、数据结构与实现逻辑)被显式提取并演化为一个丰富、分层的特征树。该树随后用于选择一致且具有挑战性的特征子树,并将其构造成连贯的问题场景。该过程设计为风格无关,支持生成多种格式的任务,包括 Codeforces 风格(叙事驱动)、LeetCode 风格(函数签名驱动)与 AtCoder 风格(简洁说明)。特征选择与任务构型的分离是关键设计,可防止模型过度简化复杂问题,从而生成更多样、更具挑战性的任务。

第二阶段为测试输入生成,解决生成足够且准确测试用例的关键挑战。该框架采用两种互补方法:基于提示的方法,即指令大模型根据问题约束生成测试输入;基于工具的方法,利用 CYaRon——一个专用测试用例生成库。该库使大模型可通过调用已记录函数构建测试输入,确保生成有效且多样化的输入,包括边界情况与压力测试。

第三阶段为候选解决方案生成。针对每个合成任务,使用先进的推理型大模型生成多个候选解决方案。这些方案需包含完整的推理过程与正确的 Python 代码实现。随后,所有方案均接受双重验证策略以确保其可靠性与测试用例的准确性。

双重验证过程为两步流程。第一步为共识投票,通过执行所有候选方案并基于多数投票确定每个测试输入的初步真实输出。该步骤还引入加权函数,为更复杂的测试用例(如结构复杂或规模较大者)赋予更高评分。第二步为加权评估与保留验证,选出最终“黄金”解决方案。根据其在主测试集上的加权准确率,识别出表现最佳的候选方案。该方案随后在独立的、未见的保留测试集上进行验证,以确保其具备良好泛化能力,未对特定测试用例过拟合。这一严格验证流程确保最终数据集质量高,适用于训练。

X-Coder 模型系列的训练流程遵循监督微调(SFT)后接强化学习(RL)的范式。SFT 阶段最小化目标解决方案在任务条件下的负对数似然,使模型能够从生成的任务-解决方案对中学习。RL 阶段采用组相对策略优化(GRPO),一种高效替代 PPO 的方法,无需 critic 网络。GRPO 直接从多个对同一提示的 rollout 奖励中估计优势,对大模型尤为有利。目标函数结合了裁剪概率比以稳定策略更新,以及 KL 散度项以保持与参考策略的一致性,确保优化过程可控。最终训练数据(包含经验证的任务-解决方案对与测试用例)用于计算 SFT 损失,并通过 GRPO 算法训练模型。

实验

  • 主实验验证了合成数据生成、SFT 与 RL 微调在代码推理模型中的有效性。
  • 在 LiveCodeBench v5 和 v6 上,X-Coder-SFT 达到 avg@8 通过率为 60.3,优于 140 亿参数的 RL 模型与 SFT-then-RL 基线;经 RL 后提升至 62.9,而在 Qwen3-Base 上达到 64.0。
  • 扩展 SFT 数据表明,在固定计算资源下,增加唯一任务数量(v4:19.2 万任务)比增加每任务解决方案数量(v6:8k×8)带来更好性能(62.7%),说明任务多样性更高效。
  • 所提出的 SynthSmith 数据集相比 OpenCodeReasoning 提升 6.7 分,相比 SelfCodeAlign 提升 4.6 分,证明其任务质量与多样性更优。
  • RL 微调相比仅 SFT 模型带来 4.6% 的绝对提升,确认其作为强大优化器的作用,且性能高度依赖 SFT 初始化质量。
  • 双重验证与长思维链(CoT)解决方案显著提升性能(17.2% 提升),而基于工具的测试生成在准确率、覆盖率与测试质量上均优于基于提示的方法。
  • 消融研究确认,更长的推理过程、Codeforces 风格任务与基于推理的数据选择可带来更高性能,且模型对噪声合成反馈具有鲁棒性。
  • 失败分析显示,推理错误(Wrong Answer)与上下文截断(No Code Block Generated)为主要失败模式,且通过率随推理长度增加而下降。
  • X-Coder 在 pass@16 上相比 Qwen2.5-Coder-7B-Instruct 提升 51.3 分,且仅用 8 倍更少的 rollout 即达到 Qwen3-8B 水平,表明其推理多样性与效率极高。
  • 模型在不同架构(Llama-3.1-8B-Instruct)与基准(MBPP+、HumanEval+)上均表现出良好泛化能力,且合成训练相比真实世界训练模型减少了数据泄露。

作者采用合成数据流水线训练代码推理模型,证明其方法在 LiveCodeBench v5 上实现 62.9% avg@8 通过率,优于多个 SFT 与 RL 基线。结果表明,在 SFT 阶段增加唯一任务数量比增加每任务解决方案数量更有效,且 RL 进一步提升性能,X-Coder-7B 在 v5 与 v6 基准上均超越其他模型。

作者结合 SFT 与 RL 提升代码推理模型,X-Coder-SFT 达到 avg@8 通过率 60.3,经 RL 后提升至 62.9。结果表明,X-Coder-SFT 优于 140 亿参数的 RL 模型,并在 Qwen3-Base 上达到 64.0 通过率,证明所提训练流水线的有效性。

作者比较了代码推理任务的两种生成方法,发现两阶段方法(Ours)显著优于单步端到端方法。两阶段方法达到 avg@4 得分为 40.1,比单步方法的 34.8 高出 5.3 分。

作者使用表格对比 Qwen3-8B 与 X-Coder 模型在 LiveCodeBench v2 与 v5 上的表现,显示两个模型在从 v2 到 v5 的通过率均显著下降。X-Coder-7B-SFT 与 X-Coder-7B 在 v5 上的通过率均高于 Qwen3-8B,分别提升 3.8 与 5.4 分,表明其对新基准具有更强的泛化能力。

作者通过评估专有大模型在投票测试用例上的 pass@1 性能,分析生成问题的可解性,结果显示即使最强模型 GPT5-High 也在小部分任务上失败,表明数据集中可能存在歧义或不可解问题。


Build AI with AI

From idea to launch — accelerate your AI development with free AI co-coding, out-of-the-box environment and best price of GPUs.

AI Co-coding
Ready-to-use GPUs
Best Pricing

HyperAI Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供