Autoalineación de Código: Autoalineación para la Generación de Código
SelfCodeAlign: Self-Alignment for Code Generation
October 31, 2024
Autores: Yuxiang Wei, Federico Cassano, Jiawei Liu, Yifeng Ding, Naman Jain, Zachary Mueller, Harm de Vries, Leandro von Werra, Arjun Guha, Lingming Zhang
cs.AI
Resumen
La sintonización de instrucciones es un enfoque supervisado de ajuste fino que mejora significativamente la capacidad de los grandes modelos de lenguaje (LLMs, por sus siglas en inglés) para seguir instrucciones humanas. Proponemos SelfCodeAlign, el primer pipeline completamente transparente y permisivo para autoalinear LLMs de código sin extensas anotaciones humanas o destilación. SelfCodeAlign emplea el mismo modelo base para inferencia a lo largo del proceso de generación de datos. Primero extrae diversos conceptos de codificación de fragmentos de semilla de alta calidad para generar nuevas tareas. Luego, muestrea múltiples respuestas por tarea, las empareja con casos de prueba y las valida en un entorno de prueba. Finalmente, se seleccionan ejemplos aprobados para la sintonización de instrucciones. En nuestros experimentos principales, utilizamos SelfCodeAlign con CodeQwen1.5-7B para generar un conjunto de datos de 74k pares de instrucción-respuesta. El ajuste fino en este conjunto de datos conduce a un modelo que logra un 67.1 pass@1 en HumanEval+, superando a CodeLlama-70B-Instruct a pesar de ser diez veces más pequeño. En todos los benchmarks, este modelo ajustado fino supera consistentemente a la versión original entrenada con OctoPack, el método anterior de vanguardia para la sintonización de instrucciones sin anotaciones humanas o destilación. Además, demostramos que SelfCodeAlign es efectivo en LLMs de varios tamaños, desde 3B hasta 33B, y que los modelos base pueden beneficiarse más de la alineación con su propia distribución de datos. Validamos aún más la efectividad de cada componente en nuestro pipeline, mostrando que SelfCodeAlign supera tanto a la destilación directa de GPT-4o como a los métodos de destilación basados en GPT-3.5 líderes, como OSS-Instruct y Evol-Instruct. SelfCodeAlign también ha dado lugar a la creación de StarCoder2-Instruct, el primer LLM de código completamente transparente, con licencia permisiva y autoalineado que logra un rendimiento de codificación de vanguardia.
English
Instruction tuning is a supervised fine-tuning approach that significantly
improves the ability of large language models (LLMs) to follow human
instructions. We propose SelfCodeAlign, the first fully transparent and
permissive pipeline for self-aligning code LLMs without extensive human
annotations or distillation. SelfCodeAlign employs the same base model for
inference throughout the data generation process. It first extracts diverse
coding concepts from high-quality seed snippets to generate new tasks. It then
samples multiple responses per task, pairs each with test cases, and validates
them in a sandbox environment. Finally, passing examples are selected for
instruction tuning. In our primary experiments, we use SelfCodeAlign with
CodeQwen1.5-7B to generate a dataset of 74k instruction-response pairs.
Finetuning on this dataset leads to a model that achieves a 67.1 pass@1 on
HumanEval+, surpassing CodeLlama-70B-Instruct despite being ten times smaller.
Across all benchmarks, this finetuned model consistently outperforms the
original version trained with OctoPack, the previous state-of-the-art method
for instruction tuning without human annotations or distillation. Additionally,
we show that SelfCodeAlign is effective across LLMs of various sizes, from 3B
to 33B, and that the base models can benefit more from alignment with their own
data distribution. We further validate each component's effectiveness in our
pipeline, showing that SelfCodeAlign outperforms both direct distillation from
GPT-4o and leading GPT-3.5-based distillation methods, such as OSS-Instruct and
Evol-Instruct. SelfCodeAlign has also led to the creation of
StarCoder2-Instruct, the first fully transparent, permissively licensed, and
self-aligned code LLM that achieves state-of-the-art coding performance.Summary
AI-Generated Summary