本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

码报:为模型减减肥:谈谈移动/嵌入式端的深度学习

时间:2017-08-13 18:51来源:118图库 作者:www.wzatv.cc 点击:
专栏 | 为模型减减肥:谈谈移动/嵌入式端的深度学习 2017-08-13 10:58 来源:机器之心 中国移动/谷歌 原标题:专栏 | 为模型减减肥:谈谈移动/嵌入式端的深度学习 机器之心专栏 作者

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

2017-08-13 10:58 来源:机器之心 中国移动 /谷歌

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

机器之心专栏

作者:李飞

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

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),但是其访问速度较慢。

码报:为模型减减肥:谈谈移动/嵌入式端的深度学习

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

码报:为模型减减肥:谈谈移动/嵌入式端的深度学习

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

更关键的是,访问片外内存所需要的能量是巨大的。根据 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 的时候,内存访问消耗的能量占了绝大部份!

码报:为模型减减肥:谈谈移动/嵌入式端的深度学习

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容