掌桥专利:专业的专利平台
掌桥专利
首页

加速决策树推理

文献发布时间:2024-04-18 20:01:30


加速决策树推理

背景技术

本发明总体上涉及决策树领域。特别地,本发明涉及加速决策树推理。

发明内容

根据本发明的各方面,提供了一种执行以下操作(不一定按以下顺序)的方法、计算机程序产品和/或系统:在存储器中设置包括连续存储器块的存储器缓冲器;获得决策树,所述决策树包括节点,所述节点包括分裂节点和叶节点,其中所述分裂节点中的每个包括至少两个子节点,所述至少两个子节点根据在所述分裂节点中的每个之后访问子节点的可能性进行排序;将所述节点映射到所述存储器块的相应块上,所述存储器块中的每一个存储所述节点中的对应一者的属性,其中根据深度优先搜索次序执行所述映射,其中所述分裂节点中的每一个和每个分裂节点的任何子节点被映射到所述存储器块的连续块上,其中所述分裂节点中的相同节点的有序子节点被映射到所述存储器块的连续块上;通过根据所述存储器缓冲器中所述存储器块的顺序来处理从所述存储器访问的节点的属性来执行所述节点;以及基于执行所述节点的结果返回推理结果。

附图说明

本发明的这些和其他目的、特征、和优点将从其说明性实施例的以下具体实施方式中变得清楚,这些实施例将结合附图进行阅读。为了清晰起见,提供了说明,以便于本领域技术人员结合具体实施方式理解本发明。在附图中:

图1示出了根据本公开的实施例的初始决策树,该初始决策树包括分裂节点和叶节点;

图2根据本公开的实施例示出了图1的决策树的重新安排版本,其中鉴于此类节点的属性映射到存储器缓冲区的块上,已经根据其访问可能性交换了这些节点中的一些;

图3示出了根据本公开的实施例的图2的决策树的连接节点的选择、连同用于执行这种节点的节点的特征标识符和阈值;

图4A和4B示出了根据本公开的实施例的节点的属性被映射到其上的存储器缓冲区的块。在图4A和图4B的每一个中,每个分裂节点被映射到8字节的存储器块上,其中,每个块被分解为每个4字节的两个子块。在图4A中,根据本公开的实施例,每个叶节点被映射到4字节的块上,而在图4B中,每个叶节点被映射到8字节的块上;

图5是示出根据本公开的实施例的被执行以获得具有适当排序的节点的决策树的高级预备步骤的流程图;

图6是示出根据本公开的实施例的通过执行决策树的重排序节点来加速推理的方法的高级步骤的流程图;以及

图7示意性地表示如本发明的实施例所涉及的适用于本发明的实施例中所涉及的一个或多个方法步骤的通用计算机化系统。

附图示出了如在实施例中所涉及的设备或其部分的简化表示。附图中类似或功能上类似的元件已经分配有相同的附图标记,除非另外指明。

现在将通过非限制性实例描述体现本发明的计算机化的方法和计算机程序产品。

具体实施方式

根据本发明的方面,提供了用于加速决策树推理的方法、系统和/或计算机程序产品。具体地,方法、系统和/或计算机程序产品的实施例提供了根据它们的访问可能性交换决策树的一些节点。通过根据存储器缓冲区的存储器块的顺序处理从存储器访问的节点属性来执行节点,决策树节点的属性根据深度优先搜索顺序被映射到存储器缓冲区。

决策树学习是在机器学习中使用的预测建模方法。其依赖于一个或多个决策树,从而形成预测模型。决策树由于它们的简单性和可解释性而被广泛地使用的机器学习算法。不同类型的决策树是已知的,包括分类树和回归树。二元决策树基本上是涉及耦合的决策过程的结构。从根开始,评估特征,并且选择根节点的两个分支中的一个。重复该过程直到达到叶节点,叶节点的值用于组装最终结果。

