Network Precision Framework/GPU:TitanXP Avg.Time(Batch=8,unit:ms) Top1 Val.Acc.(ImageNet-1k)
Resnet50 fp32 TensorFlow 24.1 0.7374
Resnet50 fp32 MXnet 15.7 0.7374
Resnet50 fp32 TRT4.0.1 12.1 0.7374
Resnet50 int8 TRT4.0.1 6 0.7226
Resnet101 fp32 TensorFlow 36.7 0.7612
Resnet101 fp32 MXnet 25.8 0.7612
Resnet101 fp32 TRT4.0.1 19.3 0.7612
Resnet101 int8 TRT4.0.1 9 0.7574
17.6 影响神经网络速度的4个因素(再稍微详细一点)
1. FLOPs(FLOPs就是网络执行了多少multiply-adds操作);
2. MAC(内存访问成本);
3. 并行度(如果网络并行度高,速度明显提升);
4. 计算平台(GPU,ARM)
17.7 压缩和加速方法如何选择?
1)对于在线计算内存存储有限的应用场景或设备,可以选择参数共享和参数剪枝方法,特别是二值量化权值和激
活、结构化剪枝.其他方法虽然能够有效的压缩模型中的权值参数,但无法减小计算中隐藏的内存大小(如特征
图). 2)如果在应用中用到的紧性模型需要利用预训练模型,那么参数剪枝、参数共享以及低秩分解将成为首要
考虑的方法.相反地,若不需要借助预训练模型,则可以考虑紧性滤波设计及知识蒸馏方法. 3)若需要一次性端
对端训练得到压缩与加速后模型,可以利用基于紧性滤波设计的深度神经网络压缩与加速方法. 4)一般情况下,
参数剪枝,特别是非结构化剪枝,能大大压缩模型大小,且不容易丢失分类精度.对于需要稳定的模型分类的应用,
非结构化剪枝成为首要选择. 5)若采用的数据集较小时,可以考虑知识蒸馏方法.对于小样本的数据集,学生网
络能够很好地迁移教师模型的知识,提高学生网络的判别性. 6)主流的5个深度神经网络压缩与加速算法相互之
间是正交的,可以结合不同技术进行进一步的压缩与加速.如:韩 松 等 人[30]结合了参数剪枝和参数共享;温
伟等人[64]以及 Alvarez等人[85]结合了参数剪枝和低秩分解.此外对于特定的应用场景,如目标
检测,可以对卷积层和全连接层使用不同的压缩与加速技术分别处理.
参考《深度神经网络压缩与加速综述》
17.8 改变网络结构设计为什么会实现模型压缩、加速?
17.8.1 Group convolution
Group convolution最早出现在AlexNet中,是为了解决单卡显存不够,将网络部署到多卡上进行训练而提出。
Group convolution可以减少单个卷积1/g的参数量。如何计算的呢?
假设
输入特征的的维度为$HWC_1$;
卷积核的维度为$H_1W_1C_1$,共$C_2$个;