SelfCodeAlign: Selbstausrichtung für Code-Generierung
SelfCodeAlign: Self-Alignment for Code Generation
October 31, 2024
Autoren: Yuxiang Wei, Federico Cassano, Jiawei Liu, Yifeng Ding, Naman Jain, Zachary Mueller, Harm de Vries, Leandro von Werra, Arjun Guha, Lingming Zhang
cs.AI
Zusammenfassung
Die Anweisungsabstimmung ist ein überwachter Feinabstimmungsansatz, der die Fähigkeit großer Sprachmodelle (LLMs) erheblich verbessert, menschlichen Anweisungen zu folgen. Wir schlagen SelfCodeAlign vor, die erste vollständig transparente und genehmigende Pipeline zur Selbstausrichtung von Code-LLMs ohne umfangreiche menschliche Annotationen oder Destillation. SelfCodeAlign verwendet dasselbe Basismodell für die Inferenz während des Datengenerierungsprozesses. Es extrahiert zunächst vielfältige Codierungskonzepte aus hochwertigen Seed-Schnipseln, um neue Aufgaben zu generieren. Anschließend werden mehrere Antworten pro Aufgabe ausgewählt, jede mit Testfällen gepaart und in einer Sandbox-Umgebung validiert. Abschließend werden bestandene Beispiele für die Anweisungsabstimmung ausgewählt. In unseren Hauptexperimenten verwenden wir SelfCodeAlign mit CodeQwen1.5-7B, um einen Datensatz von 74.000 Anweisungs-Antwort-Paaren zu generieren. Die Feinabstimmung auf diesem Datensatz führt zu einem Modell, das eine Passrate von 67,1 bei HumanEval+ erreicht und CodeLlama-70B-Instruct übertrifft, obwohl es zehnmal kleiner ist. Über alle Benchmarks hinweg übertrifft dieses feinabgestimmte Modell konsistent die ursprüngliche Version, die mit OctoPack trainiert wurde, der vorherigen State-of-the-Art-Methode für Anweisungsabstimmung ohne menschliche Annotationen oder Destillation. Darüber hinaus zeigen wir, dass SelfCodeAlign bei LLMs verschiedener Größen, von 3B bis 33B, wirksam ist und dass die Basismodelle von der Ausrichtung mit ihrer eigenen Datenverteilung profitieren können. Wir validieren weiterhin die Wirksamkeit jedes Bestandteils unserer Pipeline und zeigen, dass SelfCodeAlign sowohl die direkte Destillation von GPT-4o als auch führende auf GPT-3.5 basierende Destillationsmethoden wie OSS-Instruct und Evol-Instruct übertrifft. SelfCodeAlign hat auch zur Entwicklung von StarCoder2-Instruct geführt, dem ersten vollständig transparenten, genehmigten und selbstausgerichteten Code-LLM, das eine Spitzenleistung bei der Kodierung erzielt.
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