当前位置:首页 > 【组图】专栏 | 为模型减减肥:谈谈移动/嵌入式端的深度学习_搜狐科技_搜狐网

【组图】专栏 | 为模型减减肥:谈谈移动/嵌入式端的深度学习_搜狐科技_搜狐网

时间:来源:机器之心

原标题:专栏 | 为模型减减肥:谈谈移动/嵌入式端的深度学习_搜狐科技_搜狐网

原标题:专栏 | 为模型减减肥:谈谈移动/嵌入式端的深度学习

机器之心专栏

作者:李飞

本文为机器之心矽说专栏系列文章之一,对模型压缩进行了深度解读。

1. 为什么要为深度学习模型减肥

随着深度学习的发展,神经网络模型也越来越复杂,常用的模型中 VGG 系列网络的计算量可以达到 30-40 GOP(1GOP=109 运算)。这些神经网络通常运行在 GPU 上,但是如果我们要在移动/嵌入式端也实现深度学习,那么这样巨大的模型是绝对跑不动的。移动/嵌入式端的计算能力往往只有桌面级 GPU 的 1/100 到 1/1000,换句话说在 GPU 上一秒 40 帧的深度学习 CV 算法在移动/嵌入式端一秒只有 0.04-0.4 帧,这样的性能会极大影响用户体验。

常用深度学习网络运算量

在移动/嵌入式端跑深度学习模型,除了运行速度之外,能效比(energy efficiency)也是关键指标。能效比指的是一次运算所需消耗的能量,它决定了移动/嵌入式端运行深度学习算法时电池能用多久。能效比与深度学习模型息息相关,我们下面将会看到深度学习模型的大小会决定运行算法时的片外内存访问频率,从而决定了能效比。

2. 怎样的模型才能算「身材苗条」?

正如我们减肥不仅要看体重还要看体脂率一样,为深度学习模型「减肥」时不仅要看模型计算量还要看模型大小。

模型计算量是衡量深度学习是否适合在移动或嵌入式端计算的最重要指标,通常用 GOP 单位来表示。例如,流行的 ResNet-18 的计算量大约是 4 GOP,而 VGG-16 则为大约 31 GOP。移动和嵌入式端的硬件计算能力有限,因此模型所需的计算量越大,则模型在移动端运行所需要的时间就越长。为了能让使用深度学习的应用顺畅运行,模型运算量当然是越小越好。除此之外,深度学习每次运算都是需要花费能量的,模型运算量越大则完成一次 inference 需要的能量也就越大,换句话说就是越费电。在电池量有限的移动和嵌入式端,模型一次 inference 所花费的能量必须精打细算,因此深度学习模型计算量不能太大。

如果说计算量对模型来说是最简单直接的「体重」的话,那么模型大小就是略微有些复杂和微妙的「体脂率」。深度学习模型大小主要决定的是该模型做一次 inference 所需要的能量。那么模型大小与 inference 所消耗的能量有什么关系呢?首先,我们知道,深度学习模型必须储存在内存里面,而内存其实还分为片上内存和片外内存两种。片上内存就是 SRAM cache,是处理器集成在芯片上用来快速存取重要数据的内存模块。片上内存会占据宝贵的芯片面积,因此处理器中集成的片上内存大小通常在 1-10 MB 这个数量级。片外内存则是主板上的 DDR 内存,这种内存可以做到容量很大(>1 GB),但是其访问速度较慢。

片上内存,离处理器核心电路很近,因此访问消费的能量很小

片外内存,离处理器很远,一次访问需要消耗很大能量

更关键的是,访问片外内存所需要的能量是巨大的。根据 Song Han 在论文中的估计,一次片外内存访问消耗的能量是一次乘-加法运算的 200 倍,同时也是一次访问片上内存所需能量的 128 倍。换句话说,一次片外内存访问相当于做 200 次乘法运算!

当然,具体程序中运算和内存访问消耗的能量取决于多少次运算需要一次内存存取。严格的分析方法是 roof-line model,不过我们也可以从 Google 公布的数据中去估算深度学习模型中运算次数和内存访问次数的比例。Google 在 TPU 的论文中公布了这个数据,从中可见 LSTM 模型内存访问频率最高,平均 64 或 96 次计算就需要访问一次内存去取权重(weight)数据;而 CNN 模型的内存访问频率相对最低,平均 2888 或 1750 次运算才访问一次内存取权重。这也很好理解,因为 CNN 充分利用了局部特征(local feature),其权重数据存在大量复用。再根据之前的计算和内存访问能量数据,如果所有的权重数据都存储在片外内存,那么两个 CNN 模型计算时运算和内存访问消耗的能量比是 2:1 和 2.5:1,而在 LSTM0 和 LSTM1 模型计算时运算和内存访问消耗的能量比是 1:10 和 1:7!也就是说在 LSTM 模型做 inference 的时候,内存访问消耗的能量占了绝大部份!

