做出全球最大芯片,Cerebras究竟是怎么想的?

2019-08-26 14:59:34 来源: 互联网
编者按
      在日前举办的Hotchips 上,有家初创公司推出了一个硅晶圆大小的芯片,这在行业内引起了轰动。那么究竟他们打造这个产品的想法和目的分别是啥?我们来看看:
 
 
对速度的需求
 
      深度学习已经成为我们这一代最重要的计算工作负载。在过去的五年里,由于深度学习的进步,AI已经从默默无闻上升到人们最关注的领域。先前只有人类才能完成的任务现在通常由计算机以达到人类或超越人类的水平执行。
 
      深度学习是计算密集型的。OpenAI最近的一份报告显示,从2012年至2018年间,用于训练最大模型的计算机增加了30万倍。换句话说,AI计算的增长速度比摩尔定律巅峰时期的速度快2.5万倍。AI计算的需求每3.5个月就翻一番。
 
      对计算的巨大需求意味着AI不受应用或想法的限制,而是受计算可用性的限制。测试一个新的假设(例如训练一个新的模型)需要几周或几个月的时间,在计算时间上可能要花费数十万美元。这使得创新变得缓慢。谷歌、Facebook和百度等公司都指出,长时间的训练是AI进步的根本障碍;许多重要的想法被忽略,仅仅是因为这些模型需要太长的时间来训练。
 
      为了满足AI不断增长的计算需求,Cerebras设计和制造了有史以来最大的芯片。Cerebras晶圆级引擎(Wafer Scale Engine,WSE)面积为46225mm2,包含超过1.2万亿个晶体管,针对深度学习工作进行了完全的优化。相比之下,WSE比最大的GPU大56倍以上,片内内存大3000多倍,内存带宽大10000多倍。
 
      对于AI计算,芯片越大越好。更大的芯片处理信息更快,能在更短的时间内产生答案。WSE把完成最复杂的AI工作负载所需的时间从几个月减少到几分钟。
 
 
深度学习工作负载
 
      Cerebras从零开始,希望建立一种专门为深度学习优化的新型计算机。为特定的工作负载选择正确的计算机体系结构就像为汽车找到正确的设计一样。首先要问的问题是:它的工作是什么?会带孩子去练习踢球吗?还是搬运砖头和木材?这些问题决定了小货车或皮卡是否是正确的架构。在计算机设计中,理解计算机的工作负载(在这种情况下是神经网络处理)是第一步。
 
      神经网络是一系列的层,从输入(数据流入的地方)到输出(例如,分类预测、翻译句子、围棋走子)一层层地排列。每一层的函数由该层的模型参数参数化。这个函数由一个简单、高度并行的操作控制,例如将一个向量(输入数据)乘以一个矩阵(模型参数)。
 
      在推理中,参数是固定的,数据沿一个方向流动,从输入流到输出(I to O)。在输出端,我们会得到一个结果:一只狗、一只猫,或棋局中最好的一步棋。
 
      但在训练过程中,数据是双向流动的。一组标记的输入数据称为训练集,它从输入流向输出(I to O)。在输出端,不是给出答案,而是将输出与该特定输入的正确答案进行比较。然后,借助一些微积分计算,网络通过减小误差提高I-to-O计算的准确性。该过程如下:对于每个新的训练样本,网络改变其输出预测的方式,从而不断减小误差;误差是预测输出和正确输出之间的差值。
 
      这些信息以梯度的形式出现。梯度开始沿着O-to-I方向逆向移动。当此数据流经每一层时,它与产生它的I-to-O数据(数据已经停在那里,等待梯度返回)相互作用,并且一起决定如何改变层的参数,以最有效地减小误差。然后对参数进行调整,这个过程将在训练样本上持续多次。本质上,这创建了一个多阶段的训练环路。
 
      训练网络所需的时间取决于通过这个反馈环路处理输入的速度。输入在环路中移动的速度越快,每单位时间通过环路发送的输入就越多,网络训练的速度也就越快。
 
 
