什么限制了你的神经网络执行的速度

这周拜读了大神Forrest Iandola的一篇博客,大开眼界,忍不住翻译过来,供大家分享。原文链接如下:
https://medium.com/analytics-vidhya/not-all-tops-are-created-equal-e1911ffb4a82

摘要

限制了DNN在计算平台上的执行速度的六个常见原因。
1)内存访问过多
2)没有足够的并行
3)等待输入数据加载
4)糟糕的I/O ,内存和计算机制的重叠机制(overlap)
5)在专用的平台上没有使用专用的操作(不是所有的TOPs都是一样的,不同产品在某些运算上做了特殊优化)
6)未优化代码

在这里插入图片描述
深度学习处理器公司经常高调宣称他们的产品有惊人的处理速度。他们通常使用的度量标准有 TOPS(Tera Operations per Second), TMACS(Tera Multiply-Accumulate Instructions per Second)。这些指标的意义在哪,这些指标是否真的有用?

首先,看一下这些指标在深度学习中是怎么用的?

让我们思考一下,一个卷积层有尺寸为3x3x100的过滤器和100个输出通道。

1)假设这个卷基层的input grid 的尺寸是50x50x100. 所以,一次前向操作需要3310010050*50 = 225,000,000 MACs, 相当于450,000,000 OPs。一个MACs 等于2个OPs.
2)但是,当一个处理器公司宣称他们的产品能达到一定数量的MACs和OPs, 使用中确实能达到这个数量吗?好吧,处理器公司引用的这些数字实际是峰值(“peak”, 理论上的最好情况)。
3)事实上,你的情况可能有所不同。比如,最近的一篇论文,名字叫EMBench。论文中有展示了两种深度神经网络(DNNs),它们有相同的MACs,但是他们跑在一样的平台上,却有10倍延时的差距。

什么导致这个slowdown?下面我们展示了一个列表(不完整),列出了一些在计算平台上会阻止你的DNN获得理想峰值速度的问题。我们主要关注会限制DNN推理速度的一般问题,这些问题往往也会影响DNN训练速度。

1 内存访问过多

代码运行的速度受限于处理器运行的速度,这个是显而易见的。但是,在所有的计算平台上,内存访问的速度是比计算慢的。一个算法(或者DNN 层)中计算与没存访问的比例可以作为一个量度,称作为计算

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值