编者按:
CPU已经到达了性能瓶颈,而ASIC又失去了灵活性,FPGA编程门槛又很高。大家都认为,未来的趋势是DSA。但DSA做成什么样子,仁者见仁智者见智。把握如下标准:ASIC一样的性能,CPU一样的灵活性。并且虽然叫特定领域架构,但仍需要跟场景部分解耦,在场景范围和灵活性之间做好平衡,尽可能做到可大规模复制。
SambaNova的RDA符合这一套理念,是我非常推崇的一种架构,其基于Dataflow的RDA架构是非常有意思,我们来共同学习。
驱动新处理架构的趋势
随着应用的迅速扩展,许多场景可以采用数据流处理,例如自然语言处理和推荐引擎,传统指令集架构的性能和效率挑战已经非常明显。为了解决这个问题,并使得下一代科学和机器学习应用成为可能,SambaNova开发了可重构数据流架构(RDA,Reconfigurable Dataflow Architecture),这是一个独特的垂直集成平台,从算法到工艺进行了优化。三个关键的长期趋势贯穿了SambaNova开发这种新的加速计算架构的努力。
- 首先,多核处理器在一代一代更新所能取得的性能提升已经逐渐减弱。因此,开发人员不能再依赖传统的性能改进来支持更复杂的应用程序。这对于CPU胖核和GPU瘦核架构都是一样的。需要一种新的方法来从现有的半导体技术中提取更多有用的价值。深度学习应用的爆炸式增长,加大了所需计算和可用计算之间的差距。OpenAI的一项研究显示,在2012年至2020年期间,用于显著人工智能工作的计算能力每3.4个月就翻一番。
- 第二,需要统一机器学习训练和推理的学习系统。今天,GPU用于训练,CPU用于基于不同特性的推理,这是很常见的。许多现实生活中的系统显示出持续的、有时是不可预测的变化,这意味着模型的预测精度会,因为没有频繁更新而,下降。一个能够有效支持训练和推理的体系结构能够持续学习并提高准确性,同时也简化了开发-训练-部署和机器学习的生命周期。
- 最后,尽管机器学习的性能挑战非常严峻,但其他工作负载,如分析、科学应用程序,甚至SQL数据处理,都表现出数据流特征,需要加速。新方法应该足够灵活,以支持更广泛的工作负载,并促进机器学习和高性能计算(HPC)或业务应用的融合。
下一代架构的关键属性
通过学术研究、技术趋势分析和设计过程中开发的知识,SambaNova确定了以下关键属性,以实现高效的数据流处理。
- 原生数据流——机器学习框架和DSL中经常出现的操作符可以用并行模式来描述,这些并行模式在密集和稀疏数据集合上捕获可并行计算,以及相应的内存访问模式。这使得开发和高度利用底层平台,同时允许在任何选择的框架中轻松编写各种模型集。
- 支持TB级别的模型——深度学习模型开发的一个关键趋势是使用越来越大的模型尺寸来获得更高的精度和提供更复杂的功能。例如,利用数十亿的数据点(称为参数)可以更精确地生成自然语言。在生命科学领域,分析组织样本需要处理大的,高分辨率的图像,以识别微妙的特征。与基于核心的架构相比,提供更大的片内和片外内存将加速深度学习的创新。
- 基于稀疏数据和图网络的高效处理——推荐系统、朋友之间的问题、知识图、一些生命科学领域等等,都涉及到大部分为零值的大型稀疏数据结构。移动和处理大型的、大部分为空的矩阵是低效和降低性能的。下一代架构必须明智地避免不必要的处理。
- 灵活的模型映射——目前,数据和模型并行技术用于跨基础设施扩展工作负载。然而,编程成本和复杂性往往是阻碍新的深度学习方法的因素。新的体系结构应该自动支持跨基础设施的扩展,而不需要增加开发和编制的复杂性,并且避免模型开发人员成为系统体系结构和并行计算方面的专家。
- 合并SQL和其他前/后数据处理——随着深度学习模型的发展和合并更广泛的数据类型,对数据的前处理和后处理的依赖成为主导。此外,ETL操作的时间滞后和成本会影响实时系统目标。新的体系结构应该允许在单一平台上统一这些处理任务。
一种新方法:SambaNova可重构数据流体系结构
SambaNova Reconfigured Dataflow Architecture (RDA)是一种计算架构,旨在支持下一代机器学习和高性能计算应用程序。可重构数据流体系结构是一个完整的、全栈的解决方案,它在所有层面都融合了创新,包括算法、编译器、系统体系结构和最先进的工艺。
RDA提供了一种灵活的数据流执行模型,可以进行流水线操作,支持可编程的数据访问模式,并最大限度地减少在固定的、基于核心的指令集架构中发现的多余数据移动。它不像传统架构那样有一个固定的指令集架构(ISA),而是专门为每个模型编程,从而产生高度优化的、特定于应用程序的加速器。
可重构数据流架构由以下部分组成:
- 可重构数据流单元,是下一代处理器。旨在提供本机数据流处理和可编程加速。它有一个平铺的架构,包含一个可重构功能单元的网络。该体系结构支持包含在数据流图中的一组广泛的高度并行模式,可以作为计算、内存和通信网络的组合进行有效编程。
- SambaFlow,是一个完整的软件堆栈,旨在从标准的机器学习框架(如PyTorch和TensorFlow)获取输入。SambaFlow自动提取、优化数据流图并将其映射到RDU上,从而无需进行底层内核调优就能获得高性能。SambaFlow还为专业用户和那些对利用RDA进行机器学习以外的工作负载感兴趣的用户提供了一个API。
- SambaNova Systems DataScale,是一个完整的、机架级的、数据中心就绪的加速计算系统。每个DataScale系统配置由一个或多个DataScale节点、集成网络和管理基础设施组成,这些基础设施位于符合标准的数据中心机架上,称为SN10-8R。
如果只专注于新的工艺设计或算法突破,那么应对上述挑战的进展将受到限制。通过一个集成的、全堆栈的解决方案,SambaNova能够跨层创新,以实现倍增效果。此外,SambaNova DataScale利用开放标准和公共表单因素来简化采用和简化部署。
数据流架构的动机
计算应用程序及其相关操作同时需要计算和通信。在传统的基于核的体系结构中,计算是根据需要编写的。然而,通信是由硬件管理的,主要限于高速缓存和内存传输。缺乏管理数据如何从一个中介计算流到下一个中介计算的能力,可能会导致过度的数据传输和糟糕的硬件利用率。
SambaNova可重构数据流体系结构提供了一种替代方法,可以对通信进行编程和优化,以最适合数据传输一系列计算的方式。图1显示了一些常见的操作或并行模式。橙色的圆圈显示了在任何架构上编程的计算需求。更重要的是,箭头和框捕获每个模式输入和输出所需的数据流。即使在这几个例子中,数据流模式也有很大的不同,如所示(例如,一对一,多对一),这表明了可编程数据流可以提供的机会。
图1 并行模式示例:Map、Zip和Reduce
RDU的数据流编程由SambaFlow提供,SambaFlow使用空间编程。空间编程涉及配置RDU的物理资源,以便数据在芯片的结构中有效地并行进行。通过快速重新配置,SambaFlow还可以对在特定时间运行在芯片上的指令序列(层)进行编程。通过合并指令序列和已分配资源的位置,SambaFlow可以确定计算图的最有效布局,以创建特定于所需工作负载的流水线加速器。其影响是实现更高的吞吐量、更高的硬件利用率和更低的延迟。相比之下,在基于核心的体系结构上实现复杂的计算图需要执行大量的顺序指令,对于特定的工作负载,没有数据流的优化。
用数据流克服内存瓶颈
传统的硬件架构运行在低层次的指令流上,这些指令流不仅具有较低的能源效率,而且还强制为面向数据流的工作负载建立一个内核-内核的编程模型。对于面向数据流的工作负载(如机器学习和HPC),这种一个内核一个内核的执行模型会导致过多的数据和指令移动,从而导致处理器利用率,而这只是理论峰值负载的一小部分。
为了进一步了解这一点,图2显示了一个极其简单的逻辑计算图,用于一个仅由5个内核组成的卷积网络。图3显示了这个卷积图在传统的基于核心的架构上的执行序列。在执行过程中,每个内核必须加载到CPU或GPU上,数据和权重从内存中读取,执行计算,并将输出结果写入内存。然后在每个阶段重复这个过程,增加数据移动的数量,并消耗大量的内存带宽。
图2 -简单卷积图
图3 基于内核的内核逐个执行
对于许多工作负载,可能有足够的计算能力。然而,过多的数据移动会导致糟糕的硬件利用率和棘手的训练时间。因此,研究人员和开发人员常常需要将他们的算法设计限制在他们能够承担训练费用的范围内。
相反,SambaNova可重构数据流体系结构创建了自定义的处理流水线,允许数据流经完整的计算图。它使用空间编程模型来优化计算布局和最小化数据移动,以实现较高的硬件利用率。
图4显示了在一个可重构数据流单元上执行相同的卷积图。主要的RDU元素、模式计算单元(PCU)、模式存储单元(PMU)和交换结构将在下一节中详细描述,它们为图的执行提供了资源。SambaFlow对这些元素进行编程,以提供数据流模式,如多对一、一对多、广播等,以支持每个内核的独特需求。应用空间编程技术,以确保RDU上的操作布局最大限度地减少数据移动,以实现高效率。
图4 - RDU数据流执行
当应用程序启动时,SambaFlow执行一次配置,将整个模型映射到RDUs上。整个系统就像一个管道,RDU的不同部分执行模型的不同层,在每个阶段同时处理不同的数据。数据可以畅通无阻地通过每一层,避免上下文切换和内存访问的延迟,如图3所示。
数据流的灵活性和可重构性
上面描述的SambaFlow优化和RDU的可编程性允许针对跨机器学习、科学计算和其他数据密集型应用程序的各种工作负载对其进行优化和配置。快速的重新配置使体系结构能够快速地重新用于新的需求或适应最新的算法突破。
这些是相对于固定ASIC设计的关键优势,固定ASIC设计需要多年的开发时间,并且不能因算法变化或不同的工作负载而进行修改。在频谱的另一端是FPGA,它是高度可重构的。与FPGA耗时、复杂、低级编程和长编译时间相比,RDUs可以在微秒内重新配置。
这种级别的灵活性和可重构性使程序员能够在高级DSL中工作,同时提供了增强的执行效率、简化的编译和性能。
数据流方法的优点
- 更少的数据和代码移动减少了对内存带宽的需求,并允许使用更大的、TB大小的附加内存来支持大型模型。
- 以流水线的方式同时处理整个图,可以在广泛的批尺寸范围内实现高利用率,并消除了使用大批尺寸来实现可接受的效率的需求。
- 高片上存储容量和本地化,以及高内部FABRIC带宽使其能够高性能运行非常大的模型。
- RDU上的流水线处理提供了可预测的、低延迟的性能。
- 这种体系结构的分层结构简化了编译器映射,并显著提高了执行效率。
SambaNova Cardinal SN10™可重构数据流单元
SambaNova的Cardinal SN10™可重构数据流单元是有效执行数据流图的引擎。RDU由可重构的处理和存储单元的平铺阵列组成,通过高速、三维片上交换结构连接。当应用程序启动时,SambaFlow配置RDU元素,以执行该特定应用程序的优化数据流图。图5显示了一小部分RDU及其下面描述的组件。
图5 简化的RDU架构和组件
模式计算单元(PCU) - PCU被设计用来在应用程序中执行一个单独的、内部并行的操作。PCU数据路径被组织为一个多阶段、重新配置SIMD管道。这种设计使每个PCU能够实现高计算密度,并利用环路级的并行和流水线级的并行。
模式存储单元(PMU) - PMU是高度专用的暂存器,提供片上存储容量并执行一些专门的智能功能。PMU的高容量和分布在整个PCU最大限度地减少数据移动,减少延迟,增加带宽和避免芯片外存储器访问。
交换网络—连接PCU和PMU的高速交换网络由标量、矢量和控制三个交换网络组成。这些交换机形成一个三维网络,与RDU内的其他单元并行运行。网络传输的数据粒度不同;标量网络以词级粒度运行,向量网络以多词级粒度运行,控制以位级粒度运行。
地址生成单元(AGU)和合并单元(CU) - AGU和CU提供了RDU和系统其他部分(包括片外DRAM、其他RDUs和主机处理器)之间的连接。RDU Connect™提供了RDU之间的高速路径,以有效处理比单个RDU更大的问题。AGU和CU与PMU一起工作,使RDA能够有效地处理稀疏和基于图的数据集。
可重构性、多层并行性的利用以及指令处理开销的消除使RDU比传统架构具有显著的性能优势。
SambaFlow™
可重构数据流体系结构的软件组件SambaFlow™被设计为一种易于使用的方式,可以使算法开发人员免受其他体系结构上常见的低级调优需求的影响。用户可以通过继续使用高级框架(如PyTorch和TensorFlow)来最大化生产率,而不必担心RDU的架构细节。它还为专家用户和那些对利用DataScale系统实现机器学习以外的工作负载感兴趣的用户提供了另一个用户图形界面。
SambaFlow连接到机器学习框架,并分析模型以构建数据流图。然后,它根据执行该图所需资源的知识自动分解数据流图。这个自动化的过程产生了一个完全优化的、自定义的加速器,同时避免了低级编程和耗时的试错调优。通过对从模型到处理元素的软件堆栈的完整理解,SambaFlow的多阶段工具有一个优势,即能够在适当的级别上进行优化,以最有效的方式运行。
SambaFlow还可以在多个RDU上自动扩展工作负载。相比之下,在传统架构上处理大型模型时,一个关键的挑战是使用数据和模型并行技术来分解工作负载并将其分散到资源上。特别是对于模型并行技术,这需要开发外部框架或使用实验-试错的猜测将模型分离,以获得最佳结果。将模型从单个处理器转移到大型计算集群通常需要相当多的额外开发工作、编制和专门的专家知识。扩展到大型集群以获得足够大的内存大小也会导致每个设备的利用率大幅下降。
即使这样,SambaFlow仍然提供了一致的编程模型,从一个RDU小片到多系统配置。SambaFlow自动理解硬件的底层资源并直接优化模型的能力提供了完全自动化多芯片、数据并行和模型并行支持的独特优势。开发人员将一个或多个RDU分配给一个模型,然后SambaFlow编译以使用给定的资源集自动提供最有效的执行。这使开发人员能够提高生产力,并减少生产时间。
SambaFlow还支持RDU的快速重新配置。例如,当需要模型、数据源或批量大小的更改时,可以相应地重新配置RDU。与FPGA编程不同,RDU的重新配置是轻量级的,根据模型的复杂性,只花费10-40微秒。
SambaFlow有几个优化应用程序和管理系统资源的组件。这些组件如图6所示,并在下面进行描述。
图6 SambaFlow组件
用户入口点——SambaFlow支持常见的开源机器学习框架PyTorch和TensorFlow。来自其他框架和工具的序列化图形也在这里导入。
数据流图分析器和数据流图——接受框架中的模型,然后分析模型以提取数据流图。对于每个操作者,计算和通信需求都是确定的,因此可以稍后分配适当的RDU资源。分析器利用空间编程模型确定操作符和通信模式到RDU的最有效映射。通过对模型体系结构和RDU体系结构的了解,分析器还可以执行高级的、特定于领域的优化,如节点融合。数据流图分析器的输出是一个带注释的数据流图,作为传递给数据流编译器的第一个中间表示(IR)。
模板编译器和空间模板——对于需要运算符但现有框架中没有的情况,可以通过高级的张量索引表示法API来描述新的运算符。然后,模板编译器将分析运算符并为RDU生成一个优化的数据流实现,称为空间模板。生成的模板包括绑定,这些绑定使新操作符可以像内置框架操作符一样直接从应用程序代码中使用。
数据流编译器、优化器和汇编器——这一层接收带注释的数据流图,并执行高级转换,如元流水线、多段支持和并行化。它还理解RDU硬件属性并执行低级转换,主要是通过将图形映射到物理RDU硬件上,然后输出一个可执行文件来放置和路由。与前面一样,使用空间规划方法来确定RDU资源的最有效位置。
SambaFlow的优点:
- 支持流行的开源ML框架,如PyTorch和Tensorflow。
- 算法、SambaFlow和RDU之间的紧密集成产生了一个定制的、高度并行化的加速器,它针对每个特定的模型进行了唯一的优化。
- 按钮式模型编译和优化允许在不需要手动调优的情况下获得现成的高性能。这允许在没有深入的性能和硬件调优专家的情况下对高性能模型进行快速试验。
- 通过使用与单个设备上相同的编程模型,自动化的数据和模型并行映射简化了从测试台到大规模生产的扩展,而不需要像内存受限的设备那样,进行仔细而繁琐的节点间集群编程。
- 空间编程模型以最有效的方式自动分配资源,提供一个完整的处理管道,通过最小化数据移动和芯片外访问,实现高RDU利用率。
- 安全的多租户和并发的多图执行为最佳利用资源提供了无缝伸缩和向外扩展的灵活性。应用程序隔离支持不仅可以确保多个应用程序,还可以确保多个用户,从而支持Slurm等资源管理工具。
- 高性能数据传输协议支持RoCE、RDMA、以太网和Infiniband协议,确保需要在设备之间传输数据的模型可以全速运行。
- 虚拟化和容器支持意味着您可以安全地使用和部署Docker、Kubernetes或VM环境。
RDA上的大型模型用例
在各种应用程序中,有一种趋势是需要大内存容量的模型,尽管驱动程序因使用而不同。例如,在自然语言处理中,大量的参数能够对复杂的文本段落进行摘要或生成改进的文本建议。在推荐系统中,更大的内存大小支持丰富的用户和目录嵌入,以实现更高的推荐准确性和转化率。在计算机视觉中,需要更大的内存来处理高分辨率图像和相关的激活,如病理学、医学扫描和天文学。
为了支持大型模型,一种常见的方法是将模型分成小块,每个小块都适合于GPU内存。最新的大型NLP模型通常是基于数千个GPU构建的配置。纯粹的规模、成本和复杂性限制了大型、资金充足的组织的创新。
相比之下,以前需要1000多个GPU才能运行的大型模型现在可以在单个SambaNova数据集上运行系统。数据流处理模型和大的片上容量使这成为可能,这减少了片外通信和内存带宽的压力,并允许使用TB级的附加内存。在系统中的多个RDU上运行模型也可以通过自动数据和模型并行扩展来简化。
SambaNova定期发表关于大型模型、扩展、性能和其他主题的文章。想了解更多,请见https://sambanova.ai/articles/。
RDA上的多租户和并发应用程序
尽管如前所述,DataScale系统可以用于大规模应用程序,但它们也可以支持多个并发应用程序,并提供多租户隔离,如图7所示。团队或应用程序可能只需要系统的一部分,组织可以使用多租户功能来提供服务于多个部门或客户的机器学习、私有云资源。还可以将RDU的一部分用于训练更新的模型,而其他部分则执行以前训练过的模型,以进行推理和结果生成。
图7 同时支持多个用户或工作负载
在RDA上建模生命周期管理
当然,算法开发只是图8所示的成功生产操作的一小部分。前面描述的RDA功能可以简化和促进机器学习生命周期的其他部分。
例如,RDU支持前后处理的集成,以避免额外的ETL开销。可重构性通过在开发和测试阶段对模型进行实验和调整,促进了模型开发的快速迭代。RDU对高吞吐量、大批量训练和小批量推理的支持意味着模型可以在连续学习或增量训练模式中结合训练和推理。这允许开发新的和有趣的模型类型,这在传统的生命周期流中是不可能的。
图8 整个生命周期的优化
总结
SambaNova DataScale 系统和SambaFlow提供了一个独特的垂直集成平台,该平台从算法、编译器到芯片都经过了优化,为创造下一代机器学习和深度学习应用的创新者实现了突破性的性能和灵活性。与SambaNova联系,了解有关加速机器学习和HPC应用程序的更多信息。
作者:Chaobo
来源:https://mp.weixin.qq.com/s/\_0YeHCi0icIKlvsjjA-L8g
作者微信公众号
相关文章推荐
更多软硬件技术干货请关注软硬件融合专栏。