组合式寄存器分配与指令调度
通过一种代码生成方法来为决策树集成模型分配寄存器,从而在单个转换步骤中直接生成机器汇编代码,使决策树集成模型的推理性能得到显著提高。
Apr, 2024
通过选择性融合相似类型的工具操作,我们提出了 LLM-Tool Compiler,在运行时将它们作为统一任务呈现给 LLM,从而加强并行化和效率,与现有方法相比,在大规模 Copilot 平台上,LLM-Tool Compiler 将并行调用提高了 4 倍,令标记成本和延迟分别降低了 40% 和 12%。
May, 2024
我们探索了将大型语言模型应用于代码优化。我们提出了一个从头开始训练的 7B 参数的变换器模型,用于优化 LLVM 汇编的代码大小。该模型以未优化的汇编作为输入,并输出一系列最佳优化程序的编译器选项。在训练过程中,重要的是我们要求模型预测优化前后的指令计数和优化后的代码本身。这些辅助学习任务显著提高了模型的优化性能,并增强了模型的理解深度。我们在大量的测试程序上进行评估。我们的方法在减少指令计数方面比编译器的效果提高了 3.0%,超过了需要数千次编译的两个最先进的基线。此外,该模型显示出令人惊讶的强大代码推理能力,91% 的代码可编译,70% 的时间能完美模拟编译器的输出。
Sep, 2023
通过合适的指令调整,语言模型在指令 - 输出对的训练上能够更好地适应真实世界;研究发现,提供足够多样化的任务集合能够使其在训练分布之外的情况下具备泛化和鲁棒性,并且扩展调整指令集合能够提高代码生成的性能。
May, 2024
使用具有编译器反馈的大型语言模型介绍了编译器优化的新范例,旨在优化 LLVM 汇编的代码大小。该模型以未优化的 LLVM IR 作为输入,生成优化的 IR、最佳优化过程以及未优化和优化的 IR 的指令计数。然后,将输入与生成的优化过程进行编译,并评估预测的指令计数是否正确、生成的 IR 是否可编译并且是否对应编译后的代码。将此反馈返回到 LLM,使其有机会再次优化代码。这种方法相对于原始模型的 - Oz 额外提供了 0.53% 的改进,尽管使用反馈的更多信息似乎是直观的,但根据 10 个或更多的样本,简单的抽样技术实现了更高的性能。
Mar, 2024
基于大型语言模型 (LLMs) 的自动化软件工程在最近的进展中得到了极大的增强。尽管当前的基准测试表明 LLMs 可以完成各种软件工程任务,如人类开发人员一样,但它们的大多数评估仅限于简短的、自包含的算法任务。解决具有挑战性和实际意义的编程任务需要利用多种函数调用作为工具,以有效地实现数据分析和 Web 开发等功能。此外,使用多个工具来解决一个任务需要通过准确理解复杂的指令来进行组合推理。同时实现这两个特征对于 LLMs 来说是一个巨大的挑战。为了评估 LLMs 解决具有挑战性和实际意义的编程任务的能力,我们引入了一个基准测试集 Bench,其中挑战 LLMs 以从 139 个库和 7 个领域中选择 1,140 个细粒度的编程任务中调用多个函数调用作为工具。为了对 LLMs 进行严格评估,每个编程任务包括 5.6 个测试用例,平均分支覆盖率达到 99%。此外,我们提出了 Bench 的自然语言导向变体 Benchi,它将原始的文档字符串自动转换为仅具有基本信息的简短指令。我们对 60 个 LLMs 进行了广泛评估,结果显示 LLMs 还不能准确地遵循复杂指令来使用函数调用,得分最高仅为 60%,明显低于人类的 97%。这些结果强调了在这个领域进一步改进的需要。
Jun, 2024
该研究介绍了一种技术,它允许大型语言模型在解决编程任务时利用用户提供的代码,并且提出了一种逐步生成模块化子函数的方法,以帮助模型在初始生成的代码不足时进行未来的代码生成尝试。
Nov, 2023
LLMs' ability to follow complex instructions composed of multiple constraints is evaluated using ComplexBench, a new benchmark that exposes deficiencies in existing models.
Jul, 2024
通过引入蒙特卡罗树搜索,并将其与自动转换器解码算法相结合,以解决现有大型语言模型在寄存器传输级代码生成中遇到的问题,从而实现能够生成可编译、功能正确且功耗性能区域(PPA)优化的代码。经实证评估,我们的技术在 RTL 代码集上通过对细调的语言模型进行评估,相对于仅使用提示的方法,一直能够生成功能正确的代码,并有效解决了朴素大型语言模型的 PPA 非感知缺陷。对于由最先进的大型语言模型(16 位加法器)生成的最大设计,我们的技术可以在延迟面积乘积方面实现 31.8% 的改进。
Feb, 2024