用于深度学习应用的存储器带宽管理的制作方法

文档序号:13809679阅读:220来源:国知局
用于深度学习应用的存储器带宽管理的制作方法



背景技术:

人工智能(ai)应用涉及被制作为展现诸如学习、交流、感知、运动和操纵、以及甚至创作的智能行为的机器或软件。这些机器或软件可以通过诸如搜索和优化、逻辑、概率方法、统计学习以及神经网络的各种方法来实现这种智能行为。沿着这些思路,各种深度学习架构,例如包括深度多层感知机(mlp)的深度学习网络(深度nn)(常常被称为dnn)、卷积深度神经网络、深度信念网络、递归神经网络(rnn)、以及长短期记忆(lstm)rnn,对于其应用到如计算机视觉、图像处理/识别、语音处理/识别、自然语言处理、音频识别、以及生物信息学等领域,已经获得了关注。

深度nn通常包括输入层、任意数量的隐藏层以及输出层。每个层包含特定量的单元,其可以遵循神经模型,并且每个单元对应于特征向量中的元素(例如输入数据集的观测向量)。每个单元通常使用加权的函数(例如,逻辑函数)来将其来自下层的总输入映射到被发送到上层的标量状态。(通常经由无监督机器学习)训练神经网络的层并且该层的单元被分配以权重。取决于神经网络层的深度,在系统中使用的权重的总数目可以是巨大的。

许多计算机视觉、图像处理/识别、语音处理/识别、自然语言处理、音频识别、以及生物信息学在对大量使用者和企业客户可用的服务进行支持的数据中心处被运行并管理。数据中心被设计为以模块化且灵活的方式运行并操作计算机系统(服务器、存储设备、以及其他计算机)、通信设备以及功率系统。数据中心工作负载要求高计算能力、灵活性、功率高效和低成本。能够加速大规模软件服务的至少一些部分可以实现期望的吞吐量并且使得这些数据中心能够满足它们的资源使用者的需求。然而,深度学习应用的逐渐增加的复杂度和可扩展性可能会加剧关于存储器带宽的问题。



技术实现要素:

描述了用于加速神经网络评估的存储器带宽管理技术和系统。

在数据中心中,一种神经网络评估加速器可以包括支持并行处理的处理器(“并行处理器”),例如现场可编程门阵列(fpga)。此处理器与数据中心处的通用计算机处理单元(cpu)分离,在(来自cpu的核心的)来自相同或不同数据流的至少两个观测向量之后,其使用从外部存储器加载的权重数据集来执行一过程。通过在应用加权的数据集之前对至少两个流或者至少两个观测向量的输入数据排队,用于神经网络权重加载的存储器带宽要求可以被减少k倍,其中k是一批次中的输入数据集的数目。另外,通过使用支持并行处理的处理器,n个同时的流可以采用并行锁定步骤被处理以确保针对n个并行流的存储器带宽要求保持与针对单个流的存储器带宽要求相同。对于权重数据集的每次加载,这实现了n*k个输入数据集的吞吐量。

受益于包括数据中心处所托管的深度学习架构的服务可以包括fpga上所执行的深度神经网络(深度nn)评估,其中该方法包括从片外存储加载第一权重数据集,在fpga的输入处对一批至少两个特征向量排队,对该批次执行深度nn评估的第一层过程以生成中间结果,加载片外存储的第二权重数据集,并且对中间结果执行深度nn评估的第二层过程。在一些情况下,至少两个特征向量可以包括来自至少两个数据流,其中至少两个数据流来自对应的核心。在一些情况下,至少两个特征向量可以来自相同的数据流。在一些情况下,至少两个特征向量可以包括来自至少两个数据流中的每个数据流的至少两个观测向量。

提供本发明内容从而以简化的形式介绍下面在具体实施方式中进一步描述的一系列概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也并非旨在用于限制所要求保护的主题的范围。

附图说明

图1图示了提供用于深度学习应用的存储器带宽管理的示例操作环境。

图2图示了用于管理并加速由数据中心的资源所托管的深度学习应用的至少部件的示例架构。

图3a到图3d图示了神经网络评估中的带宽管理的比较。

图4图示了使用fpga来加速dnn过程的示例实施方式。

图5图示了其上可以执行所描述的技术的示例计算系统。

具体实施方式

描述了可以加速神经网络评估的存储器带宽管理技术和系统。

