CN114428797A - 嵌入参数缓存的方法、装置、设备及存储介质 - Google Patents

嵌入参数缓存的方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114428797A
CN114428797A CN202111605333.3A CN202111605333A CN114428797A CN 114428797 A CN114428797 A CN 114428797A CN 202111605333 A CN202111605333 A CN 202111605333A CN 114428797 A CN114428797 A CN 114428797A
Authority
CN
China
Prior art keywords
embedded
cache
global
index
parameters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111605333.3A
Other languages
English (en)
Inventor
陆游游
舒继武
谢旻晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN202111605333.3A priority Critical patent/CN114428797A/zh
Publication of CN114428797A publication Critical patent/CN114428797A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供的一种嵌入参数缓存的方法、装置、设备及存储介质,通过获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中;基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键;采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表;采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中;读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。采用本技术方案,能够解决嵌入式的访问需求以及缓解模型预估时的性能问题。

Description

嵌入参数缓存的方法、装置、设备及存储介质
技术领域
本申请涉及推荐技术领域,尤其涉及一种嵌入参数缓存的方法、装置、设备及存储介质。
背景技术
推荐系统从海量内容中筛选信息,并为用户生成定制化的信息流。
推荐系统的推荐质量由两方面决定。从算法角度,模型预测精度的提高可以更准确地预测用户兴趣。与之正交的,从系统角度,一个具有低延迟、高吞吐的系统可以在服务水平协议的相同要求下,让同样的模型检查更多的候选内容,从而更有可能找到用户的兴趣。
新兴的深度学习推荐模型(Deep Learning Recommendation Model,DLRM)几乎应用在了当今所有的推荐系统中。DLRM通常包含两部分结构,占用百GB内存以上的超大嵌入层和约百MB内存的全连接层。其中,嵌入层包含几个嵌入表,将高维类别特征输入(ID)映射到潜在的低维稠密向量表示(称为嵌入向量),这些嵌入向量包含维度(称为嵌入维度)数目个参数(称为嵌入参数)。需要注意的是,不同嵌入表的大小、嵌入维度通常各不相同。
由于GPU显存容量有限,现有的一些系统通常将这些嵌入表以哈希表的形式存储在CPU侧的DRAM中。然而,这种做法的缺点是,CPU侧匮乏的DRAM带宽无法满足嵌入层大量随机的稀疏访问的需求,这使得嵌入层造成了极大的时间开销,成为推荐模型预估时的主要性能瓶颈。
因此,需要一种嵌入参数缓存的方法,能够解决嵌入式的访问需求以及缓解模型预估时的性能问题。
发明内容
本申请提供一种嵌入参数缓存的方法、装置、设备及存储介质,能够解决嵌入式的访问需求以及缓解模型预估时的性能问题。
第一方面,本申请提供一种嵌入参数缓存的方法,包括:
获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中;
基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键;
采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表;
采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中;
读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。
第二方面,本申请提供一种嵌入参数缓存的装置,包括:
获取单元,用于获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中;
生成单元,用于基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键;
索引单元,用于采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表;
卸载单元,用于采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中;
解耦单元,用于读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。
第三方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面所述的方法。
本申请提供的一种嵌入参数缓存的方法、装置、设备及存储介质,通过获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中;基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键;采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表;采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中;读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。采用本技术方案,能够解决嵌入式的访问需求以及缓解模型预估时的性能问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据本申请实施例一提供的一种嵌入参数缓存方法的系统框架示意图;
图2是根据本申请实施例一提供的一种嵌入参数缓存方法的流程示意图;
图3是根据本申请实施例二提供的一种嵌入参数缓存方法的流程示意图;
图4是根据本申请实施例二提供的一种全局键的示意图;
图5是根据本申请实施例二提供的一种全局嵌入缓存表的示意图;
图6是根据本申请实施例二提供的一种全局索引的示意图;
图7是根据本申请实施例二提供的一种索引操作的示意图;
图8是根据本申请实施例二提供的一种系统执行查询的示意图;
图9是根据本申请实施例二提供的一种系统解耦的示意图;
图10是根据本申请实施例三提供的一种嵌入参数缓存装置的示意图;
图11是根据一示例性实施例示出的一种终端设备的框图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请提供的嵌入参数缓存方法,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1是根据本申请实施例一提供的一种嵌入参数缓存方法的系统框架示意图。实施例一中的系统包括:CPU内存、GPU显存。
具体的,图2是根据本申请实施例一提供的一种嵌入参数缓存方法的流程示意图,包括如下步骤:
S201、获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中。
本实施例中,CPU内存可以以任意形式全量存储来自各个嵌入表的嵌入参数;GPU显存用于缓存部分热点嵌入参数,所述嵌入参数由推荐模型预先训练得到。
S202、基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键。
本实施例中,缓存系统通过基于霍夫曼编码的编码机制,将来自各个嵌入表的特征ID编码为具有统一格式、全局唯一的全局键。
S203、采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表。
本实施例中,缓存系统采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表以所述全局键为键,索引来自所有嵌入表的嵌入参数缓存。
S204、采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中。
S205、读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。
本实施例中,缓存系统读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦而开;可以理解的是,嵌入缓存系统用于存储多个嵌入表。如图1所示,嵌入缓存系统由两个组件组成:CPU内存和GPU显存。嵌入缓存系统工作在用户态。嵌入缓存系统向用户提供接口包括:嵌入参数查询和嵌入参数更新。假设嵌入表的个数为n,嵌入参数查询的接口输入为n个特征ID列表(分别对应n个嵌入表),输出为n个嵌入参数矩阵;嵌入参数更新的接口输入为n个ID列表和对应的嵌入参数,输出为对应的更新是否成功。
本申请提供的一种嵌入参数缓存的方法、装置、设备及存储介质,通过获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中;基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键;采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表;采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中;读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。采用本技术方案,能够解决嵌入式的访问需求以及缓解模型预估时的性能问题。
图3是根据本申请实施例二提供的一种嵌入参数缓存方法的流程示意图,包括如下步骤:
S301、获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中。
本实施例中,CPU内存可以以任意形式全量存储来自各个嵌入表的嵌入参数;GPU显存用于缓存部分热点嵌入参数,所述嵌入参数由推荐模型预先训练得到。
S302、对于第TableID个嵌入表的第FeatureID个特征,根据以下公式得到对应的所述全局键:
global key(TableID,FeatureID)=huffman(TableID)*2n-m+hash(FeatureID)%2n-m
m=比特长度(huffman(TableID))
其中,m表示TableID经过霍夫曼编码后的比特长度,n表示全局键的比特长度,huffman表示霍夫曼编码映射,global key(TableID,FeatureID)表示经过所述编码机制编码后的全局键,%代表取模运算,hash代表哈希运算。
具体地,在初始化时,请参考图4(a),系统将输入的各个嵌入表中特征ID的个数作为霍夫曼编码中对应的权重(亦称频率),进行霍夫曼编码,并将结果存储到一个编码字典中。该编码字典被实现为一个哈希表,存有嵌入表ID到对应变长编码的对应关系,同时存有到该对应变长编码比特位的对应关系。
在编码时,请参考图4(b),全局键由经过编码字典翻译的嵌入表ID、经过哈希编码的特征ID两部分拼合而成。需要注意的是,在编码全局键时,对于来自同一个嵌入表的所有ID,我们只需要查询一次编码字典,这是由于这些ID对应的嵌入表一样;其次,由于嵌入表的个数不会很多,因此编码字典较小,通常可以缓存在CPU Cache中,保证了较快的查询速度。
S303、采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表。
本实施例中,缓存系统采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表以所述全局键为键,索引来自所有嵌入表的嵌入参数缓存。
在一个示例中,所述全局嵌入缓存表由全局索引、显存池两部分构成:所述全局索引使用字典数据结构维护所述全局键到对应的嵌入参数存储地址的映射关系,其中嵌入参数存储地址是GPU显存地址或CPU内存地址;显存池管理显存空间的分配释放,其包括与嵌入表等数目的子池,每个子池包含若干对应嵌入表维度的若干参数。
具体地,全局嵌入缓存表的结构如图5所示。系统通过全局键为中间层,对用户逻辑上抽象出一个多嵌入表缓存的接口,内部则在物理上只维护单个缓存表来提高缓存利用率。通过每个全局键的进入和淘汰,所有嵌入表的缓存都能在逻辑上弹性缩放,捕获全局热点,提高缓存命中率。
全局索引采用可扩展的GPU哈希结构。请参考图6,全局索引包括多个Slab Set,每个Slab Set中包括4个Slab,每个Slab中则包含GPU warp线程数(本例中为32)的哈希表项,每个哈希表项记录着64比特的全局键和对应嵌入参数在GPU显存或CPU内存中的地址,以及32比特的版本号用来实现最近最少替换算法(LRU),存储的方式为首先连续摆放32个全局键,再连续摆放32个地址,之后再连续摆放32个版本号,以便GPU线程以折叠访问(Coalesced Access)的方式访问涉及的全局内存。每个全局键只会被映射到一个SlabSet,并在Slab Set内以线性探查的方式处理哈希冲突。在访问全局索引时,系统将即将查询的全局键列表维护成一个工作队列,每个warp每次从工作队列中取一个全局键进行索引访问。
显存池继承了现有的Slab分配器。系统根据嵌入表预先定义的嵌入维度设置每个Slab的大小来避免内存碎片。全局索引或显存池中无需记录每个嵌入向量的维度,这是因为被绑定到嵌入表的待查询的特征ID已隐式地包含维度大小信息。为避免GPU显存分配API的高延迟,系统初始化时为显存池预先分配了大块内存,在运行时进行更精细的管理。
在一个示例中,所述全局嵌入缓存表为表内每个所述全局键维护了一个版本号,当新的嵌入参数加入缓存或已缓存的嵌入参数被用户访问时,对应的所述全局键的版本号被更新。
具体地,系统维护一个全局版本号,该全局版本号在有嵌入参数查询和嵌入参数更新操作时原子地加一,全局键的版本号每次都被更新为当前的全局版本号。在每次操作中,全局版本号被缓存进GPU的共享内存(shared memory)以避免多次访问全局内存带来的高延迟。特别地,在全局版本号即将溢出时(接近2^32次查询更新操作),系统将全局版本号与所有版本号减去一个预设常量,如果结果为负数则设为0。
在一个示例中,所述版本号被用于控制缓存淘汰:所述系统利用所述版本号,实现近似最近最少用的缓存淘汰算法。所述系统在显存使用量超过预设阈值t1时,扫描所述全局索引,根据所述版本号持续地将最久未被使用的嵌入参数缓存释放,归还至所述显存池中,直至显存使用量低于另一预设阈值t2,其中0<t2<t1<1。
具体地,所述缓存淘汰会在两种情况下触发:第一,当新插入的全局键所映射的Slab中没有空闲的表项时,系统从Slab中找到版本号最小的表项进行替换,淘汰释放掉原表项对应的缓存;第二,当显存使用量超过预设阈值t1时,系统扫描全局索引,将其中有效表项首先按版本号粗粒度分桶,然后依照版本号升序的顺序,依次释放各个桶内所有的缓存项,直至完全淘汰下一个桶会使得显存使用量低于另一预设阈值t2,然后系统对该桶中的表项建立最小堆,持续地将堆顶对应的缓存释放,直至显存使用量为t2。此外,在淘汰释放缓存时,系统通过Epoch机制(Epoch based reclaimation,基于轮次的垃圾回收)避免读线程正在读取的嵌入参数被淘汰回收而出现错误。
在一个示例中,所述版本号还被用于实现乐观并发控制协议:在访问被缓存的嵌入参数之前首先读取版本号的值为ver1,在读取完嵌入参数后再次读取版本号的值为ver2,如果ver2=ver1,则无并发的写者;否则,需要重试。
具体地,系统在进行嵌入参数查询和更新时首先会对ID列表进行去重,这保证了没有对同一全局键的多个写者或多个读者,只存在单写者单读写的并发情况。因此,在读取嵌入参数时版本号的改变必然意味着存在并发的写者。
S304、采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中。
本实施例中,采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中,包括:首先查询所述全局索引,获得缓存命中的嵌入参数的地址;其次发出拷贝命令,由GPU从这些地址中拷贝嵌入参数,与此同时并行地,由CPU在CPU内存层中查询未命中的参数。
具体地,继承自传统利用GPU加速的键值系统,相关技术中提出一种朴素耦合做法(参见图7a),其使用一个kernel,在查询全局索引的同时,完成向目标嵌入参数矩阵的拷贝。
与之对比的,本系统对于查询缓存操作,将嵌入参数的拷贝操作从缓存的索引操作中解耦而开(参见图7b),首先发出一个索引kernel查询全局索引,得到每一个全局键的命中与否以及如果命中其存储地址的信息,再发出一个拷贝kernel,根据索引kernel返回的存储地址信息进行拷贝。这种做法提前查询了CPU内存层,而无需等待拷贝kernel的复制完成。这是因为一旦索引kernel完成了它的执行,系统已然知道每个全局键的命中情况。
本实施例中,所述统一索引技术将一定比例CPU内存层的索引查询卸载至GPU上的所述全局索引,并使用预设方法标识嵌入参数的存储地址为CPU内存层;所述系统在查询所述全局索引时,可以直接得到命中部分嵌入参数在CPU内存中的地址,无需查询较慢的CPU内存层的索引。
具体地,统一索引技术使用如下的标识方法,对于卸载部分(CPU内存层)的存储地址,先将其最低比特位置1,再存入所述全局索引中。
系统执行查询的过程如附图8所示,首先查询全局索引,对其中命中并且在GPU显存中的地址,由GPU进行拷贝至输出嵌入参数矩阵;对其中命中但在CPU内存中的地址,由CPU直接从所得地址拷贝至CPU内存上的输出嵌入参数矩阵缓存;对于全局索引未命中的全局键,则由CPU查询CPU内存层的索引,得到对应的内存地址后再行拷贝。最后,系统将CPU内存上的输出嵌入参数矩阵缓存合并至GPU上的输出嵌入参数矩阵。
在缓存淘汰时,如若发现被替换的表项为统一索引所卸载的CPU内存层地址,则直接对该表项直接替换即可,无需做任何内存回收。
在一个示例中,其中所述统一索引技术的卸载比例使用如下算法进行自适应调节:所述卸载比例从0%开始逐渐增加,不断地将本用于较冷的嵌入参数缓存的显存回收,用于统一索引;当所述系统达到性能顶峰时,所述卸载比例暂停增加;
当所述系统负载热点情况改变时,将所述统一索引清空,所述卸载比例重新从0%开始增加,重复上述步骤。
具体地,系统不断地在未被缓存的(CPU内存层)嵌入参数中选取最热的部分插入统一索引,替换掉全局索引中被映射到的相同Slab Set中最冷的存储在GPU显存中的嵌入参数,并归还对应显存用作全局索引扩容。
系统将缓存命中率下降到一个预设阈值识别为负载热点情况改变,在这种情况下,统一索引被清空,全局索引缩容并退还占用的空间给显存池,重新从0%开始增加卸载比例。
S305、读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。
本实施例中,读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦,包括:
每个即将被写入的特征只有预设概率的可能被允许进入缓存。
具体地,在更新缓存时,系统对每个待插入的全局键使用生成一个0-1之间的随机数(在CUDA框架下使用curand_uniform函数生成),如果该随机数大于预设概率,则该warp正常执行插入,否则,在返回结果中标记该特征更新失败并直接退出。在数学期望上,出现次数少于(1/预设概率)的特征可以绕过缓存。
通过所述显存池为即将写入缓存的嵌入参数申请空间,并将参数拷贝入新申请的空间;待拷贝完成之后,再修改所述全局索引中的地址映射。
本系统对于更新缓存操作,将嵌入参数的拷贝操作从缓存的索引操作中解耦而开(参见图9b)。首先通过显存池申请足量的嵌入参数空间,再由单独的拷贝kernel预先完成所有拷贝操作(注意由于Epoch机制的保护,拷贝kernel无需考虑线程安全),最后才发出kernel在临界区内修改全局索引中的地址映射信息。这种设计使得修改所述全局索引的关键路径缩短。
另外,解耦合的设计还可以有两个额外的机会来进一步优化缓存系统:一方面,拷贝kernel可以根据嵌入的维度信息,发出更多的线程进行拷贝,这可以更充分地利用GPU上的流多处理器(Streaming Multiprocessor,SM)的资源,减少拷贝时延;另一方面,拷贝kernel可以与修改全局索引的kernel并行,进一步减少更新缓存操作的时间。
本申请提供的一种嵌入参数缓存的方法、装置、设备及存储介质,通过获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中;基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键;采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表;采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中;读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。采用本技术方案,能够解决嵌入式的访问需求以及缓解模型预估时的性能问题。
图10是根据本申请实施例三提供的一种嵌入参数缓存装置的示意图,包括该装置100如下:
获取单元1001,用于获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中;
生成单元1002,用于基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键;
索引单元1003,用于采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表;
卸载单元1004,用于采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中;
解耦单元1005,用于读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。
生成单元1002,用于对于第TableID个嵌入表的第FeatureID个特征,根据以下公式得到对应的所述全局键:
global key(TableID,FeatureID)=huffman(TableID)*2n-m+hash(FeatureID)%2n-m
m=比特长度(huffman(TableID))
其中,m表示TableID经过霍夫曼编码后的比特长度,n表示全局键的比特长度,huffman表示霍夫曼编码映射,global key(TableID,FeatureID)表示经过所述编码机制编码后的全局键,%代表取模运算,hash代表哈希运算。
在一个示例中,所述全局嵌入缓存表由全局索引、显存池两部分构成:所述全局索引使用字典数据结构维护所述全局键到对应的嵌入参数存储地址的映射关系,其中嵌入参数存储地址是GPU显存地址或CPU内存地址;显存池管理显存空间的分配释放,其包括与嵌入表等数目的子池,每个子池包含若干对应嵌入表维度的若干参数。
在一个示例中,所述全局嵌入缓存表为表内每个所述全局键维护了一个版本号,当新的嵌入参数加入缓存或已缓存的嵌入参数被用户访问时,对应的所述全局键的版本号被更新。
在一个示例中,所述版本号被用于控制缓存淘汰:所述系统利用所述版本号,实现近似最近最少用的缓存淘汰算法。所述系统在显存使用量超过预设阈值t1时,扫描所述全局索引,根据所述版本号持续地将最久未被使用的嵌入参数缓存释放,归还至所述显存池中,直至显存使用量低于另一预设阈值t2,其中0<t2<t1<1。
在一个示例中,所述版本号还被用于实现乐观并发控制协议:在访问被缓存的嵌入参数之前首先读取版本号的值为ver1,在读取完嵌入参数后再次读取版本号的值为ver2,如果ver2=ver1,则无并发的写者;否则,需要重试。
解耦单元1005,具体用于每个即将被写入的特征只有预设概率的可能被允许进入缓存。
索引单元1003,用于所述统一索引技术将一定比例CPU内存层的索引查询卸载至GPU上的所述全局索引,并使用预设方法标识嵌入参数的存储地址为CPU内存层;所述系统在查询所述全局索引时,可以直接得到命中部分嵌入参数在CPU内存中的地址,无需查询较慢的CPU内存层的索引。
在一个示例中,其中所述统一索引技术的卸载比例使用如下算法进行自适应调节:
所述卸载比例从0%开始逐渐增加,不断地将本用于较冷的嵌入参数缓存的显存回收,用于统一索引;
当所述系统达到性能顶峰时,所述卸载比例暂停增加;
当所述系统负载热点情况改变时,将所述统一索引清空,所述卸载比例重新从0%开始增加,重复上述步骤。
卸载单元1004,用于首先查询所述全局索引,获得缓存命中的嵌入参数的地址;
其次发出拷贝命令,由GPU从这些地址中拷贝嵌入参数,与此同时并行地,由CPU在CPU内存层中查询未命中的参数。
解耦单元1005,具体用于通过所述显存池为即将写入缓存的嵌入参数申请空间,并将参数拷贝入新申请的空间;
待拷贝完成之后,再修改所述全局索引中的地址映射。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图11是根据一示例性实施例示出的一种终端设备的框图,该设备可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
装置1100可以包括以下一个或多个组件:处理组件1102,存储器1104,电源组件1106,多媒体组件1108,音频组件1110,输入/输出(I/O)接口1112,传感器组件1114,以及通信组件1116。
处理组件1102通常控制装置1100的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1102可以包括一个或多个处理器1120来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1102可以包括一个或多个模块,便于处理组件1102和其他组件之间的交互。例如,处理组件1102可以包括多媒体模块,以方便多媒体组件1108和处理组件1102之间的交互。
存储器1104被配置为存储各种类型的数据以支持在装置1100的操作。这些数据的示例包括用于在装置1100上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1104可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件1106为装置1100的各种组件提供电力。电源组件1106可以包括电源管理系统,一个或多个电源,及其他与为装置1100生成、管理和分配电力相关联的组件。
多媒体组件1108包括在所述装置1100和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1108包括一个前置摄像头和/或后置摄像头。当装置1100处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1110被配置为输出和/或输入音频信号。例如,音频组件1110包括一个麦克风(MIC),当装置1100处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1104或经由通信组件1116发送。在一些实施例中,音频组件1110还包括一个扬声器,用于输出音频信号。
I/O接口1112为处理组件1102和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1114包括一个或多个传感器,用于为装置1100提供各个方面的状态评估。例如,传感器组件1114可以检测到装置1100的打开/关闭状态,组件的相对定位,例如所述组件为装置1100的显示器和小键盘,传感器组件1114还可以检测装置1100或装置1100一个组件的位置改变,用户与装置1100接触的存在或不存在,装置1100方位或加速/减速和装置1100的温度变化。传感器组件1114可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1114还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1114还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1116被配置为便于装置1100和其他设备之间有线或无线方式的通信。装置1100可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件1116经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1116还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置1100可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1104,上述指令可由装置1100的处理器1120执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当该存储介质中的指令由终端设备的处理器执行时,使得终端设备能够执行上述终端设备的嵌入参数缓存方法。
本申请还公开了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如本实施例中所述的方法。
本申请以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或电子设备上执行。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据电子设备)、或者包括中间件部件的计算系统(例如,应用电子设备)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和电子设备。客户端和电子设备一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-电子设备关系的计算机程序来产生客户端和电子设备的关系。电子设备可以是云电子设备,又称为云计算电子设备或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。电子设备也可以为分布式系统的电子设备,或者是结合了区块链的电子设备。应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (15)

