1、ubuntu 系统中已安装cuda12.82、版本兼容3、安装过程# 1. 激活环境conda create -n onnx_dev python3.10conda activate onnx_dev# 2. 安装 cuDNN先搜索可用版本conda search cudnn -c conda-forge# 选择版本conda install cudnn9.8.0.87 -c conda-forge# 验证库文件是否存在ls $CONDA_PREFIX/lib/libcudnn.so.9# 3安装安装 TensorRTpip install tensorrt10.11.0.33 --extra-index-url https://pypi.nvidia.com# 验证库文件是否存在sudo find / -name libnvinfer.so* 2/dev/null# 4安装onnxruntime-gpuonnxruntime-gpu1.21.05 # 加入环境变量中export LD_LIBRARY_PATH/home/server/miniconda3/envs/ghm_onnx_dev/lib/python3.10/site-packages/tensorrt_libs:$LD_LIBRARY_PATH3、验证import onnxruntime as ortprint(ort.get_available_providers())[TensorrtExecutionProvider, CUDAExecutionProvider, CPUExecutionProvider]4、TensorrtExecutionProviderTensorrtExecutionProvider简称 TensorRT EP是 ONNX Runtime 中的一个执行提供程序Execution Provider它的主要作用是将 ONNX 模型交给 NVIDIA TensorRT 引擎进行优化和推理从而大幅提升在 NVIDIA GPU 上的运行性能。具体来说它的作用和优势体现在以下几个方面深度硬件加速它专门针对 NVIDIA RTX 或数据中心 GPU 进行了优化能够充分利用 GPU 内部的 Tensor Core 以及 FP8、FP4 等底层架构优势实现卓越的 AI 推理性能。降低延迟与提升吞吐相比于使用 DirectML 或普通的 CUDA 执行提供程序TensorRT EP 能够显著降低推理延迟并提高吞吐量例如在特定模型上吞吐量可提升 50%。即时编译与优化它支持在最终用户设备上进行即时编译自动对模型进行图优化和内核融合生成高度优化的推理引擎从而简化部署流程。广泛的模型支持它支持多种主流的 AI 模型架构包括大语言模型LLM、扩散模型Diffusion以及传统的 CNN 等。简而言之如果你希望在 NVIDIA GPU 上获得极致的模型推理速度在代码中指定TensorrtExecutionProvider是最佳选择。6、示例代码import onnxruntime as ort import numpy as np # 1. 配置 TensorRT 选项可选按需调整 tensorrt_provider_options { trt_fp16_enable: True, # 启用 FP16 混合精度通常能显著加快推理速度 trt_engine_cache_enable: True, # 开启引擎缓存 trt_engine_cache_path: ./trt_cache, # 缓存编译后的引擎路径 } # 2. 定义执行提供者列表按优先级排序 providers [ (TensorrtExecutionProvider, tensorrt_provider_options), # 优先使用 TensorRT (CUDAExecutionProvider, {device_id: 0}), # 备选使用普通 CUDA CPUExecutionProvider # 最终回退到 CPU ] # 3. 创建推理会话 model_path your_model.onnx # 替换为你的模型路径 session ort.InferenceSession(model_path, providersproviders) # 4. 检查当前实际激活的提供者 print(当前激活的执行提供者:, session.get_providers()[0]) # 5. 准备输入数据并进行推理 input_name session.get_inputs()[0].name dummy_input np.random.randn(1, 3, 224, 224).astype(np.float32) # 示例输入 outputs session.run(None, {input_name: dummy_input}) print(推理结果形状:, outputs[0].shape)