用于有效神经网络部署的系统和方法与流程

文档序号:12126327阅读:595来源:国知局
用于有效神经网络部署的系统和方法与流程

本申请要求于2015年9月4日提交的、题为“用于有效神经网络部署的系统和方法”以及列出Christopher Fougner和Bryan Catanzaro作为发明人的第62/214,816号共同受让的未决美国临时专利申请的优先权。前述专利文献就其全部内容以及出于所有目的通过引用并入本文。

技术领域

本公开大体涉及网络管理,更具体地,涉及用于诸如神经网络部署的计算密集型问题的系统和方法。



背景技术:

图1示出用于部署深度神经网络的现有典型架构。请求经由因特网串流至数据中心中。这些请求被负载均衡器102路由至位于数据中心110处的若干服务器104中之一上。每个请求106由这些服务器104中之一上运行的单个工作线程处理,之后返回结果108。

由于仅需要在一个线程上运行用于运行各神经网络中之一的代码,使得代码容易编写,因此架构100易于理解。因为工作线程立即处理每个请求106因而还容易推断出延迟,并且延迟通常是最小化的。最后,因为每个请求106单独被处理,所以该架构使得更容易推断出故障转移。

虽然系统100可易于实施,但其不是非常有效。因此,需要提供更有效的神经网络部署并同时满足处理要求的系统和方法。



技术实现要素:

本申请的目的在于提供一种用于提高数据处理请求的吞吐量的分批方法、用于处理与神经网络模型有关的请求的批处理系统以及分批生成器。

根据一个方面,提供了一种用于提高数据处理请求的吞吐量的分批方法,该方法可包括:以至少部分未知的定时,接收与待通过使用神经网络模型来处理的请求相关的数据,所述请求受一个或多个约束的限制;利用所述一个或多个约束中的至少之一,将所述数据中的至少一些动态聚集成分批;以及利用编排多个线程的单个线程来处理所述分批,以分担从存储器加载所述神经网络模型的负荷,从而提高数据吞吐量。

根据另一个方面,提供了一种用于处理与神经网络模型有关的请求的批处理系统,该系统可包括:一个或多个计算设备,其中每个计算设备包括:至少一个处理器以及存储设备;分批生成器组件,接收与不同请求相关的数据,以及根据一个或多个约束将来自至少两个不同请求的数据块动态聚集为分批;以及计算引擎组件,通信地联接至所述分批生成器,所述计算引擎组件在编排多个线程的单个线程中处理所述分批,以分担从存储器加载所述神经网络模型的负荷,从而提高数据吞吐量。

根据又一个方面,提供了一种分批生成器,可包括:接收模块,以至少部分未知的定时,接收与待通过使用神经网络模型来处理的请求相关的数据,其中所述请求受一个或多个约束的限制;聚集模块,利用所述一个或多个约束中的至少之一,将所述数据中的至少一些动态聚集成分批;以及处理模块,利用编排多个线程的单个线程来处理所述分批,以分担从存储器加载所述神经网络模型的负荷,从而提高数据吞吐量。

附图说明

将参考本发明的实施方式,这些实施方式的示例可在附图中示出。附图旨在是说明性的,而并非进行限制。虽然本发明在这些实施方式的上下文中进行总体描述,但是应理解,这些描述不旨在将本发明的范围限制于这些具体实施方式。附图中的项目并未按比例绘制。

图1示出了用于部署深度神经网络的典型架构配置。

图2示出了根据本公开实施方式用于部署神经网络的架构配置。

图3示出了根据本公开实施方式可用于部署神经网络的示例性服务器架构。

图4示出了根据本公开实施方式用于部署神经网络以增加数据处理请求吞吐量的示例性分批方法。

图5示出了根据本公开实施方式使用预处理的示例性分批方法。

图6呈现了示出传统设定中在80ms内处理来自4个流的数据块的情况的图表。

图7呈现了示出根据本公开实施方式,在分批设定中在80ms内处理来自20个流的数据块的情况的示例性图表。

图8示出了根据本公开实施方式计算设备/信息处理系统的简化框图。

具体实施方式

