首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

相变内存中训练神经网络压倒GPU:性能高出100倍,节能胜过100倍

内存中训练神经网络的专用硬件既快速又节能。

与典型的CPU相比,人的大脑非常节能,一方面是由于它将存储、通信和处理结合在单单一个执行单元:神经元中。大脑有无数神经元,因而得以并行处理大量任务。

研究人员试图在传统CPU上运行神经网络,但遇到了这种根本性的不匹配情况。一次只能执行几个任务,将数据传输到内存是个缓慢的过程。因而,神经网络往往很耗费计算资源和能量。几年前,IBM宣布了一种新的处理器设计,这种设计离神经元群体更近一点,可极其高效地执行神经网络。但是这对于训练网络并没有太大的帮助。

现在IBM又推出了一种专门用于训练神经网络的硬件设计。而IBM能做到这点,一方面归因于直接在一种专门的内存中执行训练。

改变相态

相变内存基于能够形成两种不同结构或相态的材料,这取决于材料从液态冷却的速度有多快。由于这些相态的电导率不同,可以利用此特性来存储位。还可以控制温度,那样位可以进入中间电导的状态。除了存储位外,这还可以用来执行计算,因为大量亚阈值相态变化可以逐渐形成位翻转(bit flip)。

以这种方式执行计算的优点有两方面:由于操作在内存中进行,所以不需要来回访问内存;而且可以并行执行许多操作。这些差异与神经元群体的行为有着天然的相似处,这使得相变内存可能很适合神经网络。

事实上,还有一个另外的相似处。神经元活动不是一种二元的、全有或全无的状态――它会采用开和关之间的一系列中间行为。因此,相变内存能够采用1和0之间的状态,这让它得以直接模仿神经元的行为。

要将这用于训练神经网络,可以将相变内存位的网格与神经网络的每一层对应起来。更传统的布线构成的通信网络允许神经元彼此进行通信。通信的强度由内存状态来决定:状态介于全开和全关之间的范围。反过来,该状态又由所有馈入的位来设定。通信硬件将来自相变内存位的可变强度信号转换成持续时间不同的信号,这些信号与数字通信网络相兼容。

原则上,这一切很好地配合。然而实际上,存在两个问题。一个问题就是,硬件在1到0之间没有我们需要使神经网络高效的同一范围的状态。第二个问题是,这个系统的各部分如何响应方面因不同位而存在变化。于是,IBM团队想出了一个二级(two-level)系统用于训练。

提高级别

如上所述,在最上面一级,神经网络使用相变位来实现。但是这个硬件不是在每次训练后加以更新。相反,使用不同的硬件进行几百次试验,然后将训练的结果集成到相变位中。只有训练会改变位的值时,这个更新过程才会发生,因此提高了效率。

可以把相变网络看作是一个两位数的第一位:其值对单个神经元的行为有更大的影响。用较传统芯片实现的第二级如同第二位,原因在于它对整体行为的影响较小。这两个位的组合加大了网络中单个神经元可能拥有的值的范围。

这也是每一个训练周期发生所在的那一级。研究人员将晶体管的栅极连接到电容器,以此模拟相变位的行为。存储在电容器中的电荷随后影响栅极的强度,更新电荷可改变强度,这很像改变相变位。不过,电容器中存储的电荷具有易失性,会在几微秒内丢失。这就对电容器的值用于更新相变位之前可以完成多少个训练周期有所限制。

简而言之,二级系统允许在使用传统硬件的易失性环境中进行训练,然后训练结果用来更新相变位,这充当永久存储器。可以随时读出与每一个“神经元”有关的值,并用于在任何兼容的神经网络(包括IBM的专用芯片)上复制行为。

由于这种环境可以实时重新配置,因而有可能避开单个晶体管的可变性。比如说,在一个训练周期中用于在层与层之间传输信息的硬件可以用来在下一个训练周期中处理错误的反向传播,反之亦然。久而久之,这应该会抵消设备可变性导致的差异。

快速高效

这一切听起来不错,但实际效果怎样?研究员们使用手写数字的标准训练和测试图片集(名为MNIST,http://yann.lecun.com/exdb/mnist/)对它进行了测试。测试结果通常与名为TensorFlow的标准神经网络软件库具有的精确度相差1%以内。

但关键是效率。研究人员估计,如果他们的硬件采用先前工艺的技术来制造(实际上是用相当古老的90纳米工艺制造),性能将比最先进的GPU至少高出100倍,节能效果胜出100倍。

当然,这些仅仅是估计值。而在某种程度上,这一切都是估计值。虽然该团队确实用硬件来实现基于相变的层,但基于电容器的层的一些细节却用模拟器来实现。没有理由认为它们不用能硬件来实现,但毫无疑问一些细节和可能的问题直到真正用硬件来实现才会显现出来。

不过,潜在的效率提升还是相当大,IBM已经表示愿意制造专用的神经网络硬件。因此,不久可能会有一些实际环境的数字来佐证这篇报道。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180608A208UF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券