零基础学Triton(1) Triton还需要学习吗?
Triton 是OpenAI开发的一种开源语言和编译器,旨在简化GPU编程。它可以看做是构建在CUDA之上的一个抽象层,允许开发者使用类似Python的语法来编写高性能算子,而无需直接处理CUDA的底层复杂性。
尽管在极致优化的情况下,Triton性能不及CUDA。但在通用性和易用性上,碾压CUDA。
在通用性上,Triton支持除CUDA外的其他后端,例如AMD的ROCm,CPU后端等。
在易用性上,利用python语法、支持自动化内存合并、线程调度、并行策略等功能,确保开发者重点关注算法本身。
在大模型方向,推理算子已经逐渐收敛,像FlashAttention、FlashInfer都开源了,那还需要学习Triton吗?本人认为还是需要的。
学习Triton,会逐渐加深对GPU、并行计算的理解;vLLM和SGLang的算法还是用Triton来实现的,更好地向优秀开源工作看齐;人工智能领域除了大模型,还有很多其他方向,它们也需要被推理算法洪水漫溉一波。
本人将在持续分享学习Triton、实现算法的历程。
经过一段时间查资料,收集了Triton的相关教程,共同学习,共同进步。
cs336课程
https://stanford-cs336.github.io/spring2025/
建议逐帧观看GPUs (Tatsu)和Kernels, Triton (Tatsu)课程
Triton-Puzzles
https://github.com/srush/Triton-Puzzles/tree/main
Triton小练习,包括加法、乘法、softmax操作。
Triton-Puzzles-Lite
https://github.com/SiriusNEO/Triton-Puzzles-Lite
Triton小练习,相较Triton-Puzzles更加简化。
triton-index
https://github.com/gpu-mode/triton-index
triton代码的索引库,将大模型常用算子链接到对应的代码库
Liger-Kernel
https://github.com/linkedin/Liger-Kernel
linkedin领英开源的算子库,辅助LLM高效训练。算子包括RMSNorm、CrossEntropy、Fused Linear CrossEntropy等
attorch
https://github.com/BobMcDear/attorch
用Triton实现的Pytorch算子,包括卷积(Conv1d、Conv2d等)、池化(AvgPool1d、AvgPool2d等)、激活函数(Relu、Sigmoid等)
FLASHNN
https://github.com/AlibabaPAI/FLASHNN
阿里维护的Triton算子库,实现attention模块相关的算子,以及支持多种量化技术(int8、int4等)
gemlite
https://github.com/mobiusml/gemlite
聚焦矩阵乘法的算子库
kernl
https://github.com/ELS-RD/kernl
包括大模型领域常用的算子,提供了详细教程
LinearCrossEntropyLoss
https://github.com/JonasGeiping/linear_cross_entropy_loss
合并linear和cross entropy loss算子,降低linear层的logit显存占用
高性能计算与分布式
https://www.zhihu.com/column/c_1426666301352218624
知乎专栏,详细介绍triton的各种应用