理解性能
 
      通过将深度神经网络视为多级计算反馈回路,我们揭开了性能的神秘面纱。而且,我们可以更好地理解初创公司和老牌企业所做的架构选择。
 
      减少训练时间的唯一方法是减少输入通过反馈回路所需的时间。反馈回路中唯一发生的事情是计算和通信。因此,必须加速计算和通信。
 
      加速计算最直接的方法是增加计算内核的数量。更多的内核,特别是更多的浮点乘法累加单元,可以在更短的时间内完成更多计算。将高速内存放置在靠近内核的位置,确保内核总是在进行计算。将内存放在远离芯片的地方意味着内核经常在等待数据。
 
      高带宽、低延迟的通信可确保计算内核能够聚集到通信组中,从而快速解决单个内核耗时过长的问题。此外,高带宽、低延迟通信可确保将环路中每个阶段的结果快速传递到后续阶段。
 
      通过对AI性能的简单理解,我们了解了AI计领域算的竞争格局。对于训练来说,GPU已经占据了CPU的主导地位。GPU有数千个内核。CPU只有几十个内核。起初,事情就是这么简单。
 
      CPU中的大内核不是为多级训练环路中的计算类型而设计的。GPU的小内核也不是为AI工作而设计的,但它们的数量更多,因此占据了上风。这一逻辑也解释了为什么在过去6年中,英伟达的GPU从551mm2增大到815mm2。更大的硅面积为内核提供了更多的空间,更多的内核提供了更多的计算。更大硅面积也为内核附近的内存提供了更多空间。
 
      同样的见解解释了最近对通信结构的关注。随着AI计算要求越来越高,训练环路所需的内核数量超过了单个芯片上的内核数量。达到芯片尺寸的传统限制后,获得更多内核的唯一方法是通过构建集群来添加芯片。由于片外通信比片内通信慢几万倍,因此将不同芯片的内核连接在一起解决单个问题就成了一个需要解决的重要问题。这一逻辑解释了为什么英伟达设计NVLink来改善芯片之间的通信,也解释了为什么他们花费68亿美元收购Mellanox,因为Mellanox开创了InfiniBand,这是一种将芯片连接在一起的通信技术。
 
      同样的逻辑有助于解读AI领域各种初创公司提出的主张。有些人声称他们已经将内存转移到了芯片上,从而提高了附近内核的计算性能。这是真的。更多靠近内核的片内存储器提高了计算效率。其他公司会说,他们更紧密地调整了AI工作的内核,从而在单位时间内获得了更多的计算,或者避免了做一些无用的工作,比如乘以零。提供更多计算并避免将时间浪费在无用工作上的优化也将提高性能。
 
      但最终,所有这些策略都试图通过以下三种策略中的一种或多种来提高计算速度和加快通信速度:
 
      更多/更好的内核;
 
      更接近内核的内存;
 
      内核之间更低延迟的带宽。
 
      但是,如果你把这三种方法发挥到它们的逻辑极限会发生什么?你会得到什么?一个非常大的芯片,内存接近内核,所有这些都通过高带宽、低延迟的结构连接起来。
 
      如何才能实现这一点?小芯片是在直径为12英寸的晶圆上由相同的芯片组成的阵列。要得到真正大的芯片,你不是将晶圆切割成小芯片,而是将芯片增大到一个完整的晶圆。这将大大增加可用于计算的内核数量。既然有了足够的硅面积,就可以在整个芯片上分配内存,让每个内核都有自己的本地内存。最后,你将构建一个跨越所有内核的通信结构,因为通信都是片上的,比InfiniBand等片外技术快几千倍。
 
      为什么以前没有这样做?因为这很难。从来没有人制造过大于840 mm2的芯片并将其推向市场。设计、制造、电源、冷却、通信和协调方面的挑战是巨大的。但前景是无限的。由此产生的芯片将比当今市场上最大的芯片大50倍。它将拥有数十万个AI优化内核,以及分布在内核之间的千兆字节片内存储器。它将有PB/s的内核间带宽。
 
