Большие языковые модели удивляют мета-исследователей искусственного интеллекта при оптимизации компилятора!

Большие языковые модели привлекают внимание мета-исследователей искусственного интеллекта при оптимизации компилятора!

«Мы думали, что это будет статья о явных недостатках LLM, которая послужит мотивацией для будущих умных идей, чтобы преодолеть эти недостатки. Мы были полностью удивлены, узнав, что во многих случаях достаточно обученная LLM может не только предсказывать лучшие оптимизации для применения к входному коду, но и выполнять эти оптимизации напрямую, не прибегая к компилятору вообще!». - Исследователи Meta AI

Исследователи Meta AI пытались заставить большие языковые модели (LLM) выполнять ту же самую оптимизацию кода, которую делают обычные компиляторы, такие как LLVM. Оптимизатор LLVM чрезвычайно сложен, с тысячами правил и алгоритмов, написанных в более чем 1 миллионе строк кода на языке программирования C++.

Они не думали, что LLM могут справиться с этой сложностью, потому что обычно они используются для задач, таких как перевод языков и генерация кода. Оптимизация компилятора включает в себя множество различных видов мышления, математики и использование сложных техник, которые, по их мнению, LLM не в состоянии выполнять хорошо. Но после методологии результаты оказались абсолютно удивительными.

Вышеуказанное изображение демонстрирует обзор методологии, показывая ввод модели (Prompt) и вывод (Answer) во время обучения и вывода. Prompt содержит неоптимизированный код. Answer содержит список проходов оптимизации, количество инструкций и оптимизированный код. Во время вывода генерируется только список проходов оптимизации, который затем передается в компилятор, гарантируя правильность оптимизированного кода.

Их подход прямолинеен: они начинают с языковой модели семь миллиардов параметров (LLM), полученной из LLaMa 2 [25] и инициализируют ее заново. Затем модель обучается на обширном наборе данных, состоящем из миллионов примеров LLVM-сборки, каждый из которых связан с лучшими параметрами компилятора, определенными с помощью процесса поиска для каждой сборки, а также полученным кодом сборки после применения этих оптимизаций. Благодаря только этим примерам модель приобретает способность оптимизировать код с поразительной точностью.

Значительный вклад их работы заключается в том, что они первыми применили LLM к задаче оптимизации кода. Они создают специально настроенные для оптимизации компилятора LLM, демонстрируя, что эти модели достигают сокращения размера кода на 3,0% при одной компиляции по сравнению с подходом на основе поиска, который достигает улучшения на 5,0% с 2,5 миллиардами компиляций. В отличие от этого, современные методы машинного обучения приводят к регрессии и требуют тысяч компиляций. Исследователи также включают дополнительные эксперименты и примеры кода, чтобы предоставить более полное представление о потенциале и ограничениях LLM в области рассуждения о коде. В целом, они считают эффективность LLM в этом контексте замечательной и считают, что их результаты будут интересными для широкой общественности.