因此,我们为了减小能量消耗,必须减少片外内存访问,或者说我们需要尽可能把模型的权重数据和每层的中间运算结果存储在片上内存而非片外内存。这也是为什么 Google TPU 使用了高达 28MB 片上内存的原因。然而,移动端和嵌入式系统使用的芯片不能成本太高,因此片上内存容量很有限。这样的话我们就必须从深度学习模型大小方面想办法,尽量减小模型尺寸,让模型尽可能地能存储在片上内存,或者至少一层网络的权重数据可以存在片上内存。

3. 为模型减肥的几种方法

2016 年可谓是深度学习模型减肥元年,那一年大家在被深度学习的潜力深深折服的同时开始认真考虑如何在移动硬件上跑深度学习,于是 MIT 的 Viviene Sze 发表了第一款深度学习加速芯片 Eyeriss,Bengio 发表了 Binarized Network,Rastegari 提出了 XOR-Net,Song Han 也发表了 Deep Compression,可谓是百花齐放。为模型减肥的方法可以分为两大类:第一类是大幅调整模型结构(包括网络拓扑连接,运算等等),直接训练出一个结构比较苗条的模型;第二类是在已有模型的基础上小幅修改,通常不涉及重新训练(模型压缩)。

Bengio 的 Binarized Neural Network 可谓是第一类模型的先驱者,将神经元 activation 限制为-1 或 1,从而极大地降低了运算量。Google 也于一个多月前发表的 MobileNet,使用了 depth-wise convolution 来降低运算量以及模型大小。Depthwise convolution 能大幅降低运算量,但是同时不同特征之间的权重参数变成线性相关。理论上减小了自由度,但是由于深度学习网络本身就存在冗余,因此实际测试中性能并没有降低很多。MobileNet 的计算量仅为 1GOP 上下,而模型大小只有 4MB 多一些,但能在 ImageNet 上实现 90% 左右的 top-5 准确率。在这条路上努力的人也很多,前不久 Face++也发表了 ShuffleNet,作为 MobileNet 的进一步进化形式也取得了更小尺寸的模型。未来我们预期会有更多此类网络诞生。

Google MobileNet 的几种模型,模型运算量大幅降低的同时 top-5 准确率降低并不多。图中 1MAC=2OP

第二种方法则是保持原有模型的大体架构,但是通过种种方法进行压缩而不用重新训练,即模型压缩。一种思路就是在数据编码上想办法。大家都知道数据在计算机系统中以二进制形式表示,传统的全精度 32-bit 浮点数可以覆盖非常大的数字范围,但是也很占内存,同时运算时硬件资源开销也大。实际上在深度学习运算中可能用不上这么高的精度,所以最简单直接的方法就是降低精度,把原来 32-bit 浮点数计算换成 16-bit 浮点数甚至 8-bit 定点数。一方面,把数据的位长减小可以大大减少模型所需的存储空间(1KB 可以存储 256 个 32-bit 浮点数,但可以存储 1024 个 8-bit 定点数),另一方面低精度的运算单元硬件实现更简单,也能跑得更快。当然,随着数据精度下降模型准确率也会随之下降,所以随之也产生了许多优化策略,比如说优化编码(原本的定点数是线性编码数字之间的间距相等,但是可以使用非线性编码在数字集中的地方使数字间的间距变小增加精度,而在数字较稀疏的地方使数字间距较大。非线性编码的方法在数字通讯重要已经有数十年的应用,8-bit 非线性编码在合适的场合可以达到接近 16-bit 线性编码的精度)等等。业界的大部分人都已经开始使用降低精度的方案,Nvidia 带头推广 16-bit 浮点数以及 8-bit 定点数计算,还推出了 Tensor RT 帮助优化精度。

除了编码优化之外,另一个方法是网络修剪(network pruning)。大家知道在深度学习网络中的神经元往往是有冗余的,不少神经元即使拿掉对精度影响也不大。网络修建就是这样的技术,在原有模型的基础上通过观察神经元的活跃程度,把不活跃的神经元删除,从而达到降低模型大小减小运算量的效果。

当然,网络修剪和编码优化可以结合起来。Song Han 发表在 2016 年 ICLR 上的 Deep Compression 就同时采用了修剪以及编码优化的方法,从而实现 35 倍的模型大小压缩。

Deep Compression 使用的模型压缩同时使用了网络修剪和编码优化

另外,训练新模型和模型压缩并不矛盾,完全可以做一个 MobileNet 的压缩版本,从而进一步改善移动端运行 MobileNet 的速度和能效比。

总结