归因于许多神经网络评估的计算模式,通用处理器和基于纯软件的技术方案往往于低效,并且在一些情况下,不能够满足它们形成一部分的应用的性能要求。另外,这些评估往往受执行计算的数据中心处可用的资源限制。通过在数据中心中包括fpga并且以本文描述的方式利用这些fpga,能够在当前数据中心的处理器至存储器带宽约束以及机器至机器网络化带宽约束内执行复杂深度神经网络评估。在一些情况下,特别是在功耗效率不是优先事项或者需要较少的并行计算流的情况下,图形处理单元(gpu)可以用于执行神经网络评估。

图1图示了提供用于深度学习应用的存储器带宽管理的示例操作环境。参考图1,数据中心100可以包括许多资源101,物理的和虚拟的,其上可以托管应用和服务。一个或多个路由服务器110可以促进将请求引导到合适的资源。一个或多个路由服务器110可以物理上存在于特定数据中心100中。在数据中心100处托管的一个或多个服务可以服务于许多客户端,例如客户端0121、客户端1122、客户端2123、客户端3124、客户端4125、客户端5126以及客户端6127,客户端通过互联网130与(一个或多个)服务进行通信(并且访问一个或多个数据中心资源101)。

所描述的技术的各种实施方式适合于用作如下服务的过程的一部分,该服务涉及计算机视觉、图像处理/识别、语音处理/识别、自然语言处理、音频识别、生物信息学、天气预测、股票预报、控制系统、以及神经网络可以应用于其中的任何其他应用。

作为示例情形,操作环境支持针对音频或视频呼叫的翻译服务。翻译服务可以涉及深度学习应用用以识别来自会话的单词。客户端(例如,121、122、123、…)可以使得用户能够选择参与到翻译服务中,从而用户会话的音频可以被发送到翻译服务。例如,来自在运行客户端0121的设备处的会话的音频能够作为输入0被发送到翻译服务,来自运行客户端1122的设备处的会话的音频可以作为输入1被发送到翻译服务,来自运行客户端2123的设备处的会话的音频可以作为输入2被发送到翻译服务,并且来自运行客户端3124的设备处的会话的音频可以作为输入3被发送到翻译服务。

这些独立会话可以在数据中心100处被处理并且可以使输出发送到相同客户端或不同客户端(其可以参与或者可以不参与到将音频发送到服务中)。例如,来自输入0的经翻译的会话可以作为输出0被发送到客户端4125,来自输入1的经翻译的会话可以作为输出1被发送到客户端5126,来自输入2的经翻译的会话可以作为输出2被发送到客户端6127,并且来自输入3的经翻译的会话可以作为输出3被发送回到客户端3125。对与翻译服务相关联的过程中的一个或多个过程进行加速可以有助于这种服务的实时功能性。然而,任何加速或者甚至仅仅实际计算至少部分地受系统的物理限制(即数据中心100处的数据中心资源101)约束。

图2图示了用于管理并加速由数据中心的资源托管的深度学习应用的至少部件的示例架构。在容纳许多服务器、交换机以及用于例如关于图1的数据中心100所描述的各种服务和应用的其他设备的数据中心200中,深度学习应用以及尤其是其中权重数据集以兆字节(数十兆字节、数百兆字节或者甚至更多)为量级的神经网络评估可以被加速,并且其存储器带宽要求通过对输入数据的批处理来降低。

在数据中心200处的服务器可以包括具有两个或更多核心的处理器。每个核心往往处理单个线程或者单个数据流。根据某些实施方式,并行处理器210用于加速神经网络评估。作为示例,并行处理器210可以为gpu或fpga。fpga可以示出超越gpu的使用的改进的功率节省。然而,应当理解,某些实施方式可以使用gpu或其他并行处理器来执行本文中描述的方法中的一些或全部。

并行处理器210可以包括:输入缓冲211,其具有(例如k=2或更多的)指定队列深度;以及输出缓冲212,其用于在数据被进一步处理和/或输出到另一部件之前保持中间结果输出或其他数据。在一些情况下,并行处理器可以包括用于处理来自一个或多个输入缓冲211的数据的逻辑220。取决于并行处理器210的类型,逻辑220可以是在操作之间和/或期间可编程和/或可重配置的。

“观测向量”是指初始数据集(或者特征向量),其被输入到神经网络并且用于启动或触发识别或分类处理。这可以包括表示颜色、价格、声音幅度或可能已经在感兴趣对象中观测到的任何其他可量化值的数据。输入到并行处理器210的观测向量可以通过cpu的核心生成(在下面的示例中更详细地讨论)、通过另一计算单元生成,该计算单元诸如为fpga、cpu或正执行神经网络评估的并行处理器210上的其他逻辑。

