Het trainen van taalmodellen op synthetische bewerkingsreeksen verbetert de code synthese.
Training Language Models on Synthetic Edit Sequences Improves Code Synthesis
October 3, 2024
Auteurs: Ulyana Piterbarg, Lerrel Pinto, Rob Fergus
cs.AI
Samenvatting
Software-engineers schrijven voornamelijk code door bestaande programma's te bewerken. In tegenstelling hiermee synthetiseren grote taalmodellen (LLM's) autoregressief programma's in één keer. Een verklaring hiervoor is de schaarste aan open-source bewerkingsgegevens. Terwijl hoogwaardige instructiegegevens voor codesynthese al schaars zijn, zijn hoogwaardige bewerkingsgegevens nog schaarser. Om deze lacune op te vullen, hebben we een algoritme voor synthetische gegevensgeneratie ontwikkeld genaamd LintSeq. Dit algoritme refactort bestaande code tot een reeks codebewerkingen door een linter te gebruiken om procedureel te samplen over de foutloze invoegingen die kunnen worden gebruikt om programma's sequentieel te schrijven. Het geeft bewerkingsreeksen uit als tekstreeksen bestaande uit opeenvolgende programmaverschillen. Om LintSeq te testen, gebruiken we het om een dataset van instructie + programma-paren te refactoren tot instructie + programma-bewerkingsreeks-tuples. Vervolgens fine-tunen we een reeks kleinere LLM's variërend van 2,6B tot 14B parameters op zowel de herwerkte als de originele versies van deze dataset, waarbij we de prestaties bij nul-shot op codesynthese-benchmarks vergelijken. We tonen aan dat tijdens herhaaldelijk samplen, door bewerkingsreeksen gefinetunede modellen meer diverse programma's produceren dan baselines. Dit resulteert in een betere schaalbaarheid op inferentietijd voor benchmarkdekking als functie van monsters, d.w.z. het percentage problemen "pass@k" opgelost door een poging gegeven "k" pogingen. Bijvoorbeeld, op HumanEval pass@50, zijn kleine LLM's gefinetuned op synthetische bewerkingsreeksen concurrerend met GPT-4 en presteren ze beter dan modellen gefinetuned op de basisdataset met +20% (+/-3%) in absolute score. Tot slot, pretrainen we ook onze eigen kleine LM's voor codebegrip. We tonen aan dat het fine-tunen van kleine modellen op synthetische codebewerkingen resulteert in state-of-the-art codesynthese voor de on-device modelklasse. Onze 150M parameter bewerkingsreeks LM evenaart of overtreft code-modellen met twee keer zoveel parameters, zowel met als zonder herhaaldelijk samplen, inclusief Codex en 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