搜索

What Is TensorRT?

gecimao 发表于 2019-08-02 00:34 | 查看: | 回复:

  本TensorRT 5.1.5开发人员指南演示了如何使用c++和Python api实现最常见的深度学习层。它展示了如何使用深度学习框架构建的现有模型,并使用所提供的解析器来构建TensorRT引擎。开发人员指南还为常见的用户任务提供了一步一步的指导,比如创建一个TensorRT网络定义、调用TensorRT构建器、序列化和反序列化,以及如何向引擎提供数据和执行推理;同时使用c++或Python API。

  TensorRT™的核心是一个c++库,它促进了对NVIDIA图形处理单元(gpu)的高性能推理。它与TensorFlow、Caffe、PyTorch、MXNet等训练框架相辅相成。它特别关注在GPU上快速高效地运行一个已经训练好的网络,以生成一个结果(这个过程在很多地方被称为评分、检测、回归或推理)。

  一些训练框架,如TensorFlow,已经集成了TensorRT,因此可以使用它来加速框架内的推理。另外,TensorRT可以用作用户应用程序中的库。它包括用于从Caffe、ONNX或TensorFlow导入现有模型的解析器,以及用于以编程方式构建模型的c++和Python api。

  图1所示。TensorRT是用于生产部署的高性能神经网络推理优化器和运行时引擎。

  TensorRT通过组合层和优化内核选择来优化网络,从而提高延迟、吞吐量、电源效率和内存消耗。如果应用程序指定,它还将优化网络以降低运行精度,从而进一步提高性能和减少内存需求。

  下图显示了定义为部分高性能推理优化器和部分运行时引擎的TensorRT。它可以接受在这些流行框架上训练的神经网络,优化神经网络计算,生成一个轻量级的运行时引擎(这是您唯一需要部署到生产环境中的东西),然后它将最大化这些GPU平台上的吞吐量、延迟和性能。

  训练神经网络之后,TensorRT使网络能够被压缩、优化并作为运行时部署,而不需要框架的开销。

  TensorRT结合了多个层,优化内核选择,并根据指定的精度(FP32、FP16或INT8)执行规范化和转换,以优化矩阵数学,从而提高延迟、吞吐量和效率。

  在一定时期内的产量。通常以推论/秒或样本/秒来度量,每个服务器的吞吐量对于数据中心的成本效益扩展非常关键。

  单位功率的吞吐量,通常表示为性能/瓦特。效率是高效数据中心扩展的另一个关键因素,因为服务器、服务器机架和整个数据中心必须在固定的电力预算内运行。

  执行推理的时间,通常以毫秒为单位。低延迟对于交付快速增长的实时基于推理的服务至关重要。

  训练有素的神经网络提供正确答案的能力。对于基于图像分类的应用,关键指标表示为前5或前1个百分比。

  在网络上进行推理需要保留的主机和设备内存取决于所使用的算法。这限制了在给定的推理平台上运行哪些网络以及网络的哪些组合。这对于需要多个网络且内存资源有限的系统尤其重要——例如用于智能视频分析的级联多类检测网络和多摄像头、多网络自主驾驶系统。

  使用训练框架来执行推断很简单,但是在给定的GPU上,使用TensorRT这样的优化解决方案可能会导致更低的性能。培训框架倾向于实现更通用的代码,这些代码强调通用性,在进行优化时,优化的重点往往是有效的培训。

  只需要编写一个定制的应用程序来执行一个神经网络,就可以获得更高的效率,但是它可能非常耗费人力,并且需要相当多的专业知识才能在现代GPU上达到高水平的性能。此外,在一个GPU上工作的优化可能不能完全转化为同一家族中的其他GPU,而且每一代GPU都可能引入只能通过编写新代码来利用的新功能。

  TensorRT适用于工程师,他们负责基于新的或现有的深度学习模型构建特性和应用程序,或者将模型部署到生产环境中。这些部署可以部署到数据中心或云中的服务器、嵌入式设备、机器人或车辆,或者运行在用户工作站上的应用程序软件中。

  公司销售的机器人使用TensorRT来运行各种计算机视觉模型,自动引导无人机系统在动态环境中飞行。

  一个流行的技术计算包嵌入了TensorRT,以支持神经网络模型的高吞吐量执行。

  TensorRT被用于英伟达的DeepStream产品中,为复杂的视频分析解决方案提供强大的支持,这些解决方案包括边缘的1 - 16个摄像头提要,以及数据中心中可能聚集数百甚至数千个视频提要的数据中心。

  在训练阶段,数据科学家和开发人员将从他们想要解决的问题的陈述开始,并决定他们将使用的输入、输出和损失函数。他们还将收集、整理、扩充训练、测试和验证数据集,并可能为这些数据集贴上标签。然后他们将设计网络的结构并训练模型。在训练过程中,他们会监控学习过程,这可能会提供反馈,导致他们修改损失函数,获取或增加训练数据。在这个过程的最后,他们将验证模型的性能并保存所训练的模型。培训和验证通常使用DGX-1™、Titan或Tesla数据中心gpu完成。

  在第二阶段中,数据科学家和开发人员将从经过训练的模型开始,并使用这个经过训练的模型创建和验证部署解决方案。将这个阶段分解为几个步骤,您可以得到:

  考虑一下神经网络在更大的系统中是如何工作的,它是这个系统的一部分,并设计和实现一个合适的解决方案。可能包含神经网络的系统是非常多样化的。例子包括:

  确定你的首要任务是什么。考虑到可以实现的不同系统的多样性,在设计和实现部署体系结构时可能需要考虑很多事情:

  您有单个网络还是多个网络?例如,你开发一个功能或系统,是基于一个网络(人脸检测),或者将您的系统组成的混合级联的不同模型,或者更一般的设施,提供了一组模型,可能提供的最终用户?

  您将使用什么设备或计算元素来运行网络?CPU, GPU,其他,还是混合?如果模型要在GPU上运行,它是单一类型的GPU,还是需要设计一个可以在多种GPU上运行的应用程序?

  数据将如何到达模型?什么是数据管道?这些数据是来自摄像头或传感器、一系列文件,还是通过网络连接上传的?

  将进行什么预处理?数据将采用什么格式?如果是图像,是否需要裁剪和旋转?如果是文本,那么它是什么字符集?是否允许所有字符作为模型的输入?有什么特别的代币吗?

  TensorRT提供了一个快速、模块化、紧凑、健壮、可靠的推理引擎,可以支持部署体系结构中的推理需求。

  2.在数据科学家和开发人员定义了他们的推理解决方案的体系结构之后,他们确定了优先级,然后使用TensorRT从保存的网络构建一个推理引擎。根据使用的训练框架和网络体系结构,有许多方法可以做到这一点。通常,这意味着您需要使用ONNX解析器(参见图3)、Caffe解析器或TensorFlow/UFF解析器将保存的神经网络从其保存的格式解析为TensorRT。

  3.在分析网络之后,您需要考虑优化选项——批处理大小、工作区大小和混合精度。这些选项被选择并指定为TensorRT构建步骤的一部分,在此步骤中,您将根据您的网络实际构建一个优化的推理引擎。本指南的后续部分提供了关于工作流这一部分的详细说明和大量示例,将您的模型解析为TensorRT并选择优化参数

  图4 TensorRT优化训练过的神经网络模型,以生成可部署的运行时推理引擎。

  4.在使用TensorRT创建了一个推理引擎之后,您将需要验证它是否复制了在训练过程中测量的模型结果。如果您选择了FP32或FP16,那么它应该与结果非常接近。如果你选择了INT8,那么在训练中获得的准确性和推理的准确性之间可能会有一个小的差距。

  TensorRT库将链接到部署应用程序,部署应用程序将在需要推理结果时调用该库。要初始化推理引擎,应用程序首先将模型从计划文件反序列化为推理引擎。

本文链接:http://windsorflowers.net/dijihuchi/405.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部