TensorRT及CUDA自学笔记001 基础知识点和学习资源

TensorRT及CUDA 自学笔记001 基础知识点和学习资源

各位大佬,这是我的自学笔记,如有错误请指正,也欢迎在评论区学习交流,谢谢!

TensorRT简介:

TensorRT 是一套可用于高效实现DL模型推理的SDK,它内含infer优化器和运行环境,能让DL模型在更低的资源占用的条件下,以更快的的运行。在TensorRT中,我们可以用API手动地一个Layer一个Layer地搭建Network,也可以直接使用来自ONNX的模型,如果使用后者,就不需要一层一层地搭建模型。

各种链接

NVCC编译器官方文档
Jetpack SDK
TensorRT文档
C++ API文档
Python API
TensoRT 下载
B站课程示例代码
B站官方课程链接

TensorRT的工作流程

构建期

加载模型,并优化模型,计算图优化,将多个层合并为一个层,消除无用层,导入用户自定义的plugin(可选)
注:上述这些操作都是为了,加快模型的推理速度,同时降低模型的资源消耗(CPU资源,内存资源)。

运行期

维护运行环境,然后序列化和反序列化engine

名词解释

下面是一些名词和功能的解释

显存池复用:

数据存在同一片显存中,可快速复用,以此避免内存的反复分配和释放。

logger

日志记录器,可以从详细到简略设置不同记录等级的日志。

builder

引擎构建器模型搭建的入口,构建模型的核心,可以用于创建TensorRT对象,创建用于Dyanmic Shape输入的配置器。

builderconfig

网络属性选项,用于设置模型的属性,如设置数据精度类型,设置explicit batch,设置Dynamic Shape等。

explicit batch显性批次和implicit batch隐性批次

explicit batch 即显式地指定张量的batch,explicit batch为主流开发方法,也支持更多功能

Dynamic Shape

实际开发时,我们会对模型输入不同的shape的数据,这要求模型每次接受的shape,batch等不同。所以提供了Dynamic Shape适用于输入张量shape在infer时才确定的情况,它不仅支持输入输出的调整,还可以在数据的不同批次的推理间随时做调整,几乎所有维度都动态可变。

Layer和Tensor

我们可以把Layer看作为计算节点,Tensor可以看作数据节点。
Tensor数据节点可作为一个Layer计算节点的输入输出节点,换句话说我们时用Layer计算节点和Tensor数据节点搭建出了整个网络。

Network

网络具体构造,网络主体,实际开发时,我们需要不断的用network添加各种网络层,标记输入输出张量和设置层属性。

context

类比cpu中的进程,用于设置张量的shape,用于执行真正的推理计算。

CUDA异构计算

开始推理时,我们需同时准备CPU和GPU内存,然后数据从内存copy至显存,在GPU端计算,然后将计算结果copy回内存

序列化和反序列化

将引擎保存下来即为序列化,加载以前保存好的引擎即为反序列化,这样就不用每次推理之前都构建一次引擎,直接加载使用即可。
注意,跨平台甚至是跨版本的序列化和反序列化是不可以的,甚至是相同平台,相同版本,不同时间构建的engine都可能是不同的

模型的TensorRT部署方式

将ONNX格式模型部署于设备上推理,有三种方式

