分享一个 MXNet Neural Neural Architecture Search (NAS) 的 repo


#1

大家好,MXNet NAS 的实现比较少,我和几个朋友用 MXNet 复现了一下旷视的 Single Path One-Shot NAS: Single Path One-Shot NAS MXNet, 因为加了 SE 效果比原 paper 还要好一些,如果大家感兴趣欢迎试一试哈

Single Path One Shot NAS

该 repo 包含在 MXNet(Gluon) 上的 Single Path One-Shot NAS 实现。具备 完整的 ImageNet 训练和搜索的流程,搜索空间为 32^20,包含 supernet 训练,supernet 搜索和搜索到的最佳 subnet 训练等。通过这个 repo 的实现,搜索到一种新的 NAS 得到的结构。该模型在 FLOPs,参数量和最终 top-1 acc 上均好于其他如 FBNet,MnasNet,DARTS,NASNET,PNASNET和原始 SinglePathOneShot 等的 NAS 模型。如果考虑 Google 的 MicroNet Challenge Σ归一化分数 的话,在进行量化之前,它的分数也优于其他主流的手工设计的 efficient 模型,例如 MobileNet V1 V2, V3,ShuffleNet V1,V2 等。

NAS Model FLOPs # of Params Top - 1 Top - 5 Σ Normalized Scores Scripts Logs
OneShot+ Supernet 841.9M 15.4M 62.90 84.49 7.09 script log
OneShot-S+ (ours) 291M 3.5M 75.75 92.77 1.9166 script log
OneShot+ (ours) 297M 3.7M 75.24 92.58 1.9937 script log
OneShot (ours) 328M 3.4M 74.02* 91.60 2 script log
OneShot (official) 328M 3.4M 74.9* 92.0 2 - -
FBNet-B 295M 4.5M 74.1 - 2.19 - -
MnasNet 317M 4.2M 74.0 91.8 2.20 - -
DARTS 574M 4.7M 73.3 91.3 3.13 - -
NASNET-A 564M 5.3M 74.0 91.6 3.28 - -
PNASNET 588M 5.1M 74.2 91.9 3.29 - -
Model FLOPs # of Params Top - 1 Top - 5 Σ Normalized Scores Scripts Logs
OneShot-S+ (ours) 291M 3.5M 75.75 92.77 1.9166 script log
OneShot+ (ours) 297M 3.7M 75.24 92.58 1.9937 script log
OneShot (ours) 328M 3.4M 74.02 91.60 2 script log
MobileNetV3 Large 217M 5.4M 75.2 - 2.25 - -
MobileNetV2 (1.4) 585M 6.9M 74.7 - 3.81 - -
MobileNetV1 569M 4.2M 70.6 - 2.97 - -
ShuffleNetV2 2.0x 591M 7.4M 75.0 92.4 3.98 - -
ShuffleNetV1 2.0x 524M 5.4M 74.1 91.4 3.19 - -

官方 pytorch 版比较

Single Path One-Shot NAS提供了一个很好的思路,它可以通过一次 supernet 训练和多次低成本搜索过程,在不同模型大小/延迟约束下轻松搜索最优化的 subnet 结构。 这种方法的灵活性和高效性可以使许多需要跨平台部署神经网络模型的时候方便很多。借助这种方法,可以避免手动调整结构以满足不同 edge 端的硬件要求。不过作者尚未发布完整的 Supernet 训练和搜索代码,相比较而言本 repo 在完整性上比较好。

Model Official This repo
Subnet Training
Block Selection
Channel Selection ×
Supernet Training - With Block Choices
Supernet Training - With Channel Choices ×
Supernet Training - With FLOP/Param Constraints ×
Supernet Training - With Strolling Evolution Constraints -
General FLOPs & Parameters Counting Tool
Fast Counting Tool with pre-calculated lookup table ×
BN Stat Update for Val Acc ×
BN Stat Update for Supernet Searching ×
Random Search ×
Genetic Search - On Block Choices
Genetic Search - On Channel Choices ×
Genetic Search - Jointly ×
SE -
Efficient Last Conv Block -
Op to Op Profiling Tool -
Merge BN -
Int8 Quantization -

欢迎大家试一试提提 issue~


#2

强,这几天也在看nas,前两天刚看到你之前提问的那个BN怎么弄的帖子。


#3

其实到现在 NasBN 的多卡还是慢, 欢迎帮我改改 bug…