Triton 安装指南:从 pip 二进制包到源码编译与自定义 LLVM 构建
【免费下载链接】tritonDevelopment repository for the Triton language and compiler项目地址: https://gitcode.com/GitHub_Trending/tri/triton
本篇技术指南面向所有想在本地搭建 Triton 语言与编译器开发/运行环境的开发者,系统讲解三种安装路径:通过 pip 安装官方二进制 wheel、从源码编译 Python 包、以及基于自定义 LLVM 的深度构建,并附带安装后的测试验证方法。读完本文,你将能够根据自己是否具备 GPU、是否需要修改编译器源码、是否需要接入自定义 LLVM 等不同场景,选择并完成一套可复现、可排错的 Triton 安装方案。
安装前的兼容性评估
在动手安装之前,首先需要确认目标平台与硬件是否在 Triton 的支持范围内。Triton 官方维护一份 Compatibility 清单(位于项目 README 的 Compatibility 小节),覆盖操作系统(Linux、macOS、Windows 等)与硬件后端(NVIDIA GPU、AMD GPU 等)的组合支持情况,建议在安装前先核对。
从当前仓库源码可以进一步确认支持的软件范围:
- Python 版本:
setup.py中定义MIN_PYTHON = (3, 10)、MAX_PYTHON = (3, 14),即本仓库要求 Python 3.10~3.14(见 setup.py); - 构建工具:
python/requirements.txt要求cmake>=3.20,<4.0与ninja>=1.11.1,setup.py中的CMakeBuild.run()也会在构建前强制校验 CMake 版本不低于 3.20(见 setup.py); - 后端依赖:仓库默认打包 NVIDIA(
third_party/nvidia)与 AMD(third_party/amd)两个树内后端,并可通过TRITON_PLUGIN_DIRS环境变量挂载外部插件后端(见 setup.py)。
方式一:通过 pip 安装官方二进制包(推荐快速上手)
如果只是想使用 Triton 编写和运行内核,而不需要修改编译器本身,最快捷的方式是安装发布在 PyPI 上的稳定版本:
pip install triton官方二进制 wheel 覆盖CPython 3.10~3.14,开箱即用,无需本地编译,也无需自行准备 LLVM。安装完成后即可在 Python 中import triton开始编写内核。
方式二:从源码安装 Python 包
需要修改编译器源码、调试前端或后端、或者构建尚未发布到 PyPI 的新功能时,应从源码安装。官方文档给出的标准流程如下:
git clone https://gitcode.com/GitHub_Trending/tri/triton.git cd triton pip install -r python/requirements.txt # 安装构建期依赖 pip install -e . # 以可编辑模式安装下面逐项拆解这条流程背后的细节。
构建期依赖说明
python/requirements.txt中声明的依赖各有分工(见 python/requirements.txt):
| 依赖 | 版本要求 | 作用 |
|---|---|---|
setuptools | >=40.8.0 | Python 打包基础设施 |
wheel | — | 构建 wheel 所需 |
cmake | >=3.20,<4.0 | 驱动 C++/MLIR 部分的构建 |
ninja | >=1.11.1 | 比 make 更快的并行构建后端(setup.py中通过-G Ninja显式指定) |
nanobind | ==2.10.2 | 绑定 Python 与 C++ 扩展(setup.py通过nanobind.cmake_dir()注入 CMake 参数) |
lit | — | LLVM 集成测试工具,用于运行 MLIR/LLVM 层的 lit 测试 |
此外,仓库还维护一份测试期依赖清单python/test-requirements.txt(numpy、pytest、pytest-xdist、scipy 等),供make dev-install等流程使用(见 python/test-requirements.txt)。
pip install -e .做了什么
setup.py是整个构建的编排入口,pip install -e .会依次触发:
- 后端准备:通过
BackendInstaller初始化third_party/nvidia、third_party/amd子模块(若是 git 仓库),并把各后端的backend、language、tools目录以包或符号链接的方式纳入安装(见 setup.py); - CMake 配置与编译:
CMakeBuild以 Ninja 为生成器调用 CMake,编译triton/_C/下的 C++ 扩展(triton._C.libtriton),并传递TRITON_CODEGEN_BACKENDS、TRITON_VERSION、缓存路径等一系列参数(见 setup.py); - 依赖解析:解析 LLVM 与 nlohmann/json 两个第三方依赖,把结果写入 CMake 变量(对应
python/build_helpers.py的write_thirdparty_cmake_vars子命令); - 可编辑安装:将
python/目录作为包源码安装,方便修改 Python 代码后无需重装即可生效。
版本号方面,仓库当前TRITON_VERSION = "3.8.0",在 git 检出且非 release 分支时还会追加短提交哈希作为本地版本后缀(见 setup.py)。
LLVM 依赖的自动解析机制
Triton 依赖 LLVM 生成 GPU/CPU 代码。官方文档特别指出:如果系统上没有安装 LLVM,setup.py会自动下载官方预编译的 LLVM 静态库并链接。这套机制实现在python/build_helpers.py中:
- 构建时会读取
cmake/llvm-info.json,其中记录了当前 Triton 所对应的 LLVM 提交哈希(llvm_hash)、构建号(build_number)以及各平台预编译包的sha256sum校验值(见 cmake/llvm-info.json); - 依据平台自动选择对应的系统后缀(如
ubuntu-x64、almalinux-arm64、macos-arm64、windows-x64等)并拼接下载 URL(见 python/build_helpers.py); - 下载完成后会进行 SHA-256 校验,校验失败默认中止构建(可通过
TRITON_UNSAFE_DISABLE_SHA_CHECK强制跳过,仅作警告)(见 python/build_helpers.py); - 解析结果通过
LLVM_INCLUDE_DIRS、LLVM_LIBRARY_DIR、LLVM_SYSPATH等变量注入 CMake。
需要注意的是:LLVM 没有稳定的 API,因此 Triton 并不支持任意的 LLVM 版本,预编译包与llvm-info.json中记录的提交哈希是严格绑定的。
构建期自动下载的 NVIDIA 工具链
除了 LLVM,构建过程还会根据cmake/nvidia-toolchain-version.json自动下载 NVIDIA 工具链组件并放入third_party/nvidia/backend,包括:
ptxas(PTX 汇编器)与ptxas-blackwell(Blackwell 独立版本,因该版本存在 Hopper 相关缺陷而单独维护);cuobjdump、nvdisasm(反汇编/对象转储工具);- CUDA 运行时头文件(
cudart、cudacrt)与 CUPTI(性能剖析库,含 Blackwell 变体)。
以上组件均可通过TRITON_PTXAS_PATH、TRITON_CUDART_PATH、TRITON_CUPTI_INCLUDE_PATH等环境变量覆盖为本地路径,跳过自动下载(见 python/build_helpers.py)。
方式三:使用自定义 LLVM 构建
当需要针对特定 LLVM 版本做适配、携带本地补丁或进行编译器底层开发时,可选择构建自定义 LLVM。官方文档推荐的一键方式:
make dev-install-llvm该命令在仓库 Makefile 中定义为:先用LLVM_BUILD_PATH(默认指向仓库根目录下的.llvm-project/build)调用scripts/build-llvm-project.sh编译 LLVM,再以LLVM_INCLUDE_DIRS、LLVM_LIBRARY_DIR、LLVM_SYSPATH指向该构建产物并执行make dev-install,从而让 Triton 链接这套自编译 LLVM。
如果选择完全手动构建 LLVM,关键步骤是:
- 查看 cmake/llvm-info.json 中的
llvm_hash字段,确认当前 Triton 代码所绑定的 LLVM 版本,并将 LLVM 源码 checkout 到该提交; - 用 CMake 构建 LLVM(建议开启
mlir、llvm、lld、clang等项目,并包含NVPTX、AMDGPU等目标后端); - 回到 Triton 仓库,设置环境变量后重新执行可编辑安装:
export LLVM_BUILD_DIR=$HOME/llvm-project/build LLVM_INCLUDE_DIRS=$LLVM_BUILD_DIR/include \ LLVM_LIBRARY_DIR=$LLVM_BUILD_DIR/lib \ LLVM_SYSPATH=$LLVM_BUILD_DIR \ pip install -e .提示:若系统已安装 LLVM,CMake 查找模块
cmake/FindLLVM.cmake会按llvm-config-*的多种命名形式(含llvm-config-7.0~llvm-config-17等带版本后缀的名字)及LLVM_ROOT_DIR指定的路径寻找llvm-config,并校验版本不低于LLVM_FIND_VERSION(见 cmake/FindLLVM.cmake)。版本过低时会给出明确报错并建议设置LLVM_ROOT_DIR或LLVM_CONFIG。
常用构建选项与环境变量
结合仓库 README.md 与 setup.py,以下环境变量可在pip install -e .时使用:
| 环境变量 | 作用 |
|---|---|
TRITON_BUILD_WITH_CLANG_LLD=true | 使用 clang/clang++ 作为编译器、lld 作为链接器,可显著加快链接 |
TRITON_BUILD_WITH_CCACHE=true | 启用 ccache 加速增量编译 |
TRITON_HOME=/some/path | 改变.triton缓存目录(默认位于用户主目录),构建期下载与运行期缓存均存于此 |
MAX_JOBS=N | 限制并行编译任务数,构建内存不足时使用(setup.py默认取2 * CPU 核数,见 setup.py) |
DEBUG=1/REL_WITH_DEB_INFO=1 | 切换 CMake 构建类型为 Debug / RelWithDebInfo;默认类型为TritonRelBuildWithAsserts(见 setup.py) |
TRITON_OFFLINE_BUILD=1 | 离线构建模式,禁止任何网络下载;此时必须通过LLVM_SYSPATH、JSON_SYSPATH等显式提供依赖(见 python/build_helpers.py) |
TRITON_BUILD_PROTON=OFF | 关闭 Proton 性能剖析组件的构建(默认开启) |
TRITON_APPEND_CMAKE_ARGS | 追加额外的 CMake 参数 |
另外两个值得注意的实践:
- 若系统已装 torch,
make dev-install中的dev-install-torch目标会卸载pytorch-triton,避免其覆盖本地安装的 Triton(见 Makefile); - 传
--no-build-isolation给pip install可以加快反复迭代构建:否则每次pip install都会使用不同的 cmake 符号链接,迫使 ninja 重建大部分.a文件(见 README.md)。
安装验证与测试
安装完成后即可验证。官方文档给出的测试流程(详见 Makefile):
# 一次性环境准备:安装构建依赖与测试依赖,并以可编辑模式重装 Triton make dev-install # 运行全部测试(需要 GPU) make test # 或者,在没有 GPU 的机器上运行测试 make test-nogpumake test会串联test-lit(通过ninja check-triton-lit-tests运行 MLIR lit 测试)、test-cpp(C++ 单元测试,对应check-triton-unit-tests)与test-python(覆盖 unit、plugins、regression、interpreter、proton 等 Python 测试套件)。make test-nogpu则只执行 lit、C++ 测试以及不依赖 GPU 的 Python 前端测试,适合无 GPU 的开发机快速自检(见 Makefile)。
此外,若不需要 GPU 即可验证内核逻辑,可在运行测试时设置TRITON_INTERPRET=1使用 Triton 解释器执行内核,甚至可以在内核代码中插入 Python 断点调试。
常见问题与排错提示
- 找不到 LLVM:构建报错提示未找到
llvm-config时,说明既没有预编译包可用也没有本地 LLVM;请检查网络(预编译 LLVM 需要从远端下载),或按“自定义 LLVM”一节手动构建并设置LLVM_SYSPATH。 - 构建内存不足:降低
MAX_JOBS,例如MAX_JOBS=4 pip install -e .。 - 反复安装导致全量重编:为
pip install添加--no-build-isolation,并使用make dev-install保持一致的构建环境。 - 需要为 IDE 提供代码补全:构建系统会在仓库根目录生成
compile_commands.json(指向 CMake 构建目录中的真实文件),可配置 VSCode C/C++ 扩展或 clangd 使用它(见 README.md)。 - 离线环境构建:设置
TRITON_OFFLINE_BUILD=1,并提前通过LLVM_SYSPATH、JSON_SYSPATH以及TRITON_PTXAS_PATH、TRITON_CUPTI_LIB_PATH等变量指向本地已有的依赖(见 python/build_helpers.py)。
小结
无论你是想快速用上稳定版 Triton(pip install triton),还是需要从源码定制编译器(git clone+pip install -e .),或是接入自编译 LLVM 进行底层开发(make dev-install-llvm),本文梳理的安装路径、构建依赖与可调环境变量都能覆盖对应场景。安装完成后,建议至少运行一次make test-nogpu或make test验证环境可用,再进入内核开发与测试阶段。
【免费下载链接】tritonDevelopment repository for the Triton language and compiler项目地址: https://gitcode.com/GitHub_Trending/tri/triton
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考