Cerebras架构:利用计算三连击加速深度学习
 
      Cerebras 晶圆级引擎(WSE)专注且仅仅专注AI,加速了计算和通信,缩短了训练时间。这种方法是WSE尺寸的直接函数。WSE的硅面积是最大的GPU的56倍,它提供了更多的内核来进行计算,提供了更多靠近内核的内存来提高内核的工作效率,还提供了内核之间更低的延迟带宽来实现内核组之间的有效协作。
 
       计算三连击——更多的内核、更接近内核的内存、内核之间更大的带宽——使得WSE能够避免老式的性能问题,即片外通信速度慢、内存距离远、内存带宽小,以及在无用的工作上浪费计算资源。换句话说,WSE实现了集群规模的性能,却不需要构建大型集群。
 
1.硅面积越大,计算内核的空间越大
 
      Cerebras WSE提供40万个可编程计算内核。这些稀疏线性代数内核(SLA™)毫无意外地针对稀疏线性代数进行了优化,而稀疏线性代数是神经网络计算的基础。这些内核是专门为AI工作设计的。它们体积小,速度快,不包含缓存,并且消除了通用内核所需要、但在深度学习处理器中没有任何用处其他功能和开销。
 
      SLA内核是可编程的,确保它们可以在不断变化的深度学习领域运行一切神经网络算法。每个内核都执行控制处理和数据处理。控制处理用于并行处理协调,数据处理用于神经网络内核的数学运算。
 
      控制处理是通过一整套通用指令来实现的。这些指令提供可编程原语,例如算术、逻辑和分支操作。这些原语为映射一切并行算法提供了基础。
 
      张量运算是神经网络工作负载的内核。为了实现高性能,SLA内核有专门的张量处理引擎,其中全张量是架构中的一流操作数。张量运算是可编程的,因此同一个引擎可以被编程来执行各种张量运算,比如卷积或矩阵乘法。硬件内部优化张量处理,以实现比GPU高3~4倍的数据路径利用率。
 
      Cerebras对深度学习工作量的坚定不移的关注通过稀疏性的处理得到了进一步的证明。Cerebras发明了稀疏性捕捉技术,该技术允许稀疏线性代数内核通过捕捉神经网络工作负载中的稀疏性来提高性能。
 
      乘以零是一种浪费——浪费硅、能量和时间,而不产生任何新信息。在深度学习中,数据往往非常稀疏。要做乘法的向量和矩阵中,有一半以上甚至几乎所有的元素都是零。大量的零来源于基本的深度学习操作,例如整流线性单元(ReLU)和随机失活(dropout),它们都将零点引入神经网络张量。围绕权重稀疏性的新方法不断涌现,这些方法添加了更多的零。简而言之,人们越来越有兴趣让张量变得更稀疏。
 
      GPU和TPU是密集执行引擎,它们对整个向量或数据矩阵执行相同的计算任务。当向量或矩阵密集(全部非零)时,这是一种明智的方法。在密集的环境中,把数据集中在一起并提供一条应用于所有数据的指令可以提高效率。但是,就像在神经网络中经常发生的那样,数据中50%~98%都是零时,那么50%~98%的乘法就被浪费了。
 
      因为Cerebras SLA内核是专门为神经网络的稀疏线性代数设计的,所以它永远不会乘以零。为了利用这种稀疏性,内核具有内置的细粒度数据流调度,因此计算由数据触发。调度以单个数据值的粒度进行操作,因此只有非零数据会触发计算。所有的零都会被过滤掉,并且可以在硬件中跳过。换句话说,SLA内核不会乘以零,也不会在整个结构中传播零。因此,SLA内核不仅通过跳过无用的计算来节省功率和能源,还通过使用相同的时间来做有用的工作来获得性能优势,而其他架构则陷入了乘以零的问题。
 
      稀疏性分布不均匀,大小也不均匀。它可以是细粒度的,其中单个激活或权重为零,也可以是粗粒度的,其中相邻的激活块和权重都为零。为了最大限度地利用稀疏性带来的性能机会,架构能够同时收获细粒度和粗粒度的稀疏性是至关重要的。SLA内核架构就是为了做到这一点而设计的。
 
      稀疏性是神经网络的一个重要特征,必须充分利用它来获得最高的性能。计算机架构师的口头禅“只做有用的工作”因稀疏性而被带到了最重要的位置。WSE拥有数十万个AI优化内核,每个内核都具有获取稀疏性和避免做无用工作的能力,从而为卓越的性能提供了架构基础。
 
