KernelArc: A Multi-Agent Framework for GPU Kernel Optimization
KernelArc 是一个多智能体框架,通过通过共享内存和确定性防护进行协调的并行、策略专业化智能体,自主优化 GPU 核函数,在 NVIDIA H100 和 B200 GPU 的多样化工作负载上实现了 SOL-ExecBench 排行榜上的顶尖排名。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
现代计算机依赖于被称为图形处理器(GPU)的专用芯片,来处理人工智能所需的海量计算。这些芯片功能极其强大,但也是复杂的机器,拥有许多必须完美同步工作的不同部件。为了充分发挥其性能,工程师必须编写被称为“内核”(kernels)的微小且高度特定的程序,来精确指导芯片如何移动数据和进行数学运算。多年来,这一直是人类专家的一项工作,他们投入无数小时来调整代码、平衡内存使用并优化操作时序,以榨取每一分速度。随着这些芯片变得越来越复杂,手动工作变得愈发困难,硬件能力与软件实现之间的差距也随之扩大。
研究人员开始使用大语言模型——即在海量文本上训练过的计算机程序——来帮助编写和改进这些代码。这些模型可以提出修改建议、进行测试并从结果中学习,扮演着自动化工程师的角色。然而,单个自动化代理往往会陷入停滞。它可能会找到一个不错的解决方案并不断对其进行润色,却忽略了其他可能存在于不同方向上的更优路径。这就像一名徒步旅行者发现了一条通往山顶的小径,并一直沿着这条路向上走,却从未意识到附近的另一条小径能通向更高的巅峰。为了解决这个问题,IMEC 的研究团队开发了一种名为 KernelArc 的新系统,该系统利用一组协同工作的自动化代理来同时探索多条路径。
KernelArc 系统通过为并行运行的多个代理分配不同的策略来运作。系统并非让一个代理独自尝试解决问题,而是让组内的每个代理都专注于不同的攻击角度,例如改变数据的存储方式、改变所使用的数学精度,或将多个步骤合并为一个。这些代理不会分享他们的整个思考过程或每一步操作,否则会变得过于混乱且难以理解。相反,它们只分享最终结论:哪些做法有效,哪些做法失败了。它们将这些结果写入一个共享的内存空间,这个空间就像一块布告栏。如果一个代理发现了一个能加速计算的技巧,它就会发布该结果。其他代理可以阅读这些帖子,并利用这些见解来指导自己的工作,从而避开死胡同并在成功的基础上继续前进。
为了确保代理不会在错误的代码上浪费时间,该系统包含了一个严格的自动化裁判。这个裁判会对每一项新的代码建议进行一系列测试,以检查其正确性以及运行速度。如果一项建议未通过测试,它会被立即丢弃。如果它虽然正确但没有当前的优选版本快,它会被保留作为备份,但不会取代领先的版本。只有当一个新版本既正确又更快时,它才会成为新的标准。这一过程允许代理团队探索广泛的可能性,而不会迷失在每一个尝试的细节之中。此外,系统还有一个安全机制,当代理陷入“高原期”(即无法再找到进一步改进的空间)时,该机制会自动启动。此时,系统会强制代理尝试一种完全不同的方法,以确保搜索过程能够持续推进。
研究人员在两款最先进的 GPU——NVIDIA H100 和 B200 上测试了该系统。他们专注于用于衡量性能的标准任务,其中包括矩阵乘法、用于语言模型的注意力机制以及各种形式的数据融合等操作。在针对单个代理配合详细指南进行工作的特定测试中,系统达到了 766 teraflops 的速度,比该特定任务现有的最佳库快了约 3.2%。这表明,如果给定一条清晰的路径,单个代理可以在特定问题上钻研得非常深入。然而,当研究人员切换到多代理 KernelArc 系统来处理更广泛的任务集时,结果更加令人印象深刻。该系统为各种复杂的运算生成了定制化的实现方案,包括专门的注意力机制和用于大型语言模型的融合层。
在一个根据多种数据形状和规模对这些操作的速度进行排名的公开排行榜上,KernelArc 的提交作品在多个类别中取得了第一名。对于一项涉及注意力和残差加法的任务,单个代理在性能得分 0.441 处陷入了停滞。而多代理系统通过分享见解并探索不同方向,突破了这一障碍,达到了 0.481 的得分。在另一个涉及复杂注意力任务的测试中,多代理系统实现的加速比标准参考实现接近 291 倍,比高度优化的基准版本快了 143 倍以上。这些结果表明,相比于独自工作的单个代理,拥有多个代理相互分享发现的方法在面对庞大且多样的问题空间时,能够更快地找到更好的解决方案。
研究还观察了系统在代理数量和共享内存发生变化时的表现。他们发现,为代理提供一个可以发布成功与失败经验的共享内存,有助于他们在固定次数的尝试内达到更强的结果。当内存不受限制时,系统的表现最好,实现了超过 290 倍的初始速度提升。这表明,能够从群体的集体经验中学习是成功的关键因素。研究人员指出,每个特征(如共享内存或策略专业化)的价值取决于具体的任务和搜索阶段。有时代理需要进行广泛的探索,而有时则需要精炼特定的解决方案。
这项工作并不声称已经解决了所有的计算优化问题,也不意味着不再需要人类工程师。研究结果是针对所测试的具体任务和硬件的,且该系统仍然依赖于人类设计的框架来引导代理。然而,研究结果证明,一个协调一致的自动化代理小组可以比单个代理探索更广泛的解决方案。通过仅分享最有价值的结论,这些代理可以避免重复错误,并在彼此的发现基础上进行构建。这种方法为应对日益复杂的现代计算提供了一种极具前景的方式,在现代计算领域,硬件潜力和软件性能之间的差距正在不断扩大。该系统表明,通过适当的协作,自动化工具可以帮助释放驱动下一代人工智能芯片的全部潜力。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。