在以下说明书中,出于解释的目的,阐述具体细节以提供对本发明的理解。然而,对于本领域技术人员将显而易见的是,本发明可以在无需这些细节的情况下实现。此外,本领域技术人员将意识到,如下所述,本发明实施方式可以以多种方式来实现,诸如有形计算机可读介质上的过程、装置、系统、设备或方法。

附图所示的组件或模块是本发明示例性实施方式的说明,旨在避免混淆本发明。还应理解,在整个说明书中,组件可描述为能包括子单元的单独的功能单元,但是本领域技术人员将意识到,各组件或其部件可划分成单独的组件;或者可集成在一起,包括集成在单个系统或组件的内部。应注意,本文所讨论的功能或操作可实现为组件。组件可实现为软件、硬件或其组合。

此外,附图内组件或系统之间的连接不旨在局限于直接连接。更确切地,这些组件之间的数据可被中间组件更改、重编格式或者以其他方式被改变。另外,可使用附加的连接或更少的连接。还应注意,术语“联接”、“连接”或“通信联接”应理解成包括直接连接、通过一个或多个中间设备实现的非直接连接以及无线连接。

在说明书中,提及“一个实施方式”、“优选实施方式”、“实施方式”或“各实施方式”是指:结合实施方式所述的具体特征、结构、特性或功能包括在本发明的至少一个实施方式中,并且可存在于一个以上的实施方式中。另外,在本说明书中各处,上述短语的出现不一定全部参考相同的实施方式。

在说明书中各处,某些术语的使用是为了示例,而不应解释成限制。服务、功能或资源不限于单个服务、功能或资源;这些术语的使用可表示可以为分布式或聚合式的一组相关服务、功能或资源。

术语“包括(include)”、“包括(including)”、“包括(comprise)”和“包括(comprising)”应理解成开放式的术语,任意列出以下术语是示例而不表示限制于所述项目。本文所使用的任何标题仅出于组织的目的,而不应限制本说明书或权利要求书的范围。

此外,本领域技术人员将意识到:(1)可选择性地执行某些步骤;(2)步骤不必限于本文所阐述的具体顺序;(3)可按不同的顺序来执行某些步骤;以及(4)可同时执行某些步骤。

虽然当前专利公开中作为示例使用了神经网络部署和分类请求,但是应注意,本公开并非受此限制,本公开的诸方面可出于其他目的来应用或实施,包括但不限于其他的计算密集型问题。

A.概述

在包括广告投放、图像和视频识别、语音识别、语言处理、网页搜索等诸多领域中,深度神经网络变得日益重要。虽然对于很多重要任务,深度神经网络提供相对优良的准确度,但是大规模部署深度神经网络可能是昂贵的。这主要归因于伴随可能需要大量数学运算的大型神经网络的分类数据点的计算负荷。

典型数据中心的架构使得大型神经网络的部署复杂化。随着请求经由因特网而进入,数据中心在许多服务器上对这些请求进行负载均衡。为了提供可靠服务,在服务器或网络故障的情况下,数据中心还应提供允许请求被重新路由的故障转移能力。此外,因特网服务倾向于要求低延迟响应以保持服务的交互性。这些要求促生了用于部署神经网络的现有系统,在现有系统中,各个请求由负载均衡器发送至执行计算的工作服务器。每个请求由单个线程提供服务,以控制延迟和弹性要求。

从计算角度出发,使用处理器来为来自多个独立线程的多个请求提供服务并非最佳。这是因为,每个线程从存储器重复地加载相同的神经网络模型。在单个线程中为多个请求提供服务会更有效率,可编排线程池以分担从存储器加载神经网络模型的负荷,从而促使负重的再利用。换言之,通过去除线程与用户(用户被分配给各自单独加载神经网络模型的多个线程)的一对一关系,转而使用一个线程来统筹处理所有请求,多个线程可在加载神经网络和执行(矩阵到矩阵乘法)计算时协同工作。

本文提出分批系统和方法的实施方式,该系统和方法允许共享公共神经网络模型的单个线程统筹处理多个请求,因而使得每个请求的计算更有效率。在实施方式中,构建分批系统以显著提高对请求进行分类的效率,同时满足严格的延迟约束以及保持交互性。分批系统的实施方式既可在完全形成了分类请求的环境下使用,又可在对数据流执行分类时使用。

