中文 英语

内存处理工作吗?

绕过冯·诺依曼架构的改变可能是低功耗ML硬件的关键。

受欢迎程度

从性能和功耗两方面来看,将数据移进和移出内存的相关成本正变得令人望而却步,算法中的数据局部性使情况变得更糟,这限制了缓存的有效性。

结果是第一次严重的袭击冯·诺依曼结构对于计算机来说,它简单、可扩展、模块化。它将计算单元的概念从包含指令和数据的连续内存空间中分离出来。但机器学习正在使一些人重新考虑这个方向,特别是当系统设计将内存逐步推向计算时。电线越短,数据移动的速度就越快,消耗的能量就越少。

现在的问题是是否完全取消这种转移。将计算放在内存中与冯·诺依曼的方法背道而驰,但越来越多的人认为这一方向是机器学习设计不可避免的方向。与任何新概念一样,都有重大障碍需要克服,也有很多反对者。不过,它可能代表着未来最有希望的方向之一。

在谈论内存计算时,术语上有一点混乱。这个术语在关系数据库和中间件世界中已经使用了一段时间,意思是将数据保存在主存中,而不是保存在磁盘存储中。这不是本文要讨论的内容。

新的方向是将逻辑整合到内部的位线中内存.这可以在主存或缓存中完成,并且可以考虑大多数内存类型,包括DRAM、SRAM、MRAM和ReRAM。缺点是记忆会从根本上改变,这可能会产生负面影响。如果使用相同的内存来保存指令和数据,那么在不需要的时候就会消耗面积和功率,这意味着该解决方案对于非机器学习应用程序来说是较差的。

内存解决方案
这项工作的大部分目前仍处于研究阶段。

“研究人员正专注于完全消除数据移动,”百度的产品管理总监戴夫•珀斯利(Dave Pursley)表示节奏.“如果你读过学术论文,你会发现很多研究都是关于如何减少计算量。现在我们正处于一个阶段,我们正在研究减少数据移动或改善局部性,这样你就不需要如此大量的存储,也不需要那些非常昂贵的内存访问。”

研究团队正在寻找几种可能的内存计算方法。他们中的一些人采用数字技术,而另一些人则采用混合信号的方法。密歇根大学EECS系助理教授Reetuparna Das提出了一种数字解决方案。她的技术将数据以转置的格式存储在二进制文件的位线上静态存储器用于缓存的数组。添加了少量的逻辑,这样缓存中的每个数组都可以用于加速深度学习算法。这是一个位串行计算。她最初将这种技术用于逻辑运算,然后将其推进到加法和乘法。她声称它的性能比GPU更好。(“神经缓存:深度神经网络的位串行缓存加速,作者Charles Eckert等人,ACM/IEEE第四届计算机体系结构国际年会,2018年。)

一些新的内存类型提供了另一种解决方案。罗彻斯特大学计算机科学和电子工程系的副教授Engin Ipek说:“我们正在尝试在模拟域中用连接到电阻网格的位线计算模拟点积。””ReRAM我们有一个电阻存储器,它可以被编程为加减一些电阻范围,你可以通过将系数与网格电阻成反比映射,并提供另一个与第二个矢量系数的比例来计算点积,这样将绘制的电流与点积成正比。”

图1:内存处理概念。来源:DAC presentation/Mythic/Semiconductor Engineering

那么与传统方法相比,这些方法的性能如何呢?“他们在内存中使用模拟乘法/累加(MAC),这是非常高效的,”该公司业务和企业发展副总裁帕特里克·索海利解释说eSilicon.“在典型的半导体工艺中,它们的性能比MAC旁边的SRAM好10倍或100倍。”

模拟计算的想法似乎又回到了过去。Ipek说:“与这些技术相关的许多挑战都与所需的精度或信噪比有关,而这些在不久的将来都无法实现。”“但你可以接受这些设备的本来面目,并在架构层面上进行处理。我能设计出一个围绕不完美的架构吗?我们相信答案是肯定的。在很多情况下,你只需要一个比特的精度。好在我们是在处理线性代数,这意味着我可以把一个矩阵分割成位片。然后我对每一个切片重复操作,并将所有东西线性地组合在一起,所以我们只需要内存作为二进制开关工作。”

将其中一些解决方案推向市场正在取得进展。Soheili说:“像Mythic这样的公司正在使用闪存,还有很多初创公司还没有走出使用基于SRAM的内存的隐形模式。”“有MRAM和其他新型的架构和材料也在试验中,它们都有优点和缺点。他们都在克服问题,这些问题将决定每种解决方案何时能够投入生产。”

问题
在这些解决方案投入生产之前,还有很多问题需要克服。

