Linux环境下TensorRT安装与配置全攻略

张开发
2026/4/13 19:29:35 15 分钟阅读

分享文章

Linux环境下TensorRT安装与配置全攻略
1. 环境准备与版本检查在Linux系统上部署TensorRT之前最关键的是确保基础环境兼容性。我遇到过不少开发者直接跳过版本检查导致后续各种报错这里分享几个实用命令和避坑经验。首先用nvidia-smi查看显卡驱动支持的CUDA最高版本。注意这里显示的是驱动支持的最高CUDA版本实际安装时可以选更低版本。比如我的输出显示Driver Version: 525.60.13CUDA Version: 12.0但我实际安装的是CUDA 11.8nvidia-smi接下来用nvcc -V确认当前安装的CUDA版本。如果提示命令不存在说明CUDA环境变量未配置nvcc -V检查cuDNN版本更隐蔽些需要到CUDA安装目录下查看头文件。我的CUDA装在/usr/local/cuda-11.8所以执行cat /usr/local/cuda-11.8/include/cudnn_version.h | grep CUDNN_MAJOR -A 2这里有个常见坑点TensorRT对CUDA和cuDNN的版本要求极其严格。以TensorRT 8.5为例官方明确要求CUDA 11.4/11.8和cuDNN 8.3/8.5。我整理了个版本对照表TensorRT版本CUDA要求cuDNN要求8.5.x11.4/11.88.3/8.58.4.x11.4/11.68.2/8.48.2.x11.48.2如果版本不匹配轻则性能下降重则直接报错。有次我遇到libnvinfer.so加载失败的问题折腾半天发现是cuDNN版本高了0.1。2. TensorRT下载与安装到NVIDIA官网下载TensorRT时要注意选择与CUDA匹配的版本。这里有个小技巧注册开发者账号后选择Local Installer for Linux x86_64的Tar包格式比deb/rpm更灵活。下载完成后解压到自定义目录我习惯放在/opt下tar -xzvf TensorRT-8.5.1.7.Linux.x86_64-gnu.cuda-11.8.cudnn8.5.tar.gz -C /opt mv /opt/TensorRT-8.5.1.7 /opt/TensorRT配置环境变量时容易犯两个错误一是路径写错二是忘记source。建议用echo命令验证路径是否存在export TRT_HOME/opt/TensorRT export PATH$PATH:$TRT_HOME/bin export LD_LIBRARY_PATH$TRT_HOME/lib:$LD_LIBRARY_PATH # 验证路径 echo $TRT_HOME ls $TRT_HOME/lib刷新环境变量后用trtexec测试是否安装成功。看到类似下面的输出说明基础环境OKsource ~/.bashrc trtexec --version3. 编译测试与常见问题TensorRT自带的sample是验证安装的好方法但编译过程可能遇到各种问题。以sampleOnnxMNIST为例cd $TRT_HOME/samples/sampleOnnxMNIST make clean make -j$(nproc)最常见的是cuda_runtime_api.h not found错误这通常是因为CUDA软链接未建立。检查/usr/local/cuda是否存在ls -l /usr/local | grep cuda如果没有就创建软链接根据实际CUDA安装路径调整sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda另一个高频错误是libnvinfer.so找不到这是因为动态库路径未生效。可以临时指定路径测试export LD_LIBRARY_PATH$TRT_HOME/lib:$LD_LIBRARY_PATH ./sample_onnx_mnist如果看到Your ONNX model has been converted to TensorRT engine!的输出恭喜你编译成功。建议把常用库复制到系统目录避免重复配置sudo cp $TRT_HOME/lib/* /usr/lib/x86_64-linux-gnu/ sudo cp $TRT_HOME/include/* /usr/include/4. Python环境集成TensorRT的Python包需要单独安装whl文件。注意Python版本要与文件名中的cp标识匹配cd $TRT_HOME/python pip install tensorrt-8.5.1.7-cp38-none-linux_x86_64.whl配套的graphsurgeon和uff工具也建议安装cd $TRT_HOME/graphsurgeon pip install graphsurgeon-0.4.5-py2.py3-none-any.whl cd $TRT_HOME/uff pip install uff-0.6.9-py2.py3-none-any.whl验证安装时有个细节import tensorrt可能不报错但实际功能异常。建议运行完整测试import tensorrt as trt print(trt.__version__) logger trt.Logger(trt.Logger.INFO) builder trt.Builder(logger) print(Builder created:, builder)如果遇到ImportError: libnvinfer.so.8: cannot open shared object file说明动态库路径还是有问题。可以永久解决echo /opt/TensorRT/lib | sudo tee /etc/ld.so.conf.d/tensorrt.conf sudo ldconfig5. 进阶配置与优化生产环境中还需要考虑多版本共存问题。我通常用符号链接管理不同版本ln -s /opt/TensorRT-8.5.1.7 /opt/TensorRT对于Docker用户建议在基础镜像中预装所有依赖FROM nvidia/cuda:11.8.0-base COPY TensorRT-8.5.1.7 /opt/TensorRT ENV PATH /opt/TensorRT/bin:$PATH ENV LD_LIBRARY_PATH /opt/TensorRT/lib:$LD_LIBRARY_PATH性能优化方面建议开启TensoRT的FP16模式能显著提升推理速度config builder.create_builder_config() config.set_flag(trt.BuilderFlag.FP16)最后提醒一个血泪教训升级驱动前一定要备份TensorRT模型有次我升级驱动后之前生成的engine文件全部失效不得不重新转换所有模型。

更多文章