如上所述,虽然容易推断出典型架构,但是其计算效率低。这主要是因为,尽管事实上多数情况下使用相同的模型,但是每个工作线程独立地加载神经网络模型。因此,部署神经网络的传统方式需要从存储器加载和重加载相同的神经网络模型,因而浪费了大量存储器带宽。因此希望实现能够更有效地部署神经网络配置的系统和方法。

B.示例性实施方式的实现

图2示出了根据本公开实施方式用于部署神经网络的架构配置。架构200包括数据中心210,数据中心210可包括负载均衡器202和一个或多个服务器204,一个或多个服务器204各自包括分批生成器214和计算引擎216。

在实施方式中,如图1所示,负载均衡器202向数据中心210中的服务器204发送请求206。在实施方式中,负载均衡器202在数据中心210的服务器204上对请求进行均衡以保持服务器使用效率。在实施方式中,针对已发送给具体服务器204的请求而到达的数据将被路由至同一服务器204。图2中的服务器204包括分批生成器214,在实施方式中,分批生成器214将请求206动态聚集成将输入至计算引擎216的数据处理请求分批。在实施方式中,分批生成器214基于应用级约束(诸如,执行分类所需的终端用户计算延迟)或基于计算引擎216的性能或者基于二者来生成分批。

在实施方式中,分批生成器214生成的请求分批包括数据块。应理解,数据块的长度不需要与由负载均衡器202发送并到达数据中心210处的数据包212的长度相同。

图3示出了根据本公开实施方式可用于部署神经网络的示例性服务器架构。该架构的实施方式允许有效使用任意计算引擎,以执行神经网络分类。例如,可在中央处理单元(CPU)312、加速器314(诸如现场可编程门阵列(FPGA)、图形处理单元(GPU))或任何其他处理/信息处理设备上使用多线程实现方式。在实施方式中,计算引擎可在与主服务器CPU 308共享存储器306的处理器305上实现,或者在已经具有其自身的存储器320的处理器310上实现,如图3所示。

在实施方式中,分批生成器可用于隐藏传递请求数据和结果(例如,向加速器314传递数据或传递来自加速器314的数据)时所涉及的延迟。例如,分批生成器可接收请求,并同时向计算引擎发送分批。由于在接收来自下一分批的数据的同时传递来自前一分批的数据,因此分批生成器可有效地隐藏或降低延迟。

应注意,在估算神经网络时本公开的实施方式比先前的方法更有效,这是因为分批生成器生成的分批包括来自多个用户的数据并在共享的神经网络模型上被处理。在相当长时间内,已经提高了多种类型处理器的运算强度。这意味着,存储器带宽变得相对更加重要,而数学运算变得相对成本较低。这节约了存储器带宽,因此在处理器变得运算强度更高时尤其有利。本公开的实施方式还很好地适于面向吞吐量的处理器,诸如需要大量工作以使效率饱和的GPU。

下面针对一般的且具有挑战性的情况提出示例性实现方式,其涉及对包括具有固定长度或可变长度的有序的包序列的流输入进行分类,并同时满足延迟约束。在实施方式中,可通过将每个包指定为具有(无意义的)流的上一个包,以近似相同的方式处理非流输入。

如本文所使用,术语“请求”、“用户请求”、“数据处理请求”、“流”、“流输入”和“数据流”可交换使用。术语“用户”与“流”的关联在于,每个流与单个用户相关联。术语“块”表示与神经网络输入大小有关的数据的大小。术语“包”应理解成表示可在网络上传送的一组数据。术语“包”不应解释成将本发明实施方式限制于以太网或三层结构网络。术语“包”、“帧”、“数据”、“数据报”、“信元”或“数据流量”可交换使用,并且可由表示一组数据的其他术语代替。

虽然假设神经网络模型用于处理数据,但是本领域技术人员将理解,根据本公开实施方式,可使用其他技术、模型或网络来处理数据。

