Softwareentwickler schreiben Code hauptsächlich durch die Bearbeitung bestehender Programme. Im Gegensatz dazu synthetisieren große Sprachmodelle (LLMs) Programme autoregressiv in einem einzigen Durchlauf. Eine Erklärung hierfür ist die Knappheit von quelloffenen Bearbeitungsdaten. Während hochwertige Instruktionsdaten für die Codesynthese bereits rar sind, sind hochwertige Bearbeitungsdaten noch seltener.
Um diese Lücke zu schließen, wurde ein Algorithmus zur synthetischen Datengenerierung namens LintSeq entwickelt. Dieser Algorithmus refaktorisiert bestehenden Code in eine Sequenz von Codeänderungen, indem er einen Linter verwendet, um prozedural die fehlerfreien Einfügungen zu sammeln, die verwendet werden können, um Programme sequentiell zu schreiben. Er gibt Bearbeitungssequenzen als Textzeichenfolgen aus, die aus aufeinanderfolgenden Programm-Diffs bestehen.
Um LintSeq zu testen, wurde dieser verwendet, um einen Datensatz aus Instruktions- und Programmpaaren in Instruktions- und Programm-Diff-Sequenz-Tupel umzugestalten. Anschließend wurde eine Reihe kleinerer LLMs mit 2,6 Milliarden bis 14 Milliarden Parametern sowohl auf der umgestalteten als auch auf der Originalversion dieses Datensatzes feinabgestimmt und die Zero-Shot-Leistung auf Benchmarks für die Codesynthese verglichen. Es zeigte sich, dass während des wiederholten Samplings Modelle, die auf synthetischen Bearbeitungssequenzen feinabgestimmt wurden, vielfältigere Programme erzeugen als Basismodelle. Dies führt zu einer besseren Skalierung der Benchmark-Abdeckung zur Inferenzzeit als Funktion der Stichproben, d. h. der Anteil der Probleme, die bei "k" Versuchen durch einen beliebigen Versuch gelöst werden ("pass@k"). Bei HumanEval pass@50 zum Beispiel sind kleine LLMs, die auf synthetischen Bearbeitungssequenzen feinabgestimmt sind, mit GPT-4 konkurrenzfähig und übertreffen Modelle, die auf dem Basisdatensatz feinabgestimmt sind, um +20 % (+/-3 %) im absoluten Wert.
Schließlich wurden auch eigene winzige LLMs für das Codeverständnis vortrainiert. Es zeigte sich, dass die Feinabstimmung winziger Modelle auf synthetischen Codeänderungen zu einer hochmodernen Codesynthese für die On-Device-Modellklasse führt. Das 150 Millionen Parameter umfassende Edit-Sequenz-LM erreicht oder übertrifft Codemodelle mit der doppelten Anzahl von Parametern, sowohl mit als auch ohne wiederholtes Sampling, einschließlich Codex und AlphaCode.
Die Verwendung synthetischer Bearbeitungssequenzen für das Training von LLMs stellt einen vielversprechenden Ansatz zur Verbesserung der Codesynthese dar. Durch die Simulation des iterativen Bearbeitungsprozesses, den menschliche Entwickler verwenden, können diese Modelle realistischere und vielfältigere Codebeispiele lernen. Dies führt zu einer besseren Leistung bei der Codesynthese, insbesondere bei kleineren Modellen und in der On-Device-Modellklasse.