“中间结果输出”或“中间结果”是指神经网络的内部状态值,用于针对当前评估或者跨网络的多个评估(在rnn的情况下)通过网络跟踪数据的进展。

中间结果值可以与观测向量的特征相关,但是通常它们将原始观测数据的某种抽象形式表示为关于它被给定的输入的网络算法“原因”。逻辑上,中间结果值表示网络基于竞争概念之间的超维判决线将数据进行分类的尝试。数学上,中间结果值表示观测向量、先前中间结果值、或两者的组合看起来像是一个或多个神经网络节点表示的竞争概念之间的分界线的接近度。

如图2中图示的,单个并行处理器210可以从多个核心接收输入数据,多个核心例如为核心0221、核心1222、核心2223以及核心3224,其可以被提供在容纳在一个或多个服务器中的一个或多个处理单元中。例如,一个服务器可以包含如今常见的具有12-24个核心的处理单元。在一些应用中,来自这些核心的输入数据可以被加载到输入缓冲211的对应缓冲中。在其他应用中,来自这些核心中的一个核心的输入数据可以被加载到多于一个输入缓冲中。

在另一实施方式中,代替(由输入缓冲211提供的)许多单独的队列,n个核心中的每个核心一个队列,并行处理器可以具有单个队列,其中不同的核心在它们变为可用时将它们的数据集添加到该单个队列。并行处理器可以(在深度nn的每个完整评估之后)定期地轮询该队列并且从该队列读取数据集的新的批次以进行并行处理。数据集的新的批次将通过深度nn并行处理,并且之后并行处理器上或者一个cpu核心上的解码器会将它们发送回到合适的核心。每个数据集将由发送它的核心标记以促进该解复用操作。这种类型的实施方式适合于如下情况,其中诸如fpga的并行处理器可以处理诸如添加解码处理的计算负载。

如以上所提到的,观测向量可以由核心生成并且作为输入数据被直接提供给并行处理器210;然而,在一些情况下,观测向量可以不由核心输出。在那些情况中的一些中,并行处理器210可以生成观测向量(使用单独的逻辑来这么做)或者其他计算单元可以根据从核心或在使用其他计算单元完全实施的系统中输出的数据来生成观测向量。因此,当在本文中描述核心和数据流时,对其他计算单元的使用可以被视为可以适合用作针对特定识别过程(或者受益于深度学习的其他应用)的处理单元的其他实施方式。

当并行处理器执行针对神经网络评估的加权的函数时,权重数据集通常太大以至于不能够利用处理器被存储在片上。代替地,权重数据集被存储在片外存储230中,并且在每次特定加权的函数被执行时以用于片上存储足够小的划分被加载到并行处理器210上。为了获得最大效率,权重必须以处理器可以消耗它们的速度被加载,这要求显著数量的存储器带宽。片外存储230可以包括存储器模块(例如,ddr、sdramdimm)、硬盘驱动器(固态、硬盘、磁性、光学、等等)、cd、dvd以及其他可移除存储设备。应当理解,存储230不包括传播信号。

根据本文中描述的各种技术,存储器带宽通过在并行处理器210处以批次来处理并行数据流(例如,来自核心:核心0221、核心1222、核心2223以及核心3224)来管理,因此,针对每层从片外存储230输入到并行处理器210的权重数据集处理至少两个特征向量。尽管所描述的技术可以对(来自相同或不同数据流的)两个特征向量有用,但是当至少四个特征向量被并行处理时,可以看到对带宽和/或功率效率的明显效果。例如,使并行处理的项的数目加倍差不多会使存储器带宽减半。

在一些情况下,深度nn评估的加速可以通过管理器代理240来管理。管理器代理240可以采用可由任何适当的计算系统(包括物理服务器和虚拟服务器以及其任何组合)执行的软件来实施。管理器代理240可以在一些情形中被安装在虚拟机上并且在虚拟机的上下文中运行或者可以以非虚拟化的实施方式被直接安装在计算系统上并且在计算系统上被执行。在一些情况下,管理器代理240可以整体上或部分地采用硬件来实施。

管理器代理240当使用时可以协调在数据中心处的各个部件之间(例如,在存储用于深度nn评估的权重的片外存储230与并行处理器210之间)传送数据的定时。因此,在某些实施例中,管理器代理240和/或针对数据中心200的总线/数据路由配置使得数据集(例如,来自核心:核心0221、核心1222、核心2223、核心3224)能够被传送到单个并行处理器210从而以批次进行处理。