随机森林和梯度提升是重要的机器学习方法,其基于二元决策树。在这种方法中,并行“行走”多个决策树直到到达叶节点。然后将取自叶节点的结果平均(回归)或用于多数表决(分类)。这样的计算可能是耗时的(和资源),因此可能需要加速基于树的推理,特别是对于随机森林和/或梯度提升方法。

加速基于树的推理(如针对随机森林和梯度提升方法)可以通过加速如下来实现:(i)单独的二元决策树处理和/或(ii)多个二元决策树的并行处理。虽然实施例也解决了第二种方法,但是本发明集中于第一种方法。

参照图2至图6,现在详细描述本发明的第一方面,其提供加速决策树推理的方法。如在图6中所描述的,方法的实施方式可以基本上包括在S20设置存储缓冲器,在s#0和S40将适当布置的决策树的节点映射至该存储缓冲器的块,并且在S50执行节点以在S60返回结果。注意,在本公开中,这种方法及其变体可以统称为“本方法”。所有参考标号Sn涉及图5和图6的流程图的方法步骤,而参考标号涉及图7所示的计算机化单元的物理部件或组件以及在本发明的实施方式中使用的概念(诸如决策树和决策树节点)。

详细地,在用于执行该方法的计算机化单元101或计算机化系统的存储器中设置存储器缓冲器(在图6中的步骤S20)。该存储器缓冲器包括在此时尚未填充的连续存储器块。

接下来,访问决策树20(图6的步骤S10)。假设该树已经被适当地重新排列。即,给定初始树10(图1),至少一些节点110根据它们的访问可能性重新排序,以获得诸如图2中所示的决策树20。节点120包括分裂节点和叶节点。在图1和图2的实例中,分裂节点由参考标号SN0(对应于根节点)至SN14表示,而叶节点在图1和图2的示例中表示由参考标号LN0至LN15。

一旦树被重新安排(图2),每个分裂节点包括至少两个子节点,该至少两个子节点根据其在这个分裂节点之后访问的可能性进行排序。换言之,在每个层中,根据访问的可能性对同一父节点的子节点进行排序,使得给定分裂节点的第一子节点在统计上比该同一分裂节点的第二子节点更可能被访问。类似地,此分裂节点的第二子节点比第三子节点更可能被访问,等等。当考虑树20的图形表示时,这相当于子节点全部沿着相同方向排序,诸如从决策树20的同一侧(例如,从图2的示例树中的左手侧)。

可以使用若干方法来确定访问的可能性。节点120的排序可以尤其基于节点执行的条件概率,例如,在已经执行给定子节点的父节点之后访问给定子节点的概率。在可以识别节点的清楚路径(或序列)(其在决策路径方面比经过周围节点的路径“更热”)的情况下,可以交换子节点,从而使得最可能的节点总是在左边(或总是在右手侧)。如稍后详细讨论的,访问的可能性可以例如使用训练数据或任何其他代表(例如,验证数据、测试数据等)来确定。

然后,重新排序的节点120被映射(在步骤S30)到先前设置的缓冲器31、32的存储器块的对应块上。作为在步骤S30的映射操作的结果,每个存储器块存储对应节点120的属性,节点120可以是分裂节点或叶节点。节点的属性可以包括执行节点所需的操作数。例如,它们可以包括特征标识符(也称为特征选择器)和/或用于比较的阈值,以及更一般地,评估决策树节点所捕获的规则所需的所有变元。决策树的每个分裂节点标记有特征标识符并且与阈值相关联以执行操作,由此例如对应于特征标识符的特征值与阈值进行比较,如本身已知的。这在图3中示出,图3描述了树20的选择的节点120以及相应的特征标识符值(“特征ID”)和阈值。

有趣的是,在一些实施例中,S30处的映射可以根据深度优先搜索(DFS)顺序来执行,与通常用于决策树的宽度优先顺序相反。结果,每一分裂节点及其子节点中的任一者被映射到存储器块的连续块上。同时,因为至少一些节点120已经被重新排序,所以DFS映射使得同一父节点(分裂节点)的经排序的子节点也被映射到连续的块上。

