文章目录
老铁们✌,重要通知🙌!福利来了!!!😉
【计算机视觉 复习流程剖析及面试题详解 】
【深度学习算法 最全面面试题(30 页)】
【机器学习算法 最全面面试题(61页)】
1.TensorRt
1.1 TensorRt定义?
TensorFlow: pb,ckpt
pytorch: pt,pth
keras: h5
显卡型号: tesla T4 | tesla V100
训练:V100、P40
推理:T4、P4
T4
整数运算能力(INT8): 130 TOPS
GPU 显存: 16GB
显存带宽: 320GB/秒
定义:推理加速(基于CUDA和cudnn的进行高性能推理加速引擎);用于从ONNX或tensorflow导入现有模型解析器,是对训练好的模型进行优化。
当网络训练完后,可以将tf训练模型文件直接丢进tensorRT中,而不再需要依赖深度学习框架(Caffe,TensorFlow等)。
tensorRT通过 组合层 和优化内核选择来优化网络,从而改善延迟、吞吐量(样本量/秒)、功效和内存消耗。
理解:
tensorRT可以将TensorFlow/pytorch的网络模型解析,然后与其中对应的层进行一一映射,把其他框架的模型统一全部 转换到tensorRT中,然后在tensorRT中可以针对NVIDIA自家GPU实施优化策略,并进行部署加速。
TensorRT对于网络结构进行了重构和优化,主要体现在:
1.tensorRT通过解析网络模型将网络中无用的输出层消除以减小计算。
2.对于网络结构的垂直整合,即将目前主流神经网络的conv、BN、Relu三个层融合为了一个层。
3.对于网络的水平组合,水平组合是指将输入为相同张量和执行相同操作的层融合一起。
4.对于concat层,将contact层的输入直接送入下面的操作中,不用单独进行concat后在输入计算,相当于减少了一次传输吞吐。
1.2 TensorRt原理
低精度推理
TensorRT支持FP16
和INT8
的计算,在训练的时候一般是使用32位或者16位数据,它在推理时可以降低模型参数的位宽来进行低精度推理,通过在减少计算量和保持精度之间达到一个理想的权衡,以达到加速推断的目的。模型在推理计算时,是调用GPU的CUDA核进行计算的。
P16
主要是P100和V100这两张卡支持;INT8
主要针对的是 P4和P40这两张卡,P4是专门针对线上做推断的小卡。
int8量化算法
目标:将fp32的CNN转换为int8而不会造成明显的精度损失;
原因:int8方法具有更高的吞吐量和更低的内存需求;
为什么要量化而不使用int8直接训练?
模型训练是需要反向传播和梯度下降的,训练时的超参一般都是浮点型
,如学习率等,int8类型无法进行训练。
samples文件夹下有一个命令行包装工具,叫trtexec
,用来评测我们的网络模型,它有以下两个功能:
1.在指定的网络模型中,对随机输入数据进行基准测试
。eg:可利用trtexc工具来测试 UFF/ONNX net-model 在推理时的表现。
2.对指定网络模型产生序列化引擎
:使用完全流水线异步方式从多个线程运行具有多个执行上下文的引擎,以测试并行推理性能。
trtexec --deploy=/path/to/mnist.prototxt --model=/path/to/mnist.caffemodel --output=prob --batch=16 --saveEngine=mnist16.trt
定义: FP16(Full