图3a到图3d图示了神经网络评估中的带宽管理的比较。在图3a中图示的情形中,深度nn评估涉及软件或硬件评估并且不包括如本文中描述的加速或存储器管理。代替地,存储在外部存储器300中的权重数据集在对应的深度nn评估(例如,分别为dnn评估(0)303和dnn评估(1)304)期间被单独地应用到每个数据集(例如,来自核心:核心0301和核心1302)。具体地,来自外部存储器300的第一层权重集合310和来自核心0301的第一流(流0)的第一特征向量(向量0)311被获取/接收(312)以进行dnn评估(0)303;第一层过程被执行(313),生成中间结果314。

来自外部存储器300的第二层权重集合315继而被获取/接收316以便对中间结果314执行第二层过程(317)。从外部存储器300获取/接收权重的该评估过程针对每层持续进行,直到针对特定输入向量完成了整个过程为止。该过程可以针对每个输入特征向量(例如,向量0的向量01)重复进行。如果存在运行深度nn评估的多个核心,则可以并行执行多个深度nn评估,但是没有如本文中描述的存储器管理,每个评估需要从外部存储器300获取/接收权重数据集作为独立请求以及使用附加的处理器/核心。

例如,来自外部存储器300的第一层权重集合310和来自核心1302的第二流(流1)的第二特征向量(向量1)318被获取/接收(319)以进行dnn评估(0)304;并且第一层过程被执行(313)以生成针对第二流的中间结果320。来自外部存储器300的第二层权重集合315之后被获取/接收316以便对中间结果320执行第二层过程(317)。如关于dnn评估(0)303所述的,dnn评估(1)304针对每层持续进行,直到针对特定输入特征向量完成了整个过程为止,并且针对每个输入特征向量(例如,流1的向量11)进行重复。如可以看到的,这不是用于执行深度nn评估的有效机制并且需要相当大的存储器带宽来执行,因为每个评估需要获取加权的数据集获取并且需要它自己的处理器/(一个或多个)核心来执行评估。

在图3b中图示的情形中,存储器管理的、加速的深度nn过程使用fpga330对来自相同数据流的两个特征向量执行深度nn评估。这里,两个特征向量,即观测向量(向量0和向量01)331可以作为一个批次从核心0301被加载到fpga330上并且被评估。第一层权重集合310可以被接收和/或获取以用于加载(332)在fpga330上,并且在fpga330处对向量0和向量01331两者执行(333)第一层过程。来自第一层过程的中间结果334可以在针对两个观测向量完成第一层过程时可用;并且第二层权重集合315被加载(335)到fgpa330上。

中间结果334可以被加载到缓冲(例如图2的输入缓冲211)中,以用于下一层处理以及所执行(337)的第二层过程。在fpga330处深度nn评估针对每层持续进行,直到针对两个观测向量(向量0和向量01)331完成了整个过程为止。之后可以针对下一对观测向量(例如,向量02和向量03)重复该过程。应当理解,尽管描述了仅仅两个特征向量,但是可以使用fpga来并行评估多于两个特征向量/观测向量。这将进一步降低所需要的存储器带宽,但是会发现它在缓冲来自单个数据流的批次的延迟中的限制,因为在实时应用中,在开始计算之前缓冲n个观测向量使系统的输出被延迟n个向量,并且在一些应用中,可接受的延迟不会足够大到允许并行处理器的有效操作。另外,对来自相同流的向量的批处理不适合于递归网络(rnn),因为一个批次内的向量不是独立的(在时间步骤t处的计算需要在时间步骤t-1处的输出)。

在图3c中图示的情形中,使用fpga330的、存储器管理的、加速的深度nn过程需要对来自两个不同数据流的两个特征向量执行dnn评估。即,两个特征向量,来自核心0301的一个观测向量(向量0)341和来自核心1302的一个观测向量(向量1)342作为一个批次被评估。第一层权重集合310可以被接收/获取以用于加载(343)在fpga330上,并且在fpga330处对向量0341和向量1342两者执行(344)第一层过程,从而生成中间结果345。中间结果345(第一层过程的数据输出)可以被加载到缓冲中以进行下一层处理。不像图3b中图示的情形适合于评估mlp的dnn但是不适合于评估rnn的深度nn,此情形适合于评估rnn(递归神经网络),因为该批次内的所有观测结果都是来自不同流的并且因此是独立的。

