TensorRT 简单介绍

一、TensorRT

对于算法工程师来说,相信大家已经对TensorRT耳熟能详了,那么这个TensorRT是什么呢?

其实,TensorRT是一个可以在NVIDIA各种GPU硬件平台下运行的推理引擎,同时也是一个高性能的深度学习推理优化器,可以为深度学习的落地应用起到低延迟高吞吐的作用。

TensorRT是由C++、CUDA、Python三种语言编写成的一个库,其中核心代码的语言为C++和CUDA,当然,它也有Python的API接口。

二、应用场景

算法工程师的日常工作当然是训练,我们在进行模型训练的时候可能会选用Pytorch、Tensorflow、Caffe等不同的深度学习框架,并且训练的时候可以使用很充裕的GPU算力。但是在实际部署的时候,为了节省成本,所以在推理时并不会使用过多的GPU资源,甚至是使用CPU来进行模型的推理。鉴于低GPU算力的原因,在嵌入式平台或自动驾驶平台就会使用TensorRT进行推理加速

在这里插入图片描述
在实际项目中,我们可能需要将目标检测、实例分割、OCR等模型部署到一块,这里可能会遇到一种情况:A模型使用了Tensorflow框架,B模型使用了Pytorch框架,C模型使用了Caffe框架。那这样会导致一个问题:代码运行环境的适配就成了大问题。

所以我们希望有一个通用的框架来运行以上的模型。

TensorRT就是用来解决这些问题,它可以将不同框架下训练好的模型统一转为TensorRT引擎再运行,同时会对模型进行优化,从而节省模型在推理时所使用的GPU资源和运行时间。TensorRT与NVIDIA的GPU结合后,几乎可以在所有的深度学习框架中高效部署。

在这里插入图片描述

三、TensorRT的加速效果如何?

TensorRT主要通过融合层优化内核的选择量化等方式来加速网络的推理速度,从而改善推理的延迟和内存消耗。

在这里插入图片描述
当然,具体的加速效果取决于模型的类型与它的大小,也取决于我们所使用的显卡类型。对于GPU来说,它底层硬件的设计更适合并行计算,它也更喜欢密集型的计算。因此,对于通道数较多的卷积层和转置卷积层,TensorRT的加速效果比较明显;而对于比较繁琐而细小的OP操作,如reshape、gather、split这些操作就没有那么显而易见。

在调研中发现,不同模型在TensorRT下的加速效果如下:

  • 在Caffe框架下训练出来的的SSD检测模型可以加速3倍;
  • 在Caffe框架下训练出来的的SSD检测模型可以加速3倍;
  • Pytorch下的大模型,如GAN网络,加速比较明显,能有7到20倍;
  • Tensorflow下的LSTM、Transformer模型则只能起到0.5倍到1倍的加速效果;
  • 在Keras下,ResNet能加速3倍左右;

四、TensorRT支持那些生态

首先需要你的设备有NVIDIA的显卡或者能够支持NVIDIA的显卡,并且算力在5.0以上。像A100、2080Ti、1080Ti这一些都是可以的。据说TX2、Nano这些载有嵌入式端显卡的设备也是支持的。

TensorRT目前支持的语言有C++和Python。对于大多炼丹师来说,使用的语言应该都是Python,上述也提到,对于Tensorflow、Pytorch这一些我们平常用于训练模型的深度学习框架来说,TensorRT也都是支持的。

所以对于大多数深度学习工作者来说,都是可以轻松上手的。这样对于大多数AI开发者来说就十分友好!

在这里插入图片描述

五、TensorRT 缺点

万事万物都有两面性,TensorRT也是如此。虽然TensorRT很强大,但是它也是有缺点的。

  • 高版本的TensorRT依赖于高版本的CUDA,低版本的CUDA是无法支持的。而高版本的CUDA依赖于高版本的驱动。所以如果你想从低版本的TensorRT升级到高版本的TensorRT,就必须更换环境。

  • TensorRT并没有完全开源。TensorRT的推理优化部分并没有完全开源出来,因此在实际使用的时候,我们就好像在使用一个黑盒子,没有办法知道里面具体发生了哪一些过程。

  • 经过推理优化后的Engine引擎与特定的GPU型号绑定,不同的GPU型号无法进行共享。例如在3090上生成的引擎不能在A100上使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286287.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化测试工具-Selenium:最详细的安装教程

