LLM Translation of Compiler Intermediate Representation
本文介绍了 IRIS-14B,这是一种专用的 140 亿参数大语言模型,它通过准确地将 GCC 的 GIMPLE 中间表示转换为 LLVM IR,显著超越了现有最先进模型,从而实现了混合神经符号编译器架构内无缝的跨工具链互操作性。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,计算机编程的世界就像一个巨大的建筑工地。要构建软件,我们需要蓝图。在这个行业中,有两家巨型建筑公司:GCC 和 LLVM。它们是最著名的团队,几乎构建了从视频游戏到操作系统的一切。
然而,这两个团队说着不同的语言,使用不同的蓝图。
- GCC 使用一种名为 GIMPLE 的蓝图语言。它就像一份详细的高级建筑草图,保持了原始设计的结构完整。
- LLVM 使用一种名为 LLVM IR 的蓝图语言。它更像是一份技术性的低层工程图,将一切分解为微小、精确的指令。
问题:翻译中的迷失
几十年来,如果你想要使用 GCC 团队的工具为 LLVM 团队构建某些东西,你就会陷入困境。你不能直接把 GIMPLE 蓝图交给 LLVM 团队;他们无法理解它。
以前,工程师们试图构建“人工翻译器”(基于规则的系统)来将 GIMPLE 转换为 LLVM。但这些翻译器就像僵硬的字典。如果 GCC 团队在他们的蓝图语言中更改了一个单词,字典就会失效,整个翻译也会失败。维护这些字典是一场噩梦,因此最终人们不再使用它们。
解决方案:“超级翻译器”AI
本文介绍了一种新解决方案:IRIS-14B。把 IRIS 想象成一位才华横溢、超级聪明的实习生,它阅读了数百万对蓝图。
IRIS 并非被教导一套僵硬的规则(例如“如果你看到一扇门,就画一扇窗”),而是通过观察来学习。研究人员向它输入了数千个示例,其中 GIMPLE 蓝图与其正确的 LLVM 翻译成对出现。随着时间的推移,IRIS 学习了将一种语言翻译成另一种语言的模式和逻辑,即使它们的结构看起来非常不同。
他们做了什么
- 构建学生:他们采用了一个大型预训练 AI 模型(一个通用的“聪明”大脑),并利用他们定制的成对蓝图数据集对其进行专业化教育。
- 测试:他们将 IRIS 与其他著名的 AI 模型(其中一些比它大 100 倍)进行对比测试。他们向 IRIS 提供 GIMPLE 蓝图,并要求它写出 LLVM 版本。
- 结果:IRIS 赢了。尽管它比其他模型小,但它正确翻译蓝图的频率比最好的通用 AI 模型高出 44%。它理解了代码的含义,而不仅仅是词语。
这为何重要(“魔法”用例)
本文展示了 IRIS 能够做到的两个以前不可能或非常困难的“酷技巧”:
- "Ada"适配器:有一种名为 Ada 的编程语言(用于航空和国防),GCC 对其支持完美,但 LLVM 团队尚未完全支持。使用 IRIS,你可以将专为 GCC 编写的 Ada 程序,将其蓝图翻译为 LLVM,突然间,该程序就可以在 LLVM 的现代工具上运行,而无需重写原始代码的任何一行。
- "Modula-2"复兴:有一种名为 Modula-2 的古老语言,GCC 仍然支持它,但 LLVM 没有为其提供原生翻译器。IRIS 充当桥梁,允许旧的 Modula-2 代码由现代 LLVM 工具处理,赋予这些遗留系统新的生命。
不足之处
本文指出了一些局限性,就像一个擅长短篇小说但难以处理整部百科全书的翻译器。
- 上下文限制:如果程序非常庞大(长达数千行),AI 可能会因为一次只能“阅读”一定量的文本而感到不堪重负。
- 复杂性:AI 在处理非常复杂的结构时稍显吃力,例如特定类型的数据容器(结构体)或繁重的内存管理,但它仍然比旧的基于规则的方法表现好得多。
大局观
本文并不声称 AI 将取代人类工程师或编译器。相反,它提出了一个混合团队。
- 传统编译器(那些古老、可靠的专家)仍然承担优化和最终代码生成的繁重工作。
- AI(IRIS) 充当通用适配器。它位于中间,在两种不同的编译器蓝图“方言”之间进行翻译,使它们能够协同工作。
简而言之,研究人员在两个孤立的软件技术岛屿之间架起了一座桥梁,使它们能够共享工具和资源,而无需重建岛屿本身。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。