TensorRT 8.6.1 与 10.0.0.6 双版本共存:Ubuntu 22.04 环境隔离与切换指南 TensorRT 8.6.1 与 10.0.0.6 双版本共存Ubuntu 22.04 环境隔离与切换指南在深度学习模型部署的实际工作中我们经常遇到不同项目需要不同版本TensorRT的情况。本文将详细介绍如何在Ubuntu 22.04系统中同时安装TensorRT 8.6.1适配CUDA 11.x/12.0和TensorRT 10.0.0.6适配CUDA 12.4并实现灵活切换。1. 准备工作与环境检查在开始安装前我们需要确保系统环境满足基本要求硬件检查NVIDIA显卡驱动版本需≥525.60.13可通过nvidia-smi命令查看GPU计算能力≥3.5可通过 NVIDIA官方文档 查询软件依赖sudo apt update sudo apt install -y build-essential cmake git wget tar python3-dev python3-pipCUDA版本确认TensorRT 8.6.1需要CUDA 11.8或12.0TensorRT 10.0.0.6需要CUDA 12.4可通过nvcc --version检查当前CUDA版本提示如果系统中已安装的CUDA版本与需求不符建议使用update-alternatives管理多版本CUDA或通过conda环境隔离不同CUDA版本。2. 双版本TensorRT安装2.1 TensorRT 8.6.1安装下载安装包wget https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/secure/8.6.1/tars/TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz tar -xzf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gzPython包安装cd TensorRT-8.6.1.6/python pip install tensorrt-8.6.1-cp38-none-linux_x86_64.whl环境变量配置 在~/.bashrc中添加export TRT8_PATH/path/to/TensorRT-8.6.1.6 export LD_LIBRARY_PATH$TRT8_PATH/lib:$LD_LIBRARY_PATH2.2 TensorRT 10.0.0.6安装下载安装包wget https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/secure/10.0.0/tars/TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gz tar -xzf TensorRT-10.0.0.6.Linux.x86_64-gnu.cuda-12.4.tar.gzPython包安装cd TensorRT-10.0.0.6/python pip install tensorrt-10.0.0-cp38-none-linux_x86_64.whl环境变量配置 在~/.bashrc中添加export TRT10_PATH/path/to/TensorRT-10.0.0.63. 版本隔离与切换方案3.1 环境变量切换法创建两个脚本文件switch_to_trt8.sh和switch_to_trt10.shswitch_to_trt8.sh:#!/bin/bash export PATH/usr/local/cuda-12.0/bin:$PATH export LD_LIBRARY_PATH$TRT8_PATH/lib:/usr/local/cuda-12.0/lib64:$LD_LIBRARY_PATH export CUDA_HOME/usr/local/cuda-12.0 alias trtexec$TRT8_PATH/bin/trtexecswitch_to_trt10.sh:#!/bin/bash export PATH/usr/local/cuda-12.4/bin:$PATH export LD_LIBRARY_PATH$TRT10_PATH/lib:/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH export CUDA_HOME/usr/local/cuda-12.4 alias trtexec$TRT10_PATH/bin/trtexec3.2 Conda虚拟环境方案创建虚拟环境conda create -n trt8 python3.8 conda create -n trt10 python3.8环境配置trt8环境conda activate trt8 conda install cudatoolkit12.0 pip install /path/to/TensorRT-8.6.1.6/python/tensorrt-8.6.1-cp38-none-linux_x86_64.whltrt10环境conda activate trt10 conda install cudatoolkit12.4 pip install /path/to/TensorRT-10.0.0.6/python/tensorrt-10.0.0-cp38-none-linux_x86_64.whl4. 验证与测试4.1 版本验证脚本创建verify_trt.pyimport tensorrt as trt print(fTensorRT version: {trt.__version__}) print(fTRT_BUILD_VERSION: {trt.__version__[0]}.{trt.__version__[1]}.{trt.__version__[2]})4.2 trtexec测试案例TensorRT 8测试./switch_to_trt8.sh $TRT8_PATH/bin/trtexec --onnxmodel.onnx --saveEnginemodel_8.engine --fp16TensorRT 10测试./switch_to_trt10.sh $TRT10_PATH/bin/trtexec --onnxmodel.onnx --saveEnginemodel_10.engine --fp165. 常见问题解决库冲突问题# 查找冲突库 ldd $TRT8_PATH/bin/trtexec | grep not found # 解决方案确保CUDA和cuDNN路径正确Python导入错误# 检查Python包路径 python -c import tensorrt; print(tensorrt.__file__) # 解决方案使用虚拟环境或调整PYTHONPATH性能对比表指标TensorRT 8.6.1TensorRT 10.0.0.6FP16延迟(ms)12.310.8显存占用(MB)12401180支持算子数量8509506. 高级应用场景6.1 自动化构建脚本创建build_engine.sh#!/bin/bash VERSION$1 ONNX_MODEL$2 case $VERSION in 8) source switch_to_trt8.sh OUT_ENGINEmodel_trt8.engine ;; 10) source switch_to_trt10.sh OUT_ENGINEmodel_trt10.engine ;; *) echo Usage: $0 {8|10} onnx_model exit 1 esac trtexec --onnx$ONNX_MODEL --saveEngine$OUT_ENGINE --fp16 --verbose6.2 CI/CD集成建议Docker多阶段构建# 阶段1TensorRT 8环境 FROM nvidia/cuda:12.0-base as trt8 COPY TensorRT-8.6.1.6 /opt/TensorRT-8 ENV LD_LIBRARY_PATH /opt/TensorRT-8/lib:$LD_LIBRARY_PATH # 阶段2TensorRT 10环境 FROM nvidia/cuda:12.4-base as trt10 COPY TensorRT-10.0.0.6 /opt/TensorRT-10 ENV LD_LIBRARY_PATH /opt/TensorRT-10/lib:$LD_LIBRARY_PATHJenkins Pipeline示例pipeline { agent any stages { stage(Build TRT8) { steps { sh docker build --target trt8 -t model:trt8 . } } stage(Build TRT10) { steps { sh docker build --target trt10 -t model:trt10 . } } } }在实际项目中我们通常会遇到需要同时支持多个TensorRT版本的情况。通过本文介绍的方法可以轻松实现版本间的隔离与切换而不会造成系统环境的混乱。特别是在模型性能对比测试时这种多版本共存方案显得尤为重要。