Verbesserung der Codesynthese durch Training mit synthetischen Bearbeitungssequenzen

Kategorien:
No items found.
Freigegeben:
October 4, 2024

Das Training von Sprachmodellen auf synthetischen Bearbeitungssequenzen verbessert die Codesynthese

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.

Synthetische Datengenerierung mit LintSeq

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.

Verbesserte Leistung bei der Codesynthese

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.

Vielversprechend für die On-Device-Modellklasse

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.

Schlussfolgerung

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.

Bibliographie

https://arxiv.org/html/2407.12504v1 https://arxiv.org/pdf/2409.12917 https://github.com/RUCAIBox/LLMSurvey https://www.sciencedirect.com/science/article/pii/S0920548924000862 https://aclanthology.org/2024.findings-naacl.235.pdf https://direct.mit.edu/tacl/article/doi/10.1162/tacl_a_00492/112605/Generate-Annotate-and-Learn-NLP-with-Synthetic https://software-lab.org/publications/icse2025_calibration.pdf https://openreview.net/forum?id=hH36JeQZDaO https://github.com/dair-ai/ML-Papers-of-the-Week
Was bedeutet das?