中文 英语
18lickc新利
的意见

推理加速度:遵循记忆

两个不同的神经网络模型可以告诉我们关于有效使用内存的重要性。

受欢迎程度

已经有很多关于推理加速度的计算复杂度:非常大的矩阵乘法的全层和大量的3×3像素的图像旋转,两者都需要成千上万的mac (multiplier-accumulators)实现高吞吐量模型ResNet-50和YOLOv3等。

硬币的另一面是管理的运动数据在内存中来,首先,使mac提供重量和激活来实现硬件利用率最高,其次,使用最少的权力。

我们用两个流行的神经网络模型来检查内存中推理的挑战。我们假设Winograd转换用于流行的3×3,跨步1曲线玲珑。

不幸的是,很少有推理供应商提供任何基准,而是选择使用模糊语句的上衣背后没有给出细节。

通常ResNet-50,基准时,常常没有说批大小(批大小是至关重要的:大多数架构与大型批量大小,但是很少有高吞吐量低批量大小——如果一批大小不是给你可以假设这是大)。重要的是要注意,ResNet-50实际上是一个神经网络,没有人打算用在他们的产品;相反,它是用来比较不同的体系结构。小心因为表现ResNet-50不得使用更具挑战性模型与性能需要做,例如,实时目标检测和识别。

ResNet-50和YOLOv3之间最大的区别是图像大小的选择。看看发生了什么如果ResNet-50运行使用2像素的图像像YOLOv3: mac /图片增加到1.03亿和33.6 MB的最大激活。在大型图像看起来接近YOLOv3 ResNet-50的特征。

让我们跟随记忆ResNet-50使用传统的224×224的图像。

注意神经模型的缓存没有好处,比传统处理器工作负载非常不同的处理是巨大的:2270万年的权重不被重用,直到下一个循环的形象。权重的缓存需要保存所有重量:一个较小的权重缓存就不断冲。同样激活:在一些模型,在后期再次激活使用,但是大多数情况下激活生成,只喂下一阶段立即使用。

所以对于每个图像由ResNet-50所需内存事务处理,假设现在所有从DRAM内存引用/:

  • 15 MB读入输入图像大小
  • 7 MB权重读入(假设8位整数的标准)
  • 3 MB的激活是年底累计编写的所有阶段
  • 除了最后一个活动是为下一阶段读回到另一个几乎9.3 MB
  • 这给总共41.4 MB的内存读/写/形象
  • 我们忽略了这里的代码的内存交通加速器由于没有数据可供任何架构。代码可能从缓存中获益。

内存引用DRAM使用约10 - 100 x内存引用SRAM芯片级的力量。

减少DRAM ResNet-50带宽有两种选择:

  1. 添加足够的SRAM芯片存储所有22.7 mb的权重
  2. 添加SRAM芯片存储中间激活所以舞台上写入缓存和激活阶段X + 1读取。ResNet-50最大的中间激活0.8 MB 1 MB的SRAM消除了大约一半的DRAM流量。

让我们看看YOLOv3 DRAM交通需要没有片上存储器:

  • 6 mb输入图像大小(RGB记住每个像素都有3个字节)
  • 9 MB权重读入
  • 475 MB激活生成累计作为输出写入DRAM的所有阶段
  • 读回475 MB激活下一层
  • 这给了总共1108 MB = 1.1 GB的DRAM流量过程只是一个图像!
  • 需要更多的SRAM减少DRAM带宽:62 mb缓存和权重,因为中间最大的激活是64 mb,激活另一个64 mb缓存:这将消除DRAM带宽但在16 nm 128 mb是大约140平方毫米非常昂贵。
  • 成本效益的设计是一个激活的实际选项缓存足够大的大多数层但:只有1层64 mb激活输出,2层32 mb激活输出,4层16 mb激活输出,其余8 mb或更少。所以这里有一个权衡激活缓存大小和DRAM带宽之间的关系。
  • 重量没有权衡:存储芯片上的所有61.9 mb或DRAM上所有物体。
  • 你可以看到为什么YOLOv3与批次不跑得更快> 1:多个批次需要保存多个激活,激活太大。

是大趋势模型和较大的图像,所以YOLOv3更具代表性的未来推断加速度-有效利用片上内存将低成本/低功率推理的关键。



留下一个回复


(注意:这个名字会显示公开)

Baidu