标题:LLM Compiler:编译器优化新突破
文章信息摘要:
LLM Compiler是基于Code Llama的预训练模型,专注于编译器中间表示(IR)和汇编代码的优化任务。通过指令微调,它在代码大小优化和反汇编任务中表现出色,能够达到自动调优搜索的77%优化潜力和45%的反汇编往返准确率。该模型在优化标志选择和反汇编任务中进一步扩展了其能力,显著提升了代码大小优化的效果,展现了其在编译器优化领域的强大潜力。LLM Compiler通过结合预训练和指令微调,为代码优化和逆向工程提供了新的工具和方法,为未来的编译器技术发展提供了新的可能性。
==================================================
详细分析:
核心观点:LLM Compiler是基于Code Llama的预训练模型,专门用于编译器中间表示(IR)和汇编代码的优化任务,通过指令微调,它在代码大小优化和反汇编任务中表现出色,能够达到自动调优搜索的77%优化潜力和45%的反汇编往返准确率。
详细分析:
LLM Compiler 是一个基于 Code Llama 的预训练模型,专门设计用于编译器优化任务,特别是针对编译器中间表示(IR)和汇编代码的优化。它通过扩展 Code Llama 的训练,进一步在包含 5460 亿个 LLVM-IR 和汇编代码的语料库上进行预训练,并通过指令微调来模拟编译器的行为。这种精细的调整使得 LLM Compiler 在代码大小优化和反汇编任务中表现出色。
在代码大小优化方面,LLM Compiler 能够达到自动调优搜索的 77% 优化潜力。这意味着它可以在不进行大量计算的情况下,接近自动调优搜索的效果,从而显著减少编译时间和资源消耗。在反汇编任务中,LLM Compiler 能够将 x86_64 和 ARM 汇编代码反汇编回 LLVM-IR,并实现了 45% 的往返准确率(14% 的完全匹配)。这表明它在将低级代码转换回高级表示方面具有一定的能力,尽管仍存在一定的误差。
LLM Compiler 的训练过程包括两个主要阶段:首先是对汇编代码和编译器 IR 的预训练,然后是通过指令微调来模拟编译器的行为。在预训练阶段,模型在大量编译器相关的数据集上进行训练,这些数据集主要由 LLVM 生成的中间表示和汇编代码组成。在指令微调阶段,模型被训练来预测优化后的代码以及代码大小,从而使其能够更好地理解和执行编译器优化任务。
总的来说,LLM Compiler 通过结合预训练和指令微调,展示了在编译器优化和反汇编任务中的强大能力,为代码优化和逆向工程提供了新的工具和方法。
==================================================
核心观点:LLM Compiler FTD模型在优化标志选择和反汇编任务中进一步扩展了其能力,显著提升了代码大小优化的效果,展现了其在编译器优化领域的强大潜力。
详细分析:
LLM Compiler FTD模型在编译器优化领域的扩展能力确实令人印象深刻,尤其是在优化标志选择和反汇编任务方面。让我们深入探讨一下这些能力的细节和意义。
优化标志选择
LLM Compiler FTD模型通过指令微调,专门针对LLVM的IR优化工具opt
进行标志选择,以生成最小的代码大小。这一任务对运行时性能和代码大小都有显著影响。模型的训练过程包括以下几个关键步骤:
- 大规模随机搜索:生成初始的候选最佳传递列表。
- 传递列表最小化:通过消除冗余传递、基于键排序传递以及执行局部搜索来插入新传递。
- PassListEval工具:评估候选传递列表的正确性和崩溃情况。
这种精细化的训练过程使得模型能够在零样本任务中预测标志,以最小化未见程序的代码大小。13B参数的LLM Compiler FTD模型在61%的情况下生成了比-Oz
更小的目标文件,尽管在12%的情况下出现了回归,但通过两次编译(一次使用模型生成的传递列表,一次使用-Oz
),整体改进率提升到了5.26%。
反汇编任务
在反汇编任务中,LLM Compiler FTD模型展示了将汇编代码提升回高级结构的能力,这对于优化和将遗留代码移植到新架构至关重要。模型通过微调学习汇编代码与编译器IR之间的关系,任务是将汇编代码提升为IR。尽管使用LLM进行反汇编可能会引发正确性问题,但通过往返验证(将提升的IR编译回汇编并验证其是否与原始汇编相同),可以找到正确性的下限。
13B参数的LLM Compiler FTD模型在反汇编任务中表现最佳,实现了最高的往返BLEU分数和最频繁的完美反汇编(往返精确匹配)。7B参数的模型在往返成功率上略高于13B模型,而Code Llama — Instruct和GPT-4 Turbo在生成语法正确的LLVM-IR方面表现不佳。
总结
LLM Compiler FTD模型在优化标志选择和反汇编任务中的表现,不仅显著提升了代码大小优化的效果,还展示了其在编译器优化领域的强大潜力。这些能力的扩展使得模型能够更高效地处理复杂的编译器优化任务,为未来的编译器技术发展提供了新的可能性。
==================================================