“数据”是指若干类型输入数据中的任意输入数据。例如,当在语音设定中转录语音时,每个包可表示若干毫秒(例如,80ms)的音频。在视频环境中,每个包可表示当前图像与前一图像之间的差别。在图像识别中,每个包可表示整个图像的标题。

在实施方式中,延迟约束可表明,在流中上一包到达之后固定时间量中处理整个流。这可表示为:

T处理整个流<T上一包到达可接受延迟

其中,T处理整个流表示应当完成整个流的处理的时间;T上一包到达表示上一包的到达时间;以及Δ可接受延迟表示根据应用的可接受延迟。在延迟通常非常严格的在线设定中,Δ可接受延迟有可能小于1秒。

在实施方式中,一个目标可以是同时处理尽可能多的流,并且满足延迟约束(例如,保持较高吞吐量)。相比之下,现有方法分别独立地处理每个流,以确保低延迟并保持灵活性。

在本公开的实施方式中,应用了这样的模型/架构,其中多个请求被同时输送至实现神经网络的计算引擎。在实施方式中,使用分批方法以允许神经网络以与为单个用户处理数据的方式相似的方式来为多个同时存在的用户处理数据。图4示出了根据本公开实施方式用于部署神经网络以提高数据处理请求的吞吐量的示例性分批方法。在步骤402,当分批生成器例如以异步方式接受包括与多个用户相关联的包的数据处理请求时,启动分批方法。包可到达各自与用户相关联的流中。包可例如通过对来自多个用户的数据流进行负载均衡的负载均衡器而到达。在实施方式中,包的到达时间可以是未知的并受应用级约束的限制,诸如延迟约束、计算引擎的性能特性等。

在步骤404,分批生成器在应用级约束内将来自请求的数据动态聚集为分批,该分批包括来自一个或多个请求(例如状态请求)的数据。

在步骤406,利用仅一次加载到存储器和/或从存储器加载的公共神经网络对该分批进行处理(例如,以对音频流执行分类),以降低计算延迟要求,因而增加数据流的吞吐量。

在步骤408,输出结果,例如输出分类结果。因此,节约了存储器带宽并提高了计算效率。

在实施方式中,分批生成器在单个线程中运行,并且具有以下任务:

a)预处理数据;

b)将经预处理的数据封装到被若干用户共享的分批矩阵中;以及

c)向计算引擎转发该分批矩阵。

在实施方式中,分批生成器维护三种类型的数据结构:

1)用于每个用户的输入缓冲器;

2)用于每个用户的预处理缓冲器;以及

3)分批的链接列表(即,输入至神经网络的矩阵),其可表示为分批列表。在诸如语音或视频处理的应用中,神经网络可按预定顺序处理分批,以确保计算引擎生成正确的输出。在实施方式中,可在两个或更多个用户之间共享分批。在实施方式中,可以不执行预处理。

图5示出了根据本公开实施方式使用预处理的示例性分批方法。在步骤502,当用于具体用户的包到达分批生成器处时启动分批方法。

在步骤504,将数据复制到用于该用户的输入缓冲器,之后可将包丢弃。

在步骤506,预处理输入缓冲器。预处理的示例是将音频信号转换成谱图以及其他处理。在实施方式中,可以不执行预处理。

一旦预处理完成,在步骤508,将结果放置到用于该用户的预处理缓冲器中。在一些应用中,预处理可发生在数据块中。例如,语音系统频繁地使用需要大小固定的语音输入窗口的谱图。因此,在实施方式中,在没有来自接下来的包的数据的情况下,可能无法确保能够预处理用户的包。

在实施方式中,在步骤510,如果预处理缓冲器至少与神经网络所需的输入一样大,则从预处理缓冲器向分批列表中下一合格的分批传递块(其大小可通过神经网络输入大小来确定)。在实施方式中,对于合格的分批,不应包含正在为当前用户处理的任何数据。在实施方式中,分批的大小受到限制,使得整个分批也不合格。在图像或视频识别应用中,块可表示整个图像;在语音识别应用中,块可表示固定长度的输入谱图。

在实施方式中,在步骤512,分批生成器可在所有活跃用户上循环,以填充该分批。

在步骤514,分批生成器之后可判定是否向计算引擎发送一个或多个分批。在实施方式中,可存在若干方式来作出判定:

