Entraîner des modèles de langage sur des séquences d'édition synthétiques améliore la synthèse de code.
Training Language Models on Synthetic Edit Sequences Improves Code Synthesis
October 3, 2024
Auteurs: Ulyana Piterbarg, Lerrel Pinto, Rob Fergus
cs.AI
Résumé
Les ingénieurs logiciels écrivent principalement du code en modifiant des programmes existants. En revanche, les grands modèles de langage (LLMs) synthétisent de manière autorégressive des programmes en une seule passe. Une explication à cela est la rareté des données d'édition open-source. Alors que les données d'instructions de haute qualité pour la synthèse de code sont déjà rares, les données d'édition de haute qualité le sont encore plus. Pour combler ce fossé, nous avons développé un algorithme de génération de données synthétiques appelé LintSeq. Cet algorithme refactore le code existant en une séquence d'éditions de code en utilisant un linter pour échantillonner de manière procédurale parmi les insertions sans erreur qui peuvent être utilisées pour écrire séquentiellement des programmes. Il produit des séquences d'édition sous forme de chaînes de texte composées de différences de programme consécutives. Pour tester LintSeq, nous l'utilisons pour refacturer un ensemble de données de paires d'instructions + programmes en tuples d'instructions + séquences de différences de programmes. Ensuite, nous affinons l'instruction d'une série de LLMs plus petits allant de 2,6 milliards à 14 milliards de paramètres sur les versions refacturées et originales de cet ensemble de données, en comparant les performances sans entraînement sur des bancs d'essai de synthèse de code. Nous montrons que lors d'échantillonnages répétés, les modèles affinés par séquence d'édition produisent des programmes plus diversifiés que les références. Cela se traduit par une meilleure évolutivité au moment de l'inférence pour la couverture des bancs d'essai en fonction des échantillons, c'est-à-dire la fraction de problèmes "pass@k" résolus par toute tentative donnée "k" essais. Par exemple, sur HumanEval pass@50, les petits LLMs affinés sur des séquences d'édition synthétiques sont compétitifs avec GPT-4 et surpassent les modèles affinés sur l'ensemble de données de référence de +20% (+/-3%) en score absolu. Enfin, nous préentraînons également nos propres petits LMs pour la compréhension du code. Nous montrons que l'affinage des petits modèles sur des éditions de code synthétiques donne des résultats de synthèse de code de pointe pour la classe de modèles sur appareil. Notre LM de séquence d'édition de 150 millions de paramètres égale ou surpasse les modèles de code avec le double de paramètres, avec ou sans échantillonnage répété, y compris Codex et AlphaCode.
English
Software engineers mainly write code by editing existing programs. In
contrast, large language models (LLMs) autoregressively synthesize programs in
a single pass. One explanation for this is the scarcity of open-sourced edit
data. While high-quality instruction data for code synthesis is already scarce,
high-quality edit data is even scarcer. To fill this gap, we develop a
synthetic data generation algorithm called LintSeq. This algorithm refactors
existing code into a sequence of code edits by using a linter to procedurally
sample across the error-free insertions that can be used to sequentially write
programs. It outputs edit sequences as text strings consisting of consecutive
program diffs. To test LintSeq, we use it to refactor a dataset of instruction
+ program pairs into instruction + program-diff-sequence tuples. Then, we
instruction finetune a series of smaller LLMs ranging from 2.6B to 14B
parameters on both the re-factored and original versions of this dataset,
comparing zero-shot performance on code synthesis benchmarks. We show that
during repeated sampling, edit sequence finetuned models produce more diverse
programs than baselines. This results in better inference-time scaling for
benchmark coverage as a function of samples, i.e. the fraction of problems
"pass@k" solved by any attempt given "k" tries. For example, on HumanEval
pass@50, small LLMs finetuned on synthetic edit sequences are competitive with
GPT-4 and outperform models finetuned on the baseline dataset by +20% (+/-3%)
in absolute score. Finally, we also pretrain our own tiny LMs for code
understanding. We show that finetuning tiny models on synthetic code edits
results in state-of-the-art code synthesis for the on-device model class. Our
150M parameter edit sequence LM matches or outperforms code models with twice
as many parameters, both with and without repeated sampling, including Codex
and AlphaCode.Summary
AI-Generated Summary