实验
相同延时的情况下效果会好很多。搜出结构之后再finetune会更好。搜出结构后从头train效果很差,说明pretrain的weight是有用的。
评价
移动端部署很好用,只需要train一次,速度非常快,progressive shrinking解决了多个子网络互相影响的问题。
HAT
「[ACL 20] HAT: Hardware Aware Transformers for Efficient Natural Language Processing」
动机
Transfomer部署到不同终端,NAS费时费钱。
方法
其实就是把OFA照搬到Transformer上,这里连progressive shrinking都没用,直接uniform采样,貌似也没有用不同size的模型联合训练。
实验
评价
我感觉相比于OFA创新很小,就是设计了一下Transformer的搜索空间,其他基本差不多。
后记
目前看来,AMC、OFA和HAT是之后可以尝试的工作。
如果想不改变结构,单纯通过剪枝压缩的话,可以尝试用AMC在相同压缩率或延时的情况下达到更好的效果。
而如果想要更深一步优化延时和压缩率,可以尝试OFA的方法,这种方法只需要train一次超网络,训练过程中采用技巧防止子网络性能互相影响即可。最后针对不同设备直接搜出最优结构就行了,不需要在评估过程中重新训练。因此速度非常快,也很方便。
OFA和HAT的代码也都开源了,可以按照教程试一试,我试了在ImageNet上搜出一个比较好的模型还是非常快的。不考虑pretrain的时间,对于每个设备只需要几十秒就搜出来了。
「OFA:」
https://github.com/mit-han-lab/once-for-all
「HAT:」
https://github.com/mit-han-lab/hardware-aware-transformers
此外AMC也有两个很nice的工具包都集成进去了:
「Intel:」
https://github.com/IntelLabs/distiller/tree/master/examples/auto_compression/amc
「MicroSoft:」
https://github.com/microsoft/nni/tree/master/examples/model_compress/amc
作者简介:godweiyang,知乎同名,华东师范大学计算机本硕,字节跳动算法工程师,研究方向句法分析、机器翻译、模型压缩。