重要的是,“连续的”不一定意味着“相继的”,即,直接在前一个之后。相反,连续的意味着在另一个之后到来。例如,1、5、9、18等是连续数,但不是相继的数(如1、2、3、4、…)。然而,每个分裂节点的第一子节点(即,在操作中,在该分裂节点之后要访问的更有可能的节点)可以有利地被映射到与对应于该分裂节点的块相继的存储器块上。注意,出于稍后将变得明显的原因,节点属性被映射到其上的存储器块中的每一个实际上可以由两个相继的子块组成。

随后在S50通过处理如从存储器访问的节点120的属性来执行节点120。然而,根据存储缓冲器31、32中的存储块的顺序访问这些属性。例如,在一些实施例中,在S30处的映射操作之后,访问顺序由存储缓冲器31、32中设置的顺序施加。注意,存储器缓冲器31、32通常可以在软件中实现为虚拟数据缓冲器,尽管原则上也可以在该硬件的给定存储器位置中以硬件实现。存储器缓冲器可以有利地用于将其包含的数据映射到连续的存储器高速缓存行上,如在稍后的一些实施例中描述的那样。

最后,在步骤S60处返回推理结果。该结果基于执行节点120的结果。可以类似地执行若干决策树,如在集合模型中,例如,随机森林或梯度提升模型。由此,可最终基于从每一决策树获得的推理结果来构造全局结果,例如以用于分类或回归目的。

根据本方法的实施例,用于执行节点的存储器缓冲区31、32的块结构反映了决策树20的安排,如在对其节点120中的至少一些节点重新排序之后获得的。即,对于该决策树20的每个分裂节点,第一子节点总是在相同的处理侧。存储器缓冲器的存储器块位于相继的偏移处,这些相继偏移不需要是恒定的,尽管它们可能是恒定的。使用分裂节点的恒定偏移和叶节点的恒定偏移使得更容易依赖于块的隐式排序,使得到子块(即,对应于子节点的块)的显式指针不需要存储在存储器块中。

所提出的方法可以提供多个优点。首先,例如,由于存储器块的优化顺序,可允许更好地利用数据的空间局部性,无论是在存储器块中还是在这些块被映射到的高速缓存行中。作为示例,在执行节点时,可以加载单个高速缓存行,其包含最可能执行路径上的节点的属性。单个高速缓存行可能包含执行该路径上的所有节点所需的所有必要属性。这进而可以导致更高的高速缓存性能和高速缓存和主存储器存储器带宽的利用。即,可能需要较少的存储器访问。

本发明的不同实施例导致存储要求的实质性减少,以及推理等待时间和吞吐量的实质性改进。具体地,实施例使得可以将推理时间减小1.5至70(近似地)之间的因子,这取决于所考虑的测试数据、参考方法和平台。然而,在实践中,推理时间通常可以被减少2至3之间的因子。

此外,本公开可以有利地支持决策树的向量处理,如下文参考一些实施例所讨论的。因此,可以并行处理同一决策树的多个节点,从而导致针对给定存储器访问粒度(例如,高速缓存行)的更高处理效率。本发明还可应用于多个推理平台,例如,包括中央处理单元(CPU)和现场可编程门阵列(FPGA)。

现在参考本发明的具体实施例来详细描述所有这些内容。首先,如先前所提供的,根据在存储器缓冲器中设置的块的顺序,存储器缓冲器31、32可以有利地被映射(图6中的步骤S40)到用于执行节点的高速缓冲存储器的高速缓存线上。即,按照缓冲器31、32中设置的存储块的相同顺序,将存储缓冲器31、32的存储块顺序映射到缓存线的存储块上,如图4B所示。因此,随后在S50通过处理如从高速缓存行的存储器块获得的节点120的属性来执行节点120。

