比如车载的设备上面_a片大全

a片大全

您的当前位置:a片大全 > 量子 >

比如车载的设备上面

时间:2019-01-12 14:21来源:a片大全

  在官网上有一个Developer guide的内容,是非常好的教材,里面有很多例子,把例子读一遍、写一遍,再读一遍,再写一遍,非常快。那该选哪些样本做计算呢?另外就是数量,官方建议是500到1000张图,不知道是不是数量越多精度下降越少?12月22日,量子位联合NVIDIA英伟达举行了线下交流会,跟现场近百位开发者同学共同探讨了如何用TensorRT加速深度学习推理计算,详细讲解了GPU的推理引擎TensorRT,以及如何配合Deepstream实现完整加速推理的解决方案。另外是语音和自然语言处理相关,包含语义理解和语音识别。一个一维Tensor的叫Vector,二维的叫Matrix,三维四维的Tensor都有。针对图片的大小不一样,帧率速度不一样,处理的速度也不一定成倍增加,但是batch越多,加速度比越高。一个方面是内存中各种显存的调用,多流的执行。第三件事是内核调用。TensorRT出来时间不长,我们自己也没有用太长时间,现在是把底层的一些好的方法集合起来,给使用者一个接口,用更好的方式帮助大家规避操作中的问题。数据出来之后,经过这么多步骤,TensorRT怎么进行网络结构优化?数据出来之后,它要经过一个卷积层,一个bias,一个Relu,也就是三个网络层,而在底层就是在CUDA里边实现的。这样的话在做计算的时候,转换数据的速度非常快,因为数据类型的原因,它所占用的资源也非常少,这个时候的计算速度就会变得很快。NVIDIA提出了这样一个工具:TensorRT Inference Server,它针对于互联网企业。比如现在通常用的是FP32的数据类型,如果在做HPC的时候,就可能都会用double类型的float,我们为什么要double类型?因为精度需要非常大的动态范围。第一件事是权重精度的校正。但是深度学习在做训练的时候可能并不需要那么大的动态范围,它非常小,可能连FP32都用不了,这个时候就可以用一个更小的动态数据类型。另外一个方面是怎么调用CUDA核,怎么分配,每个block里边分配多少个线程,每个grid里边有多少个block。而TensorRT里边调用了一些方法,以一个最合理的方式去调用、操作这些数据!

  Deepstream支持个流的执行,Pipeline的建立等等特性。这些内容都对GPU要求或者对CUDA的计算功底要求比较高,需要花更多时间,也需要对硬件底层更了解。这张图是一个完整的现代深度学习应用,在硬件的应用方面,三个比较大的常用的领域是:视觉相关,包含医疗、自动驾驶、摄像头的处理等等!

  这个推理引擎指的是输出这个推理引擎之后,可以直接在代码里被调用。检测行人时,更多需要的是前项的摄像头,那Pipeline里边就只用这四个摄像头,Deepstream会自动把所有需要的摄像头数据拿来调用。别人转后的TensorRT的模型,转给我用,会给好几个不同的batch size,这几个会有区别吗?对速度有什么影响呢?数据到卷积层的时候,会把数据放到GPU里边去计算,然后再翻回来。框架不同,每个人的使用习惯也不同,但最终都是完成一件事情:深度学习模型的训练,以及深度模型的推理。举一个网络融合的例子,GoogleNet的Inception结构,很多网络模型也都借鉴这个格式。

  这个工具支持一个或者多个GPU的调用,支持所有的流行框架训练出来的模型,也能够动态处理。并行计算最有一个难点是数据传输之间那部分很难消掉,硬件卡住的部分无法并行,而CUDA里边多流的执行把这些数据在传输的过程中进行计算,这样就把传输的部分给隐藏了。而Deepstream已经把这些都做好了,仅仅是视频的图像处理这部分,它处理的速度就比传统的方法就快很多。我们的框架是这样处理的,因为框架是需要所有的硬件平台都能够实现这功能,而TensorRT是针对GPU进行优化的,它是专门针对于前端推理的优化。比如车载的设备上面,要很多个摄像头,Deepstream可以自动删减需要的摄像头;用这个工具可以帮助把一个较大范围的数据映射到一个较小的范围之内。例如前端摄像头数据出来之后,第一件事应该是编解码,拿着图片解码,再往下放到引擎里去处理。

  Deepstream在一些不需要的Pipeline里,也可以自动删减。在实际操作中,随便挑了几百张图,能转到int8,实际的计算速度大概是3.6倍,但是精度下降了,这是为什么?Tensor,深度学习中的张量。另外是TensorRT的输入输出,TensorRT的输入是一个已经训练好的32位的数据类型FP32的网络模型,而它的输出是可执行的一个推理引擎。刚才介绍了TensorRT是一个加速工具,用TensorRT并不是把它放在一个课题实验里,核心目的是把TensorRT部署到产品上。现在TensorRT提出一个FP16半精度的数据类型,还有int8以及最新出的int4的一些数据类型。这样一个工具。比如在检测行人和车道线的场景里,同样需要前面这四个摄像头,下一次不需要检测行人了,Deepstream也能自动删减。内核调用跟GPU底层相关,NVIDIA所有的工具基本上都是基于CUDA这个生态所建立,CUDA里核心的内容是两个方面。Tensor RT的Tensor指的就是这个概念,而整个TensorRT的工具是指一个GPU Inference Engine,也就是一个GPU推理引擎。完成这两个任务最核心的内容还是计算。