SelfCodeAlign: Auto-Allineamento per la Generazione di Codice
SelfCodeAlign: Self-Alignment for Code Generation
October 31, 2024
Autori: Yuxiang Wei, Federico Cassano, Jiawei Liu, Yifeng Ding, Naman Jain, Zachary Mueller, Harm de Vries, Leandro von Werra, Arjun Guha, Lingming Zhang
cs.AI
Abstract
Il tuning delle istruzioni è un approccio di fine-tuning supervisionato che migliora significativamente la capacità dei grandi modelli linguistici (LLM) di seguire le istruzioni umane. Proponiamo SelfCodeAlign, il primo pipeline completamente trasparente e permessivo per l'allineamento automatico dei codici LLM senza estese annotazioni umane o distillazione. SelfCodeAlign utilizza lo stesso modello di base per l'inferenza durante l'intero processo di generazione dei dati. Estrae innanzitutto concetti di codifica diversi da frammenti seme di alta qualità per generare nuovi compiti. Successivamente campiona più risposte per ogni compito, le abbina a casi di test e le convalida in un ambiente sandbox. Infine, vengono selezionati esempi superati per il tuning delle istruzioni. Nei nostri esperimenti principali, utilizziamo SelfCodeAlign con CodeQwen1.5-7B per generare un dataset di 74k coppie istruzione-risposta. Il fine-tuning su questo dataset porta a un modello che raggiunge un 67.1 pass@1 su HumanEval+, superando CodeLlama-70B-Instruct nonostante sia dieci volte più piccolo. In tutti i benchmark, questo modello sottoposto a fine-tuning supera costantemente la versione originale addestrata con OctoPack, il metodo di riferimento precedente per il tuning delle istruzioni senza annotazioni umane o distillazione. Inoltre, dimostriamo che SelfCodeAlign è efficace su LLM di varie dimensioni, da 3B a 33B, e che i modelli di base possono beneficiare maggiormente dall'allineamento con la propria distribuzione dei dati. Validiamo ulteriormente l'efficacia di ciascun componente nel nostro pipeline, dimostrando che SelfCodeAlign supera sia la distillazione diretta da GPT-4o che i metodi di distillazione basati su GPT-3.5, come OSS-Instruct ed Evol-Instruct. SelfCodeAlign ha inoltre portato alla creazione di StarCoder2-Instruct, il primo codice LLM completamente trasparente, con licenza permissiva e auto-allineato che raggiunge prestazioni di codifica all'avanguardia.
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