注意,本公开的实施例可以使用任何高速缓存级来实现,尤其是在节点120由CPU执行的情况下。对于具有FPGA的实施例,高速缓存线可从主存储器提取且馈送到FPGA的内部存储器,所述内部存储器可被视为用于FPGA的高速缓冲存储器。

有利地,在一些实施例中,对应于分裂节点的存储器块不需要包括指向这些分裂节点的子节点的指针。相反,本公开的实施例可以依赖于存储块的隐式排序。为了使此更容易,在一些实施例中,可强加对应于分裂节点的存储器块具有全部相同大小S,而对应于叶节点的存储器块可全部具有相同大小L。注意,L不必等于S。实际上,L通常可以小于或等于S。知道存储器块之间的偏移可以使得更容易根据源自所选映射的存储器块的隐式排序确定从存储器访问节点120的属性的位置。由此,可能不需要将指针存储在存储器块中。

以下参考一些优选实施例解释可以如何检索相关存储块。首先,一些父子节点对可以有利地映射到相继(而不仅仅是连续的)的块上。也就是说,可执行S30处的映射以便针对由分割块和第一子块组成的任何两个存储块是存储缓冲器31、32中的相继存储块。分裂块对应于树20的分裂节点,而第一子块对应于所述分裂节点的第一子节点(如所排序)。这允许更高效的存储器访问和处理,因为可以从紧跟在对应于其父节点的块之后的存储器块读取最可能的子节点属性。

在一些实施例中,如例如在图4A和图4B中示出的,对应于分裂节点的存储块可以全部具有S字节(其中,例如,S=8)的相同大小,而对应于叶节点的存储块可以全部具有L字节的相同大小,其中,例如,在图4A中S=4或图4B中S=8。因此,在存储器缓冲器31、32中,在对应于分裂节点的存储器块之后的存储器块偏移S字节,而在对应于叶块的存储器块之后的存储器块偏移L字节。因而,为了在已处理其父节点的属性之后访问第一子节点的属性,读取在缓冲器31、32或相应的高速缓存行中移位8字节的数据就足够了。在不太可能的情况下,其中要执行第二子节点而不是第一子节点,则可以通过读取移位较大字节数的数据来访问此节点的属性。照此,可以因此利用块的隐式排序,而不是依赖于指针。可设计精确规则来访问其他节点,如稍后详细解释的。

如可以认识到的,节点120在树20中(至少部分地)重新排序的事实可以简单地由与节点的属性一起存储的适当标示捕获,如现在参照图4A和图4B解释的。即,在一些实施例中,在步骤S30处执行的映射操作可以包括针对每个分裂块设置指示在执行该分裂节点时将执行的操作的标示。该标示为根据该分裂节点的子节点的排序(例如,根据该分裂节点的子节点按照其访问可能性在树20中如何排序)而设置的值。详细地,由于每个分裂节点的子节点在每个树层上的横向排序,最可能的节点全部在树20的同一横向侧上,例如,图2中的左手侧。因此,相对于它们原本在初始树10(图1)中将具有的默认布置交换的父节点,可有利地包括确定作为执行这样的父节点的一部分而执行的数学运算的标示。这样,交换节点相当于仅改变与它们的父节点相关联的标示。对应于在分裂节点之后最可能被访问的子节点的块可以立即与对应于该分裂节点的块邻接,而不需要对应于该分割节点的块包括指向其子节点的指针。由于标示值,算法知道要考虑什么移位。

在一些实施例中,决策树20通常可以是二元决策树。在那种情况下,该标示指示两个互补的数学比较运算之一,例如基于不等式。作为示例,一个操作可以由比较特征值x是否严格小于阈值t(例如,x<t)组成,在这种情况下,互补操作将由比较x是否大于或等于t(例如,x≥t)组成。相反,运算之一可以是“>”,在这种情况下,互补运算将是“≤”。换言之,这两个互补的数学比较运算可以包括测试x<t或x≥t是否为真或x>t或x≤t是否为真。更一般地,可以类似地为非二元决策树设计补充操作的集合,其中对于树的分裂节点中的一个或多个可以涉及两个以上的子节点。

