文章目录
- 一、一些tensorRT背景及使用介绍
- 1)深度学习介绍
- 2)TensorRT优化策略介绍
- 3)TensorRT基础使用流程
- 4)dynamic shape 模式
- 5)TensorRT模型转换
 
- 二、实操
- 1)编译tensorRT开源代码运行SampleMNIST
 
 
一、一些tensorRT背景及使用介绍
1)深度学习介绍
- 简单学习介绍量化背景
  
 补充
1)tensorFlow python版本其实是调用的TensorFlow C的接口
2)libtorch其实是pytorch的C++版本
3)cublas是实现矩阵相乘的功能
4)cudnn主要实现dnn上的一些算子功能,例如卷积等
5)不同NVIDIA显卡架构间不兼容,同代显卡基本是同架构
2)TensorRT优化策略介绍
- 优化策略
1、低精度优化 :int8  int16
2、Kernel自动调优
例如:cublas  gemm多种实现:①不用shared memory ;②小矩阵相乘;③使用额外显存的策略
3、算子融合:例如:
relu+bias+1x1 conv =1x1 CBR
4、多流运行
5、显存优化

3)TensorRT基础使用流程

- 代码使用流程
  
4)dynamic shape 模式
- 背景
 ①TensorRT 6.0之后 explicit(显式)batch支持动态batchsize
 ②CV的图片基本都是固定大小,而NLP和speech语音很多都是不固定大小的
- 思路
 1)build engine阶段设置:
 ①用createNetworkV2设置显示batchsize
 ②设置最大batchsize
 ③设置优化profile选项,选择最大、最常用、最小的数据维度(类似,15s\20s\30s的语音)
  
 2)infer推理阶段
 ①每次推理设置输出的数据维度
 ②检查输入的数据维度是否符合需求
 ③开启推理
  
5)TensorRT模型转换
①onnx:一键解析pytorch转为onnx,不用像API那样一层一层构建onnx
 ②torch2trt:pytorch直接转为trt
 ③TensorFlow:谷歌出品,不用pytorch,tf直接转为trt(tf2tensorrt)
 ④Tencent Forward:支持pytorch\onnx\tf直接转为trt,接口简单
 
二、实操
1)编译tensorRT开源代码运行SampleMNIST
