SelfCodeAlign: Autoallineamento per la generazione di codice
Author
Venue
NeurIPS 2024
Abstract
L'ottimizzazione delle istruzioni è un approccio di fine-tuning supervisionato che migliora significativamente la capacità dei modelli linguistici di grandi dimensioni (LLM) di seguire le istruzioni umane. Proponiamo SelfCodeAlign, la prima pipeline completamente trasparente e permissiva per l'autoallineamento dei modelli linguistici di codice (LLM) senza estese annotazioni umane o distillazione. SelfCodeAlign impiega lo stesso modello di base per l'inferenza durante tutto il processo di generazione dei dati. In primo luogo estrae diversi concetti di codifica da frammenti di codice di alta qualità per generare nuovi compiti. Quindi campiona più risposte per ogni compito, le abbina a casi di test e le convalida in un ambiente sandbox. Infine, vengono selezionati gli esempi superati per la messa a punto delle istruzioni. Nei nostri esperimenti principali, utilizziamo SelfCodeAlign con CodeQwen1.5-7B per generare un set di dati di 74.000 coppie istruzione-risposta. La messa a punto su questo set di dati porta a un modello che raggiunge un 67,1% di pass@1 su HumanEval+, superando CodeLlama-70B-Instruct nonostante sia dieci volte più piccolo. In tutti i benchmark, questo modello ottimizzato supera costantemente la versione originale addestrata con OctoPack, il precedente metodo all'avanguardia per l'ottimizzazione 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 trarre maggiori benefici dall'allineamento con la propria distribuzione dei dati. Convalidiamo ulteriormente l'efficacia di ciascun componente nella nostra pipeline, dimostrando che SelfCodeAlign supera sia la distillazione diretta da GPT-4o sia i principali metodi di distillazione basati su GPT-3.5, come OSS-Instruct ed Evol-Instruct. SelfCodeAlign ha anche portato alla creazione di StarCoder2-Instruct, il primo LLM di codice completamente trasparente, con licenza permissiva e autoallineato che raggiunge prestazioni di codifica all'avanguardia.