1.一种嵌入参数缓存的方法,其特征在于,所述方法包括:
获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中;
基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键;
采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表;
采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中;
读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。
2.根据权利要求1所述的方法,其特征在于,基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键,包括:
对于第TableID个嵌入表的第FeatureID个特征,根据以下公式得到对应的所述全局键:
global key(TableID,FeatureID)=huffman(TableID)*2n-m+hash(FeatureID)%2n-m
m=比特长度(huffman(TableID))
其中,m表示TableID经过霍夫曼编码后的比特长度,n表示全局键的比特长度,huffman表示霍夫曼编码映射,global key(TableID,FeatureID)表示经过所述编码机制编码后的全局键,%代表取模运算,hash代表哈希运算。
3.根据权利要求1所述的方法,其特征在于,所述全局嵌入缓存表由全局索引、显存池两部分构成:所述全局索引使用字典数据结构维护所述全局键到对应的嵌入参数存储地址的映射关系,其中嵌入参数存储地址是GPU显存地址或CPU内存地址;显存池管理显存空间的分配释放,其包括与嵌入表等数目的子池,每个子池包含若干对应嵌入表维度的若干参数。
4.根据权利要求3所述的方法,其特征在于,所述全局嵌入缓存表为表内每个所述全局键维护了一个版本号,当新的嵌入参数加入缓存或已缓存的嵌入参数被用户访问时,对应的所述全局键的版本号被更新。
5.根据权利要求4所述的方法,其特征在于,所述版本号被用于控制缓存淘汰:所述系统利用所述版本号,实现近似最近最少用的缓存淘汰算法。所述系统在显存使用量超过预设阈值t1时,扫描所述全局索引,根据所述版本号持续地将最久未被使用的嵌入参数缓存释放,归还至所述显存池中,直至显存使用量低于另一预设阈值t2,其中0<t2<t1<1。
6.根据权利要求4所述的方法,其特征在于,所述版本号还被用于实现乐观并发控制协议:在访问被缓存的嵌入参数之前首先读取版本号的值为ver1,在读取完嵌入参数后再次读取版本号的值为ver2,如果ver2=ver1,则无并发的写者;否则,需要重试。
7.根据权利要求1所述的方法,其特征在于,读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦,包括:
每个即将被写入的特征只有预设概率的可能被允许进入缓存。
8.根据权利要求1所述的方法,其特征在于,所述统一索引技术将一定比例CPU内存层的索引查询卸载至GPU上的所述全局索引,并使用预设方法标识嵌入参数的存储地址为CPU内存层;所述系统在查询所述全局索引时,可以直接得到命中部分嵌入参数在CPU内存中的地址,无需查询较慢的CPU内存层的索引。
9.根据权利要求8所述的方法,其特征在于,其中所述统一索引技术的卸载比例使用如下算法进行自适应调节:
所述卸载比例从0%开始逐渐增加,不断地将本用于较冷的嵌入参数缓存的显存回收,用于统一索引;
当所述系统达到性能顶峰时,所述卸载比例暂停增加;
当所述系统负载热点情况改变时,将所述统一索引清空,所述卸载比例重新从0%开始增加,重复上述步骤。
10.根据权利要求1所述的方法,其特征在于,采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中,包括:
首先查询所述全局索引,获得缓存命中的嵌入参数的地址;
其次发出拷贝命令,由GPU从这些地址中拷贝嵌入参数,与此同时并行地,由CPU在CPU内存层中查询未命中的参数。
11.根据权利要求1所述的方法,其特征在于,读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦,包括:
通过所述显存池为即将写入缓存的嵌入参数申请空间,并将参数拷贝入新申请的空间;
待拷贝完成之后,再修改所述全局索引中的地址映射。
12.一种嵌入参数缓存的装置,其特征在于,所述装置,包括:
获取单元,用于获取至少一个嵌入表的嵌入参数至CPU内存中,将所述嵌入参数的部分热点存储至GPU显存中;
生成单元,用于基于霍夫曼编码的编码机制,将所述至少一个嵌入表的特征ID编码生成具有统一格式、全局唯一的全局键;
索引单元,用于采用全局嵌入缓存表为GPU缓存的存储形式,所述全局嵌入缓存表是以所述全局键为键,索引所述嵌入表;
卸载单元,用于采用统一索引技术,将预设数量的CPU内存中的索引查询卸载至GPU显存中;
解耦单元,用于读写缓存时,将嵌入参数的拷贝操作从缓存的索引操作中解耦。
13.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-11中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-11中任一项所述的方法。
15.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现如权利要求1-11中任一项所述的方法。
CN202111605333.3A 2021-12-24 2021-12-24 嵌入参数缓存的方法、装置、设备及存储介质 Pending CN114428797A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111605333.3A CN114428797A (zh) 2021-12-24 2021-12-24 嵌入参数缓存的方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111605333.3A CN114428797A (zh) 2021-12-24 2021-12-24 嵌入参数缓存的方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114428797A true CN114428797A (zh) 2022-05-03

