2020-03-31【Tensor RT】

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020-03-31【Tensor RT】相关的知识,希望对你有一定的参考价值。

参考技术A TensorRT优化方法主要有以下几种方式,最主要的是前面两种。

如下图左侧是GoogLeNetInception模块的计算图。这个结构中有很多层,在部署模型推理时,这每一层的运算操作都是由GPU完成的,但实际上是GPU通过启动不同的CUDA(Compute unified device architecture)核心来完成计算的,CUDA核心计算张量的速度是很快的,但是往往大量的时间是浪费在CUDA核心的启动和对每一层输入/输出张量的读写操作上面,这造成了内存带宽的瓶颈和GPU资源的浪费。TensorRT通过对层间的横向或纵向合并(合并后的结构称为CBR,意指 convolution, bias, and ReLU layers are fused to form a single layer),使得层的数量大大减少。横向合并可以把卷积、偏置和激活层合并成一个CBR结构,只占用一个CUDA核心。纵向合并可以把结构相同,但是权值不同的层合并成一个更宽的层,也只占用一个CUDA核心。合并之后的计算图(图4右侧)的层次更少了,占用的CUDA核心数也少了,因此整个模型结构会更小,更快,更高效。

大部分深度学习框架在训练神经网络时网络中的张量(Tensor)都是32位浮点数的精度(Full 32-bit precision,FP32),一旦网络训练完成,在部署推理的过程中由于不需要反向传播,完全可以适当降低数据精度,比如降为FP16或INT8的精度。更低的数据精度将会使得内存占用和延迟更低,模型体积更小。INT8只有256个不同的数值,使用INT8来表示 FP32精度的数值,肯定会丢失信息,造成性能下降。不过TensorRT会提供完全自动化的校准(Calibration )过程,会以最好的匹配性能将FP32精度的数据降低为INT8精度,最小化性能损失。

网络模型在推理计算时,是调用GPU的CUDA核进行计算的。TensorRT可以针对不同的算法,不同的网络模型,不同的GPU平台,进行 CUDA核的调整(怎么调整的还不清楚),以保证当前模型在特定平台上以最优性能计算。
TensorRT will pick the implementation from a library of kernels that delivers the best performance for the target GPU, input data size, filter size, tensor layout, batch size and other parameters.

在每个tensor的使用期间,TensorRT会为其指定显存,避免显存重复申请,减少内存占用和提高重复使用效率。

Scalable design to process multiple input streams in parallel,这个应该就是GPU底层的优化了

知乎大佬链接
https://zhuanlan.zhihu.com/p/64933639

RT-Thread RTOS的RT-Thread / uCOS / FreeRTOS 简单比较

参考技术A

1 、任务管理及调度:
RT-Thread - 32/256可选优先级抢占式调度,线程数不限,相同优先级线程时间片轮转调度;支持动态创建/销毁线程。
uCOS - 256优先级抢占式调度,不允许相同优先级任务存在
2、 同步/通信机制:
RT-Thread - 支持semaphore, mutex, mailbox, message queue, event。mailbox可存储多条消息,任务等待可按优先级进行排队。
uCOS -semaphore,mutex, mailbox, message queue, event。mailbox只能存放1条消息
3、内存管理:
RT-Thread -固定分区内存管理,小内存系统动态内存管理,大内存系统SLAB内存管理
uCOS - 固定大小内存块管理
4、定时器:
RT-Thread - 挂接到系统OS定时器的硬定时器
uCOS - 只能使用OSTimeDly进行时间间隔处理
5、中断嵌套:
RT-Thread - 允许
uCOS - 允许
6、源码许可证:
RT-Thread - 遵循GPLv2+许可证。可用于商业产品(只需要注明使用了RT-Thread)
uCOS - 商业收费

以上是关于2020-03-31【Tensor RT】的主要内容,如果未能解决你的问题,请参考以下文章

text 在tx2上运行tensor-rt样本模型

markdown tx2中的tensor-rt和虚拟环境设置

pytorch之Tensor

PyTorch中tensor介绍

Pytorch:tensor.mean()和tensor.sum()

pyTorch中tensor运算