论文

AI 作为编译器:在没有 Triton 编译器的情况下编译 Triton 内核

AI as a Compiler: Compiling Triton kernels without the Triton compiler

摘要

随着编程模型、工作负载和加速器的发展,编译器后端的构建和维护成本高昂。我们研究大语言模型是否可以取代传统的优化与降级流程,我们称之为AI降级(AI lowering)的过程。我们研究从 Triton 到 NVIDIA PTX 的 AI降级:LLM Agent将 Triton 内核直接转换为 PTX。我们构建了一个评估候选 PTX 的环境,以及一个 Agentic Harness,其中大语言模型将 Triton 内核转换为 PTX。在 Ada、Hopper 和 Blackwell GPU 上的 12 个常见内核以及最近 ML 论文中的 10 个内核中,AI降级的性能是自动调整的 Triton 的 0.83 倍至 3.34 倍。最大的收益来自 Triton降级管线不执行的转换,例如将打包的二进制权重直接解码为 Tensor Core 操作数(BitDelta 上为 3.34x)、在张量内存中为每个线程分配一个完整的 softmax 行(FlashAttention 上为 1.37x),以及重用重叠卷积窗口(高达 2.23x)。这些结果依赖于具有全面验证支持的评估Harness。我们以现有 PTX 验证器 Volta 为基础,并通过引入对 Blackwell tcgen05 Tensor Core 接口的支持来对其进行大幅扩展,以支持现代 GPU 架构。这需要对三个架构特征进行建模:托管张量内存、基于描述符的操作数布局以及通过提交、等待、内存屏障和代理栅栏(proxy fences)协调的异步执行。我们讨论了将它们正式化所面临的挑战以及当前的局限性。我们的结果提示一种正在形成的未来:AI编译器可能取代定制编写的中间表示和检查器,从而减少为新的通用和定制芯片开发软件所需的时间和工程工作量。

AI 作为编译器:在没有 Triton 编译器的情况下编译 Triton 内核:图1:传统编译、超级优化与AI降级。(a)传统编译器在不同中间表示间应用人工编写的降级和优化过程。(b)超级优化器以常规降级后的目标代码为起点,迭代变异并评分候选程序。(c)AI降级绕过传统优化与降级后端,由LLM直接生成PTX,并依据数值和性能反馈以及可选的符号验证进行修改。在基于搜索的方法中,接受候选需通过数值或形式化检查。
图1:传统编译、超级优化与AI降级。(a)传统编译器在不同中间表示间应用人工编写的降级和优化过程。(b)超级优化器以常规降级后的目标代码为起点,迭代变异并评分候选程序。(c)AI降级绕过传统优化与降级后端,由LLM直接生成PTX,并依据数值和性能反馈以及可选的符号验证进行修改。在基于搜索的方法中,接受候选需通过数值或形式化检查。