“考虑MRAMFacebook的研究科学家丹尼尔•莫里斯(Daniel Morris)表示。“与7nm SRAM相比,你会发现6倍的密度差距。每个字节的能量也存在差距。因此,虽然您可能不需要移动数据,但您确实需要读取数据,读取MRAM和读取SRAM之间有6倍的差异。写是另一个NVM需要高功率写的问题。然后是逻辑性能。如果你被困在落后的技术中,比如28nm,你的逻辑将大大降低效率,降低每瓦性能。如果你必须保持相同的功率预算,你会得到更少的性能。这相当于4倍的差异。因此,当你设计传统加速器时,你有所有这些选择,可以选择最好的内存技术和逻辑技术,而如果我们使用嵌入式NVM,你就只能使用更有限的技术。”

Shekhar Borkar,高级技术总监高通技术对此表示赞同。“有两种不同的技术,一种是针对功率和性能优化的逻辑技术,另一种是针对密度优化的内存技术。如果你试图把它们放在一起,你会得到两者最坏的结果。说到底,这都是钱的问题。”

存储器公司使用了很多技巧来提高产量。莫里斯说:“记忆有产量问题、可靠性问题、变化问题。“对于传统的存储产品,所有这些都可以通过修复或处理故障位等技术很好地处理。这些问题已经用传统存储器解决了。如果你把计算添加到内存中,就有很多工作要做。”

还有其他问题需要解决。部分或全部过程和电压可变性可能会影响内存处理的结果,可以通过在阵列中包含传感器来缓解,然后,高技能的模拟设计师可以在adc和dac中设计校准电路来抵消可变性。

就连研究人员也承认,还有一些重大问题需要克服。Ipek说:“现实世界中的许多矩阵都是稀疏的(包含许多零),因为你试图建模的自然现象通常有很多强相互作用和其他不强的相互作用,可以忽略。”“当你使用横杆时,激活和采样结果的能量成本几乎是固定的。所以问题是,给定一个稀疏矩阵,你如何让计算变得节能?一种解决方案是交叉条的异构集合,通过仔细划分矩阵,你可以将大部分问题映射到有效执行的交叉条子集上。”

将问题映射到这些加速器上是一个挑战。莫里斯说:“传统的加速器可以独立于处理元素来扩展内存容量。”“每一层神经网络具有非常不同的过滤器结构和尺寸,不同的权重,不同的计算,所以总是能够使用固定的内存结构是具有挑战性的。”

解决方案需要改变硬件和软件的思维方式。eSilicon的Soheili表示:“模拟内存解决方案需要adc和dac。“如果你是一名优秀的ADC/DAC设计师,并且你知道你在模拟领域做什么,那么从整个系统的角度来看(至少从我们看到的数字来看),你可以节省的功耗是压倒性的。因此,您可能会花费更多的时间并需要不同的专业知识,但是从内存计算中获得的收益远远超过额外的工作。这需要不同的技能。”

结论
当工业工程师看待这项技术,并将其视为在现有内存中添加的额外逻辑时,这对他们来说并不是一幅美好的图景。高通的博卡分析了几个工业规模的工作负载,得出了一个严峻的结论。“当我们研究所有工作负载的性能改进时,只有2到3个例子高于零。在能源方面,几乎所有的案例都在上升。平均而言,我看到性能下降5%,而精力增加33%。因此,虽然在内存中计算可能看起来很明智,但请不要这样做。”

AMD的主要技术人员Nuwan Jayasena对此有更积极的看法。“在记忆处理方面存在挑战,这将花费大量的时间和投资,但也有很多机会。当我们让图形处理器工作时,它促成了我们今天所看到的当前革命。一旦你让它工作起来,内存中的处理也有类似的潜力,它将使机器学习的下一步成为可能。”

如果业界愿意把冯·诺依曼踢出去,它也许应该彻底停止把内存视为指令和数据之间共享的东西,而是开始把它视为加速器。从这种角度来看,它不再需要与逻辑或记忆进行比较,而是应该根据其本身的优点来判断。如果它加速了任务,并且使用较少的能量,那么如果所使用的面积值得,那么这是一个纯粹的经济决策,这与其他加速器是一样的。

有关的故事
冯·诺依曼建筑知识中心
关于冯·诺依曼建筑的头条新闻、白皮书、视频、博客等



1评论

凯文·卡梅隆 说:

如果要构建内存中处理器,可能需要一种编程方法。幸运的是,神经网络看起来很像硬件,所以你可以使用像Verilog-AMS这样的HDL,或者普通的旧c++ -

http://parallel.cc

(Inmos早在20世纪80年代就开始做内存计算了)

留下回复


(注:此名称将公开显示)

Baidu