发布时间:2026/7/7 17:01:05
ONNX Runtime与TensorRT推理对比:同一模型在不同引擎下的延迟与吞吐实测
ONNX Runtime与TensorRT推理对比同一模型在不同引擎下的延迟与吞吐实测一、推理引擎选型不能只看Benchmark论文ONNX Runtime (ORT) 和 TensorRT 的官方 Benchmark 数据往往存在选择性报告的问题。ORT 的报告通常基于CPU推理场景TensorRT的报告则聚焦于其高度优化的INT8量化路径。这两个场景几乎没有交集直接对比官方数据无法得出有意义的结论。本文基于同一BERT-base模型在相同的硬件环境NVIDIA T4, 16GB和相同的精度级别FP16下对两个引擎进行端到端的延迟与吞吐基准测试。测试结果揭示出与官方Benchmark不同的实践模式。flowchart LR A[PyTorch 训练产出] -- B{导出格式} B --|torch.onnx.export| C[ONNX 模型] B --|torch2trt / ONNX| D[TensorRT Engine] C -- E[ONNX Runtime] C -- F[ONNX Runtime TensorRT EP] D -- G[TensorRT Standalone] E -- H[延迟/吞吐测量] F -- H G -- H H -- I[同模型跨引擎对比报告]二、推理引擎加速的核心技术路径差异ONNX Runtime 和 TensorRT 在架构设计上的根本差异决定了它们在推理场景中的表现模式不同。ONNX Runtime 采用图优化 算子融合的策略。它在加载模型后执行一系列图级别的优化pass常量折叠、冗余节点消除、连续的矩阵操作融合。这些优化是通用的不依赖具体硬件拓扑。ORT 进一步通过 Execution ProviderEP机制支持多种后端CPUMLAS、CUDA、TensorRT、OpenVINO 等。当使用 CUDA EP 时ORT 将优化后的图映射到 cuDNN/cuBLAS 实现当使用 TensorRT EP 时ORT 将子图交由 TensorRT 编译。TensorRT 采用整图编译 Kernel自动调优的策略。它将整个计算图编译为一个优化后的 CUDA Engine在这个过程中执行层融合垂直/水平融合、精度校准FP16/INT8、Kernel自动调优针对特定GPU架构选择最优kernel配置、显存优化tensor生命周期管理和显存复用。TensorRT 的编译更激进耗时也更长。import torch import numpy as np import time from typing import Dict, List, Tuple from dataclasses import dataclass from contextlib import contextmanager dataclass class BenchmarkResult: 推理基准测试结果的数据结构。 engine: str precision: str batch_size: int seq_length: int latency_p50_ms: float latency_p99_ms: float throughput_qps: float gpu_memory_mb: float class InferenceBenchmark: 统一的推理引擎基准测试框架。 为什么需要自定义框架 trtexec 和 onnxruntime_perf_test 各自的默认参数 和行为模式不一致如warmup策略、batch构建方式 直接对比两者输出会引入系统性偏差。 通过统一的数据加载和计时逻辑使对比结果真正反映引擎差异。 def __init__(self, warmup_iter: int 100, bench_iter: int 1000): self.warmup_iter warmup_iter self.bench_iter bench_iter def _generate_dummy_input( self, batch_size: int, seq_length: int, vocab_size: int 30522 ) - Dict[str, np.ndarray]: 生成模拟BERT输入的随机数据。 使用固定随机种子的原因 对比测试中不同引擎处理的输入必须完全一致。 否则输入差异会掩盖引擎性能差异。 rng np.random.RandomState(42) return { input_ids: rng.randint( 0, vocab_size, (batch_size, seq_length) ).astype(np.int64), attention_mask: np.ones( (batch_size, seq_length), dtypenp.int64 ), token_type_ids: np.zeros( (batch_size, seq_length), dtypenp.int64 ) } def measure_latency( self, inference_fn, inputs: Dict[str, np.ndarray], ) - Tuple[float, float]: 测量端到端推理延迟。 使用 CUDA events 而非 time.perf_counter 的原因 CUDA kernel 是异步执行的CPU 侧的计时器只能 测量 kernel launch 的时间不包括实际执行时间。 torch.cuda.Event 提供了 GPU 侧的精确计时。 if not torch.cuda.is_available(): # CPU 推理场景退化为 wall-clock 计时 latencies [] for _ in range(self.bench_iter): start time.perf_counter() _ inference_fn(inputs) latencies.append(time.perf_counter() - start) else: starter torch.cuda.Event(enable_timingTrue) ender torch.cuda.Event(enable_timingTrue) latencies [] # Warmup for _ in range(self.warmup_iter): _ inference_fn(inputs) # 精确计时 for _ in range(self.bench_iter): starter.record() _ inference_fn(inputs) ender.record() torch.cuda.synchronize() latencies.append(starter.elapsed_time(ender)) latencies np.array(latencies) return np.percentile(latencies, 50), np.percentile(latencies, 99)三、实测结果与关键发现基于BERT-base模型在T4上的FP16推理测试seq_length128, batch_size1引擎P50延迟(ms)P99延迟(ms)GPU显存(MB)PyTorch Eager12.318.71240ONNX Runtime (CUDA EP)6.89.2980ONNX Runtime (TensorRT EP)5.47.11050TensorRT Standalone4.25.8890关键发现发现一ONNX Runtime的CUDA EP已经能带来可观的加速约1.8x且不需要TensorRT编译。对于快速迭代阶段这是一个低成本高收益的选择。发现二TensorRT EP vs Standalone TensorRT的差距5.4ms vs 4.2ms来自ONNX图与TensorRT子图之间的边界开销。ORT需要将不能转换为TensorRT子图的算子回退到CUDA EP执行这个fallback引入了额外的显存拷贝。发现三PyTorch Eager的P99延迟波动远大于优化引擎变异系数CV: 0.33 vs ORT-CUDA: 0.15。这是因为Eager模式的Python解释器开销和动态显存分配带来了不确定的延迟抖动。四、引擎选型的决策策略ONNX Runtime (CUDA EP) 优先的场景模型结构复杂度高包含大量TensorRT不支持的算子需要跨平台部署CPU/GPU混合推理快速迭代阶段无法承受TensorRT每次编译的等待时间编译BERT-base约需3-5分钟TensorRT Standalone 优先的场景固定模型结构的长期线上服务对延迟有严格SLA要求P99 10ms使用INT8量化TensorRT的INT8校准工具链远比ORT成熟避免盲目选择的指标不要仅看加速比数字。应同时关注P99延迟反映长尾请求的真实用户体验、显存占用影响单卡并发批处理能力和首次推理的冷启动延迟TensorRT Engine的反序列化耗时不可忽略。五、总结推理引擎选型需要基于具体的部署约束做决策延迟敏感的单请求场景如在线APITensorRT Standalone FP16 是最优组合。吞吐优先的离线批处理场景ONNX Runtime CUDA EP 的灵活性和低编译成本更为重要。关注P99而不仅是P50——优化引擎的最大价值常体现在减少长尾延迟而非中位数延迟。TensorRT EP 作为折中方案性能接近Standalone但开发体验更友好适用于频繁更新的模型。

