Крупные языковые модели для оптимизации компиляторов
Large Language Models for Compiler Optimization
September 11, 2023
Авторы: Chris Cummins, Volker Seeker, Dejan Grubisic, Mostafa Elhoushi, Youwei Liang, Baptiste Roziere, Jonas Gehring, Fabian Gloeckle, Kim Hazelwood, Gabriel Synnaeve, Hugh Leather
cs.AI
Аннотация
Мы исследуем новое применение больших языковых моделей для оптимизации кода. Представляем трансформерную модель с 7 миллиардами параметров, обученную с нуля для оптимизации ассемблерного кода LLVM с целью уменьшения его размера. Модель принимает на вход неоптимизированный ассемблерный код и выдает список параметров компилятора для наилучшей оптимизации программы. Важно отметить, что в процессе обучения мы просим модель предсказывать количество инструкций до и после оптимизации, а также сам оптимизированный код. Эти дополнительные задачи обучения значительно улучшают производительность модели в оптимизации и углубляют её понимание.
Мы проводим оценку на большом наборе тестовых программ. Наш подход демонстрирует улучшение на 3,0% в сокращении количества инструкций по сравнению с компилятором, превосходя два современных базовых метода, требующих тысяч компиляций. Более того, модель показывает удивительно сильные способности в анализе кода, генерируя компилируемый код в 91% случаев и идеально воспроизводя результат компилятора в 70% случаев.
English
We explore the novel application of Large Language Models to code
optimization. We present a 7B-parameter transformer model trained from scratch
to optimize LLVM assembly for code size. The model takes as input unoptimized
assembly and outputs a list of compiler options to best optimize the program.
Crucially, during training, we ask the model to predict the instruction counts
before and after optimization, and the optimized code itself. These auxiliary
learning tasks significantly improve the optimization performance of the model
and improve the model's depth of understanding.
We evaluate on a large suite of test programs. Our approach achieves a 3.0%
improvement in reducing instruction counts over the compiler, outperforming two
state-of-the-art baselines that require thousands of compilations. Furthermore,
the model shows surprisingly strong code reasoning abilities, generating
compilable code 91% of the time and perfectly emulating the output of the
compiler 70% of the time.