大语言模型编译器:Meta LLM Compiler

Meta发布了Meta LLM Compiler,这是一个基于Meta Code Llama构建的模型家族,具备额外的代码优化和编译器功能。这些模型在代码尺寸优化和反汇编任务上达到了最先进的水平。

LLM Compiler 可以模拟编译器,预测代码尺寸的最佳传递路径,并进行代码反汇编。它可以为新的优化和编译器任务进行微调。这项工作表明,AI正在学习优化代码,并可以帮助编译器专家识别应用优化的机会。相信这项工作可以对从个人开发环境中的优化到包含在LLVM等编译器中的应用产生影响。

Meta发布了LLM Compiler 7B和13B模型,采用宽松的许可协议,允许用于研究和商业用途,希望能使开发者和研究人员更容易利用这些模型进行工作,并在这个极具影响力的领域推进新的研究。

Meta LLM Compiler相关的研究论文为《Meta Large Language Model Compiler: Foundation Models of Compiler Optimization》,以下是该论文的内容介绍:


论文《Meta Large Language Model Compiler: Foundation Models of Compiler Optimization》由Meta AI团队撰写,探讨了大规模语言模型(LLMs)在代码和编译器优化领域的应用。主要介绍了Meta LLM Compiler,一个专门设计用于代码优化任务的预训练模型套件,基于Code Llama构建,旨在增强对编译器中间表示(IRs)、汇编语言和优化技术的理解。模型在5460亿个LLVM-IR和汇编代码令牌的基础上训练,并进行了指令微调,以解释编译器行为。提供了7亿和13亿参数两种型号,展现了其在优化代码尺寸和从x86_64和ARM汇编反汇编回LLVM-IR方面的能力。

一、引言

当前的大型语言模型(LLMs)在软件工程任务中表现出色,但在代码和编译器优化领域的应用仍然有限。为了填补这一空白,Meta推出了LLM Compiler,旨在通过对代码优化任务的专门训练,提供一个强大且可广泛使用的基础模型套件。

二、主要贡献

  1. 模型设计与训练数据
    • Code Llama:基础模型,通过在大量LLVM-IR和汇编代码数据上进行预训练,增强了对编译器中间表示和汇编语言的理解。
    • 指令微调:进一步微调模型,使其能够模拟编译器优化行为,处理LLVM-IR和汇编代码。
    • 优化标志调整和反汇编任务:在额外的1640亿个令牌数据上进行微调,提升模型在特定编译器优化任务上的表现。
  2. 性能评估
    • 优化标志调整:LLM Compiler在优化代码尺寸方面达到了自动调优搜索的77%的优化潜力,并显著优于Code Llama和GPT-4 Turbo。
    • 反汇编任务:在将x86_64和ARM汇编代码反汇编回LLVM-IR时,模型的准确性达到了14%的完全匹配率,显示出较高的反汇编能力。
  3. 实用性和可扩展性
    • 提供了7亿和13亿参数的模型,供学术研究人员和行业实践者进一步开发和优化使用。
    • 模型在编译器优化任务上的出色表现,为未来在代码优化领域的研究和应用提供了坚实基础。

三、具体实现

  1. 训练过程
    • 模型通过两个阶段的训练,首先在无标签的编译器中间表示和汇编代码上进行预训练,然后在定制的编译器模拟数据集上进行指令微调。
    • 在所有训练阶段保留了15%的前一阶段数据,确保模型在新的优化任务上表现出色的同时,保留基础模型的能力。
  2. 优化标志调整
    • 任务描述:给定未优化的LLVM-IR,模型生成优化标志列表,并预测优化后的代码尺寸和生成的代码。
    • 数据集:从4.5百万个未优化的IR中生成,通过大规模随机搜索找到最佳优化标志列表。
  3. 反汇编任务
    • 任务描述:模型从汇编代码生成对应的LLVM-IR,并进行轮回测试,验证生成的IR的正确性。
    • 数据集:从相同的数据集生成的汇编代码和IR对,进行优化后再进行汇编。

四、评价与讨论

  1. 基准测试
    • 在MiBench测试集上的性能评估显示,LLM Compiler在优化标志调整和反汇编任务上显著优于其他比较模型。
    • 模型在编译器模拟任务和下一个令牌预测任务上的表现也经过了全面评估,展示了其在多种任务上的适用性和性能。
  2. 局限性
    • 输入序列的长度限制:尽管LLM Compiler支持16k的上下文窗口,但一些程序代码可能远超这一长度。
    • 输出准确性:建议使用者在实际应用中对模型的输出进行严格测试,确保优化和反汇编结果的正确性。

五、总结

Meta LLM Compiler通过增强对编译器中间表示和汇编语言的理解,为代码和编译器优化任务提供了强大的基础模型。这一工作不仅展示了LLMs在代码优化领域的巨大潜力,还为未来的研究和开发奠定了坚实的基础。模型的公开发布和详细的性能评估为学术研究者和行业实践者提供了宝贵的资源和参考。


Hugging Face 仓库 ➡️ https://huggingface.co/collections/facebook/llm-compiler-667c5b05557fe99a9edd25cb
研究论文 ➡️ https://ai.meta.com/research/publications/meta-large-language-model-compiler-foundation-models-of-compiler-optimization/

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注