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
  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: PyTorch是一个深度学习框架,可以用来构建神经网络模型。ONNX是一种开放的神经网络交换格式,可以将不同框架的模型转换为统一的格式。TensorRT是NVIDIA推出的用于加速深度学习推理的库,可以将模型转换为高效的C++代码。因此,将PyTorch模型转换为ONNX格式,再将ONNX模型转换为TensorRT格式,可以提高模型的推理速度和效率。 ### 回答2: Pytorch是一款非常流行的深度学习框架之一,而ONNX(Open Neural Network Exchange)则是一种用于在不同深度学习框架之间交换模型的标准格式。TensorRT是基于NVIDIA GPU优化的深度学习推理引擎,可以加速深度学习模型的预测速度PytorchONNXTensorRT的过程主要包括以下几个步骤: 第一步,使用Pytorch训练好的模型可以通过Pytorch提供的方法将模型转化为ONNX格式的模型。这一步通常需要在节省内存的情况下,对训练的模型进行优化并减少其大小。Pytorch提供了一些方法,例如ONNX的exporter,可以在不损失精度的情况下将Pytorch模型转换为ONNX格式。 第二步,将ONNX模型转换为TensorRT格式的模型。这一步通常需要使用TensorRT提供的工具将ONNX格式的模型转换为可以使用TensorRT来加速推理的格式。TensorRT可以根据模型的结构,对其进行优化,从而提高推理的速度和效率。 第三步,使用TensorRT引擎来进行推理。在这一步中,可以使用一些Python或C++的API来调用TensorRT引擎,以加速推理的过程。通常情况下,TensorRT会在NVIDIA GPU上运行,以提高推理的速度和效率。 总之,PytorchONNXTensorRT是一种很常见的深度学习模型加速优化的方法。通过这种方法,可以将训练好的模型转化为可以快速进行推理的格式,并提高推理的速度和效率,从而更好的满足实际应用需求。同时也可以加深对于PytorchONNXTensorRT的理解和应用。 ### 回答3: 先介绍一下三个工具的概念。 PyTorch是一个基于Python的库,提供了高度可拓展性和可定制化的机器学习算法、模型和数据处理工具,特别适合用于深度学习。 ONNX(Open Neural Network Exchange)是一个开放的模型表示和转换工具,使得不同框架之间的模型转换和协作更加容易。ONNX 可以将每个框架的模型表示转换为通用表示格式,这样就可以一次性完成跨框架的模型部署。 TensorRT是NVIDIA推出的高性能深度学习推理库,可以对训练好的深度学习模型进行优化,并在NVIDIA GPU上加速模型的推理过程。使用TensorRT能够提升模型的运行速度和效率。 下面是如何将PyTorch模型转为TensorRT模型的过程: 1.将PyTorch模型转化为ONNX格式。有两种方法可以实现这一步骤:一种是使用PyTorch官方提供的torch.onnx.export方法,将PyTorch模型转化为ONNX格式;另一种方法是使用ONNX官方提供的onnx-coreml转换工具。 2.使用TensorRT提供的工具trtexec将ONNX模型转化为TensorRT格式。通过命令行的方式调用trtexec,在将模型转换为TensorRT格式的同时,可以指定一些优化参数,比如设置合适的batch size、设置推理设备的数据类型、设置最大批处理等参数,以提高模型的性能和效率。 3.将转换后的模型导入到TensorRT库中,使用C++或Python等支持TensorRT的代码进行推理。 总体而言,PyTorchONNXONNXTensorRT这一过程需要先对PyTorch模型进行格式转化,再将ONNX格式的模型转转化为TensorRT格式,最终通过TensorRT库对模型进行推理。需要注意的是,不同的深度学习模型在转换过程中有着各自的特点和难点,需要根据具体情况进行优化和调整。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

旺旺棒棒冰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值