1)一个简单的方法是,仅在计算引擎不忙碌的情况下发送分批。

2)另一更结构化的方法是,在满足以下条件中的一个的情况下发送分批:

a)分批包含下一包已到达的用户的数据;计算引擎的处理时间加上通过分批生成器进行额外迭代所需的时间会超过延迟约束。

b)分批列表被充分填满,使得如果对于任一活跃用户的上一包现在到达,将不可能满足延迟约束。

在实施方式中,为了能够实施后一方法,对于系统的不同部分而言,合理地精确界定处理时间可能是必需的。为了更有效率,在实施方式中,分批生成器可将对延迟敏感的分批与较大但更有效的面向吞吐量的分批聚集在一起,其中,对延迟敏感的分批可在较高优先级下但以较低的计算效率来运行以满足延迟约束;面向吞吐量的分批处理大部分计算工作。在实施方式中,分批生成器持续循环直到处理终止。

考虑到延迟约束为80ms的方案,对于一个用户,计算引擎耗费20ms来处理数据块;而对于十个用户组成的分批,计算引擎耗费40ms来处理数据块。在传统示例中,为了满足延迟约束,可同时处理仅来自4个流的数据。图6呈现了示出传统设定中一个用户每次在80ms中处理来自4个流的数据块的情况的图表。

相比之下,利用根据本公开各实施方式的分批方法,每次可在十个用户组成的分批中同时处理来自20个流的数据块。图7呈现了输出根据本公开实施方式,在分批设定中在80ms内处理来自20个流的数据块的情况的示例性图表。利用“+”表示的框是指来自该流的数据块正在被处理;利用“–”表示的框是指流被阻断。

本领域技术人员将理解,计算引擎的计算时间与延迟要求之间的差异较大将使得分批机会更大。

在实施方式中,本专利文件的诸方面可涉及信息处理系统/计算设备。出于本公开的目的,信息处理系统可包括:可出于商业、科学、控制或其他目的而操作成求解、计算、确定、分类、处理、传输、接收、检索、发起、路由、切换、存储、显示、传送、显露、检测、记录、复制、操纵或利用任意形式的信息、情报或数据的任何装置或装置集。例如,信息处理系统可以是个人计算机(例如,膝上计算机)、平板计算机、平板手机、个人数字助理(PDA)、智能电话、智能手表、智能包装、服务器(例如,刀片式服务器或机架式服务器)、网络存储设备或任意其他适当的设备;以及可在大小、形状、性能、功能和价格方面变化。信息处理系统可包括随机存取存储器(RAM)、一个或多个处理资源(诸如,中央处理单元(CPU)或者硬件或软件控制逻辑)、ROM和/或其他类型的存储器。信息处理系统的其他组件可包括:一个或多个磁盘驱动器;用于与外部设备通信的一个或多个网络端口;以及诸如键盘、鼠标、触摸屏和/或视频显示器的各种输入和输出(I/O)设备。信息处理系统还可包括能操作成在各个硬件组件之间传输通信的一个或多个总线。

图8示出了根据本公开实施方式的计算设备/信息处理系统(或计算系统)的简化框图。将理解,虽然信息处理系统可进行不同配置并且可包括不同的组件,但是应理解,针对系统800所示的功能可操作成支持信息处理系统的各实施方式。

如图8所示,系统800包括提供计算资源并控制计算机的一个或多个中央处理单元(CPU)801。CPU 801可利用微处理器等来实现,并且还可包括一个或多个图形处理单元(GPU)817和/或用于数学计算的浮点协处理器。系统800还可包括系统存储器802,系统存储器802可具有随机存取存储器(RAM)或只读存储器(ROM)的形式,或既具有RAM又具有ROM的形式。