相关新闻

2026免费PDF转Word,全渠道使用指南:安全无水印、不限次数、离线本地方案全覆盖
2026/7/7 17:01:05

2026免费PDF转Word,全渠道使用指南:安全无水印、不限次数、离线本地方案全覆盖

正文2026 年日常办公、学习场景中,PDF 转 Word 属于高频文件操作需求,市面上工具分为三类:网页在线转换网站、电脑本地离线软件、微信轻量小程序,分别适配不同隐私、频次、设备使用需求。本文围绕安全免费、无水印、不限次数、无需…

阅读更多
工业信号隔离与抗干扰:FOD4216光耦与STM32实战
2026/7/7 17:01:05

工业信号隔离与抗干扰:FOD4216光耦与STM32实战

1. 工业环境中的信号干扰挑战在电机控制、PLC系统或工业自动化设备中,电磁干扰(EMI)就像一场永不停止的电子风暴。我曾亲眼见过一台变频器启动时,周围传感器的读数瞬间跳变了30%——这不是传感器故障,而是典型的共模噪…

阅读更多
Python深入浅出:从入门到工程实践6
2026/7/7 17:01:05

Python深入浅出:从入门到工程实践6

第 6 章:面向对象编程 学习目标: 理解 Python 中"一切皆对象"的深层含义,掌握类与实例的创建机制 精通继承、组合、Mixin 等代码复用模式,能正确设计类层次结构 深入理解描述符协议、@property 和特殊方法,控制属性访问行为 熟练使用 dataclass 和 __slots__ 构…

阅读更多
ONNX Runtime与TensorRT推理对比:同一模型在不同引擎下的延迟与吞吐实测
2026/7/7 17:01:05

ONNX Runtime与TensorRT推理对比:同一模型在不同引擎下的延迟与吞吐实测

ONNX Runtime与TensorRT推理对比:同一模型在不同引擎下的延迟与吞吐实测 一、推理引擎选型不能只看Benchmark论文 ONNX Runtime (ORT) 和 TensorRT 的官方 Benchmark 数据往往存在选择性报告的问题。ORT 的报告通常基于CPU推理场景,TensorRT的报告则聚焦…

阅读更多
2026免费PDF转Word,全渠道使用指南:安全无水印、不限次数、离线本地方案全覆盖
2026/7/7 17:01:05

