模型压缩
1、手工设计网络
这个需要综合考虑硬件本身的特性以及任务特性;
对输入io、网络的并行化、不同的backbone结构(深度、宽度,层次)、输出后处理等调节,设计出较优的网络
2、nas搜索网络
3、DepthShrinker(深度压缩)
把relu换成leaky,正向固定斜率为1,负向设置一个0到1的可学习斜率;训出来如果负向斜率大,说明网络希望这个relu变成identity,说明这个relu可以扔掉;扔掉非线性,那么前后两个conv可能就可以merge;压缩了网络的深度。
标题训练法:
1、虚竹训练法,尝试不同模型,每次都用上一阶段的pretrain,像传功力一样。
2、重参数化,增加了网络的复杂度的同时,不改变部署的网络结构
3、大模型蒸馏小模型
4、大数据集pratrain
5、大epoch,小模型往往更难训练,需要更大的epoch才能看出小模型的上限。甚至300个epoch都不够。
6、任务自带的场景有用的tricks,如data augmatetion、loss fuction\iou分支等