Rückmeldung vom Compiler für große Sprachmodelle
Compiler generated feedback for Large Language Models
March 18, 2024
Autoren: Dejan Grubisic, Chris Cummins, Volker Seeker, Hugh Leather
cs.AI
Zusammenfassung
Wir stellen ein neuartiges Paradigma in der Compiler-Optimierung vor, das von Large Language Models mit Compiler-Feedback angetrieben wird, um die Codegröße von LLVM-Assembly zu optimieren. Das Modell nimmt den nicht optimierten LLVM IR als Eingabe und erzeugt optimierten IR, die besten Optimierungsdurchläufe und Anweisungszählungen sowohl des nicht optimierten als auch des optimierten IRs. Anschließend kompilieren wir die Eingabe mit den generierten Optimierungsdurchläufen und bewerten, ob die vorhergesagte Anweisungszählung korrekt ist, der generierte IR kompilierbar ist und dem kompilierten Code entspricht. Wir geben dieses Feedback an das LLM zurück und geben ihm eine weitere Chance, den Code zu optimieren. Dieser Ansatz führt zu einer zusätzlichen Verbesserung von 0,53% gegenüber -Oz am ursprünglichen Modell. Obwohl es intuitiv erscheint, durch Feedback mehr Informationen hinzuzufügen, erreichen einfache Sampling-Techniken bei 10 oder mehr Samples eine deutlich höhere Leistung.
English
We introduce a novel paradigm in compiler optimization powered by Large
Language Models with compiler feedback to optimize the code size of LLVM
assembly. The model takes unoptimized LLVM IR as input and produces optimized
IR, the best optimization passes, and instruction counts of both unoptimized
and optimized IRs. Then we compile the input with generated optimization passes
and evaluate if the predicted instruction count is correct, generated IR is
compilable, and corresponds to compiled code. We provide this feedback back to
LLM and give it another chance to optimize code. This approach adds an extra
0.53% improvement over -Oz to the original model. Even though, adding more
information with feedback seems intuitive, simple sampling techniques achieve
much higher performance given 10 or more samples.Summary
AI-Generated Summary