ACPO:基于 AI 的编译器驱动程序优化
该论文通过比较分析两种先进的大型语言模型(GPT-4.0 和 CodeLlama-70B)与传统优化编译器在代码优化方面的能力和局限性,以及引入了一套挑战性的优化模式基准和用于评估生成代码性能和正确性的自动机制,发现虽然大型语言模型有超越当前优化编译器的潜力,但在大型代码上常常生成不正确的代码,需要自动化验证方法,其中 CodeLlama-70B 在两种大型语言模型中表现最佳,最大加速能达到 2.1 倍,而 CETUS 在优化编译器中表现最佳,最大加速能达到 1.9 倍。同时,两种提示方法(思考链和指令提示)没有显著差异。
Jun, 2024
LOOPer 是第一个使用基于深度学习的代价模型的多面体自动调度器,覆盖了大量的仿射变换和程序。它支持探索大量的仿射变换序列,并且支持具有多个循环嵌套和矩形 / 非矩形迭代域的程序的优化。我们实现和评估了 LOOPer,并展示其比现有技术获得了加速。在 Polybench 基准测试中,LOOPer 相对于 Tiramisu 获得了 1.59 倍的几何平均加速度,以及相对于 Pluto 获得了 1.34 倍的几何平均加速度,Pluto 是一个不使用基于机器学习的代价模型的多面体编译器。
Mar, 2024
通过压缩 - 编译器共同设计可以在主流的移动设备上实现实时人工智能,而无需专用硬件支持。CoCoPIE 是一个支持所有主要 DNN 类型的框架,包括 CNN,RNN,转换器,语言模型等等,并且能够在现成的移动设备上运行许多典型的 AI 应用程序。在能源效率和性能方面,Off-the-shelf 移动设备也能胜过一些典型的 ASIC 和 FPGA 硬件解决方案。
Mar, 2020
本文提出了一个基于深度学习的优化框架(IOPO),可以在毫秒之内生成高效节能的任务卸载决策,并且在处理解决方案空间广泛的复杂问题时,相较于其他基准方法性能更优。
Jul, 2023
利用深度强化学习算法的 PPOCoder 框架,将预训练编程语言模型与外部执行反馈相结合,用于自动化代码生成任务,并在多项实验中展示了其在编译成功率和语法正确性方面的显著效果。
Jan, 2023
本文探讨了大型语言模型对编写和重构性能更好的代码方面的能力,通过收集大量的程序优化历程以评估和提高大型语言模型的能力,并使用优化器 CODEGEN 推出性能更好的代码以帮助程序员编写有效的代码。
Feb, 2023
本文提出了 MLGOPerf 框架,该框架可利用 LLVM 的 ML-Inliner 来优化性能,并通过副模型生成用于训练强化学习主模型的奖励,实现快速训练的流程。实验结果表明,相对于 LLVM 的优化,该方法在 SPEC CPU2006 和 Cbench 基准测试中可以实现高达 1.8% 和 2.2% 的性能提升。
Jul, 2022
使用具有编译器反馈的大型语言模型介绍了编译器优化的新范例,旨在优化 LLVM 汇编的代码大小。该模型以未优化的 LLVM IR 作为输入,生成优化的 IR、最佳优化过程以及未优化和优化的 IR 的指令计数。然后,将输入与生成的优化过程进行编译,并评估预测的指令计数是否正确、生成的 IR 是否可编译并且是否对应编译后的代码。将此反馈返回到 LLM,使其有机会再次优化代码。这种方法相对于原始模型的 - Oz 额外提供了 0.53% 的改进,尽管使用反馈的更多信息似乎是直观的,但根据 10 个或更多的样本,简单的抽样技术实现了更高的性能。
Mar, 2024
本文探讨了当前一代大型语言模型在将 MLOps 功能整合到 ML 训练代码库中的可能性,并评估了 OpenAI(gpt-3.5-turbo)和 WizardCoder(开源,150 亿参数)模型在不同设置下自动完成各种 MLOps 功能的性能。我们进行了基准测试,评估了这些模型在以下方面的能力:(1)使用特定组件的 MLOps 功能(如 MLflow 和 Weights&Biases 进行实验跟踪,Optuna 进行超参数优化等)来适应现有的代码示例(内联);(2)执行从 MLOps 功能的一个组件到另一个组件的翻译任务,例如将现有的基于 GitPython 库的版本控制代码转换为基于 Data Version Control 库的代码。我们还提出三种不同的方法,教导 LLM 在执行翻译任务时理解组件的 API 文档作为参考。在我们的评估中,gpt-3.5-turbo 模型在模型优化(Pass@3 准确率为 55%,而 WizardCoder 为 0%)、实验跟踪(准确率为 100%,而 WizardCoder 为 62.5%)、模型注册(准确率为 92%,而 WizardCoder 为 42%)和超参数优化(准确率为 83%,而 WizardCoder 为 58%)方面明显优于 WizardCoder,在复杂的 MLOps 任务中展现了出色的代码适应性能。
May, 2024