SelfCodeAlign: Самовыравнивание для генерации кода
SelfCodeAlign: Self-Alignment for Code Generation
October 31, 2024
Авторы: Yuxiang Wei, Federico Cassano, Jiawei Liu, Yifeng Ding, Naman Jain, Zachary Mueller, Harm de Vries, Leandro von Werra, Arjun Guha, Lingming Zhang
cs.AI
Аннотация
Настройка инструкций - это метод обучения с учителем, который значительно улучшает способность крупных языковых моделей (LLM) следовать человеческим инструкциям. Мы предлагаем SelfCodeAlign - первый полностью прозрачный и разрешающий конвейер для самоприведения кодовых LLM без обширных человеческих аннотаций или дистилляции. SelfCodeAlign использует ту же базовую модель для вывода на протяжении процесса генерации данных. Сначала извлекаются разнообразные кодовые концепции из высококачественных исходных фрагментов для создания новых задач. Затем для каждой задачи выбираются несколько ответов, каждый из которых сопоставляется с тестовыми случаями и проверяется в песочнице. Наконец, проходящие примеры выбираются для настройки инструкций. В наших первичных экспериментах мы используем SelfCodeAlign с CodeQwen1.5-7B для создания набора данных из 74 тыс. пар инструкция-ответ. Обучение на этом наборе данных приводит к модели, которая достигает 67,1 pass@1 на HumanEval+, превосходя CodeLlama-70B-Instruct, несмотря на то, что она в десять раз меньше. На всех бенчмарках эта донастройка модели последовательно превосходит оригинальную версию, обученную с помощью OctoPack, предыдущего передового метода для настройки инструкций без человеческих аннотаций или дистилляции. Кроме того, мы показываем, что SelfCodeAlign эффективен для LLM различных размеров, от 3B до 33B, и что базовые модели могут получить больше выгоды от выравнивания с их собственным распределением данных. Мы также подтверждаем эффективность каждого компонента в нашем конвейере, показывая, что SelfCodeAlign превосходит как прямую дистилляцию из GPT-4o, так и ведущие методы дистилляции на основе GPT-3.5, такие как OSS-Instruct и Evol-Instruct. SelfCodeAlign также привел к созданию StarCoder2-Instruct - первой полностью прозрачной, разрешающей лицензии и самоприведенной кодовой LLM, которая достигает передовой производительности в кодировании.
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