数据对象的分频处理系统及其方法
技术领域
本公开涉及一种数据处理技术,更具体地说,本公开涉及一种数据对象的分频处理系统及其方法。
背景技术
随着分布式计算的普及,大数据处理以及深度学习在生活中的各个方面得到广泛的应用。词嵌入是深度学习中自然语言处理(NLP)或者点击率预测(CTR)等任务常用的技术。实际应用中,被嵌入的可能是一个词,也可能是一个物品或者一个用户。在深度学习应用中,词嵌入通常表现由权重、输入、输出组成的模块,其中输入是一个包含词或者物品的张量,其中的词或者物品被编码为连续的令牌身份(token id),不同的词或者物品被编码为不同的id;权重通常是一个形状为[V, E]的矩阵,其中E为嵌入的维数,V为词表的大小,矩阵中第i行的向量即为token id 为i的词或者物品对应的嵌入向量;输出为根据输入中的token id 在权重矩阵中取出对应的向量组成的新的张量。权重矩阵的内容一般通过反向传播等方式训练。
大规模词嵌入通常指输入的词或者物品id总数较大,即权重矩阵中V较大,这种情况下存储权重矩阵及其对应的训练参数需要大量的内存。深度学习常用的计算设备通常有CPU、GPU、FPGA以及ASIC(专用集成电路)等,可以将GPU、FPGA以及ASIC统称为数据加速处理设备,数据加速处理设备往往具有更快的计算速度和更高的内存带宽,但是其内存容量往往存在内存有限、单价高昂、不易扩展等问题,而CPU设备运算速度相对较慢和内存带宽相对低,但其内存容量较大,价格相对低廉且容易扩展。如果将词嵌入的权重矩阵部署在数据加速处理设备上,其词表规模将受到内存容量的限制,而如果将其部署在CPU设备上,会导致训练或者推理速度变慢。在市场上,一个内存为8G的数据加速处理设备的价格是一个内存为4G的数据加速处理设备的价格的8倍。如果一味地增加数据加速处理设备的内存容量来满足词表规模,以便提高计算速度,将为企业带来高企的成本。
因此,在现有硬件构成的异构框架下,如何在保持硬件成本不变甚至降低的情况下,实现在配置更高硬件成本或更高内存数据加速处理设备的情况下的计算处理速度的同等速度,成为目前大数据处理企业和深度学习企业所急需解决的问题。
发明内容
针对上述现有问题,申请人注意到,大部分嵌入的输入符合长尾分布。长尾分布在词嵌入领域而言,举例来说,通常而言指的是,常规的词嵌入仅仅占据整个词嵌入的20%或更少,但是其占据实际输入的80%或更多,而生僻的词嵌入占据整个词嵌入的80%更多,但是其占据实际输入的20%或更少。为此,本发明的目的是解决至少上述问题之一,提供了一种数据对象的分频处理系统,包括:数据对象表生成单元,统计数据对象的出现频率,并按照频率高低顺序对每个数据对象进行排序标记,形成数据对象表;数据张量生成单元,将原始数据按照数据对象表转换成适于执行嵌入操作的嵌入输入张量;以及数据对象分配单元,基于数据加速处理设备的预定内存容量,将所生成的嵌入输入张量划分为高频数据对象表和低频数据对象表,并基于嵌入输入张量中归属于高频数据对象表的数据对象形成高频输入张量和基于高频输入张量中数据对象在嵌入输入张量中位置索引形成高频输入索引张量,以及基于嵌入输入张量中归属于低频数据对象表的数据对象形成低频输入张量和基于低频输入张量中元素在嵌入输入中位置索引形成低频输入索引张量,以便将高频输入张量输入到加速处理设备以便其嵌入单元进行嵌入处理从而获得高频输出以及将低频输入张量输入到数据常规处理设备以便其嵌入单元进行嵌入处理从而获得低频输出。
根据本公开的数据对象的分频处理系统,还包括:第一分散单元,基于高频输入索引张量对来自所述数据加速处理设备嵌入单元的高频输出进行分散处理以便输出高频部分输出;以及第二分散单元,基于低频输入索引张量对来自所述数据常规处理设备的嵌入单元的低频输出执行分散处理便输出低频部分输出。
根据本公开的数据对象的分频处理系统,还包括:汇总单元,将所述高频部分输出以及所述低频部分输出汇总(add)为合并数据输出。
根据本公开的数据对象的分频处理系统,还包括:数据对象去重单元,在原始数据中存在重复数据对象时,仅保留重复数据对象中的唯一一份数据对象,并形成与所有数据对象的位置对应的唯一输入索引张量;以及第一恢复单元,对所述唯一输入索引张量与所述合并数据输出执行恢复(gather)处理。
根据本公开的数据对象的分频处理系统,还包括:数据对象去重单元,对于数据对象分配单元分配到数据常规处理设备的低频输入张量中的重复低频输入张量进行去重,仅保留重复低频输入张量中的唯一一份低频输入张量,并形成与所有重复低频输入张量的位置对应唯一低频输入索引张量;以及第二恢复单元,对所述唯一低频输入索引张量与所述低频输出执行恢复处理。
根据本公开的另一个方面,还提供了一种数据对象的分频处理方法,包括:数据对象表生成步骤,统计数据对象的出现频率,并按照频率高低顺序对每个数据对象进行排序标记,形成数据对象表;数据张量生成步骤,将原始数据按照数据对象表转换成适于执行嵌入操作的嵌入输入张量;以及数据对象分配步骤,基于数据加速处理设备的预定内存容量,将所生成的嵌入输入张量划分为高频数据对象表和低频数据对象表,并基于嵌入输入张量中归属于高频数据对象表的数据对象形成高频输入张量和基于高频输入张量中数据对象在嵌入输入张量中位置索引形成高频输入索引张量,以及基于嵌入输入张量中归属于低频数据对象表的数据对象形成低频输入张量和基于低频输入张量中元素在嵌入输入中位置索引形成低频输入索引张量,以便将高频输入张量输入到加速处理设备以便其嵌入单元进行嵌入处理从而获得高频输出以及将低频输入张量输入到数据常规处理设备以便其嵌入单元进行嵌入处理从而获得低频输出。
根据本公开的数据对象的分频处理方法,还包括:分散处理步骤,基于高频输入索引张量对来自所述数据加速处理设备嵌入单元的高频输出进行分散处理以便输出高频部分输出,以及基于低频输入索引张量对来自所述数据常规处理设备的嵌入单元的低频输出执行分散处理便输出低频部分输出。
根据本公开的数据对象的分频处理方法,还包括:汇总步骤,将所述高频部分输出以及所述低频部分输出汇总为合并数据输出。
根据本公开的数据对象的分频处理方法,还包括:数据对象去重步骤,在原始数据中存在重复数据对象时,仅保留重复数据对象中的唯一一份数据对象,并形成与所有数据对象的位置对应的唯一输入索引张量;以及第一恢复步骤,对所述唯一输入索引张量与所述合并数据输出执行恢复处理。
根据本公开的数据对象的分频处理方法,还包括:数据对象去重步骤,对于数据对象分配单元分配到数据常规处理设备的低频输入张量中的重复低频输入张量进行去重,仅保留重复低频输入张量中的唯一一份低频输入张量,并形成与所有重复低频输入张量的位置对应唯一低频输入索引张量;以及第二恢复步骤,对所述唯一低频输入索引张量与所述低频输出执行恢复处理。
采用上述数据对象的分频处理系统和方法,通过将权重矩阵分割为两个部分的技术方案,其中将高频部分部署在数据加速处理设备上,以保证计算速度,将低频部分部署在常规计算设备(例如CPU设备)上,以保证有足够的内存容量容纳大规模的不常用的词嵌入操作,也就是训练规模,最终达到满足与数据常规处理设备内存相当词嵌入规模的同时,实现运算速度与仅使用数据加速处理设备所获得的运算速度相当,从而解决上述成本问题并获得更好的计算速度。
本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
图1所示的是根据本公开的第一实施例的数据对象的分频处理系统原理结构示意图。
图2所示的是根据本公开的第二实施例的数据对象的分频处理系统原理结构示意图。
图3所示的是根据本公开的第三实施例的数据对象的分频处理系统原理结构示意图。
图4所示的是根据本公开的数据对象的分频处理方法的流程图。
具体实施方式
下面结合实施例和附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。此外,在提到“第一”时,并不意味存在“第二”,有时候采用第一或第二仅仅是为了简化表述。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本领域技术人员更好地理解本公开,下面结合附图和具体实施方式对本公开作进一步详细说明。
图1所示的是根据本公开的第一实施例的数据对象的分频处理系统原理结构示意图。如图1所示,数据对象的分频处理系统100对于需要训练的数据对象按照数据对象出现的频率分别分配到数据加速处理设备200以及常规数据处理设备300上进行处理。具体而言,分频处理系统100包括数据对象表生成单元120、数据张量生成单元130以及数据对象分配单元140。
具体而言,数据对象表生成单元120统计数据对象的出现频率,并按照对频率高低顺序对每个数据对象进行排序标记。这里提到的数据对象通常为可能是一个词,也可能是一个物品或者一个用户。在对输入数据进转换成token id行处理之前对输入数据进行统计,并根据每个词或者物品出现的频率进行排序,使出现频率更高的词或者物品具有更小的token id。例如将频率最高的词赋予0的id,其次为1,再次为2……以此类推,得到数据对象表。
数据张量生成单元130将原始数据按照数据对象表转换成适于执行嵌入操作的嵌入输入张量。具体而言,对于原始输入中的每个数据对象查找数据对象表得到其token id,使用得到的token id替换原始输入中对应的元素。将原始数据转换成适于执行嵌入操作的嵌入输入张量,可以采用目前常规的方式进行。因此不在本申请中进行详细描述。
数据对象分配单元140基于数据加速处理设备200的预定内存容量,将所生成的嵌入输入张量划分为高频数据对象表和低频数据对象表。通过将与数据加速处理设备200的内存容量对应的权重大小的高频数据对象表部署在数据加速处理设备200上,能够使得数据加速处理设备200的内存容量得到充分利用,并且使得适当权重的高频数据对象表充分利用该数据加速处理设备200。高频数据对象表对应的权重行数为高频词表大小,并将被部署到数据加速处理设备200。低频数据对象表的权重行数为低频词表的大小,并将被部署在作为常规数据处理设备300的CPU设备上。
数据对象分配单元140基于嵌入输入张量中归属于高频数据对象表的数据对象形成高频输入张量和基于高频输入张量中数据对象在嵌入输入张量中位置索引形成高频输入索引张量,以及基于嵌入输入张量中归属于低频数据对象表的数据对象形成低频输入张量和基于低频输入张量中元素在嵌入输入中位置索引形成低频输入索引张量。数据对象分配单元140先将输入数据中每个元素或数据对象与高频词表大小进行比较,将token id小于高频词表大小的输入数据放到一个新的张量中形成高频输入,并将高频输入中的元素在原输入中对应的索引(位置)保存为一个张量中形成高频输入索引张量,同时将token id大于等于高频词表大小的输入数据放入到一个新的张量中去,并对每个元素进行偏移(减去高频词表大小) ,称之为低频输入张量,并将低频输入中的元素在原输入中对应的索引保存为一个张量中称之为低频输入索引张量。此时,实际上已经对输入数据将要处理的部署位置进行了指定。
最后,数据对象分配单元140随后将高频输入张量输入到加速处理设备200以便其嵌入单元210进行嵌入处理从而获得高频输出以及将低频输入张量输入到数据常规处理设备300以便其嵌入单元310进行嵌入处理从而获得低频输出
高频输入数据被传输到数据加速处理设备200中,对高频输入数据和高频权重执行常规的词嵌入操作,得到高频输出。低频输入数据被传输到数据常规处理设备300(CPU设备)中,对低频输入和低频数据对象表(即低频词表)执行常规的词嵌入操作,执行常规的词嵌入得到低频输出。由于执行的词嵌入操作本身属于本领域常规技术手段,因此不在本申请中进行详细描述。
通过上述数据对象的分频处理系统和方法,通过将权重矩阵分割为两个部分的技术方案,其中将高频部分部署在数据加速处理设备上,以保证计算速度,将低频部分部署在数据常规处理设备300(例如CPU设备)上,以保证有足够的内存容量容纳大规模的不常用的词嵌入表,也就是训练规模,最终达到满足与CPU设备内存相当词嵌入规模的同时,实现运算速度与仅仅使用数据加速处理设备所获得的运算速度相当,从而解决上述成本问题并获得更好的计算速度。
在进行对输入数据进行分频并分别部署在数据加速处理设备200和数据常规处理设备300之后,第一分散单元220将高频输入索引张量分散到来自其嵌入单元210的高频输出中以便输出高频部分输出以及第二分散单元320将低频输入索引张量分散到来自其嵌入单元310的低频输出中以便输出低频部分输出,由此各自产生的部分输出。需要指出的,很显然,无论是数据加速处理设备200及其构成部分和还是数据常规处理设备300及其构成部分仅仅是实现本公开的技术方案的环境技术手段而不是所必需技术手段。进一步,在获得高频部分输出和低频部分输出之后,分频处理系统100的汇总单元150将所述高频部分输出以及所述低频部分输出汇总(ADD)为合并数据输出,并作为整个嵌入模块的输出。
需要指出的是,尽管为了叙述方便,图1显示的分频处理系统100采用单独方式显示,但是,其可以直接全部包含在数据加速处理设备200中,也可以包含在CPU中。
图2所示的是根据本公开的第二实施例的数据对象的分频处理系统原理结构示意图。如图2所示的第二实施例与图1所示的第一实施例之间的区别在于分频处理系统400还包括数据对象去重单元460以及第一恢复单元470,其它部分与第一实施例相同。所述数据对象去重单元460在原始数据中存在重复数据对象时,仅保留重复数据对象中的唯一一份数据对象,并形成与所有数据对象的位置对应的唯一输入索引张量。第一恢复单元470,对所述唯一输入索引张量与所述合并数据输出执行恢复(gather)处理。具体而言,如果一个输入数据中包含了“A、B、A、B、C”这样的数据,则“A”和“B”就是重复的数据对象或元素。通过数据对象去重单元460进行去重处理之后,输入数据变成为唯一的输入“A、B、C”,并同时形成一个针对去重后的输入数据的对应的唯一输入索引,例如“0,1,0,1,2”来指明其位置索引,以便第一恢复单元470在最后的结果中基于该唯一的输入索引进行恢复处理,获得还原的数据。通过进行去重处理,一方面减少了针对这些输入的运算量。在不去重的情况下,重复一次,运算量就增加一次。如果存在N次重复,通过去重,将运算量减少到重复运算量的1/N。另一方面,通过去重处理,使得输入数据成为唯一输入数据,因此其输出数据也减少,这样在对部分输出结果进行合并时,能够减少部分输出数据的传输量以及也可以减少输入数据的传输开销,从而节省了整个系统的传输开销。
图3所示的是根据本公开的第三实施例的数据对象的分频处理系统500原理结构示意图。如图3所示的第三实施例与图1所示的第一实施例之间的区别在于分频处理系统500还包括数据对象去重单元560以及第二恢复单元570,其它部分与第一实施例相同。所述数据对象去重单元560将分配到数据常规处理设备300的低频输入数据中存在重复数据对象时,仅保留唯一一份重复数据对象,并形成与所有低频输入数据对象的位置对应的形成唯一低频输入索引张量。第二恢复单元570对所述唯一低频输入索引张量嵌入单元310输出的低频唯一输出执行恢复处理获得低频输出。
具体而言,如果一个输入数据中包含了“E、F、E、F、G”这样的数据,则“E”和“F”就是重复的数据对象或元素。通过数据对象去重单元340进行去重处理之后,输入数据变成为唯一的输入“E、F、G”,并同时形成一个针对去重后的输入数据的对应的唯一低频输入索引,例如“0,1,0,1,2”来指明其位置索引,以便第二恢复单元570对嵌入单元310的唯一低频输出中基于该唯一低频输入索引进行恢复处理,获得还原的数据。通过进行去重处理,一方面减少了常规数据处理设备针对这些输入的运算量。在不去重的情况下,重复一次,运算量就增加一次。如果存在N次重复,通过去重,将运算量减少到重复运算量的1/N。另一方面,通过去重处理,使得输入数据成为唯一输入数据,减少了输入数据的传输量,同时因此其输出数据也减少,这样在对部分输出结果进行合并时,能够减少诸如CPU的数据常规处理设备300向分频系统100传输输出数据的传输量,从而节省了整个系统的传输开销。
尽管如上所述分频处理系统采用单独显示的方式显示,但是分频处理系统可以直接包含在CPU中或者GPU等加速处理设备中。可选择地,除了需要在CPU中进行的低频数据对象的嵌入之外,其他数据处理过程都可以部署到GPU等加速处理设备中进行处理。
图4所示的是根据本公开的数据对象的分频处理方法的流程图。如图4所示,首先在步骤S610处,统计数据对象的出现频率,并按照频率高低顺序对每个数据对象进行排序标记,形成数据对象表。随后在步骤S620处,数据张量生成步骤将原始数据按照数据对象表转换成适于执行嵌入操作的嵌入输入张量数据对象表。在步骤S630处,数据对象分配步骤,基于数据加速处理设备的预定内存容量,将所生成的嵌入输入张量划分为高频数据对象表和低频数据对象表,并基于嵌入输入张量中归属于高频数据对象表的数据对象形成高频输入张量和基于高频输入张量中数据对象在嵌入输入张量中位置索引形成高频输入索引张量,以及基于嵌入输入张量中归属于低频数据对象表的数据对象形成低频输入张量和基于低频输入张量中元素在嵌入输入中位置索引形成低频输入索引张量,以便将高频输入张量输入到加速处理设备以便其嵌入单元进行嵌入处理从而获得高频输出以及将低频输入张量输入到数据常规处理设备以便其嵌入单元进行嵌入处理从而获得低频输出。
为了获得整体数据输出,在步骤S640处,将所述高频部分输出以及所述低频部分输出汇总为合并数据输出。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本公开的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本公开的说明的情况下运用他们的基本编程技能就能实现的。
因此,本公开的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本公开的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本公开,并且存储有这样的程序产品的存储介质也构成本公开。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。
还需要指出的是,在本公开的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。