如图8所示,还可提供多个控制器和外围设备。输入控制器803表示通向诸如键盘、鼠标或光笔的各种输入设备804的接口。还可具有与扫描器806通信的扫描器控制器805。系统800还可包括用于与一个或多个存储设备808交互的存储器控制器807;一个或多个存储设备808中的每一个都包括诸如磁带或光盘的存储介质,或者包括可用于记录操作系统、实用程序和应用的指令程序的光学介质,其中应用可包括实现本发明各方面的程序的实施方式。根据本发明,存储设备808还可用于存储已处理的数据或待处理的数据。系统800还可包括用于向显示设备811提供接口的显示器控制器809,显示设备811可以是阴极射线管(CRT)、薄膜晶体管(TFT)显示器或其他类型的显示器。计算系统800还可包括用于与打印机813通信的打印机控制器812。通信控制器814可与一个或多个通信设备815交互,通信设备815能使系统800通过包括因特网、云资源(例如,以太网云、以太网上光纤信道(FCoE)/数据中心桥接(DCB)云等)、局域网(LAN)、广域网(WAN)、存储区网络(SAN)的多种网络中的任意网络或者通过包括红外信号的任意合适电磁载体信号而连接至远程设备。

在所示系统中,所有主要系统组件可连接至总线816,总线816可表示一个以上的物理总线。然而,各种系统组件可以或者不必彼此物理相邻。例如,输入数据和/或输出数据可从一个物理位置远程传输至另一物理位置。此外,实现本发明各方面的程序可在网络上从远程位置(例如,服务器)访问。该数据和/或程序可通过多种机器可读介质中的任意介质而传送,机器可读介质包括但不限于:磁介质,诸如硬盘、软盘和磁带;光学介质,诸如CD-ROM和全息设备;磁光介质;以及专门配置成存储或存储并运行程序代码的硬件设备,诸如特定用途集成电路(ASIC)、可编程逻辑设备(PLD)、闪速存储设备以及ROM和RAM设备。

对于一个或多个处理器或处理单元,本发明的实施方式可利用指令在一个或多个非暂态计算机可读介质上编码,以执行各步骤。应注意,一个或多个非暂态计算机可读介质应包括易失性和非易失性存储器。应注意,替代实施例也是可以的,包括硬件实现方式或软件/硬件实现方式。硬件实现的功能可利用ASIC、可编程阵列、数字信号处理电路等来实现。因此,在任意权利要求中,术语“装置”既旨在覆盖软件实现方式又旨在覆盖硬件实现方式。类似地,本文所使用的术语“计算机可读介质”包括具有在其上执行的指令程序的软件和/或硬件,或软件和硬件的组合。考虑到这些实现方式的替代方式,应理解,附图和所附说明提供功能信息,本领域技术人员需要编写程序代码(即,软件)和/或制造电路(即,硬件)来执行所需的处理。

应注意,本发明实施方式还可涉及具有非暂态有形计算机可读介质的计算机产品,该计算机可读介质上具有用于执行各种计算机实现的操作的计算机代码。介质和计算机代码可以是出于本发明的目的专门设计和构造的介质和计算机代码,或者可以是相关领域技术人员公知或可获得的类型。有形计算机可读介质的示例包括但不限于:磁介质,诸如硬盘、软盘和磁带;光学介质,诸如CD-ROM和全息设备;磁光介质;以及专门配置成存储或存储并运行程序代码的硬件设备,诸如特定用途集成电路(ASIC)、可编程逻辑设备(PLD)、闪速存储设备以及ROM和RAM设备。计算机代码的示例包括诸如由编译器生成的机器代码,以及包含由计算机利用解释器运行的高级代码的文件。本发明的实施方式可整体地或部分实施为可处于由处理设备运行的程序模块中的机器可运行指令。程序模块的示例包括库、程序、例程、对象、组件和数据结构。在分布式计算环境中,程序模块可物理地设置为本地、远程或二者的环境中。

本领域技术人员将意识到,计算系统或编程语言对于本发明的实施并非很关键。本领域技术人员还将意识到,诸多上述元件可物理地和/或功能性地分成子模块或组合在一起。

应注意,权利要求中的元件可不同地布置,包括具有多个从属物、配置和组合。例如,在实施方式中,各权利要求的主题可与其他权利要求组合。

本领域技术人员将理解,前述示例和实施方式是示例性的,而不限制本发明的范围。其意图是,在阅读说明书并研究附图之后对于本领域技术人员显而易见的所有置换、增强、等同、组合及其改进包括在本发明的实际精神和范围内。

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