在针对两个观测向量341、342完成了第一层过程之后,第二层权重集合315被加载(346)到fgpa330上并且执行(347)第二层过程。在fpga330处深度nn评估针对每层持续进行,直到针对两个观测向量(向量0341和向量1)342完成了整个过程为止。之后可以针对这两个流的后续观测向量(例如,向量01和向量11)重复该过程。当然,尽管为简单起见仅仅示出了两个流和核心,但是可以在fpga330处并行评估多于两个。

在图3d中图示的情形中,使用fpga330的、存储器管理的、加速的深度nn过程需要对四个特征向量执行深度nn评估,每两个特征向量(观测向量)来自两个数据流。即,来自核心0301的两个观测向量351(向量0,向量01)和来自核心1302的两个观测向量352(向量1,向量11)作为一个批次被加载以及评估。来自每个流的两个观测向量可以通过针对fpga的输入缓冲(参见例如,图2的输入缓冲211)队列深度为2来加载。因此,利用对于第一层权重集合310、来自核心0301的两个观测向量351(向量0,向量01)和来自核心1302的两个观测向量352(向量1,向量11)的单次加载(353),可以执行(354)第一层过程。如以上关于图3b中图示的情形描述的,尽管该情形适合于各种深度nn架构评估,但是由于一个批次中的向量的依赖性质其不像关于图3c描述的那样适合于rnn。

中间结果355(第一层过程的数据输出)可以被加载到缓冲中以进行下一层处理,第二层权重集合315可以被获取/接收,以用于加载(356)到fgpa330上,并且用于之后所执行(357)的第二层过程。在fpga330处dnn评估针对每层持续进行,直到针对至少四个观测向量(向量0、向量01、向量1和向量11)完成了整个处理为止。之后可以针对这两个流的下一对观测向量(例如,向量02、向量03和向量12、向量13)重复该过程。当然,该情形也可扩展到由fpga330并行处理的附加的核心。

如可以从图示的情形看到的,图3b和3c中示出的配置减少了与图3a中示出的配置评估相同数据量所需要的存储器带宽。另外,图3d中示出的配置可以甚至进一步减少需要的存储器带宽。对于图3b和3d中示出的配置,存在对来自单个数据流的多个观测向量排队的时间延迟成本。另外,还可能另外存在用于对通过可用并行过程的每个线路的数据量评估两次(或更多)的某个延迟成本。

因此,至少两个流的输入数据和/或至少两个观测向量可以被排队以在fpga处进行处理从而将用于神经网络权重加载的存储器带宽要求减少k倍,其中k是一个批次中的输入数据集的数目(并且还可以被视为针对fpga的队列深度)。为了优化带宽效率,当在片上fpga存储器中累积了一批k个输入数据集时进行处理。通过以这种方式对输入排队,可以处理在处理输入数据集所需要的数据库(权重)的带宽过高的情况下的任何i/o边界问题。因此,总体上,对于需要的带宽b,使用排队方法所需要的平均有效带宽为b/k。n个同时的流可以采用并行锁定步骤来处理以确保针对n个并行流的存储器带宽要求保持与针对单个流的存储器带宽要求相同。

示例情形-互联网翻译器

对于互联网翻译器,会话可以在经由客户端处的麦克风输入之后到达数据中心并且(例如,经由快速傅里叶变换)被变换以基于(可以根据其获得观测向量的)频率建立功率带。针对示例情形的深度nn评估涉及执行八层矩阵相乘、添加偏置向量并且针对除了顶层的所有层应用非线性函数的(针对mpl的)dnn。dnn评估的输出可以建立概率得分,指示被查看的片段(slice)属于语音单元的概率有多少,例如被查看的片段属于在“t”的左上下文和“sh”的右上下文中读出的“ah”的中间部分的概率有多少。由处理器核心执行的附加的处理任务可以涉及基于概率得分来标识单词并且针对某些词典进行应用以执行语言之间的翻译。

图4图示了使用fpga来加速深度nn过程的示例实施方式。参考图4,在数据中心处的服务器刀片400可以包括存储权重数据集的外部存储401。有利地,单个fpga402可能够执行针对包含24个cpu核心403(n=24)的整个服务器刀片的深度nn评估中的全部;在深度nn被执行的同时使这些核心403处理24个同时进行的会话所需要的其他处理任务。

在示例情形中,来自24个核心中的每个核心的输入数据集可以被加载到具有k=2的队列深度的输入缓冲404上。这样,来自每个会话/核心的数据流的两个观测向量可以作为单个批次经历通过层逻辑405的处理,例如矩阵相乘(例如针对深度mlp)或者多个并行矩阵相乘和非线性矩阵相乘(例如针对lstmrnn)。来自层逻辑405的层的中间结果406可以在从存储401加载新的权重数据集时被路由回来(407)从而经历利用新的加权函数的另一过程。该过程可以被重复进行直到所有层已经被处理完为止,此时输出进而被发送回到处理核心,其可以在某个点对数据进行解复用(解复)。

