如果把一个大模型比作一家大型工厂,那么GPU就是工厂里的高速生产线。理论上,生产线越先进,生产速度应该越快。但现实中经常出现一种情况:机器本身非常快,真正拖慢效率的却是“搬料、排队和换工序”。
今天很多AI计算也是如此。
GPU的计算能力已经非常强,但模型运行时,大量时间并不是花在真正的数学计算上,而是花在数据搬运、显存读写、不同计算任务切换等环节。
而Triton,就是近年来专门解决这一类问题的重要技术。
简单来说:
Triton是一种专门用来编写高性能GPU计算程序的语言和编译器。
它处在PyTorch和CUDA之间。
如果说PyTorch告诉计算机“我要做什么”,CUDA则需要工程师详细告诉GPU“每个线程具体应该怎么干”,那么Triton处在两者之间:
开发者告诉Triton“一大块数据应该怎么计算”,剩下很多GPU底层细节由编译器处理。
这看起来只是编程方式的变化,但对于今天的大模型而言非常重要。

为什么不能只用PyTorch?
用PyTorch写神经网络非常方便。
例如Softmax、矩阵乘法、LayerNorm,通常一两行代码就可以完成。
问题在于,PyTorch面对的是通用场景。
而在真正追求极致性能时,不同模型往往存在非常特殊的需求。例如:
矩阵尺寸不同;
数据格式不同;
需要INT8或FP8量化;
多个算子希望连续执行;
Attention需要特殊的数据访问方式;
MoE模型需要特殊的专家调度。
这时,单纯调用标准算子不一定是最快的方法。
一种办法是直接写CUDA。
CUDA允许工程师直接控制GPU线程、Warp、Shared Memory和Tensor Core,性能潜力非常高。
但代价也很明显:
CUDA性能优化门槛极高。
开发者不仅要懂算法,还要懂GPU硬件架构、线程调度、内存层次、缓存、同步和指令流水线。
而Triton希望解决的,正是这个问题。
Triton最大的变化:不再盯着“一个线程”
传统CUDA编程非常强调Thread,也就是GPU线程。
工程师需要考虑:
第一个线程处理什么?
第二个线程处理什么?
一个Block里面多少线程?
多个Warp怎样协作?
而Triton更喜欢从“数据块”角度考虑问题。
例如有两个4096×4096矩阵需要相乘。
Triton开发者可以把输出矩阵切成很多128×128的小块,然后告诉程序:
一个计算单元负责处理一个128×128的数据块。
至于这一块数据最终由多少GPU线程处理、怎样放进寄存器、怎样利用Shared Memory、是否使用Tensor Core,很多工作交给Triton编译器完成。
这就是Triton最重要的思想:
从Thread编程,转向Tile编程。
Tile可以简单理解成“数据砖块”。
AI模型中的矩阵、图像、Attention数据,往往天然就可以被切成很多Tile,因此这种思路非常适合深度学习。
Triton真正重要的能力:减少数据搬运
假设一个神经网络执行:
Bias → GELU → Dropout
传统情况下可能启动三个GPU Kernel。
过程大致是:
Bias计算完,把数据写回显存;
GELU再从显存读取;
计算完成,再写回显存;
Dropout再次读取。
真正的数学计算可能非常简单,但数据来来回回搬了很多次。
而利用Triton,可以把这几个操作写成一个融合Kernel:
读取一次数据;
完成Bias;
立即计算GELU;
继续完成Dropout;
最后再把结果写回显存。
这样,中间结果尽量保留在GPU内部高速的寄存器或Shared Memory中。
于是减少了大量显存访问。
这也是今天AI系统优化中一个越来越重要的趋势:
不是少做几次乘法,而是少搬几次数据。
随着GPU算力越来越强,这件事反而越来越重要。
为什么大模型特别喜欢Triton?
今天的大语言模型中存在大量非常适合Triton的计算,例如:
Attention、Softmax、RMSNorm、RoPE、量化、反量化、KV Cache处理、MoE计算以及各种激活函数。
这些计算有一个共同特点:
它们未必是简单的标准矩阵乘法,却又会被模型执行无数次。
如果每一次都多进行一次显存读写,累积起来就是非常大的性能损失。
所以在大模型时代,一个趋势越来越明显:
标准矩阵乘法继续大量交给cuBLAS、CUTLASS等高度优化库,而特殊AI算子和融合算子越来越多地使用Triton。
很多人其实已经在使用Triton
有意思的是,绝大多数AI开发者可能从来没有亲手写过Triton程序,但已经间接使用它。
最典型的例子就是PyTorch的:
torch.compile
当开发者打开PyTorch编译优化后,TorchInductor会分析模型中的计算图,把多个适合融合的操作组合起来,然后自动生成Triton Kernel。
换句话说,开发者仍然写普通PyTorch代码:
PyTorch → 编译器分析 → 生成Triton Kernel → GPU执行。
因此,Triton已经逐渐从一种“GPU专家工具”,变成AI框架底层的重要基础设施。
另一个典型场景是大模型推理。
vLLM等主流LLM推理框架中,也大量存在Triton Kernel,用来实现量化、Attention、MoE以及各种特殊GPU操作。
FlashAttention这一类强调减少显存访问的算法,同样非常适合采用Triton实现。
Triton会取代CUDA吗?
不会。
至少目前完全没有这种趋势。
CUDA仍然是NVIDIA GPU最完整、最底层、控制能力最强的软件平台。
cuBLAS、cuDNN、CUTLASS中的很多核心Kernel经过多年高度优化,在标准计算任务上往往很难被轻易超越。
所以更合理的未来并不是:
Triton取代CUDA。
而是形成新的分工:
PyTorch负责模型表达;
AI编译器负责分析整个模型;
Triton负责快速生成特殊GPU Kernel;
CUDA和底层GPU工具链负责最终硬件执行。
可以简单理解成:
PyTorch管“模型”,Triton管“计算块”,CUDA管“机器”。
Triton真正改变的是什么?
Triton最重要的价值,并不只是“比CUDA代码更短”。
它真正改变的是AI算法进入GPU的速度。
过去一个新的Attention算法出现以后,如果想做到真正高性能,往往需要GPU专家花大量时间手写CUDA。
现在研究人员可以先用Triton快速实现:
新算法 → Triton Kernel → GPU运行 → 性能测试 → 持续优化。
AI算法创新与GPU高性能实现之间的距离,因此被大幅缩短。
这对于今天快速迭代的大模型产业尤其重要。
因为新的Attention、新的量化方法、新的MoE结构和新的推理算法出现得越来越快,底层Kernel也必须快速跟上。
从这个角度看,Triton正在成为AI时代非常关键的一层“翻译系统”。
上面是不断变化的AI模型和算法;
下面是越来越复杂的GPU硬件。
Triton所做的事情,就是把前者快速转换成后者能够高效执行的程序。
所以,与其把Triton简单理解成“另一种CUDA”,不如把它理解成:
连接AI算法与GPU硬件的一座桥梁。
未来真正决定AI性能的,不只是GPU拥有多少TOPS或TFLOPS,更重要的是软件能不能让这些算力真正发挥出来。
而Triton,正是当前这场“让AI算力真正跑起来”的编译器竞争中,最值得关注的技术之一。