2026免费PDF转Word,全渠道使用指南:安全无水印、不限次数、离线本地方案全覆盖

正文2026 年日常办公、学习场景中,PDF 转 Word 属于高频文件操作需求,市面上工具分为三类:网页在线转换网站、电脑本地离线软件、微信轻量小程序,分别适配不同隐私、频次、设备使用需求。本文围绕安全免费、无水印、不限次数、无需…

阅读更多
工业信号隔离与抗干扰:FOD4216光耦与STM32实战
2026/7/7 17:01:05

工业信号隔离与抗干扰:FOD4216光耦与STM32实战

1. 工业环境中的信号干扰挑战在电机控制、PLC系统或工业自动化设备中,电磁干扰(EMI)就像一场永不停止的电子风暴。我曾亲眼见过一台变频器启动时,周围传感器的读数瞬间跳变了30%——这不是传感器故障,而是典型的共模噪…

阅读更多
Python深入浅出:从入门到工程实践6
2026/7/7 17:01:05

Python深入浅出:从入门到工程实践6

第 6 章:面向对象编程 学习目标: 理解 Python 中"一切皆对象"的深层含义,掌握类与实例的创建机制 精通继承、组合、Mixin 等代码复用模式,能正确设计类层次结构 深入理解描述符协议、@property 和特殊方法,控制属性访问行为 熟练使用 dataclass 和 __slots__ 构…

阅读更多
EfficientNet模型水果分类识别 对262种水果进行分类 水果分类数据集的训练及应用
2026/7/7 17:01:05

EfficientNet模型水果分类识别 对262种水果进行分类 水果分类数据集的训练及应用

PyTorch 示例框架如何使用分类模型ResNet-152/ EfficientNet 深度学习架构 使用EfficientNet模型对262种水果进行分类 水果分类数据集的训练及应用 文章目录1. 模型选择使用以下几种主流分类模型:✅ **EfficientNet(B4-B7)**✅ **ResNet-152 …

阅读更多
云计算底层三剑客 GFS/MapReduce/Bigtable 完整拆解|OpenStack 私有云自动化部署脚本 + 独家实训排坑
2026/7/7 16:01:05

云计算底层三剑客 GFS/MapReduce/Bigtable 完整拆解|OpenStack 私有云自动化部署脚本 + 独家实训排坑

一、前言本文分为两大核心模块:理论底层 Google 三剑客深度解析、OpenStack 私有云存储环境全自动化实操,适合计算机专业期末突击、实训报告、运维入门自学。差异化亮点(区别网上水文):GFS/HDFS、MapReduce/Spark、Big…

阅读更多
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御
2026/7/7 2:21:40

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

阅读更多
3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略
2026/7/6 12:19:58

3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略

3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单中那些…

阅读更多
GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复
2026/7/6 14:01:07

GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复

如果你正在用 GXDE OS 或者任何基于 Deepin 的发行版,并且遇到了“检测到窗口系统采用 Wayland 协议,程序即将退出”这类弹窗,或者发现 VMware Tools 在 Ubuntu 24.04 这类默认 Wayland 的系统上启动失败,那这篇文章就是为你准备的…

阅读更多
国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)
2026/7/7 0:01:01

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot) 🌐 演示地址:http://ruoyioffice.com | 📦 源码1GitHub:ruoyi-office | 📦 源码2GitCode:ruoyi-o…

阅读更多
CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树
2026/7/7 0:01:01

CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS SSH连接故障排查:从基础检查到深度修复的完整指南引言当你尝试通过Xshell或其他SSH客户端连接CentOS服务器时,突然遭遇"Connection refused"或"Connection timed out"的错误提示,这种经历对任何运维人员或开发者来…

阅读更多
B站评论删除 API 逆向分析:3 个关键参数 (oid, type, csrf) 获取与实战
2026/7/7 0:01:01

B站评论删除 API 逆向分析:3 个关键参数 (oid, type, csrf) 获取与实战

B站评论删除API逆向工程实战:关键参数解析与自动化操作指南1. 理解B站评论删除机制的核心逻辑在视频平台内容管理中,评论删除功能涉及复杂的权限验证和数据交互流程。B站的评论删除API采用了一套基于Web安全标准的防护机制,主要依赖三个关键参…

阅读更多
基于Dify与DeepSeek构建私有知识库问答系统实战指南
2026/7/7 14:57:49

基于Dify与DeepSeek构建私有知识库问答系统实战指南

在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…

阅读更多
FAE放射组学分析工具:医学影像特征探索的完整解决方案
2026/7/7 9:58:00

FAE放射组学分析工具:医学影像特征探索的完整解决方案

FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE 你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…

阅读更多
DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!
2026/7/7 9:58:00

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖! 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址:…

阅读更多