现场语音翻译要求密切注意延迟、功率和准确性。fpga通常具有相对低的功率要求(10w)并且仍然可以递送高计算性能。由于仅仅使用cpu核心(纯软件方法)用于使用深度nn评估来执行语音识别通常需要每个会话至少3个cpu核心,其中至少两个被用于深度nn评估,fpga402能够有效地去除对2*24=48个cpu核心的需要,这转化为高功率节省。例如,假设针对fpga功率消耗的膨胀(bloated)估计为25w,并且针对cpu核心的合理的平均功率消耗为100w/12=8.33w,净功率节省将大约为每个服务器刀片48*8.33w-25w=375w。在没有fpga的情况下以另一方式计算,功率使用将为每个会话3*8.33w=25w,而利用fpga每会话的功率将为8.33w+25w/24=9.37w。

当被扩展到大量用户时,与针对会话仅仅使用单个cpu核心(以及简单地针对24个会话使用单个fpga)相比由纯软件的深度nn方法所需要的计算功率的3倍增加使纯软件方法成本过高,尽管深度nn提供了更大的识别准确性并且因此当被并入在语音识别和翻译服务中时提供了更好的用户体验。因此,fpga402的包含使得深度nn能够被并入到语音识别和翻译服务中。

通常,在fpga上执行深度nn评估将需要非常高的带宽要求。关于fpga实施方式的主要困难之一是存储器带宽的管理。对于一个示例性互联网翻译器,存在必须针对神经网络的每个完整评估处理的近似5亿个16比特神经网络权重。对于神经网络的每个评估,fpga必须从存储器加载50m*2字节=100m字节的数据。为了满足性能规范,神经网络必须每个会话每秒被评估100次。甚至对于一个会话,这意味着针对fpga的存储器带宽要求为100*100mb=10gb/秒。通常的fpga存储器接口的绝对峰值存储器带宽大约为12.8gb/秒,但是这是难以实现的并且假设了没有其他活动存在于系统中的完美操作条件。如果考虑到fpga的任务是要同时处理n=24个这种会话,问题看起来就很棘手。然而,图3b到3d中图示的(并且在图4中针对n=24的特定实施方式反映的)技术可以解决该问题。

首先考虑单个会话情况,其可以被视为图3b中所图示的,存储器带宽要求可以通过以(观测向量的)k个输入数据集的组对输入数据进行批处理来减少。通过延迟处理直到已经累积了k个输入数据集为止,并且之后针对所有k个输入一次加载神经网络权重数据,需要的有效存储器带宽下降k倍(同时使语音识别输出延迟对应于k-1向量的持续时间,例如(k-1)*10ms)。例如,如果存储器带宽要求为10gb/秒并且k=2,则需要的有效存储器带宽为10gb/秒/2=5gb/秒,其是更容易管理的数字。k的更大的值导致更低的有效存储器带宽并且可以被选择以将存储器带宽要求减少到针对应用的可管理的数目。这以计算延迟增加为代价,因为输入数据集被延迟直到已经累积了k个,但是由于在特定情况下维持吞吐量可能比延迟更重要,所以在那些特定情况下其是良好权衡。

在处理n个同时进行的会话的情况下,例如图3c和3d中图示的,其中分别为n=2并且k=1和k=2,每个会话在使用中同时使用k个输入数据集的队列和n个这种队列(针对图4中图示的示例为n=24和k=2)。输入数据集可以被安排为使得在锁定步骤中在层逻辑405的层期间(例如矩阵相乘或其他加权的处理步骤,其可以在中间结果406上执行,其之后被重新排队407以利用新的权重进行下一层处理)同时跨所有队列使用完全相同的权重处理所有n个队列。因此,针对所有n个会话(针对处理的每层)仅仅加载神经网络权重数据单次,并且针对fpga的存储器带宽要求保持与仅仅单个会话被处理时相同。

图5是图示了可以用于执行本文中描述的一些过程的计算设备或系统的部件的框图。参考图5,系统500可以包括一个或多个刀片服务器设备、独立服务器设备、个人计算机、路由器、集线器、交换机、桥接器、防火墙设备、侵入检测设备、大型计算机、网络附接的存储设备以及其他类型的计算设备。硬件可以根据诸如对称多处理(smp)架构或者非均匀存储器访问(numa)架构的任何适当的计算机架构来配置。因此,关于系统500描述的更多的或更少的元件可以被并入以实施特定计算系统。

