TensorRT模型优化部署(五)--模型优化部署重点注意

系列文章目录

第一章 TensorRT优化部署(一)–TensorRT和ONNX基础
第二章 TensorRT优化部署(二)–剖析ONNX架构
第三章 TensorRT优化部署(三)–ONNX注册算子
第四章 TensorRT模型优化部署(四)–Roofline model
第五章 TensorRT模型优化部署(五)–模型优化部署重点注意
第六章 TensorRT模型优化部署(六)–Quantization量化基础(一)
第七章 TensorRT模型优化部署(七)–Quantization量化(PTQ and QAT)(二)
第八章 TensorRT模型优化部署 (八)–模型剪枝Pruning



前言

模型优化部署专题内容,后续有补充。


注意点一:FLOPs不能完全衡量模型性能

因为FLOPs只是模型计算大小的单位
还需要考虑

  • 访存量
  • 与计算无关的DNN部分 (如reshape,shorcut,nchw -->nhwc等)
  • DNN以外的部分(前处理后处理这些)

注意点二:不能完全依靠TensorRT

TensorRT可以对模型做适当的优化,但是有上限
比如

  1. 计算密度低的1x1conv,depthwise conv不会重构
  2. GPU无法优化的地方会到CPU执行(可以手动修改代码是实现部分,让部分cpu只想转到gpu执行)
  3. 有些冗长的计算,TensorRT可能未来优化添加一些多余的操作(比如类似与添加reformatter,直接修改代码实现部分)
  4. 存在TensorRT尚未支持的算子(可以自己写plugin)
  5. TensorRT不一定会分配Tensor Core(因为TensorRT kernel auto tuning 会选择最合适的kernel)

注意点三:CUDA Core和Tensor Core的使用

1. 有时候TensorRT并不会分配Tensor Core
kernel auto tuning 自动选择最优解,有可能出现INT8速度反而比FP16慢了
2. 使用Tensor Core需要让tensor size 为8或者16的整数

  • 8的倍数:fp16精度
  • 16的倍数: int8精度

注意点四:不能忽视 前处理/后处理 的overhead

对于一些轻量的模型,相比于DNN推理部分,前处理/后处理可能会更耗时间。因为有些前处理/后处理的复杂逻辑不适合GPU并行。

• 可以把前处理/后处理中可并行的地方拿出来让GPU并行, 比如RGB2BGR, Normalization, resize, crop, NCHW2NHWC。
• 可以在cpu上使用一些针对图像处理的优化库比如Halide,使用Halide进行blur, resize, crop, DBSCAN, sobel这些会比CPU快。

注意:并不是能GPU加速的地方就GPU加速,需要考虑GPU占用率

注意点五:对使用TensorRT得到的推理引擎做benchmark和profiling

使用TensorRT得到推理引擎并实现infer只是优化的第一步, 需要使用NVIDIA提供的benchmark tools进行profiling
• 分析模型瓶颈在哪里
• 分析模型可进一步优化的地方在哪里
• 分析模型中多余的memory access在哪里
(可以使用: nsys, nvprof, dlprof, Nsight这些工具)

总结

本章为专题内容,主要介绍TensorRT优化部署,可移步专题查看其他内容。

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值