triton
让 Python 开发者用 Triton DSL 编写 GPU kernel,编译器自动完成硬件优化,性能接近手写 CUDA
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 Python 开发者用 Triton DSL 编写 GPU kernel,编译器自动完成硬件优化,性能接近手写 CUDA
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

你是否有过这样的经历:写好了一个自定义矩阵乘法 kernel,调通之后信心满满,结果一跑 benchmark,发现速度还不如 PyTorch 内置的 torch.matmul?问题往往不在算法本身,而在于内存访问模式、Shared Memory 利用率、Warp 分支效率这些硬件层面的细节——手工写 CUDA/C++ 需要数年经验才能精准把控。
Triton 想解决的就是这个问题:让开发者用 Python 书写逻辑,用编译器处理硬件优化,从而在保持生产力的同时,接近手写 CUDA 的性能上限。
Triton 项目源于 2019 年哈佛大学 Philippe Tillet 等人在 MAPL 会议上发表的论文 Triton: An Intermediate Language and Compiler for Tiled Neural Network Computations。作者 Philippe Tillet 后来成立 Triton 语言团队,吸引了包括 Microsoft 在内的核心贡献者。
目前 Triton 已举办三届开发者大会(2023/2024/2025),其中 2025 年 10 月的第三届会议在微软硅谷园区举办,YouTube 上有完整的会议录像和演讲幻灯片。Triton 项目现有 19,862 颗 Stars、3,076 个 Fork,已成为深度学习编译器领域最重要的开源基础设施之一。
Triton 的设计哲学是中间表示(IR)分层 + 自动调优:
1. Python-first 前端
开发者通过 triton.language 模块用 Python 书写 kernel 逻辑,语法类似 NumPy,但引入了 tile、block 等概念来描述数据布局:
import triton
import triton.language as tl
@triton.jit
def matmul_kernel(a_ptr, b_ptr, c_ptr, M, N, K, stride_am, stride_ak,
stride_bk, stride_bn, stride_cm, stride_cn, BLOCK_SIZE: tl.constexpr):
pid = tl.program_id(axis=0)
... # 核心计算逻辑
2. MLIR + LLVM 两级编译
Triton 编译器将上述 DSL 编译为 MLIR(多级中间表示),再由 MLIR lower 到 LLVM IR,最终生成 NVPTX(NVIDIA)或 ROCm(AMD)GPU 指令。这意味着项目底层依赖 LLVM,且对不同 GPU 架构有良好扩展性。
3. 自动调优(Auto-Tuning)
Triton 提供 @triton.jit 装饰器的 autotune 参数,可以自动探索最优的 tile 大小、num_stages 等参数,省去手工调整的痛苦。
4. 作为 PyTorch 后端
Triton 可作为 torch.utils.cpp_extension 使用,与 PyTorch 张量无缝对接:
import torch
import triton
import triton.ops as ops
a = torch.randn(512, 512, device='cuda')
b = torch.randn(512, 512, device='cuda')
c = ops.matmul(a, b) # Triton 加速的矩阵乘法
| 层次 | 技术 |
|---|---|
| DSL 前端 | Python (triton.language) |
| 中间表示 | MLIR(Dialect: Triton IR) |
| 代码生成 | LLVM(NVPTX / ROCm 后端) |
| 底层语言 | C++(nanobind 绑定 Python) |
| 构建系统 | CMake + Ninja |
| 测试框架 | pytest |
项目采用 monorepo 结构:
python/triton/ — Python API 与 triton.language DSL 实现lib/Dialect/ — Triton IR 的 MLIR Dialect 定义与 Passlib/Conversion/ — Triton IR → LLVM 的转换 Passlib/Target/ — NVPTX/ROCm 等 GPU 指令生成include/triton/ — 编译器头文件python/test/ / test/ — Python 单元测试与集成测试Triton 对 Python 开发者相当友好——安装仅需一行 pip install triton,官方提供 CPython 3.10-3.14 的预编译 wheels。但深度使用需要理解 GPU 编程模型:
triton.ops(如 ops.matmul),无需深入理解编译器官方文档(triton-lang.org)提供完整安装指南和教程,GitHub 上还有第三方整理的 Triton Puzzles,可在无 GPU 环境下用 Triton 解释器运行学习。
Triton 目前仍处于活跃开发阶段,存在一些局限性:
pip install triton 包含 CUDA/ROCm 两套后端二进制,安装包超过 200MBTriton 的出现填补了"生产力与性能之间的鸿沟"——过去要在 GPU 上跑出最优性能,必须掌握 CUDA C++,而 Triton 让 Python 开发者也能触及硬件极限。
从行业角度看,Triton 代表了 AI 编译器 的发展趋势:
torch.compile 背后即借鉴了 Triton 的编译思想Triton 的增长曲线(19k Stars,近三年持续增长)表明,AI 基础设施正从"依赖框架自带算子"向"开发者自研定制算子"演进,Triton 正是这场变革的核心工具。
# 一键安装
pip install triton
# 从源码编译(需要 LLVM)
git clone https://github.com/triton-lang/triton.git
cd triton
pip install -r python/requirements.txt
pip install -e .
# 运行测试
pytest python/test/