Family

ID=81312143

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111605333.3A Pending CN114428797A (zh) 2021-12-24 2021-12-24 嵌入参数缓存的方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114428797A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076720A (zh) * 2023-10-18 2023-11-17 北京燧原智能科技有限公司 一种嵌入表访问方法、装置、电子设备及存储介质
CN117743973A (zh) * 2024-02-19 2024-03-22 北京搜狐新媒体信息技术有限公司 一种参数处理方法、装置、设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076720A (zh) * 2023-10-18 2023-11-17 北京燧原智能科技有限公司 一种嵌入表访问方法、装置、电子设备及存储介质
CN117076720B (zh) * 2023-10-18 2024-02-02 北京燧原智能科技有限公司 一种嵌入表访问方法、装置、电子设备及存储介质
CN117743973A (zh) * 2024-02-19 2024-03-22 北京搜狐新媒体信息技术有限公司 一种参数处理方法、装置、设备及存储介质
CN117743973B (zh) * 2024-02-19 2024-05-28 北京搜狐新媒体信息技术有限公司 一种参数处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US20130311742A1 (en) Image management method, mobile terminal and computer storage medium
CN114428797A (zh) 嵌入参数缓存的方法、装置、设备及存储介质
US10579267B2 (en) Memory controller and memory system
CN115145735B (zh) 一种内存分配方法、装置和可读存储介质
CN111506604B (zh) 访问数据的方法、装置和计算机程序产品
CN109725825B (zh) 用于管理缓存的方法、设备和计算机程序产品
CN114546897A (zh) 内存访问方法、装置、电子设备及存储介质
CN110554837A (zh) 易疲劳存储介质的智能交换
US20120005448A1 (en) Demand-Based Memory Management of Non-pagable Data Storage
US11593268B2 (en) Method, electronic device and computer program product for managing cache
CN114428589B (zh) 一种数据处理方法、装置、电子设备及存储介质
US11467734B2 (en) Managing swap area in memory using multiple compression algorithms
CN111638938B (zh) 虚拟机的迁移方法、装置、电子设备及存储介质
CN114416178A (zh) 数据访问方法、装置及非临时性计算机可读存储介质
US11494117B2 (en) Method and system for data processing
CN112764925A (zh) 基于虚拟内存的数据存储方法、装置、设备及存储介质
US11093389B2 (en) Method, apparatus, and computer program product for managing storage system
CN110955614B (zh) 文件缓存的回收方法、装置、存储介质及终端
CN118120212A (zh) 一种文件去重方法、装置和设备
CN115794667B (zh) 内存管理方法、系统、组件及设备
CN111400563B (zh) 一种模式匹配方法、装置和用于模式匹配的装置
US11237741B2 (en) Electronic device and control method for controlling memory
CN115687270A (zh) 数据存储整理方法、装置、电子设备和存储介质
CN118520521B (zh) 动态随机存储器的数据行保护方法、装置、设备及存储介质
CN111414127B (zh) 计算集群系统及其数据获取方法以及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination