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