3. TensorRT安装与配置:环境要求、安装方式(Deb/RPM/Tar)、验证安装、常见安装问题

好,咱们直接进入正题。TensorRT的安装,说难不难,说简单也容易踩坑。我这些年帮团队搭过不下二十次环境,从Ubuntu 16.04一路折腾到22.04,踩过的坑能写个小本子。今天我把这些经验掰开揉碎了讲给你听。

3.1 环境要求:别让硬件拖后腿

先说说硬件。TensorRT这东西,说白了就是给NVIDIA显卡量身定做的加速库。你拿AMD显卡或者纯CPU跑,那肯定不行。

最低要求:

  • NVIDIA GPU,计算能力(Compute Capability) 5.0以上。我建议至少6.1以上,也就是GTX 1060那个级别。
  • 显存嘛,至少4GB。你要是跑BERT这种大模型,8GB起步比较稳。

软件依赖:

  • CUDA Toolkit:版本必须匹配。TensorRT 8.x对应CUDA 11.x,TensorRT 10.x对应CUDA 12.x。别搞混了。
  • cuDNN:这个也讲究版本对应。我见过有人CUDA装对了,cuDNN版本不对,编译死活过不去。
  • 操作系统:Ubuntu 20.04/22.04最稳。CentOS 7/8也行,但坑多一点。
⚠️ 注意: 千万别用Windows直接搞生产环境。TensorRT在Windows上也能装,但性能不如Linux,而且很多高级特性不支持。我个人习惯,生产环境一律Ubuntu Server。

3.2 安装方式:三种姿势任你选

TensorRT官方给了三种安装方式:Deb包、RPM包、Tar包。我一个个说。

3.2.1 Deb包安装(Ubuntu用户首选)

这种方式最简单,适合新手。我记得第一次给团队搭环境时,就用这个方式,十分钟搞定。

# 1. 下载TensorRT的Deb包(以8.6.1为例)
wget https://developer.nvidia.com/compute/machine-learning/tensorrt/secure/8.6.1/tars/TensorRT-8.6.1.6.Ubuntu-20.04.x86_64-gnu.cuda-11.8.tar.gz

# 2. 安装
dpkg -i nv-tensorrt-local-repo-ubuntu2004-8.6.1-cuda-11.8_1.0-1_amd64.deb

# 3. 更新源
apt-get update

# 4. 安装核心库
apt-get install tensorrt

# 5. 安装Python绑定(如果你用Python)
apt-get install python3-libnvinfer-dev

嗯,这里要注意:Deb包安装后,默认路径在 /usr/lib/x86_64-linux-gnu/。你如果自己编译程序,记得把库路径加进去。

3.2.2 RPM包安装(CentOS/RHEL用户)

流程跟Deb差不多,就是包管理器换成yum或dnf。

# 安装RPM仓库
rpm -ivh nv-tensorrt-local-repo-rhel8-8.6.1-cuda-11.8-1.0-1.x86_64.rpm

# 更新缓存
yum clean all
yum install tensorrt

说实话,RPM方式我用的不多。CentOS用户现在越来越少了,大家基本都转Ubuntu了。

3.2.3 Tar包安装(最灵活,我推荐)

这种方式我最喜欢。为什么?因为你可以把TensorRT放在任意目录,想用哪个版本就用哪个版本,互不干扰。

# 解压
tar -xzvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz

# 设置环境变量(加到~/.bashrc里)
export TRT_ROOT=/path/to/TensorRT-8.6.1.6
export LD_LIBRARY_PATH=$TRT_ROOT/lib:$LD_LIBRARY_PATH
export PATH=$TRT_ROOT/bin:$PATH

# 安装Python包
cd $TRT_ROOT/python
pip install tensorrt-8.6.1-cp38-none-linux_x86_64.whl
💡 我的建议: 如果你经常切换项目,不同项目依赖不同TensorRT版本,用Tar包方式最省心。我曾经同时维护三个项目,分别用TensorRT 7、8、10,全靠Tar包隔离。

3.3 验证安装:确认一切正常

装完了别急着跑。先验证一下,免得后面出问题还得回头排查。

3.3.1 命令行验证

# 查看TensorRT版本
trtexec --version

# 输出示例:
# TensorRT version: 8.6.1
# Built with CUDA: 11.8
# Built with cuDNN: 8.9.2

如果提示 command not found,说明环境变量没配好。回去检查 PATH 吧。

3.3.2 Python验证

import tensorrt as trt

# 创建logger
logger = trt.Logger(trt.Logger.WARNING)

# 创建builder
builder = trt.Builder(logger)

# 打印版本
print(f"TensorRT version: {trt.__version__}")

# 检查GPU是否可用
print(f"GPU支持: {builder.platform_has_fast_fp16}")

如果 import tensorrt 报错,大概率是Python包没装对,或者CUDA版本不匹配。

3.3.3 跑个简单模型试试

我习惯用trtexec跑一个简单的ONNX模型,验证整个链路通不通。

# 下载一个测试模型(比如resnet50)
wget https://github.com/onnx/models/raw/main/vision/classification/resnet/model/resnet50-v2-7.onnx

# 用trtexec转换并推理
trtexec --onnx=resnet50-v2-7.onnx --fp16 --workspace=1024

如果看到 PASSED 或者推理时间正常输出,恭喜你,环境搭好了。

🔑 关键点: 验证安装时,一定要确认三个东西:版本号、GPU支持、模型能跑通。缺一个都不行。

3.4 常见安装问题:我踩过的坑

这部分我多说几句。毕竟安装环境这事,十次有八次要出幺蛾子。

3.4.1 CUDA版本不匹配

现象: 编译时报错 cuda_runtime.h: No such file 或者 libcudart.so: undefined symbol

原因: TensorRT和CUDA版本对不上。比如TensorRT 8.6要求CUDA 11.8,你装了CUDA 12.0就不行。

解决办法: 去NVIDIA官网查兼容性矩阵。我一般直接装LTS版本的CUDA,比如11.8或12.4,稳得很。

3.4.2 cuDNN路径问题

现象: 运行时提示 libcudnn.so.8: cannot open shared object file

原因: cuDNN没装,或者路径没加到 LD_LIBRARY_PATH

解决办法: 下载cuDNN的Tar包,解压后把 lib64 目录加到环境变量里。

export LD_LIBRARY_PATH=/path/to/cudnn/lib64:$LD_LIBRARY_PATH

3.4.3 Python包安装失败

现象: pip install tensorrt-xxx.whl 报错 ERROR: tensorrt-xxx.whl is not a supported wheel on this platform

原因: Python版本不对。比如你用的是Python 3.10,但whl包是给Python 3.8编译的。

解决办法: 下载对应Python版本的whl包。或者用 python3 -m pip install 指定正确的Python解释器。

3.4.4 权限问题

现象: 运行trtexec时提示 Permission denied

原因: 文件没有执行权限。

解决办法: chmod +x trtexec 搞定。

⚠️ 避坑指南: 我曾经因为忘记加 LD_LIBRARY_PATH,折腾了整整一个下午。最后发现就是少了一行export。所以,环境变量一定要配全,配完记得 source ~/.bashrc 或者重启终端。

3.5 小结

安装TensorRT,说白了就是三步:选对版本、装好依赖、验证通过。Deb包适合新手,Tar包适合老手。我个人强烈推荐Tar包方式,灵活、可控、好切换。

下一章,咱们开始讲TensorRT的核心概念——网络定义、Builder、Engine这些。到时候你会明白,安装只是开胃菜,真正的硬菜在后面。