概述
AutoSlim是一种one-shot模型优化方法,只要给定网络类型(如MobileNet-v1,ResNet50),给定限制条件(如Flops、latency等),就能自动决定每一层的通道数,以达到最优的模型精度。该优化方法打破了人工设计模型的“half size, double channel”的假设,解决了需要人为评估模型每一层敏感度,人为设置剪枝层/剪枝层类型的痛点,降低了使用剪枝技术的门槛和学习成本。
AutoSlim的算法流程图如下:
需要给出一个网络结构
训练一个slimmable model作为supernet,这里的slimmable model是指nonuniform universally slimmable networks,即所有层的通道不是通过一个统一的width ratio来进行调节。训练的epochs数大约为常规训练的20%-50%。
在验证集上,采用贪婪的方式,使用已训练好的supernet进行前向推理,迭代评估,最后找到满足限制条件,同时精度降低最小的网络,这个网络成为子网。更具体的说,greedily slim是指在一次迭代中,将每一层的通道进行分组,每一组是一个channel bin,尝试剪去每一层的最后一个channel bin,查看前向推理精度,精度最高的那层剪去最后一个channel bin,如此循环,直到满足限制条件。通过分组的方式可以减小搜索空间。
重新训练一个或多个子网。
该算法基于一个假设:作为supernet的slimmable model可以作为已知通道配置的独立训练的网络的精度评估器。
slimmable networks原理
AutoSlim在slimmable networks的基础上发展起