tensorrt在不同batchsize下的性能对比 骑猪看日落 2023-01-08 07:27 208阅读 0赞 tensorrt利用GPU进行加速,天然的GPU是适合并行计算,因此加大batchsize是优化tensorrt常见的方式之一 tensorrt默认是batchsize=1,接下来做几个实验进行观察 模型是直接下载的[这个网站][Link 1]的onnx文件 拿到onnx文件后,我们需要转换成tensorrt的引擎文件 /opt/TensorRT-7.1.3.4/bin/trtexec --onnx=ctdet_coco_dlav0_512.onnx --saveEngine=ctdet_coco_dlav0_512_256.trt --best --batch=256 --workspace=4096 运行成功直接会获得trt文件 ![20210119140226382.png][] 接下来进行测试性能 /opt/TensorRT-7.1.3.4/bin/trtexec --loadEngine=ctdet_coco_dlav0_512_256.trt --batch=256 /opt/TensorRT-7.1.3.4/bin/trtexec --loadEngine=ctdet_coco_dlav0_512_256.trt --batch=128 /opt/TensorRT-7.1.3.4/bin/trtexec --loadEngine=ctdet_coco_dlav0_512_256.trt --batch=64 /opt/TensorRT-7.1.3.4/bin/trtexec --loadEngine=ctdet_coco_dlav0_512_256.trt --batch=32 /opt/TensorRT-7.1.3.4/bin/trtexec --loadEngine=ctdet_coco_dlav0_512_256.trt --batch=16 /opt/TensorRT-7.1.3.4/bin/trtexec --loadEngine=ctdet_coco_dlav0_512_256.trt --batch=8 /opt/TensorRT-7.1.3.4/bin/trtexec --loadEngine=ctdet_coco_dlav0_512_256.trt --batch=4 /opt/TensorRT-7.1.3.4/bin/trtexec --loadEngine=ctdet_coco_dlav0_512_256.trt --batch=2 /opt/TensorRT-7.1.3.4/bin/trtexec --loadEngine=ctdet_coco_dlav0_512_256.trt --batch=1 本文只考察吞吐量和运行时间,将结果汇总如下 batchsize total compute time(s) throughput(qps) 1 2.94049 364.344 2 2.93884 725.753 4 2.77403 1365.88 8 1.65327 1619.66 16 0.922257 1818.5 32 0.479588 1848.01 64 0.238533 1859.18 128 0.12173 1842.8 256 0.0641229 1817.42 可视化一下计算时间(total compute time) import numpy as np import pandas as pd import matplotlib.pyplot as plt df=pd.read_csv("data.txt",sep="\t") x =df['batchsize'].values y1 =df['total compute time(s)'].values y2 =df['throughput(qps)'].values plt.plot(x, y1, 'ro--') #plt.plot(x, y1, 'b--') plt.xlabel('batchsize') plt.ylabel('total compute time(s)') for a, b in zip(x, y1): plt.text(a+15,b-0.15,'(%d,%.4f)'%(a,b),ha='center', va='bottom',fontdict={'size': 10, 'color': 'g'}) plt.show() ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VfNDM4_size_16_color_FFFFFF_t_70][] 同理可视化一下吞吐量 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VfNDM4_size_16_color_FFFFFF_t_70 1][] ### 从上面两幅图我们可以看到提高batchsize的大小,对计算时间影响非常大;而提高batchsize的大小,对吞吐量的大小很容易达到饱和。 ### 细心的同学可以发现,从onnx转trt文件的时候,是使用了--best 这个参数是 --best Enable all precisions to achieve the best performance (default = disabled) 属于混合精度,既不是单纯的fp32,也不是fp16,int8 接下来对比一下不同量化对计算时间和吞吐量的影响 分别做了3个实验,best、fp16和int8 结果汇总成三个文件里面 best.txt fp16.txt int8.txt 可视化如下: import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.tight_layout() df_int8=pd.read_csv("int8.txt",sep="\t") df_best=pd.read_csv("best.txt",sep="\t") df_fp16=pd.read_csv("fp16.txt",sep="\t") x =df_int8['batchsize'].values y1_int8 =df_int8['total compute time(s)'].values y1_best =df_best['total compute time(s)'].values y1_fp16 =df_fp16['total compute time(s)'].values plt.plot(x, y1_int8, 'ro--',label='int8') plt.plot(x, y1_best, 'bo--',label='best') plt.plot(x, y1_fp16, 'go--',label='fp16') plt.xlabel('batchsize') plt.ylabel('total compute time(s)') plt.legend() plt.show() ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VfNDM4_size_16_color_FFFFFF_t_70 2][] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VfNDM4_size_16_color_FFFFFF_t_70 3][] ### 从上面可以看到best的性能和int8几乎一样,比fp16好一些 ### [Link 1]: https://download.01.org/opencv/public_models/122019/ctdet_coco_dlav0/ [20210119140226382.png]: /images/20221119/1817ef3cd50242409b46ea3152f4ee50.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VfNDM4_size_16_color_FFFFFF_t_70]: /images/20221119/968fbc2d98574691b0294507bc7a4344.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VfNDM4_size_16_color_FFFFFF_t_70 1]: /images/20221119/629046aeec7e4bd7892c1ba64b4d3c9d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VfNDM4_size_16_color_FFFFFF_t_70 2]: /images/20221119/6a083fde228444cd944102baa81ce27d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VfNDM4_size_16_color_FFFFFF_t_70 3]: /images/20221119/5c0df23bc9dc44a694cdb9733bde04bf.png
相关 JVM性能优化挑战:Java程序在不同环境下的调整 Java程序的性能优化是一个多维度的过程,面临以下一些挑战: 1. 环境多样性:Java应用通常部署在多种环境中,如桌面系统、移动设备、服务器集群等。这些不同的环境可能对性能 我会带着你远行/ 2024年09月20日 07:12/ 0 赞/ 8 阅读
相关 JVM性能瓶颈解析:Java应用在不同场景下的性能问题 JVM(Java Virtual Machine)是Java应用程序运行的平台,其性能可能受到多种因素的影响。以下是在不同场景下常见的JVM性能瓶颈解析: 1. **内存溢出 - 日理万妓/ 2024年09月16日 06:03/ 0 赞/ 12 阅读
相关 JVM运行时性能问题:Java应用程序在不同环境下的执行效率对比 Java应用程序的运行时性能问题主要涉及到以下几个方面,会在不同的环境或条件下表现得有所不同: 1. 硬件配置:CPU型号、核心数量、主频;内存大小和速度;硬盘类型(SSD/ 柔光的暖阳◎/ 2024年09月10日 05:48/ 0 赞/ 12 阅读
相关 kubernetes 不同网络方案性能对比 网络方案性能验证 1 测试说明 涉及网络性能变量较多,比如网卡MTU值及报文大小、TCP windows size、多线程等,由于我们使用横向对比,在相同测试场... 红太狼/ 2024年04月19日 09:58/ 0 赞/ 40 阅读
相关 openvino在不同batchsize下的性能对比 之前写过一篇关于tensorrt的:[tensorrt在不同batchsize下的性能对比][tensorrt_batchsize] 模型还是使用的这篇文章的模型,只是将其转 今天药忘吃喽~/ 2023年01月10日 14:58/ 0 赞/ 86 阅读
相关 训练过程--Batchsize(总之一般情况下batchsize能设多大就设多大) 只做记录,原文:https://blog.csdn.net/wydbyxr/article/details/84855489 尽可能地设大batchsize 在合理范围 ゝ一世哀愁。/ 2023年01月09日 12:42/ 0 赞/ 94 阅读
相关 tensorrt在不同batchsize下的性能对比 tensorrt利用GPU进行加速,天然的GPU是适合并行计算,因此加大batchsize是优化tensorrt常见的方式之一 tensorrt默认是batchsize=1, 骑猪看日落/ 2023年01月08日 07:27/ 0 赞/ 209 阅读
相关 Mysql 在不同内存情况下性能优化参数设置 文章目录 Mysql 在不同内存情况下性能优化参数设置 1、可用内存为 1G 左右 2、可用内存为 2G 左右 向右看齐/ 2022年11月19日 04:08/ 0 赞/ 108 阅读
相关 vue的某元素在不同条件下采用不同的样式 html页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> 向右看齐/ 2021年11月22日 11:28/ 0 赞/ 614 阅读
还没有评论,来说两句吧...