在图2中,所交换的子节点的父节点用星号标记;它们对应于在图4A和图4B中存储等于1的标示值的块。在图4A和图4B的示例中,存储块分别建立在4个字节的子块上。每个分裂块为S=8字节长。按照旨在确保与其他计算机化方法的兼容性的可选设计选择,前两个子块被留空。然后,根节点(SN0)被映射到接下来的两个子块上。具有4个字节的第一子块被用于对特征选择器(FT)和标示值两者进行编码,而具有4个字节的第二子块被用于对比较阈值(TH)进行编码。例如,第一子块(4字节)可包含31位特征选择器(FT)和1位标示值,其中例如位值0对应于“<”,而位值1对应于“≥”。照此,标记可被有效地编码,并且比指针占用更少的存储空间,这可导致涉及100个或1000节点的树的方法的显著益处,每个树具有1000个节点。第二子块(4字节)存储浮点阈值(TH)、单精度值。叶节点要返回的结果值各自可以是映射到4个字节的单个子块上的单精度值(如图4A中)或存储在两个子块上的双精度值(总计8个字节,如图4B中)。在变体中,结果值可以对应于整数,例如用于分类目的,并且可以被映射到更少数量的字节上。

如前所述,可以设计精确规则来检索相关块。在一些实施例中,根据以下规则检索此隐式排序。首先,第一子块(对应于此给定分裂节点的第一子节点)的偏移量等于对应于此分裂节点的分裂块的偏移加上S个字节,如先前所论述。其次,第二子块(对应于该分裂节点的第二子节点)的偏移量等于相应的分裂块的偏移,加上2(R-1)×(S+L)个字节,其中,R表示在所考虑的分裂节点所在的树等级之下的决策树20中的树等级的数量。

例如,对于图2中所示的树20的根节点SN0,R=4。同样,同一分裂节点的所有子节点根据它们的访问可能性在决策树20的每一层上从左侧排序。由此,访问根节点的第一(例如,左)节点的属性需要读取相对于对应于根节点的块移位S=8字节的值。相反,访问根节点的第二(例如,右)节点的属性需要读取相对于对应于根节点的块移位了2(4-1)×(8+8)=128个字节的值(假设L=8)。接下来,访问任何后续分裂节点的第一(例如,左)节点的属性需要读取相对于对应于所述分裂节点的块移位S=8字节的值。访问分裂节点在第二级别(就在根节点级别之右下,从而使得R=3)上的第二(例如,右)节点的属性要求读取移位了2(3-1)×(8+8)=64个字节的值,等等。如可以认识到的,事实上可能不需要针对根节点下的分裂节点明确地计算公式2(R-1)×(S+L),因为将针对上一级的分裂节点所计算的移位除以2就足够了。

如之前所讨论的,决策树20的多个实例可能使用向量处理基于输入数据的不同集合并行地执行。可以有利地利用最先进的CPU的向量处理能力来加速多个树的并行处理。作为示例,由于决策树节点所需的简单处理步骤,可以使用向量指令并行地完成处理多个树。

此外,在一些实施例中,可以针对形成总体模型的一部分的两个或更多个决策树实现本方法。在那种情况下,最终推理结果将基于步骤S50的结果,如对所涉及的每个决策树所获得的结果。例如,可以对所有二元决策树上的测试数据的一部分或全部运行推理,所述二元决策树可以形成例如随机森林模型、梯度提升模型等的一部分。然而,每个二元决策树在各自的根节点处开始被独立地处理。

参考图5,以下说明了如何重新排序节点。基本上,目的是在将节点120映射(在步骤S30)到存储器缓冲器的相应块上之前,根据子节点在其父节点之后的访问可能性,从决策树20的同一横向侧重新排序子节点。尽管如此,如前所述,在一些实施例中,决策树的重新安排可以通过存储关于父节点的适当标示值来捕获,其中这样的标示值确定在执行父节点时要执行的操作。