系统500可以包括处理系统505,其可以包括一个或多个处理设备,例如具有一个或多个cpu核心的中央处理单元(cpu)、微处理器或者从存储系统520获取并执行软件510的其他电路。处理系统505可以被实施在单个处理设备内,但是还可以跨在执行程序指令时进行合作的多个处理设备或子系统而分布。

处理系统505的一个或多个处理设备可以包括多处理器或多核心处理器并且可以根据一个或多个适当的指令集来操作,一个或多个适当的指令集包括但不限于精简指令集计算(risc)指令集、复杂指令集计算(cisc)指令集、或者其组合。在某些实施例中,一个或多个数字信号处理器(dsp)可以被包括以作为代替通用cpu或者除了通用cpu之外的系统的计算机硬件的一部分。

软件510可以包括可由处理系统505读取的并且能够存储包括用于执行各种过程的指令的软件510的任何计算机可读存储介质,fpga上所执行的神经网络评估形成各种过程中的一部分。软件510还可以包括附加的过程、程序或部件,例如操作系统软件、数据库管理软件或者其他应用软件。软件510还可以包括可由处理系统505执行的固件或者某种其他形式的机器可读处理指令。除了存储软件510,存储系统520还可以存储用于执行神经网络评估的矩阵权重和其他数据集。在一些情况下,管理器代理240至少部分地被存储在形成存储系统520的一部分并且实施虚拟存储器和/或非虚拟存储器的计算机可读存储介质上。

存储系统520可以包括以任何方法或技术实施的用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的易失性介质和非易失性介质、可移除介质和不可移除介质。

尽管存储系统520被示出为一个框,但是存储系统520表示对计算系统500可用的片上存储和外部存储。存储系统520可以包括各种存储介质,例如随机访问存储器(ram)、只读存储器(rom)、磁盘、光盘、cd、dvd、闪存、固态存储器、相变存储器、或者任何其他适当的存储介质。某些实施方式可以包含虚拟存储器和非虚拟存储器中的任一或两者。在任何情况下,存储介质都不包括传播信号或载波。除了存储介质,在一些实施方式中,存储系统520还可以包括通信介质,软件和数据可以通过通信介质进行内部地或者外部地通信。

存储系统520可以被实施为单个存储设备,还可以跨相对于彼此共同定位或者分布的多个存储设备或者子系统实施。在一些情况下,处理系统505可以通过系统总线访问存储系统520(或者存储系统520的一部分)。存储系统520可以包括附加的元件,例如控制器,其能够与处理系统505进行通信。

计算系统500还包括用于执行神经网络评估的fpga530。可以在数据中心中获得多个fpga。在一些情况下,多个fpga可以被并入到子卡中并且与服务器的子集一起被容纳。备选地,单个fpga可以被容纳在单个服务器中,其中需要多于一个fpga的服务可以跨驻存在多个服务器中的fpga被映射和/或需要多于一个服务器的服务可以访问驻存在服务器中的一个服务器处的单个fpga。在一些情况下,一个或多个fpga可以与服务器分开地被容纳。当被并入在相同服务器中时,(一个或多个)fpga可以在相同的板上或者在利用诸如pcie(pci快速)的通信接口技术接口连接的单独的板上被耦合到处理系统505。

通信接口540被包括,从而提供允许设备500与其他计算系统(未示出)之间通过通信网络或者网络(未示出)的集合或者空中通信的通信连接和设备。共同允许系统间通信的连接和设备的示例可以包括网络接口卡、天线、功率放大器、rf电路、收发器以及其他通信电路。连接和设备可以通过通信介质进行通信以与其他计算系统或系统的网络交换通信,通信介质例如为金属、玻璃、空气或任何其他适当的通信介质。上述通信介质、网络、连接和设备是公知的并且不需要在此详细讨论。

应当指出,设备500的许多元件可以被包括在片上系统(soc)设备上。这些元件可以包括但不限于处理系统505、存储系统520的元件以及甚至通信接口540的元件。

本发明的某些方面提供以下非限制性实施例。

示例1.一种执行神经网络过程的方法,方法包括:在现场可编程门阵列(fpga)处接收一批输入数据以用于神经网络评估的加速处理,其中该批输入数据包括至少两个特征向量;利用来自外部存储器的用于神经网络评估的第一层权重集加载fpga;以及在fpga内将第一层权重集应用到该批输入数据以生成中间结果。

