编者按
在日前举办的Hotchips 上,有家初创公司推出了一个硅晶圆大小的芯片,这在行业内引起了轰动。那么究竟他们打造这个产品的想法和目的分别是啥?我们来看看:
对速度的需求
深度学习已经成为我们这一代最重要的计算工作负载。在过去的五年里,由于深度学习的进步,AI已经从默默无闻上升到人们最关注的领域。先前只有人类才能完成的任务现在通常由计算机以达到人类或超越人类的水平执行。
对计算的巨大需求意味着AI不受应用或想法的限制,而是受计算可用性的限制。测试一个新的假设(例如训练一个新的模型)需要几周或几个月的时间,在计算时间上可能要花费数十万美元。这使得创新变得缓慢。谷歌、Facebook和百度等公司都指出,长时间的训练是AI进步的根本障碍;许多重要的想法被忽略,仅仅是因为这些模型需要太长的时间来训练。
对于AI计算,芯片越大越好。更大的芯片处理信息更快,能在更短的时间内产生答案。WSE把完成最复杂的AI工作负载所需的时间从几个月减少到几分钟。
深度学习工作负载
Cerebras从零开始,希望建立一种专门为深度学习优化的新型计算机。为特定的工作负载选择正确的计算机体系结构就像为汽车找到正确的设计一样。首先要问的问题是:它的工作是什么?会带孩子去练习踢球吗?还是搬运砖头和木材?这些问题决定了小货车或皮卡是否是正确的架构。在计算机设计中,理解计算机的工作负载(在这种情况下是神经网络处理)是第一步。
神经网络是一系列的层,从输入(数据流入的地方)到输出(例如,分类预测、翻译句子、围棋走子)一层层地排列。每一层的函数由该层的模型参数参数化。这个函数由一个简单、高度并行的操作控制,例如将一个向量(输入数据)乘以一个矩阵(模型参数)。
但在训练过程中,数据是双向流动的。一组标记的输入数据称为训练集,它从输入流向输出(I to O)。在输出端,不是给出答案,而是将输出与该特定输入的正确答案进行比较。然后,借助一些微积分计算,网络通过减小误差提高I-to-O计算的准确性。该过程如下:对于每个新的训练样本,网络改变其输出预测的方式,从而不断减小误差;误差是预测输出和正确输出之间的差值。
训练网络所需的时间取决于通过这个反馈环路处理输入的速度。输入在环路中移动的速度越快,每单位时间通过环路发送的输入就越多,网络训练的速度也就越快。
理解性能
通过将深度神经网络视为多级计算反馈回路,我们揭开了性能的神秘面纱。而且,我们可以更好地理解初创公司和老牌企业所做的架构选择。
加速计算最直接的方法是增加计算内核的数量。更多的内核,特别是更多的浮点乘法累加单元,可以在更短的时间内完成更多计算。将高速内存放置在靠近内核的位置,确保内核总是在进行计算。将内存放在远离芯片的地方意味着内核经常在等待数据。
通过对AI性能的简单理解,我们了解了AI计领域算的竞争格局。对于训练来说,GPU已经占据了CPU的主导地位。GPU有数千个内核。CPU只有几十个内核。起初,事情就是这么简单。
同样的见解解释了最近对通信结构的关注。随着AI计算要求越来越高,训练环路所需的内核数量超过了单个芯片上的内核数量。达到芯片尺寸的传统限制后,获得更多内核的唯一方法是通过构建集群来添加芯片。由于片外通信比片内通信慢几万倍,因此将不同芯片的内核连接在一起解决单个问题就成了一个需要解决的重要问题。这一逻辑解释了为什么英伟达设计NVLink来改善芯片之间的通信,也解释了为什么他们花费68亿美元收购Mellanox,因为Mellanox开创了InfiniBand,这是一种将芯片连接在一起的通信技术。
但最终,所有这些策略都试图通过以下三种策略中的一种或多种来提高计算速度和加快通信速度:
更多/更好的内核;
更接近内核的内存;
内核之间更低延迟的带宽。
如何才能实现这一点?小芯片是在直径为12英寸的晶圆上由相同的芯片组成的阵列。要得到真正大的芯片,你不是将晶圆切割成小芯片,而是将芯片增大到一个完整的晶圆。这将大大增加可用于计算的内核数量。既然有了足够的硅面积,就可以在整个芯片上分配内存,让每个内核都有自己的本地内存。最后,你将构建一个跨越所有内核的通信结构,因为通信都是片上的,比InfiniBand等片外技术快几千倍。
Cerebras架构:利用计算三连击加速深度学习
计算三连击——更多的内核、更接近内核的内存、内核之间更大的带宽——使得WSE能够避免老式的性能问题,即片外通信速度慢、内存距离远、内存带宽小,以及在无用的工作上浪费计算资源。换句话说,WSE实现了集群规模的性能,却不需要构建大型集群。
1.硅面积越大,计算内核的空间越大
控制处理是通过一整套通用指令来实现的。这些指令提供可编程原语,例如算术、逻辑和分支操作。这些原语为映射一切并行算法提供了基础。
Cerebras对深度学习工作量的坚定不移的关注通过稀疏性的处理得到了进一步的证明。Cerebras发明了稀疏性捕捉技术,该技术允许稀疏线性代数内核通过捕捉神经网络工作负载中的稀疏性来提高性能。
GPU和TPU是密集执行引擎,它们对整个向量或数据矩阵执行相同的计算任务。当向量或矩阵密集(全部非零)时,这是一种明智的方法。在密集的环境中,把数据集中在一起并提供一条应用于所有数据的指令可以提高效率。但是,就像在神经网络中经常发生的那样,数据中50%~98%都是零时,那么50%~98%的乘法就被浪费了。
稀疏性分布不均匀,大小也不均匀。它可以是细粒度的,其中单个激活或权重为零,也可以是粗粒度的,其中相邻的激活块和权重都为零。为了最大限度地利用稀疏性带来的性能机会,架构能够同时收获细粒度和粗粒度的稀疏性是至关重要的。SLA内核架构就是为了做到这一点而设计的。
2 硅面积越大,芯片内存越大
内存是任何计算机体系结构的关键组成部分。内存离计算内核越近,计算速度就越快,延迟越短,移动数据所用的功率也越少。高性能的深度学习要求每个内核都能在最高水平上运行,这就要求内核和内存之间紧密协作和彼此靠近。
在深度学习中,内存用于保存模型的参数、激活、模型配置等。在最先进的网络中,模型参数已经达到千兆字节,这种内存需求预计会增长。但是大型模型需要大量的内存和大量的计算,这给传统架构带来了根本性的挑战。
虽然计算机架构师多年来一直在尝试解决内存瓶颈,但主要的解决方案基于多级片内和片内缓存的内存层次结构。它们昂贵、微小、难以使用,而且有时会有意想不到的结果。一个简单而不可避免的事实是,一旦越过片内/片外边界,内存延迟就会爆炸,带宽会骤降。访问片外内存的极端延迟损失迫使性能呈螺旋式下降。这是图形处理器在进行AI工作时速度较慢的根本原因之一。
3.更大的硅面积可以实现极快的通信——Swarm™结构
AI优化的内核和高速本地内存通过提高计算的数量、速率和灵活性来提升性能。性能的提高也来自于加速通信。AI是一种通信密集型工作负载——各层和各个内核要不断地进行通信——因此,将内核连接在一起的结构对性能至关重要。当内核可以在高带宽和低延迟的情况下通信时,就可以实现最大的性能,因为内核可以聚在一起,在群组中完成单个内核需要很长时间才能完成的任务。
Cerebras Swarm通信结构创建了一个巨大的片上网络,提供了突破性的带宽和低延迟,而功耗仅为用于将GPU组织到集群中的传统通信技术的一小部分。
Swarm是完全可配置的。Cerebras软件配置了WSE上的所有内核,以支持训练用户指定模型所需的精确通信。对于每一个神经网络,Swarm都提供了一个独特且优化的通信路径。这与CPU和GPU所采用的方法不同,它们有一条硬编码的片内通信路径,所有神经网络都被塞进其中。
与软件协同设计,实现最大利用率和可用性
Cerebras软件栈与WSE紧密合作开发,以充分利用其独特的功能。其内核是Cerebras图形编译器,它能够自动将机器学习研究者的神经网络转换成针对WSE海量计算资源优化的可执行文件。
除了传统的执行模式,WSE的规模还支持模型并行执行的新方法。WSE能够一次在结构上运行整个神经网络——将网络的每一层映射到多级流水线中的单级,以实现完整的分层并行流水线执行。然后,用户可以通过流水线快速地流式传输数据,同时运行神经网络中的所有阶段,即运行所有层。这种方法对于WSE来说是独一无二的,并且只有在其巨大的规模下才有可能实现。
综上所述,Cerebras软件栈:
•最大限度地利用所有40万个内核,并利用WSE独一无二的规模。
结论:WSE,AI计算的未来
Cerebras Systems是一个由开创性的计算机架构师、计算机科学家、深度学习研究人员和各种类型的工程师组成的团队,他们热爱无畏的工程。我们聚集在一起建造了一种新的计算机来加速AI工作。Cerebras第一个公布的元件是Cerebras WSE。
通过加速AI计算,Cerebras WSE将训练模型的时间从几个月缩减到几分钟,从几周缩减到几秒钟,消除了AI发展的主要障碍。因此,WSE让深度学习的实践者能够更快地测试假设,并探索那些今天无法用传统架构测试或风险太大而无法尝试的想法。WSE降低了好奇心的成本,加速了将引领未来AI的新思想和新技术的到来。
英文原文 :https://www.cerebras.net/wp-content/uploads/2019/08/Cerebras-Wafer-Scale-Engine-Whitepaper.pdf