为此目的,在初始阶段(图5)期间,初始树被设置(步骤S1)并且在S2基于训练数据学习此决策树(照常)以获得经训练的决策树10,如图1中所描绘的。即,决策树底层的认知模型通过如通常那样处理训练样本来学习其自己的参数。然后,将一些合适的输入数据馈送至模型,并且在步骤S3运行决策树10(如先前学习的)(模型的参数现在是固定的),以便例如使用热图识别子节点的访问可能性。作为示例,访问计数可被监视。然后,对于每个二进制节点(在根节点处开始),可以比较其两个子节点的访问计数。具有最大访问计数的子节点变成“第一”节点,等等。重复该过程,直到所有子节点已经被比较。最后,如图2所示,获得重新排列的树20。

用于学习访问可能性的输入数据可以简单地是训练数据本身和/或一些验证数据。有趣的是,决策树20可能在稍后阶段被进一步重新排序,例如,在已经针对实质测试数据执行了推理之后。即,考虑到更新节点到存储器块(以及因此高速缓存行,如果必要的话)的映射,访问计数可以不时地监视。

优选的情形如下。首先,在步骤S1(图5)设置初始树。随后在S2基于训练数据学习该树,以便获得经训练的决策树10。接下来,在S3,基于代表性输入数据(例如,训练数据、验证数据、一些测试数据等)运行树10以学习访问可能性。基于所学习的接入可能性,在S4处最终交换一些节点(例如,与相应父节点相关联地存储标示)以获得决策树20。然后,在S5、S10使用该树20执行图6中所示的步骤S20至S60。即,鉴于在步骤S30处将节点属性映射到此缓冲器的存储器块上,在步骤S20处设置存储器缓冲器。然后,鉴于(或同时)在S50执行树20的节点,在S40,将这样的块映射到存储器高速缓存行上,以在S60获得推理结果。

接下来,根据另一方面,本发明的实施例可以体现为用于加速机器学习推理的计算机程序产品。该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有与其体现的程序指令,其中,程序指令可由一个或多个计算机化单元101的处理装置(处理器)105执行,参见图7,以使得该处理装置执行如之前参照本方法描述的步骤。特别地,此类指令可致使计算机化单元利用向量处理,如先前所论述。

计算机化的系统和装置可以被适当地设计用于实施如本文描述的本发明的实施例。在这方面,可以理解,本文描述的方法在很大程度上是非交互的和自动的。在示例性实施例中,本文描述的方法可以在交互式、部分交互式或非交互式系统中实现。本文中描述的方法可在软件、硬件或其组合中实现。在示例性实施例中,本文提出的方法以软件实现,作为可执行程序,后者由合适的数字处理设备执行。更一般地,可实现本发明的实施例,其中使用虚拟机和/或诸如个人计算机、工作站等通用数字计算机。

例如,图7示意性地表示计算机化单元101(例如,通用计算机或专用计算机),该计算机化单元可以可能与其他类似单元交互,以便能够执行根据本方法的步骤。

在示例性实施方式中,在硬件架构方面,如图7所示,每个单元101包括至少一个处理器105、以及耦合至存储器控制器115的存储器111。每个单元101中可能涉及若干处理器(例如,CPU和/或GPU)。为此目的,每个CPU/GPU可以被分配相应的存储器控制器,如本身已知的。在变体中,单元101的控制器可耦接至FPGA,如前所述;例如,图7中所示的一些CPU/GPU可由FPGA替换。

一个或多个输入和/或输出(I/O)设备145、150、155(或外围设备)经由本地输入/输出控制器135通信地耦合。如本领域中已知的,输入/输出控制器135可以耦合到或包括一条或多条总线和系统总线140。输入/输出控制器135可具有为简单起见而省略的额外元件,例如控制器、缓冲器(高速缓冲存储器)、驱动器、中继器和接收器,以实现通信。进一步,本地接口可以包括地址、控制和/或数据连接,以实现上述组件之间的适当通信。

