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上使用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在ClickHouse数据库中启用预测功能

在这篇博文中,我们将介绍如何将机器学习支持的预测功能与 ClickHouse 数据库集成。ClickHouse 是一个快速、开源、面向列的 SQL 数据库,对于数据分析和实时分析非常有用。该项目由 ClickHouse, Inc. 维护和支持。我们将探索它在需要数据准备以…

SDK和API的区别

简单一句话:api就是一个函数接口,函数内容的功能无法独立运行,只有连接到服务器才可以发挥作用。 sdk是开发工具包,含有功能和函数接口,可以独立运行。 废话篇: 内容不同:SDK为API 提供能量源。…

【扩散模型】8、DALL-E2 | 借助 CLIP 的图文对齐能力来实现文本到图像的生成

文章目录 一、背景二、方法2.1 Decoder2.2 Prior 三、图像控制3.1 Variations3.2 Interpolations3.3 Text Diffs 四、探索 CLIP 的潜在空间五、文本到图像的生成5.1 先验的重要性5.2 人类评价5.3 多样性和保真性的平衡5.3 在 COCO 上对比 论文:DALLE.2 代码&#x…

Redis 中的 RDB 和 AOF 持久化机制

一、Redis 持久化简介 Redis 的持久化功能是区别于 Memcached 显著特性,数据持久化可以保证系统在发生宕机和重启后数据不会丢失,对于 redis 这种存储在内存中的数据库显得尤为重要。 在 Redis 4.0 以前数据持久化的方式主要有两种 RDB(Redi…

初学gitrepo的种种

经过各种折腾之后,发现git其实还是很简单的; 首先你需要两台机器,一台作为服务器,一台作为开发机器,开发机器从服务器上拉取代码。 目 目录 git建仓 开发机器拉取代码 初始化仓代码 repo管理 repo工具的下载 …

Ansible的脚本---Playbook剧本编写

playbook的组成部分 1、 tasks:任务 在目标主机上需要执行的操作。使用模块定义这些操作。每个任务都是一个模块的调用。 2、 variables:变量 用于存储和传递数据。类似于shell脚本中的变量。变量可以自定义。可以在playbook当中定义为全局变量&…

Go 语言实战:掌握正则表达式的应用与技巧

Go 语言实战:掌握正则表达式的应用与技巧 1. 引言2. 正则表达式基础2.1 基本概念2.2 常见元素2.3 基本示例 3. Go语言中的正则表达式库3.1 引入regexp包3.2 编译正则表达式3.3 使用正则表达式3.4 示例代码 4. 常用正则表达式函数及使用示例4.1 MatchString4.2 FindS…

配置自定义RedisTemplate 解决redis序列化java8 LocalDateTime

目录 配置自定义RedisTemplate 引入依赖 配置连接redis 编写测试类 出现问题 配置序列化 解决redis序列化java8 LocalDateTime 问题背景 问题描述 问题分析 解决方案一(全局) 解决方案二(单个字段) 配置自定义RedisTe…

在GitHub找开源项目

在 GitHub 的搜索框里: 使用搜索关键词可以在 GitHub 上快速的找你需要的开源项目: 限制搜索范围 通过 in 关键词 (大小写不敏感) 限制搜索范围: 公式搜索范围in:name xxx项目名包含xxxin:description xxx项目描述包含xxxin:readme xxx项目…

thymeleaf的个人总结

thymeleaf的java代码的用法 <!-- 静态页面模版引擎的依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 我们在这里要配置一个具体的模版…

CVE-2023-37582 Apache RocketMQ NameServer远程代码执行漏洞

上集回顾 CVE-2023-33246 RocketMQ RCE漏洞 影响版本 Apache RocketMQ NameServer 5.0.0 &#xff5e; 5.1.1 Apache RocketMQ NameServer 4.0.0 &#xff5e; 4.9.6 参考 https://xz.aliyun.com/t/12691 环境搭建 拉取镜像 docker pull apache/rocketmq:4.9.6 docker …

Bugku- misc-插画-WP

下载得到一个zip&#xff0c;用WinRAR打开时发现有注释 注释&#xff1a; RnJlZV9GaWxlX0NhbW91ZmxhZ2UsIOmimOebruWlveWDjaYraMuumHjeimgeeahOagtWtkC4u 明显是base64&#xff0c;解码得到&#xff1a;Free_File_Camouflage, 题目好像是挺重要的样子… 百度发现这是一款隐写…

微电网优化(Matlab复现)— 微电网两阶段鲁棒优化经济调度方法_刘一欣

论文链接&#xff1a;微电网两阶段鲁棒优化经济调度方法 - 中国知网 代码链接&#xff1a;https://m.tb.cn/h.5Mg7fCo?tkhnpmWgZiv2R 复现效果&#xff1a; 运行环境&#xff1a;Matlab 2020bCplexyalmip 1 微电网结构 图 1 所示为典型的微电网结构&#xff0c;由可控分布式…

uniapp实现豆瓣电影微信小程序(附源码)

演示 运行 基于本地代理1 npm run dev:proxy1基于本地代理2 npm run dev:proxy2基于nginx 代理 npm run dev:nginx目录结构 |__ douban # 本地代理|__ app.js # 方式 1|__ proxy.js …

基于vue-cli快速发布vue npm 包

一、编写组件 1. 初始化项目并运行 vue create vue-digital-countnpm run serve2. 组件封装 新建package文件夹 ​ 因为我们可能会封装多个组件&#xff0c;所以在src下面新建一个package文件夹用来存放所有需要上传的组件。 ​ 当然&#xff0c;如果只有一个组件&#xff…

SQL面试题挑战01:打折日期交叉问题

目录 问题&#xff1a;SQL解答&#xff1a;第一种方式&#xff1a;第二种方式&#xff1a; 问题&#xff1a; 如下为某平台的商品促销数据&#xff0c;字段含义分别为品牌名称、打折开始日期、打折结束日期&#xff0c;现在要计算每个品牌的打折销售天数&#xff08;注意其中的…

【yolov8系列】 yolov8 目标检测的模型剪枝

前言 最近在实现yolov8的剪枝&#xff0c;所以有找相关的工作作为参考&#xff0c;用以完成该项工作。 先细读了 Torch-Pruning&#xff0c;个人简单记录了下 【剪枝】torch-pruning的基本使用&#xff0c;有框架完成的对网络所有结构都自适应剪枝是最佳的&#xff0c;但这里没…

Redis 系统性总结看这一篇就够了

Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 之前在公司一直忙于使用&#xff0c;很少做系统性的总结&a…

工具系列:PyCaret介绍_单变量时间序列代码示例

&#x1f44b; 工具系列&#xff1a;PyCaret介绍_单变量时间序列代码示例 PyCaret是一个开源的、低代码的Python机器学习库&#xff0c;可以自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具&#xff0c;可以大大加快实验周期&#xff0c;提高工作效率。 与其…

用C#也能做机器学习?

前言✨ 说到机器学习&#xff0c;大家可能都不陌生&#xff0c;但是用C#来做机器学习&#xff0c;可能很多人还第一次听说。其实在C#中基于ML.NET也是可以做机器学习的&#xff0c;这种方式比较适合.NET程序员在项目中集成机器学习模型&#xff0c;不太适合专门学习机器学习&a…