SelfCodeAlign: Zelfuitlijning voor Codegeneratie
SelfCodeAlign: Self-Alignment for Code Generation
October 31, 2024
Auteurs: Yuxiang Wei, Federico Cassano, Jiawei Liu, Yifeng Ding, Naman Jain, Zachary Mueller, Harm de Vries, Leandro von Werra, Arjun Guha, Lingming Zhang
cs.AI
Samenvatting
Instructieafstemming is een begeleide fijnafstemmingsbenadering die aanzienlijk de capaciteit van grote taalmodellen (LLM's) verbetert om menselijke instructies te volgen. We stellen SelfCodeAlign voor, de eerste volledig transparante en toegankelijke pijplijn voor het zelfafstemmen van code LLM's zonder uitgebreide menselijke annotaties of destillatie. SelfCodeAlign maakt gebruik van hetzelfde basismodel voor inferentie gedurende het gegevensgeneratieproces. Het extrahereert eerst diverse codeerconcepten uit hoogwaardige seed-snippets om nieuwe taken te genereren. Vervolgens monsteren we meerdere reacties per taak, paren deze met testcases en valideren ze in een sandbox-omgeving. Ten slotte worden geslaagde voorbeelden geselecteerd voor instructieafstemming. In onze primaire experimenten gebruiken we SelfCodeAlign met CodeQwen1.5-7B om een dataset van 74k instructie-reactieparen te genereren. Fijnafstemming op deze dataset resulteert in een model dat een 67.1 pass@1 behaalt op HumanEval+, wat CodeLlama-70B-Instruct overtreft ondanks dat het tien keer kleiner is. Over alle benchmarks presteert dit gefinetunede model consequent beter dan de originele versie die is getraind met OctoPack, de vorige state-of-the-art methode voor instructieafstemming zonder menselijke annotaties of destillatie. Bovendien tonen we aan dat SelfCodeAlign effectief is bij LLM's van verschillende groottes, van 3B tot 33B, en dat de basismodellen meer baat kunnen hebben bij afstemming met hun eigen gegevensverdeling. We valideren verder de effectiviteit van elk component in onze pijplijn, waarbij we aantonen dat SelfCodeAlign beter presteert dan zowel directe destillatie van GPT-4o als toonaangevende destillatiemethoden op basis van GPT-3.5, zoals OSS-Instruct en Evol-Instruct. SelfCodeAlign heeft ook geleid tot de creatie van StarCoder2-Instruct, de eerste volledig transparante, permissief gelicenseerde en zelf-afgestemde code LLM die state-of-the-art codeerprestaties behaalt.
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