pytorch,onnx和tensorrt 的速度对比

onnx

Open Neural Network Exchange (ONNX)是微软和Facebook携手开发的开放式神经网络交换工具。为人工智能模型(包括深度学习和传统ML)提供了一种开源格式。它定义了一个可扩展的计算图模型,以及内置运算符和标准数据类型。目前主要关注推断所需的功能。

ONNX之于机器学习模型就像JPEG之于图像或MPEG之于视频。你可以使用pytorch,tensorflow或者其他深度学习的框架来训练你的模型,最后都可以转成onnx模型. ONNX就想是不同模型之间的桥梁

ONNX Runtime

ONNX Runtime 是将 ONNX 模型部署到生产环境的跨平台高性能运行引擎,主要对模型图应用了大量的图优化,然后基于可用的特定于硬件的加速器将其划分为子图(并行处理)。

通过其可扩展的Execution Providers (EP) 框架与不同的硬件加速库协同工作,以在硬件平台上以最佳方式执行 ONNX 模型。

该接口使 AP 应用程序开发人员能够灵活地在云和边缘的不同环境中部署他们的 ONNX 模型,并通过利用平台的计算能力来优化执行。

在这里插入图片描述

ONNX Runtime 使用GetCapability()接口分配特定节点或子图,以供支持硬件中的EP库执行。预装在执行环境中的EP库在硬件上执行ONNX子图。这种架构抽象出硬件特定库的细节,这些细节对于优化跨硬件平台(如 CPU、GPU、FPGA 或专用 NPU)的深度神经网络的执行至关重要。
在这里插入图片描述

tensorrt

tensorrt是Nvidia开发的一个神经网络前向推理加速的C++库,用户无需像剪枝那样在训练时对模型进行定制化处理,只需把模型提供给TensorRT即可实现加速。优化方法包括:
在这里插入图片描述

速度对比

本文使用的是transformers中的electra模型,用于句子的表征。对于tensorrt未作量化处理。

输入为长度约为20个单词的句子As a result, they change their eating habits eating more nutritious food such as milk and meat.

转为为onxx之后的模型结构:
在这里插入图片描述

gpu测试:

在这里插入图片描述

  1. onnxruntime与tensortrt的gpu利用率要比pytorch高很多
  2. tensorrt在未作量化的情况下,显存占用更小
  3. 随着batch的增大,速度提升越来越不明显

cpu测试:

使用cpupytorchonnxruntimetensorrt
单条时间1853ms18.8ms必须要用gpu

20250305又再一次测试证明,如果是 batch输入的话,原生的 pytorch 比 onnx处理还更快,与上面的结论一致:
(1)使用 cpu
在这里插入图片描述

(2)使用 gpu
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺旺棒棒冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值