在移动/嵌入式端运行的深度学习网络模型必须考虑运行速度以及能效比,因此模型的运算量和模型尺寸大小都是越小越好。我们可以训练新的网络拓扑以减小运算量,也可以使用网络压缩的办法改善运行性能,或者同时使用这两种办法。针对移动/嵌入式端的深度学习网络是目前的热门课题,随着边缘计算的逐渐兴起预计会有更多精彩的研究出现,让我们拭目以待。

本文为机器之心专栏,转载请联系本公众号获得授权返回搜狐,查看更多

责任编辑:

声明:本网部分信息转载于其他网站,如稿件涉及版权等问题,请联系我们!

1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165  166  167  168  169  170  171  172  173  174  175  176  177  178  179  180  181  182  183  184  185  186  187  188  189  190  191  192  193  194  195  196  197  198  199  200  201  202  203  204  205  206  207  208  209  210  211  212  213  214  215  216  217  218  219  220  221  222  223  224  225  226  227  228  229  230  231  232  233  234  235  236  237  238  239  240  241  242  243  244  245  246  247  248  249  250  251  252  253  254  255  256  257  258  259  260  261  262  263  264  265  266  267  268  269  270  271  272  273  274  275  276  277  278  279  280  281  282  283  284  285  286  287  288  289  290  291  292  293  294  295  296  297  298  299  300  301  302  303  304  305  306  307  308  309  310  311  312  313  314  315  316  317  318  319  320  321  322  323  324  325  326  327  328  329  330  331  332  333  334  335  336  337  338  339  340  341  342  343  344  345  346  347  348  349  350  351  352  353  354  355  356  357  358  359  360  361  362  363  364  365  366  367  368  369  370  371  372  373  374  375  376  377  378  379  380  381  382  383  384  385  386  387  388  389  390  391  392  393  394  395  396  397  398  399  400  401  402  403  404  405  406  407  408  409  410  411  412  413  414  415  416  417  418  419  420  421  422  423  424  425  426  427  428  429  430  431  432  433  434  435  436  437  438  439  440  441  442  443  444  445  446  447  448  449  450  451  452  453  454  455  456  457  458  459  460  461  462  463  464  465  466  467  468  469  470  471  472  473  474  475  476  477  478  479  480  481  482  483  484  485  486  487  488  489  490  491  492  493  494  495  496  497  498  499  500  501  502  503  504  505  506  507  508  509  510  511  512  513  514  515  516  517  518  519  520  521  522  523  524  525  526  527  528  529  530  531  532  533  534  535  536  537  538  539  540  541  542  543  544  545  546  547  548  549  550  551  552  553  554  555  556  557  558  559  560  561  562  563  564  565  566  567  568  569  570  571  572  573  574  575  576  577  578  579  580  581  582  583  584  585  586  587  588  589  590  591  592  593  594  595  596  597  598  599  600  601  602  603  604  605  606  607  608  609  610  611  612  613  614  615  616  617  618  619  620  621  622  623  624  625  626  627  628  629  630  631  632  633  634  635  636  637  638  639  640  641  642  643  644  645  646  647  648  649  650  651  652  653  654  655  656  657  658  659  660  661  662  663  664  665  666  667  668  669  670  671  672  673  674  675  676  677  678  679  680  681  682  683  684  685  686  687  688  689  690  691  692  693  694  695  696  697  698  699  700  701  702  703  704  705  706  707  708  709  710  711  712  713  714  715  716  717  718  719  720  721  722  723  724  725  726  727  728  729  730  731  732  733  734  735  736  737  738  739  740  741  742  743  744  745  746  747  748  749  750  751  752  753  754  755  756  757  758  759  760  761  762  763  764  765  766  767  768  769  770  771  772  773  774  775  776  777  778  779  780  781  782  783  784  785  786  787  788  789  790  791  792  793  794  795  796  797  798  799  800  801  802  803  804  805  806  807  808  809  810  811  812  813  814  815  816  817  818  819  820  821  822  823  824  825  826  827  828  829  830  831  832  833  834  835  836  837  838  839  840  841  842  843  844  845  846  847  848  849  850  851  852  853  854  855  856  857  858  859  860  861  862  863  864  865  866  867  868  869  870  871  872  873  874  875  876  877  878  879  880  881  882  883  884  885  886  887  888  889  890  891  892  893  894  895  896  897  898  899  900  901  902  903  904  905  906  907  908  909  910  911  912  913  914  915  916  917  918  919  920  921  922  923  924  925  926  927  928  929  930  931  932  933  934  935  936  937  938  939  940  941  942  943  944  945  946  947  948  949  950  951  952  953  954  955  956  957  958  959  960  961  962  963  964  965  966  967  968  969  970  971  972  973  974  975  976  977  978  979  980  981  982  983  984  985  986  987  988  989  990  991  992  993  994  995  996  997  998  999  1000