处理器105是用于执行软件指令的硬件设备。处理器105可以是任何定制或可商购的处理器。通常,它们可涉及任何类型的基于半导体的微处理器(以微芯片或芯片组的形式),或通常涉及用于执行软件指令的任何装置。

存储器111典型地包括易失性存储器元件(例如,随机存取存储器),并且可以进一步包括非易失性存储器元件。此外,存储器111可以结合电子、磁性、光学和/或其他类型的存储介质。

存储器111中的软件可以包括一个或多个单独的程序,每个程序包括用于实现逻辑功能的可执行指令。在图7的示例中,在存储器1中加载的指令可以包括由根据示例性实施例的在此描述的计算机化方法的执行引起的指令。存储器111还可以加载合适的操作系统(OS)。OS实质上控制其他计算机程序或指令的执行,并且提供调度、输入-输出控制、文件和数据管理、存储器管理以及通信控制和相关服务。

可能地,常规键盘和鼠标可以联接至输入/输出控制器135上。可以包括其他I/O设备140-155。计算机化单元101还可包括耦合到显示器130的显示控制器125。可选地,在一些实施例中,计算机化单元101可耦接至存储设备(例如,内部、外部等),诸如存储装置121。任何计算机化单元101通常将包括用于耦合到网络的网络接口或收发器160,以进而实现去往/来自其他外部部件(例如,其他单元101)的数据通信。

网络在给定计算机化单元101与另一计算机化单元101和/或其他计算设备之间传输和接收数据。网络可能以无线方式实现,例如,使用无线协议和技术,诸如Wifi、WiMax等。网络可以特别地是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个人区域网(PAN)、虚拟专用网(VPN)、内联网或其他合适的网络系统,并且包括用于接收和发送信号的设备。然而,优选地,该网络应当允许单元之间非常快速的消息传递。

网络还可以是基于IP的网络,用于在任何给定的单元101与任何外部单元之间经由宽带连接进行通信。在示例性实施例中,网络可以是由服务提供商管理的管理IP网络。此外,网络可以是分组交换网络,诸如LAN、WAN、互联网网络、物联网网络等。

本发明因此可以是一种方法、系统、和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。

计算机可读存储介质可以是可以保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储媒体不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输媒体传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。

本文所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载至相应的计算/处理装置或者下载至外部计算机或外部存储装置。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。

本文参照根据本发明的实施例的方法、系统和计算机程序产品的流程图展示和/或框图描述了本发明的多个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以被提供给通用计算机、专用计算机、或其他可编程数据处理装置的处理器以产生机器,这样使得经由该计算机的处理器或其他可编程数据处理装置执行的这些指令创建用于实现流程图和/或框图的或多个框中所指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。

计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或其他设备上,以便使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的处理,从而使得在该计算机、其他可编程装置、或其他设备上执行的指令实现流程图和/或框图的或多个框中所指定的功能/动作。

附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。

虽然已经参考有限数量的实施例、变体和附图描述了本发明,但本领域技术人员将理解的是,在不背离本发明的范围的情况下,可以做出不同改变,并且可以替代等效物。具体地,在不脱离本发明的范围的情况下,在给定的实施例、变体中叙述的或在附图中示出的特征(装置样或方法样)可以与另实施例、变体或附图中的另特征组合或替换另特征。因此,可设想关于任何上述实施例或变型描述的特征的各种组合,这些组合保持在所附权利要求的范围内。此外,在不背离本发明的范围的情况下,可以做出许多微小修改以使特定情况或材料适应本发明的教导。因此,本发明旨在不限于所公开的具体实施方式,而是本发明将包括落在所附权利要求范围内的所有实施方式。此外,可以设想除上面明确触碰之外的许多其他变型。

技术分类

06120116561410