论文

并行 SFT:改进代码 RL 的零射击交叉编程语言传输

Parallel-SFT: Improving Zero-Shot Cross-Programming-Language Transfer for Code RL

模型训练监督微调与指令调优

摘要

现代语言模型在 C++ 和 Python 等常见编程语言 (PL) 中展示了令人印象深刻的编码能力,但它们在资源较低的 PL 中的性能通常受到训练数据可用性的限制。然而,原则上,大多数编程技能在 PL 之间是通用的,因此在一个 PL 中获得的能力应该转移到其他 PL 中。在这项工作中,我们提出了代码强化学习的零样本跨编程语言迁移任务。我们发现,对于 Llama-3.1,在源 PL 中进行代码生成的 RL 训练无法提高,有时甚至会降低其他目标 PL 的性能。为了解决这个问题,我们假设有效的 RL 传输需要在 RL 之前进行可泛化的 SFT 初始化。因此,我们提出**并行 SFT**,这是一种将“并行程序”(在多个 PL 中实现的功能等效代码)合并到数据混合中的 SFT 策略。我们证明这提高了可转移性:当我们随后在并行 SFT 模型上执行 RL 时,我们观察到对未见过的 PL 的更好的泛化。对模型内部表示的分析表明,并行 SFT 会导致更加以功能为中心的潜在空间,其中跨 PL 的等效程序更加紧密地聚集在一起,我们假设这有助于提高可转移性。