示例2.根据示例1的方法,其中至少两个特征向量包括来自至少两个数据流中的每个数据流的一个观测向量。

示例3.根据示例2的方法,其中神经网络评估是递归神经网络评估。

示例4.根据示例1的方法,其中至少两个特征向量包括来自至少两个数据流中的每个数据流的至少两个观测向量。

示例5.根据示例1的方法,其中至少两个特征向量包括来自单个数据流的至少两个观测向量。

示例6.根据示例1-5中的任一项的方法,还包括:在将第一层权重集应用到该批次之后,利用来自外部存储器的用于神经网络评估的第二层权重集加载fpga;以及在fpga内将第二层权重集应用到中间结果。

示例7.根据示例1、2或4-6中的任一项的方法,其中神经网络评估为深度神经网络多层感知评估。

示例8.根据示例1-7中的任一项的方法,其中该批输入数据从至少一个核心被接收。

示例9.根据示例1-7中的任一项的方法,其中从fpga上其他逻辑接收输入数据的批。

示例10.根据示例1-7中的任一项的方法,其中该批输入数据从其他处理单元被接收。

示例11.一个或多个计算机可读存储介质,具有存储在其上的指令,指令在由处理系统执行时引导处理系统通过以下来管理用于深度学习应用的存储器带宽:引导来自至少一个核心的一批至少两个观测向量在现场可编程门阵列(fpga)处排队;在fpga上加载至少一个加权的数据集,至少一个加权的数据集中的每个加权的数据集安装被引导在fpga处排队的至少两个观测向量的批次被一次加载;以及将来自fpga的评估输出引导到至少一个核心以用于进一步处理。

示例12.根据示例11的介质,其中引导来自至少一个核心的该批至少两个观测向量在fpga处排队的指令引导来自至少两个核心中的每个核心的一个观测向量在fpga处排队。

示例13.根据示例11的介质,其中引导来自至少一个核心的该批至少两个观测向量在fpga处排队的指令引导来自至少两个核心中的每个核心的至少两个观测向量在fpga处排队。

示例14.一种系统,包括:一个或多个存储介质;多个处理核心;服务,服务被存储在一个或多个存储介质中的至少一个存储介质上并且至少在多个处理核心上被执行;并行处理器,其与多个核心通信以对用于服务的过程的一批数据执行神经网络评估;以及用于神经网络评估的被存储在一个或多个存储介质中的至少一个存储介质上的权重数据集。

示例15.根据示例14的系统,其中并行处理器为现场可编程门阵列(fpga)。

示例16.根据示例14或15的系统,其中并行处理器从多个核心中的每个核心接收一个观测向量以作为该批数据。

示例17.根据示例16的系统,其中神经网络评估包括递归神经网络评估。

示例18.根据示例14-16中的任一项的系统,其中神经网络评估包括深度神经网络多层感知评估。

示例19.根据示例14、15或18中的任一项的系统,其中并行处理器从多个核心中的每个核心接收至少两个观测向量以作为该批数据。

示例20.根据示例14-19中的任一项的系统,其中服务包括语音识别服务。

示例21.根据示例14-20中的任一项的系统,还包括:管理器代理,其至少部分地被存储在一个或多个存储介质中的至少一个存储介质上,管理器代理在被执行时引导系统:引导来自多个处理核心中的至少一个处理核心的该批数据在并行处理器处排队;将权重数据集的至少一个加权的数据集加载到并行处理器上,至少一个加权的数据集中的每个加权的数据集按照批次被一次加载;以及将来自并行处理器的评估输出引导到多个处理核心。

示例22.根据示例21的系统,其中管理器代理引导系统以通过将来自多个核心中的至少两个核心中的每个核心的至少一个观测向量引导到并行处理器来引导该批数据在并行处理器处排队。

示例23.根据示例21的系统,其中管理器代理引导系统以通过将来自多个核心中的至少两个核心中的每个核心的至少两个观测向量引导到并行处理器来引导该批数据在并行处理器处排队。

应当理解,本文中描述的示例和实施例仅仅是出于说明性目的,并且会向本领域技术人员启示根据其的各种修改或改变并且这些修改或改变应被包括在本申请的精神和权项内。

尽管已经以特定于结构特征和/或动作的语言描述了本主题,但是应理解权利要求中限定的主题不必限于以上描述的特定特征或动作。相反,以上描述的特定特征和动作作为实施权利要求的示例被公开,而其他等效特征和动作旨在处于权利要求的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1