SelfCodeAlign: Zelfuitlijning voor codegeneratie
Author
Venue
NeurIPS 2024
Abstract
Instructie-afstemming is een benadering van begeleide fijnafstemming die het vermogen van grote taalmodellen (LLM's) om menselijke instructies op te volgen aanzienlijk verbetert. We stellen SelfCodeAlign voor, de eerste volledig transparante en permissieve pijplijn voor het zelf afstemmen van code-LLM's zonder uitgebreide menselijke annotaties of distillatie. SelfCodeAlign gebruikt hetzelfde basismodel voor inferentie gedurende het hele datageneratieproces. Het haalt eerst diverse codeerconcepten uit hoogwaardige seed-fragmenten om nieuwe taken te genereren. Vervolgens neemt het meerdere reacties per taak, koppelt deze aan testcases en valideert ze in een sandbox-omgeving. Ten slotte worden geslaagde voorbeelden geselecteerd voor het afstemmen van instructies. In onze primaire experimenten gebruiken we SelfCodeAlign met CodeQwen1.5-7B om een dataset van 74.000 instructie-antwoordparen te genereren. Fijnafstemming op deze dataset leidt tot een model dat een score van 67,1% behaalt op HumanEval+, waarmee het CodeLlama-70B-Instruct overtreft ondanks dat het tien keer kleiner is. In alle benchmarks presteert dit afgestemde model consequent beter dan de originele versie die is getraind met OctoPack, de vorige state-of-the-art methode voor instructie-afstemming zonder menselijke annotaties of distillatie. Daarnaast laten we zien dat SelfCodeAlign effectief is voor LLM's van verschillende groottes, van 3B tot 33B, en dat de basismodellen meer baat hebben bij afstemming op hun eigen gegevensverdeling. We valideren verder de effectiviteit van elke component in onze pijplijn en tonen aan dat SelfCodeAlign beter presteert dan zowel directe distillatie van GPT-4o als toonaangevende op GPT-3.5 gebaseerde distillatiemethoden, zoals OSS-Instruct en Evol-Instruct. SelfCodeAlign heeft ook geleid tot de ontwikkeling van StarCoder2-Instruct, de eerste volledig transparante, vrij gelicentieerde en zelf-uitgelijnde code-LLM die state-of-the-art codeerprestaties levert.
