ChatPaper.aiChatPaper

Entrenar modelos de lenguaje en secuencias de edición sintéticas mejora la síntesis 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

Resumen

Los ingenieros de software principalmente escriben código editando programas existentes. En contraste, los modelos de lenguaje grandes (LLMs) sintetizan programas de forma autoregresiva en un solo paso. Una explicación para esto es la escasez de datos de edición de código de código abierto. Mientras que los datos de instrucción de alta calidad para la síntesis de código ya son escasos, los datos de edición de alta calidad son aún más escasos. Para llenar este vacío, desarrollamos un algoritmo de generación de datos sintéticos llamado LintSeq. Este algoritmo refactoriza código existente en una secuencia de ediciones de código utilizando un linter para muestrear de forma procedural las inserciones sin errores que se pueden utilizar para escribir programas secuencialmente. Produce secuencias de edición como cadenas de texto que consisten en diferencias de programa consecutivas. Para probar LintSeq, lo utilizamos para refactorizar un conjunto de datos de pares de instrucciones + programa en tuplas de instrucción + secuencia de diferencias de programa. Luego, ajustamos finamente una serie de LLMs más pequeños que van desde 2.6B hasta 14B parámetros en ambas versiones del conjunto de datos, comparando el rendimiento de cero disparos en bancos de pruebas de síntesis de código. Mostramos que durante el muestreo repetido, los modelos ajustados finamente a secuencias de edición producen programas más diversos que las líneas de base. Esto resulta en una mejor escalabilidad en tiempo de inferencia para la cobertura del banco de pruebas en función de las muestras, es decir, la fracción de problemas "pass@k" resueltos por cualquier intento dado "k" intentos. Por ejemplo, en HumanEval pass@50, los LLMs pequeños ajustados finamente en secuencias de edición sintéticas son competitivos con GPT-4 y superan a los modelos ajustados finamente en el conjunto de datos base en un +20% (+/-3%) en puntuación absoluta. Finalmente, también preentrenamos nuestros propios LMs diminutos para la comprensión de código. Mostramos que ajustar finamente modelos pequeños en ediciones de código sintéticas resulta en una síntesis de código de última generación para la clase de modelos en dispositivos. Nuestro LM de secuencia de edición de 150M parámetros coincide o supera a los modelos de código con el doble de parámetros, tanto con como sin muestreo repetido, incluidos Codex y 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