TensorRT-LLM项目:Linux系统源码编译指南
前言
TensorRT-LLM是NVIDIA推出的高性能LLM推理优化库,通过源码编译可以获得最佳性能表现。本文将详细介绍在Linux系统上从源码构建TensorRT-LLM的完整流程,包含两种构建方式及其适用场景分析。
环境准备
基础依赖
构建TensorRT-LLM需要以下基础环境:
- Docker环境(推荐使用NVIDIA官方容器工具链)
- Git LFS(用于管理大文件)
- 约63GB的磁盘空间(用于完整构建)
获取源码
# 安装Git LFS
apt-get update && apt-get -y install git git-lfs
git lfs install
# 克隆TensorRT-LLM仓库
git clone <TensorRT-LLM仓库地址>
cd TensorRT-LLM
git submodule update --init --recursive
git lfs pull
构建方式一:全自动构建(推荐初次使用)
特点
- 单命令完成所有构建步骤
- 适合快速部署场景
- 简化了构建流程
执行命令
# 完整构建(支持所有GPU架构)
make -C docker release_build
# 限定GPU架构构建(减少编译时间)
make -C docker release_build CUDA_ARCHS="89-real;90-real"
运行容器
# 以root用户运行
make -C docker release_run
# 以本地用户运行
make -C docker release_run LOCAL_USER=1
构建方式二:分步构建(适合开发调试)
特点
- 更灵活的构建过程
- 便于调试和修改代码
- 支持选择性编译
创建开发容器
# 构建开发镜像
make -C docker build
# 运行容器(支持本地用户)
make -C docker run LOCAL_USER=1
容器内构建步骤
完整构建(包含C++编译)
# 构建wheel包
python3 ./scripts/build_wheel.py
# 安装生成的wheel包
pip install ./build/tensorrt_llm*.whl
# 或使用可编辑安装(开发推荐)
pip install -e .
高级构建选项
- 清理构建目录:
python3 ./scripts/build_wheel.py --clean
- 指定CUDA架构:
python3 ./scripts/build_wheel.py --cuda_architectures "80-real;86-real"
- 包含C++基准测试:
python3 ./scripts/build_wheel.py --benchmarks
仅构建C++运行时
python3 ./scripts/build_wheel.py --cpp_only --clean
构建产物路径:
- 主库:
cpp/build/tensorrt_llm/libtensorrt_llm.so - 插件库:
cpp/build/tensorrt_llm/plugins/libnvinfer_plugin_tensorrt_llm.so
仅Python构建(无需C++编译)
适用场景
- 仅修改Python代码
- 快速验证功能
- 开发环境配置
执行命令
# 使用预编译库构建
TRTLLM_USE_PRECOMPILED=1 pip wheel . --no-deps --wheel-dir ./build
# 安装生成的wheel包
pip install ./build/tensorrt_llm*.whl
# 或使用可编辑安装
TRTLLM_USE_PRECOMPILED=1 pip install -e .
自定义预编译库位置
TRTLLM_PRECOMPILED_LOCATION=<自定义路径或URL> pip install -e .
技术要点解析
-
ABI兼容性:TensorRT-LLM预编译wheel链接了PyTorch 2.7.0,使用新的CXX11 ABI。源码编译可以灵活选择ABI配置。
-
GPU架构优化:通过
--cuda_architectures参数可以针对特定GPU架构优化,显著提升目标设备性能。 -
增量编译:默认启用增量编译,加速开发迭代速度。
-
C++运行时绑定:构建时自动生成Python绑定,可通过
tensorrt_llm.bindings包访问C++运行时功能。
常见问题处理
-
Docker IPC设置:必须设置
--ipc=host参数,避免出现Bus error (core dumped)错误。 -
版本一致性:使用预编译库时,需确保与当前代码版本匹配,否则可能出现兼容性问题。
-
头文件包含:仅
cpp/include目录下的头文件是稳定API,其他内部头文件可能变更。
结语
本文详细介绍了TensorRT-LLM在Linux系统上的源码编译方法,开发者可根据实际需求选择合适的构建方式。对于生产环境部署,推荐使用完整构建以获得最佳性能;开发调试时可选择分步构建或仅Python构建提高效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



