trtexec 日志内容解析

1.ONNX模型加载及创建

解析模型耗时0.14秒,总共126层,后续trt会针对该模型进行优化

2.计算图优化

优化计算图,可以使得推理速度更快,在本案例中,将模型从126层优化到57层

08/20/2023-11:59:52\] \[I\] \[TRT\] Graph optimization time: 0.0150853 seconds. 计算图优化中采用了大量的层融合,融合的原理是尽可能地合并不同层之间相关的计算,避免不必要的中间tensor生成, 减少内存读写, 降低计算消耗,最终提高推理效率 常见的优化方法如下: ConstShuffleFusion: 在fc层的bias中使用,可以将常量shuffle到bias数据中,减少冗余计算。 ShuffleShuffleFusion: 在flatten层中使用,可以减少shuffle的计算次数。 ConvReshapeBiasAddFusion: 将conv层的输出reshape,然后进行bias add的计算融合到一起,减少运算耗时。 ConvReluFusion: 将conv层和后续的Relu激活函数层融合,可以减少一次Relu的计算。 ConvEltwiseSumFusion: 将conv层和element-wise add层融合,避免重复计算。 ReduceToPoolingFusion: 将reduce层修改为pooling层,减少运算消耗。 ConcatReluFusion: 将concat层和relu层融合,减少relu计算次数。 BiasSoftmaxFusion: 融合bias层和softmax层,减少冗余计算。 ![](https://i-blog.csdnimg.cn/direct/3fa7210a5e3c475abef31e4d27c351d1.png) ## ![](https://i-blog.csdnimg.cn/direct/bf71ec1c77384e8ba22d2e6e1ecce792.png)3. 各网络层实现方式选择 网络层具体的实现有多种方式,例如不同的底层库、不同的实现算法、不同的算法策略,在TensorRT中会把所有的实 现方式跑一遍,挑选速度最优的实现方式。 在实现网络层的过程中,runner和tactic是TensorRT中用于实现layer的关键组件。 runner代表着一种实现layer的算法或代码路径。例如,卷积层可以通过cudnn、cublas或者TensorRT自身的cask实 现。runner封装了具体的实现算法。 tactic代表具体的实现方案。每个runner下面可以有多个tactic,对应不同的优化方法。例如cask convolution runner下 面可以有基于tensor core的tactic,或是各种tilesize的tactic等等。tactic包含了针对特定layer进行各种优化的代码实现。 所以TensorRT通过组合不同的runner和tactic,就可以得到层的多种实现方式。然后通过Auto Tuner来测试不同组合的性 能,选择出最优的实现。 例如,对于一个卷积层: runner可以是cudnn、cublas、cask convolution等 cask convolution下面可以有基于tensor core的tactic,tile size为32x32或64x64的tactic等等 最终会选择出cask convolution + 64x64 tile size这个tactic组合作为最优实现 在本日志中,第一个runner跑的是conv_0 + Relu_1,最终选择的Tactic Name是 0x9cb304e2edbc1221,耗时0.040 秒。 ![](https://i-blog.csdnimg.cn/direct/ff70402615a74ff8be5134a3fefde4c0.png) 最终trt将57个层都进行了Computing costs,得到各网络层的最优实现方案。 除了网络层,还需要reformat layer,它的作用是改变tensor的格式,将前一层的输出重新排布成后一层所需的格式。这 样就可以使得两层之间的tensor兼容,然后进行融合。 例如:Conv_0 + Relu_1层需要\[50176,1:4,224,1\]格式的tensor作为输入,而输入层输出的是\[150528,50176,224,1\]格 式,所以在输入层和Conv_0层之间加入了reformat layer,将tensor重新排布成Conv层需要的格式。 最终添加了25个reformat layer,模型变为了82层。 ![](https://i-blog.csdnimg.cn/direct/4bedd009207b4d10b7c2ffa7e239539c.png) ## ![](https://i-blog.csdnimg.cn/direct/65f21b4f6d7d453cabb9e6e15d0f46ba.png)4. 存储空间占用情况 介绍各网络层存储占用情况,以及汇总,例如本案例,engine的GPU占用是107MB ![](https://i-blog.csdnimg.cn/direct/a8756d11b34544a8976cc9f4726d91aa.png) ## 5.engine构建情况 对完成好的engine各网络层、网络层对应的kernel选择情况进行打印。 可以看到engine的构建耗时15.3秒 ![](https://i-blog.csdnimg.cn/direct/637a3a905c37412f8a273165bcbfa0ee.png) ## 6.推理耗时统计 进行10次推理,依次得到以下信息,同时相应的统计值。 Throughput:模型的推理吞吐量,以每秒推理数量(QPS)为单位。实际图片量需要乘以batchsize。 Latency:模型一次推理的延迟时间统计信息,包括最小值、最大值、平均值、中位数和百分位数(90%、95%和 99%)。 Enqueue Time:将数据传输到GPU的时间统计信息, H2D Latency:将主机数据传输到GPU的延迟时间统计信息, GPU Compute Time:模型在GPU上运行的计算时间统计信息 D2H Latency:从GPU将数据传输回主机的延迟时间统计信息 Total Host Walltime:模型推理的总时间,包括传输数据、计算和传输数据回主机的时间。 Total GPU Compute Time:模型在GPU上的总计算时间。 ![](https://i-blog.csdnimg.cn/direct/91f63775c7c4450caa186ad65c5df349.png) ![](https://i-blog.csdnimg.cn/direct/ab1e4615968b4d6b9109ebc0514443d8.png) ## **6.trt模型推理** 通过推理trt模型,可以查看网络层信息、网络层推理耗时情况 ![](https://i-blog.csdnimg.cn/direct/c22e068fd2a645eb9057c44d6930fee1.png) 可以看到,卷积层耗时较大 ![](https://i-blog.csdnimg.cn/direct/84d7b1a7200a466a90a118a6d9900d00.png)

相关推荐
小雷FansUnion1 小时前
深入理解MCP架构:智能服务编排、上下文管理与动态路由实战
人工智能·架构·大模型·mcp
资讯分享周1 小时前
扣子空间PPT生产力升级:AI智能生成与多模态创作新时代
人工智能·powerpoint
叶子爱分享2 小时前
计算机视觉与图像处理的关系
图像处理·人工智能·计算机视觉
鱼摆摆拜拜2 小时前
第 3 章:神经网络如何学习
人工智能·神经网络·学习
一只鹿鹿鹿2 小时前
信息化项目验收,软件工程评审和检查表单
大数据·人工智能·后端·智慧城市·软件工程
张较瘦_2 小时前
[论文阅读] 人工智能 | 深度学习系统崩溃恢复新方案:DaiFu框架的原位修复技术
论文阅读·人工智能·深度学习
cver1232 小时前
野生动物检测数据集介绍-5,138张图片 野生动物保护监测 智能狩猎相机系统 生态研究与调查
人工智能·pytorch·深度学习·目标检测·计算机视觉·目标跟踪
学技术的大胜嗷3 小时前
离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制
人工智能·深度学习·yolo·目标检测·机器学习
还有糕手3 小时前
西南交通大学【机器学习实验10】
人工智能·机器学习
江瀚视野3 小时前
百度文心大模型4.5系列正式开源,开源会给百度带来什么?
人工智能