Compiler generated feedback for Large Language Models

📄 arXiv: 2403.14714v1 📥 PDF

作者: Dejan Grubisic, Chris Cummins, Volker Seeker, Hugh Leather

分类: cs.PL, cs.LG

发布日期: 2024-03-18


💡 一句话要点

提出基于大型语言模型的编译器反馈优化LLVM汇编代码

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 编译器优化 大型语言模型 LLVM 代码生成 反馈机制 性能提升 自动化编程

📋 核心要点

  1. 现有编译器优化方法在代码大小和性能提升方面存在局限,难以充分利用现代硬件特性。
  2. 本文提出了一种利用大型语言模型生成编译反馈的优化方法,通过迭代优化LLVM IR以提升代码质量。
  3. 实验结果表明,该方法在原始模型基础上实现了0.53%的性能提升,且简单采样技术在多样本情况下表现更佳。

📝 摘要(中文)

本文介绍了一种新颖的编译器优化范式,该范式利用大型语言模型(LLM)生成编译反馈,以优化LLVM汇编代码的大小。模型以未优化的LLVM IR为输入,输出优化后的IR、最佳优化传递和未优化及优化IR的指令计数。随后,我们使用生成的优化传递编译输入,并评估预测的指令计数是否正确、生成的IR是否可编译以及是否与编译代码相对应。我们将这些反馈反馈给LLM,并给予其再次优化代码的机会。该方法在原始模型的基础上增加了0.53%的改进。尽管通过反馈添加更多信息似乎是直观的,但简单的采样技术在10个或更多样本的情况下实现了更高的性能。

🔬 方法详解

问题定义:本文旨在解决现有编译器优化方法在代码大小和性能提升方面的不足,尤其是在利用大型语言模型进行优化时的反馈机制缺失问题。

核心思路:通过引入大型语言模型生成编译反馈,优化LLVM IR的过程,使得模型能够在迭代中不断改进优化策略,从而提升最终生成代码的质量和效率。

技术框架:整体架构包括输入未优化的LLVM IR,模型生成优化后的IR及优化传递,随后进行编译并验证生成的IR的有效性,最后将反馈信息再次输入模型以进行进一步优化。

关键创新:最重要的技术创新在于将编译器反馈机制与大型语言模型结合,使得模型能够通过反馈循环不断优化代码,这一方法与传统的静态优化方法有本质区别。

关键设计:在模型设计中,关键参数包括优化传递的选择和指令计数的预测,损失函数则考虑了生成IR的可编译性和与编译代码的一致性。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果显示,采用该方法在原始模型基础上实现了0.53%的性能提升,尽管简单的采样技术在10个或更多样本情况下表现更佳,显示出反馈机制的有效性与采样策略的互补性。

🎯 应用场景

该研究的潜在应用领域包括编译器设计、程序优化和自动化软件开发等。通过提高编译器的优化能力,能够显著提升软件的执行效率和资源利用率,具有重要的实际价值和广泛的应用前景。

📄 摘要(原文)

We introduce a novel paradigm in compiler optimization powered by Large Language Models with compiler feedback to optimize the code size of LLVM assembly. The model takes unoptimized LLVM IR as input and produces optimized IR, the best optimization passes, and instruction counts of both unoptimized and optimized IRs. Then we compile the input with generated optimization passes and evaluate if the predicted instruction count is correct, generated IR is compilable, and corresponds to compiled code. We provide this feedback back to LLM and give it another chance to optimize code. This approach adds an extra 0.53% improvement over -Oz to the original model. Even though, adding more information with feedback seems intuitive, simple sampling techniques achieve much higher performance given 10 or more samples.