Selenium是一款很不错的自动化测试工具,本文章将按照官方网站的教程进行Selenium的安装,安装之前,首先你要确定你的电脑已配置好Python的环境,没有的话可以参考该文章进行安装:Python纯净式下载与安装-CSDN博客 1. Se…

使用 React 实现自定义数据展示日历组件

目录 背景实现日历组件父组件数据 效果最后 背景 项目中需要实现一个日历组件,并且需要展示月,日所对应的数据(因为项目需求问题,就不统计年数据总量)。网上找了一堆,基本都不大符合项目需求,且…

PDF转为图片

PDF转为图片 背景pdf展示目标效果 发展过程最终解决方案:python PDF转图片pdf2image注意:poppler 安装 背景 最近接了一项目,主要的需求就是本地的文联单位,需要做一个电子刊物阅览的网站,将民族的刊物发布到网站上供…

Zero date value prohibited 异常处理

项目场景: 在项目中,我们会时常遇到数据查询,今天在对数据进行查询的时候,遇到一个之前闻所未闻的异常,所以记录下来,分享给大家。 问题描述 查询数据为datetime类型的数据时,发现该字段的值为…

Windows 安装RocketMQ

1.rocketmq下载 https://archive.apache.org/dist/rocketmq/5.1.4/ 2.环境准备 64位JDK 1.8; Maven 3.2.x; 64位操作系统系统,本文档在Windows上安装 3.解压到一个无中文无空格的目录下,解压后目录如下: 配置环境变量 4.更改配置 java的…

系列八、约束

一、约束 1.1、概述 约束是作用于表中字段上的规则,用于限制存储在表中的数据,通过这种规则,可以保证数据库中数据的正确性、有效性和完整性。 1.2、分类 1.3、注意事项 约束是作用于表中字段上的,可以在创建表/修改表的时候添加…

5. Prism系列之区域管理器

Prism系列之区域管理器 文章目录 Prism系列之区域管理器一、区域管理器二、区域创建与视图的注入1. ViewDiscovery2. ViewInjection 三、激活与失效视图1. Activate和Deactivate2. 监控视图激活状态3. Add和Remove 四、自定义区域适配器1. 创建自定义适配器2. 注册映射3. 创建区…

showdoc使用

使用 通过上篇文章安装得到的访问地址,可以登陆到h5页面中 点击客户端,进入到页面 下载完成之后,注册账号,选择自己的私域地址(http://服务器IP:4999)之后,就可以开始团队协作了

Android13音频录制适配

Android13音频录制适配 前言: 之前写过一篇音频录制的文章,当时是在Android10以下的手机可以成功录制和播放,但是Android10及以上手机提示创建文件失败,最近做过Android13的适配,索性一起把之前的录音也适配了&#…

【JetBrains】将Gateway中的GoLand回滚到无bug旧版本

问题背景 2023-12-15 我把 Gateway 中使用的 GoLand 从 2023.2.x 升级到了 2023.3 ,然后编辑文件过程中输入时时不时会显示错误信息,然后就会进入无法输入(键入也不会看到增加字符)但能粘贴的奇怪状态。 问题解决 升级到 2023.…

基于ssm楚师师生健康管理系统设计与实现论文

楚师师生健康管理系统设计实现 摘要 随着信息互联网购物的飞速发展,一般企业都去创建属于自己的管理系统。本文介绍了楚师师生健康管理系统的开发全过程。通过分析企业对于楚师师生健康管理系统的需求,创建了一个计算机管理楚师师生健康管理系统的方案…

playwright进阶问题,with sync_playwright() as p中的p是什么类型您知道吗?

playwritght中with as的用法 最近在看playwritght 的源码,大家都知道运行playwright的基础代码如下: with sync_playwright() as p:browser p.chromium.launch(channel"chrome", headlessFalse)page browser.new_page()page.goto("ht…