2 硅面积越大,芯片内存越大
 
      内存是任何计算机体系结构的关键组成部分。内存离计算内核越近,计算速度就越快,延迟越短,移动数据所用的功率也越少。高性能的深度学习要求每个内核都能在最高水平上运行,这就要求内核和内存之间紧密协作和彼此靠近。
 
      在深度学习中,内存用于保存模型的参数、激活、模型配置等。在最先进的网络中,模型参数已经达到千兆字节,这种内存需求预计会增长。但是大型模型需要大量的内存和大量的计算,这给传统架构带来了根本性的挑战。
 
      为了获得最大的性能,整个模型应该适合最快的内存,也就是最接近计算内核的内存。在CPU、TPU和GPU中情况并非如此,它们中的主内存没有与计算集成。相反,绝大多数内存是基于片外的,远在一个高带宽内存(HBM)设备中单独的DRAM芯片或这些芯片的堆栈上。结果,主内存慢得令人难以忍受。
 
      虽然计算机架构师多年来一直在尝试解决内存瓶颈,但主要的解决方案基于多级片内和片内缓存的内存层次结构。它们昂贵、微小、难以使用,而且有时会有意想不到的结果。一个简单而不可避免的事实是,一旦越过片内/片外边界,内存延迟就会爆炸,带宽会骤降。访问片外内存的极端延迟损失迫使性能呈螺旋式下降。这是图形处理器在进行AI工作时速度较慢的根本原因之一。
 
      Cerebras解决了这个问题。Cerebras WSE具有18 GB的片上内存和9.6字节的内存带宽。这分别是领先的GPU的3000倍和10000倍。因此,WSE将整个神经网络模型(即所有要学习的参数)保存在与计算内核相同的硅上,在那里可以全速访问它们。这是可能的,因为WSE上的内存广泛分布在计算元件旁边,允许系统在单周期延迟时实现极高的内存带宽,所有模型参数始终在片内存储器中。
 
      Cerebras WSE提供了比以往任何芯片都更多的计算内核、更多的本地内存和更多的内存带宽。这样可以实现快速计算,减少训练模型所需的时间,并且消耗更少的能量。
 
3.更大的硅面积可以实现极快的通信——Swarm™结构
 
      AI优化的内核和高速本地内存通过提高计算的数量、速率和灵活性来提升性能。性能的提高也来自于加速通信。AI是一种通信密集型工作负载——各层和各个内核要不断地进行通信——因此,将内核连接在一起的结构对性能至关重要。当内核可以在高带宽和低延迟的情况下通信时,就可以实现最大的性能,因为内核可以聚在一起,在群组中完成单个内核需要很长时间才能完成的任务。
 
      计算机体系结构中的一个基本事实是,片外通信比片内通信慢数万倍。希望通信的小芯片必须通过以太网、InfiniBand、PCI-E或其他片外技术聚集在一起,与留在硅片上相比,这些技术都要遭受巨大的性能损失。片内通信速度更快,每移动一位,功耗不到片外通信的千分之一。
 
      Cerebras Swarm通信结构创建了一个巨大的片上网络,提供了突破性的带宽和低延迟,而功耗仅为用于将GPU组织到集群中的传统通信技术的一小部分。
 
      Cerebras WSE上的40万个内核通过Swarm通信结构以2D网格连接,带宽为100PB/s。Swarm为每个计算内核提供硬件路由引擎,并通过针对延迟和带宽进行优化的短线连接它们。生成的结构支持单字活动消息,这些消息可由接收内核处理,无需任何软件开销。Swarm结构提供了灵活的全硬件通信。
 
      Swarm是完全可配置的。Cerebras软件配置了WSE上的所有内核,以支持训练用户指定模型所需的精确通信。对于每一个神经网络,Swarm都提供了一个独特且优化的通信路径。这与CPU和GPU所采用的方法不同,它们有一条硬编码的片内通信路径,所有神经网络都被塞进其中。
 
      Swarm的结果令人印象深刻。典型的消息以纳秒延迟遍历一个硬件链路。系统的总带宽以几十PB/s为单位衡量。不需要TCP/IP和MPI等通信软件,从而避免了相关的性能损失。在这种架构中,通信的能耗成本远低于每比特1皮焦耳,这比CPU或GPU低了近两个数量级。作为Swarm通信结构的结果,WSE训练模型更快,耗费的能量更少。
 
