TensorRT的步骤详情

每个步骤常用的方法和参数:

        1. logger 日志记录器

        通常出现在代码的最开头,在一次会话中,多个builder可以共享同一个logger,通过传入参数的不同,可以产生不同详略的参数,通常使用Verbose和info(这两个等级可以获取一些网络优化过程和优化结果的相关信息)

        2.Builder 引擎构建器

        Builder紧随着logger出现,是用于构建推理引擎的核心对象,在比较旧的TRT版本中,builder常用于设置一些模式,比如开启int8和fp16,指定最大batch size和work space等等,但随着builder config的完善,这些设置都统一转到了builder config中,以后builder仅作为构建引擎的入口,而不再用于设置这些网络属性,其中相应的成员将被废弃(如上图所示)。

        此外dynamic shape模型下, 必须使用builder config及相关的API

        3. BuilderConfig 网络属性选项

        BuilderConfig是Builder中专门用于设置网络属性的一个对象,在比较新的TRT 版本中,可设置构建器最大workspace、开启fp16、int8模式等,另外builderconfig提供了一些高级工具,如限制算法实现的tarctic source、节约构建时间的timing cash、精确控制节点算法的algorithm selector等等

        4. Network

        network是计算图在TRT中的具体描述,由builder生成,在使用TRT原生api搭建网络的workflow中,我们需要不断地想network中添加一些层,并标记network的输入输出张量,而在使用parser导入onnx模型的workflow中,一旦模型解析完成,network的内容就会被自动填入。我们可以在构建期通过network来获取要设置网络的一些信息,如网络的层数、每层的名称和属性、每层的输入输出张量的名称和属性方便调试和其他工作。在使用TRT原生api搭建网络时,上面的三行黄色api使用最多

补充:

        Explicit Btach vs Implicit Batch(推荐使用前者)

        Dynamic Shape模式

出现原因:

1.实际场景中经常需要使用同一个模型来处理不同输入尺寸的数据(不同分辨率的图像,不同长短的句子)

2.每次调用模型处理的数据量的batch可能也是变化的

        向network中添加内容的方法(原生api搭建workflow独有)

        TRT中,需要区分layer和tensor,即区分计算节点和数据节点,与onnx中区分node和tensort类似

        从Network中打印所有层和张量的信息

使用API搭建模型的核心部分

TRT支持的两种低精度模式:FP16和INT8

怎么让一个网络跑起来?

        1)计算引擎的生成

        Binding的概念

        2)Context推理进程(相当于CPU中的一个进程)

        用于输入输出计算的数据怎么准备?

        可做的一些优化

        构建引擎需要时间,怎么构建一次,反复使用?

2.2 Workflow:使用Parser

2.3 Workflow:使用框架内TensorRT接口


        TensorRT开发环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值