1, 使用原框架自带的TRT接口
性能稍差,但易用性高,难度低,开发速度快
2, 使用Parser,将模型转换到TRT再使用
性能高,但需要改network和写适配的plugin,兼顾了效率和性能,是最推荐的开发方式
3, 使用TRT重建整个Network,再使用
性能最高,资源消耗最少,能精细控制Network,但是易用性和开发效率低

  • 40
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TensorRT是英伟达(NVIDIA)针对深度学习推理任务而开发的推理引擎,它可以高效地利用GPU的计算能力进行加速。而CUDA是英伟达开发的一种并行计算架构,它使开发者能够在GPU上进行通用计算。 TensorRTCUDA之间存在一定的对应关系。首先,TensorRT是基于CUDA的,它利用CUDA加速深度学习模型的推理过程。通过使用CUDA的并行计算特性,TensorRT可以同时进行多个推理任务,充分利用GPU的性能。 其次,TensorRT提供了与CUDA相关的接口和功能。例如,TensorRT可以利用CUDA的图像操作函数库(cuDNN)进行卷积操作的加速。此外,TensorRT还可以与CUDA的并行计算API(如CUDA核函数)结合使用,实现对深度学习模型进行高效的加速。 最后,TensorRT还提供了许多与CUDA相关的功能,例如模型优化、精度校准和网络层融合等。这些功能可以使深度学习模型在进行推理时更加高效、准确。 综上所述,TensorRTCUDA之间存在紧密的对应关系。TensorRT利用CUDA的并行计算能力进行深度学习模型的推理加速,并提供了许多与CUDA相关的接口和功能,使得模型的推理过程更加高效和灵活。 ### 回答2: TensorRT是GPU加速的推理引擎,而CUDA则是一种并行计算的编程模型和计算机软件平台。它们之间存在一定的对应关系。 首先,CUDA是NVIDIA推出的用于GPU编程的平台,它提供了一种并行计算的编程模型和API接口,使得开发者可以利用GPU的并行计算能力来加速各种计算任务。而TensorRT则是基于CUDA深度学习推理引擎,专门用于优化和加速深度学习模型的推理过程。 其次,TensorRT可以与CUDA一起使用,以充分利用GPU的并行计算能力。TensorRT通过对深度学习模型进行各种优化和转换,如网络剪枝、层融合、权重量化等,将模型转化为高效的推理引擎,可以在推理阶段获得更高的性能和吞吐量。而CUDA则提供了底层的并行计算能力,使得TensorRT可以充分利用GPU的计算资源来加速推理过程。 最后,TensorRTCUDA的对应关系可以理解为TensorRT是基于CUDA的高级库,是CUDA的一种使用场景和扩展。TensorRT利用了CUDA提供的底层并行计算能力,并通过高级优化和转换技术来进一步提升深度学习模型的推理性能。因此,要使用TensorRT,需要先安装CUDA,并且使用CUDA提供的GPU作为计算设备。 综上所述,TensorRTCUDA之间存在一定的对应关系,TensorRT是基于CUDA深度学习推理引擎,利用了CUDA的并行计算能力来加速深度学习模型的推理过程。 ### 回答3: TensorRT是NVIDIA推出的加速深度学习推理任务的库。而CUDA是NVIDIA开发的并行计算平台和编程模型。它们之间有以下对应关系: 1. TensorRT依赖于CUDATensorRT是建立在CUDA之上的,利用CUDA的并行计算能力来加速深度学习推理。TensorRT通过优化深度学习模型以及利用GPU的并行性来提高推理性能。 2. TensorRT利用CUDA加速推理:TensorRT通过对深度学习模型进行层级融合、精度量化、多流并发等技术优化,并使用CUDA提供的底层加速计算能力,将推理过程中的计算任务分配到GPU上进行并行计算,从而加速推理速度。 3. 运行TensorRT需要安装CUDA:要使用TensorRT,首先需要在计算机上安装CUDATensorRT是基于CUDA深度学习推理库,因此需要CUDA提供的环境和库来调用GPU加速计算。用户需要根据自己的GPU型号和CUDA版本来安装相应的CUDA驱动和CUDA库。 4. CUDATensorRT的版本兼容性:由于TensorRT是建立在CUDA之上的,因此TensorRT的版本与CUDA的版本有一定的对应关系。不同版本的TensorRT可能只支持特定版本的CUDA。在使用TensorRT时,需要确保TensorRTCUDA的版本兼容性,否则可能会出现兼容性问题。 综上所述,TensorRT是基于CUDA深度学习推理库,通过利用CUDA提供的并行计算能力来加速深度学习推理任务。TensorRT需要依赖于安装好的CUDA环境,并且TensorRTCUDA的版本需要兼容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值