Das Training von Sprachmodellen auf synthetischen Edit-Sequenzen verbessert die Codesynthese.
Training Language Models on Synthetic Edit Sequences Improves Code Synthesis
October 3, 2024
Autoren: Ulyana Piterbarg, Lerrel Pinto, Rob Fergus
cs.AI
Zusammenfassung
Software-Ingenieure schreiben hauptsächlich Code, indem sie bestehende Programme bearbeiten. Im Gegensatz dazu synthetisieren große Sprachmodelle (LLMs) programmatisch Programme in einem Durchgang. Eine Erklärung dafür ist die Knappheit von offenen Editierdaten. Während hochwertige Anweisungsdaten für die Codesynthese bereits knapp sind, sind hochwertige Editierdaten noch knapper. Um diese Lücke zu schließen, haben wir einen synthetischen Datengenerierungsalgorithmus namens LintSeq entwickelt. Dieser Algorithmus überarbeitet bestehenden Code in eine Sequenz von Code-Editierungen, indem er einen Linter verwendet, um prozedural über die fehlerfreien Einfügungen zu sampeln, die zum sequenziellen Schreiben von Programmen verwendet werden können. Er gibt Editiersequenzen als Textzeichenfolgen aus, die aus aufeinanderfolgenden Programmdifferenzen bestehen. Um LintSeq zu testen, verwenden wir es, um einen Datensatz von Anweisungs- + Programm-Paaren in Anweisungs- + Programm-Differenz-Sequenz-Tupel umzuwandeln. Anschließend feinabstimmen wir eine Reihe von kleineren LLMs mit Parametern von 2,6B bis 14B sowohl auf den überarbeiteten als auch auf den originalen Versionen dieses Datensatzes und vergleichen die Null-Schuss-Leistung auf Codesynthese-Benchmarks. Wir zeigen, dass bei wiederholter Probenahme feinabgestimmte Modelle für Editiersequenzen vielfältigere Programme als Baselines produzieren. Dies führt zu einer besseren Skalierung der Inferenzzeit für die Benchmark-Abdeckung als Funktion der Proben, d.h. dem Anteil der Probleme "pass@k", die bei jedem Versuch mit "k" Versuchen gelöst werden. Beispielsweise sind kleine LLMs, die auf synthetischen Editiersequenzen feinabgestimmt sind, bei HumanEval pass@50 wettbewerbsfähig mit GPT-4 und übertreffen Modelle, die auf dem Baseline-Datensatz feinabgestimmt sind, um +20% (+/-3%) im absoluten Wert. Schließlich haben wir auch unsere eigenen winzigen LMs für das Codeverständnis vortrainiert. Wir zeigen, dass das Feintuning von winzigen Modellen auf synthetische Code-Editierungen zu einem State-of-the-Art der Codesynthese für die On-Device-Modellklasse führt. Unser 150M-Parameter-Editiersequenz-LM entspricht oder übertrifft Code-Modelle mit doppelt so vielen Parametern, sowohl mit als auch ohne wiederholte Probenahme, einschließlich Codex und 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