与软件协同设计,实现最大利用率和可用性
 
      Cerebras软件栈与WSE紧密合作开发,以充分利用其独特的功能。其内核是Cerebras图形编译器,它能够自动将机器学习研究者的神经网络转换成针对WSE海量计算资源优化的可执行文件。
 
      为了让机器学习从业者更容易和直观地使用WSE,Cerebras软件栈为现有的高级机器学习框架(如TensorFlow和PyTorch)提供了无缝接口。图形编译器首先从用户提供的框架表示中提取神经网络的数据流图形表示。网络的一部分与优化的微码程序相匹配,这些程序被映射到巨大计算阵列的特定资源区域。然后,软件配置Swarm互连结构,创建一条经过这些计算区域的定制数据路径,以最大限度地提高局部性并最大限度地降低通信成本。其结果是将神经网络高度优化地放置在WSE上,为用户进行训练或推理做好准备。
 
      除了传统的执行模式,WSE的规模还支持模型并行执行的新方法。WSE能够一次在结构上运行整个神经网络——将网络的每一层映射到多级流水线中的单级,以实现完整的分层并行流水线执行。然后,用户可以通过流水线快速地流式传输数据,同时运行神经网络中的所有阶段,即运行所有层。这种方法对于WSE来说是独一无二的,并且只有在其巨大的规模下才有可能实现。
 
综上所述,Cerebras软件栈:
 
•允许用户使用熟悉的高级机器学习框架对WSE进行编程。
 
•自动将机器学习框架定义的模型编译为WSE可执行文件。
 
•最大限度地利用所有40万个内核,并利用WSE独一无二的规模。
 
 
结论:WSE,AI计算的未来
 
      Cerebras Systems是一个由开创性的计算机架构师、计算机科学家、深度学习研究人员和各种类型的工程师组成的团队,他们热爱无畏的工程。我们聚集在一起建造了一种新的计算机来加速AI工作。Cerebras第一个公布的元件是Cerebras WSE。
 
      WSE是有史以来最大的芯片。它有46225mm2,包含1.2万亿个晶体管和40万个AI优化的计算内核。内存架构确保这些内核以最高效率运行。它提供18 GB的快速片内存储器,分布在距离每个内核一个时钟周期的单级存储器层次结构中的内核之间。这些高性能的、AI优化的、本地内存馈送的内核通过Swarm结构连接起来,这是一种细粒度、全硬件、高带宽、低延迟的网状连接结构。
 
      通过加速AI计算,Cerebras WSE将训练模型的时间从几个月缩减到几分钟,从几周缩减到几秒钟,消除了AI发展的主要障碍。因此,WSE让深度学习的实践者能够更快地测试假设,并探索那些今天无法用传统架构测试或风险太大而无法尝试的想法。WSE降低了好奇心的成本,加速了将引领未来AI的新思想和新技术的到来。
责任编辑:sophie

相关文章

半导体行业观察
摩尔芯闻

热门评论