Meta AI研究人员通过将大型语言模型(LLM)应用于代码优化任务,试图使其能够像LLVM等常规编译器一样进行代码优化。LLVM优化器非常复杂,用C++编程语言编写了超过100万行的代码,其中包含数千个规则和算法。
他们认为LLM无法处理这种复杂性,因为它们通常用于语言翻译和代码生成等任务。编译器优化涉及各种类型的思考、数学和使用复杂技术,他们认为LLM在这方面表现不佳。但是根据方法论,结果是令人惊讶的。
上图展示了该方法的概述,显示了训练和推理过程中的模型输入(提示)和输出(答案)。提示包含未经优化的代码,答案包含优化传递列表、指令计数和优化代码。在推理过程中,仅生成优化传递列表,然后将其输入编译器,确保优化的代码是正确的。
他们的方法很简单,首先选择了一个来自LLaMa 2的70亿参数的大型语言模型(LLM)架构,并从头开始进行初始化。然后,他们使用一个庞大的数据集对模型进行训练,该数据集由数百万个LLVM汇编示例组成,每个示例都与通过搜索过程确定的最佳编译器选项以及应用这些优化后的汇编代码配对。仅通过这些示例,模型就能够以非凡的精度优化代码。
他们的工作最显著的贡献在于首次将LLM应用于代码优化任务。他们创建了专门针对编译器优化的LLM,展示了相比于基于搜索的方法,这些模型在单次编译中的代码尺寸减小了3.0%。相比之下,目前最先进的机器学习方法会导致回退,并需要进行数千次编译。研究人员还提供了补充实验和代码示例,以更全面地了解LLM在代码推理中的潜力和局限性。总体而言,他们发现LLM在这个领域的效果非常显著,并相信他们的研究成果将引起广泛的兴趣。