ChatPaper.aiChatPaper

Treinar Modelos de Linguagem em Sequências de Edição Sintéticas Melhora a Síntese de Código

Training Language Models on Synthetic Edit Sequences Improves Code Synthesis

October 3, 2024
Autores: Ulyana Piterbarg, Lerrel Pinto, Rob Fergus
cs.AI

Resumo

Os engenheiros de software geralmente escrevem código editando programas existentes. Em contraste, modelos de linguagem grandes (LLMs) sintetizam programas de forma autoregressiva em uma única passagem. Uma explicação para isso é a escassez de dados de edição de código de código aberto. Enquanto dados de instrução de alta qualidade para síntese de código já são escassos, dados de edição de alta qualidade são ainda mais escassos. Para preencher essa lacuna, desenvolvemos um algoritmo de geração de dados sintéticos chamado LintSeq. Esse algoritmo refatora o código existente em uma sequência de edições de código usando um linter para amostrar proceduralmente as inserções sem erros que podem ser usadas para escrever programas sequencialmente. Ele gera sequências de edições como strings de texto consistindo em diferenças de programa consecutivas. Para testar o LintSeq, o utilizamos para refatorar um conjunto de dados de pares de instrução + programa em tuplas de instrução + sequência de diferenças de programa. Em seguida, ajustamos a instrução uma série de LLMs menores variando de 2,6B a 14B parâmetros nas versões refatoradas e originais desse conjunto de dados, comparando o desempenho de zero-shot em benchmarks de síntese de código. Mostramos que durante a amostragem repetida, os modelos ajustados com sequências de edições produzem programas mais diversos do que as bases. Isso resulta em melhor escalabilidade no tempo de inferência para cobertura de benchmark como função de amostras, ou seja, a fração de problemas "pass@k" resolvidos por qualquer tentativa dada "k" tentativas. Por exemplo, no HumanEval pass@50, LLMs pequenos ajustados em sequências de edições sintéticas são competitivos com o GPT-4 e superam os modelos ajustados no conjunto de dados base em +20% (+/-3%) na pontuação absoluta. Por fim, também pré-treinamos nossos próprios LMs pequenos para compreensão de código. Mostramos que o ajuste de modelos pequenos em edições de código sintéticas resulta em síntese de código de ponta para a classe de modelo em dispositivo. Nosso LM de sequência de edições de 150M parâmetros corresponde ou supera modelos de código com o dobro de parâmetros, tanto com quanto sem amostragem repetida, incluindo Codex e 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

PDF123November 16, 2024