开发者狂喜!Meta最新发布的LLM Compiler,实现77%自动调优效率
文章摘要
【关 键 词】 人工智能、编译器优化、逆向工程、代码效率、软件工程
Meta公司最近推出了一款名为LLM Compiler的人工智能编译器,旨在通过优化代码来彻底改变编译器设计。这项创新的开源模型在自动调优搜索方面展现出77%的优化潜力,显著减少了编译时间,提高了代码效率。在反汇编方面,LLM Compiler的成功率达到了45%,对逆向工程和旧代码维护具有重要价值。
LLM Compiler的研发基于大语言模型(LLMs)在软件工程和编程任务中的卓越表现,但其在代码优化和编译器领域的应用尚未得到充分利用。Meta研究团队通过在包含5460亿个标记的庞大语料库上训练模型,使其能够理解编译器中间表示、汇编语言和优化技术。
LLM Compiler的训练采用了Code Llama的权重初始化,并在一个以编译器为中心的数据集上进行了训练。该数据集主要由汇编代码和编译器IR组成。为了理解代码优化机制,研究团队对模型进行了指令微调,以模拟编译器优化。他们从有限的未优化种子程序集合中,通过对这些程序应用随机生成的编译器优化序列,生成了大量示例。
在代码大小优化方面,LLM Compiler取得了显著成果。模型的优化潜力达到了自动调优搜索的77%,显著减少了编译时间,并提高了各种应用的代码效率。此外,LLM Compiler在反汇编方面的能力更为出色,其在将x86_64和ARM汇编代码转换回LLVM-IR时,往返反汇编的成功率为45%。
LLM Compiler项目的核心贡献者Chris Cummins强调了这项技术的潜在影响。通过提供两种大小的预训练模型(7亿和13亿参数),并通过微调版本展示其有效性,LLM Compiler为探索LLM在代码和编译器优化领域未被开发的潜力铺平了道路。
此外,研究团队还训练了LLM Compiler FTD模型,执行下游任务,即为LLVM的IR优化工具opt选择标志,以生成最小的代码大小。他们的方法不依赖于所选择的编译器和优化指标,他们打算在未来针对运行时性能。目前,优化代码大小简化了训练数据的收集。
为了确保优化过程中的正确性,研究团队开发了PassListEval工具,用于帮助自动识别破坏程序语义或导致编译器崩溃的pass列表。通过这种方式,他们确定了1,704,443个独立pass列表中的167,971个(9.85%)会导致编译时或运行时错误。
总的来说,Meta推出的LLM Compiler在代码优化和编译器设计方面取得了重要突破,为开发者提供了更高效、更经济的代码处理方式。这一创新有望改变编程领域的游戏规则,为软件工程和编译器优化带来革命性的影响。
原文和模型
【原文链接】 阅读原文 [ 7815字 | 32分钟 ]
【原文作者】 机器之心
【摘要模型】 moonshot-v1-32k
【摘要评分】 ★★★★★