CN114936087B - 一种嵌入向量预取的方法、装置、系统及相关设备 - Google Patents
一种嵌入向量预取的方法、装置、系统及相关设备 Download PDFInfo
- Publication number
- CN114936087B CN114936087B CN202111157670.0A CN202111157670A CN114936087B CN 114936087 B CN114936087 B CN 114936087B CN 202111157670 A CN202111157670 A CN 202111157670A CN 114936087 B CN114936087 B CN 114936087B
- Authority
- CN
- China
- Prior art keywords
- embedded vector
- processor
- accelerator
- embedded
- hash value
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例公开了一种嵌入向量预取的方法、装置、系统及相关设备,其中方法包括:处理器读取盐值和第一嵌入向量关键字,根据盐值和第一嵌入向量关键字,确定第一嵌入向量关键字对应的加速器,处理器确定所述加速器是否存在嵌入向量溢出的情况,在不存在嵌入向量溢出的情况下,处理器将第一嵌入向量发送至加速器中,在存在嵌入向量溢出的情况下,处理器不将第一嵌入向量发送至加速器中,保持第一嵌入向量存储于第一内存中。本发明实施例通过加盐的方式改变哈希值,改变了嵌入向量关键字与加速器之间的映射关系,使得嵌入向量均衡地分配至不同的加速器中,消除嵌入向量溢出的情况,保持系统正常运行。
Description
技术领域
本发明涉及深度学习领域,尤其涉及一种嵌入向量预取的方法、装置、系统及相关设备。
背景技术
目前,深度学习领域发展迅速,深度学习在各行各业得到了广泛的应用。尤其是将深度学习应用于推荐系统中取得了不错的效果。
在基于深度学习的推荐系统中,嵌入向量技术的应用非常广泛。嵌入向量技术就是将推荐系统获得的用户特征作为稀疏向量,通过嵌入表转换为稠密向量。嵌入表存储在推荐系统关联的服务器的内存中,嵌入表中的一行即为一个嵌入向量。在推荐模型进行深度学习时,由处理器将训练所需的嵌入表中的嵌入向量从服务器的内存中放到加速器中的过程称为预取。目前,在预取过程中,会出现大部分嵌入向量存放在一个加速器上的情况,由于加速器内存容量有限,嵌入向量溢出,系统出现异常。
发明内容
本申请提供了一种嵌入向量预取的方法、装置、系统及相关设备,用于解决目前在预取过程中,大部分嵌入向量存放在一个加速器上,由于加速器内存容量有限,嵌入向量容量超出加速器的内存容量,导致系统异常的问题。
第一方面,本发明实施例提供了一种嵌入向量预取的应用系统,该系统包括服务器,加速器和高速串行计算机扩展总线标准。其中,服务器包括处理器和第一内存,加速器包括第二内存、指令解码器、控制器、多路选择器和计算模块。服务器和加速器之间可以由高速串行计算机扩展总线标准等高速带宽互联,加速器之间可以由高速带宽或者网络连接,其中,一个服务器可以与多个加速器连接。
服务器是一种既具有计算能力又具有存储能力的设备,可以是物理服务器,也可以是基于通用的物理服务器结合网络功能虚拟化技术实现的虚拟机,本申请对服务器的形式不作具体限定。可选地,服务器包括处理器和第一内存,服务器可以包括更多或者更少的部件,也可以将多个部件集成为一个部件。
处理器用于处理来自服务器或者其他系统的数据访问请求,也用于处理系统内部生成的请求。可选地,处理器通过前端端口接收服务器发送的写数据请求时,会将这些写数据请求中的数据暂时保存在第一内存中,当第一内存中的数据总量达到一定阈值时,处理器通过后端端口将第一内存中存储的数据发送至硬盘进行持久化存储。
第一内存是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。第一内存可以用于存储数据信息,例如批数据和嵌入表,处理器调用上述数据信息的速度很快。第一内存还可以用于存储程序代码,处理器读取第一内存中存储的数据,调用第一内存中存储的程序代码,可以实现对硬盘的管理。
加速器可以是图形处理器、嵌入式神经网络处理器或者是其他类型的加速卡。可选地,加速器可以包括第二内存、指令解码器、控制器、多路选择器和计算模块。
第二内存可以用于存储数据信息,同第一内存结构,作用相似,只是在内存容量上有所区别。可选地,第二内存中还存在高速缓冲存储器,高速缓冲存储器和主存储器之间信息的调度和传送由硬件自动进行。指令解码器用于接收处理器发送的指令,对处理器发送的指令进行解码,得到用于指示待进行计算的多个数据的地址以及运算类型。控制器可以接收指令解码器发送过来的所述多个数据的地址和计算模块输出的计算结果。多路选择器用于根据指令解码器的控制信号,选择将控制器或者处理器的访存命令发送给第二内存,以及,从第二内存中获取需要发送给控制器以及处理器的数据。计算模块用于根据运算类型对多个数据执行相应的计算。
高速串行计算机扩展总线标准,旨在替代旧的总线标准,属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量等功能。
第二方面,本发明实施例提供了一种嵌入向量预取的方法,该方法包括:处理器读取盐值(salt)和第一嵌入向量关键字(embedding key),处理器根据读取的盐值和第一嵌入向量关键字,确定第一嵌入向量关键字对应的加速器(device)。处理器确定加速器是否存在嵌入向量溢出的情况,在不存在嵌入向量溢出的情况下,将第一嵌入向量(embedding)发送至对应的加速器中,在存在嵌入向量溢出的情况下,处理器不将第一嵌入向量发送至加速器中,保持第一内存一直存储于第一内存中。
在第二方面一种可能的实现方式中,处理器可以从磁盘或者网络读取一个批数据,批数据中可以包括m个嵌入向量关键字,处理器将每一个嵌入向量关键字对应的嵌入向量从第一内存中发送至第二内存中的操作都相同,第一嵌入向量关键字可以是批数据中的任意一个,对应嵌入表(embedding table)中唯一的一行,对应唯一的嵌入向量。处理器读取到批数据后,还可以对批数据中的嵌入向量关键字进行去重和切分。处理器可以随机产生一个盐值。
处理器读取盐值和第一嵌入向量关键字,处理器根据第一嵌入向量关键字,确定第一哈希值。可选地,处理器将第一嵌入向量关键字输入第一哈希算法中,确定第一哈希值。其中,第一哈希算法可以是信息摘要算法,安全散列算法等。
处理器根据盐值和第一哈希值,确定第二哈希值。可选地,处理器先将盐值和第一哈希值结合,处理器可以将第一哈希值和盐值进行字符串拼接,或者,将盐值插入到第一哈希值中的一个或多个位置,从而得到加盐后的第一哈希值。在得到加盐后的第一哈希值后,处理器可以将加盐后的第一哈希值输入第二哈希算法,可选地,第二哈希算法可以是信息摘要算法,安全散列算法等。
处理器根据第二哈希值,确定第一嵌入向量关键字对应的加速器。可选地,处理器可以将第二哈希值转换为数字形式,与系统中的加速器的数量一起代入模n映射关系的公式中。在确定第一嵌入向量关键字对应的加速器信息后,以同样的方法,处理器可以确定批数据中所有的嵌入向量关键字对应的加速器,得到各个加速器上对应的嵌入向量关键字的容量。
处理器确定上述加速器是否存在嵌入向量溢出的情况。可选地,处理器可以获取到每个加速器中可以存放的嵌入向量的数量,也就是第二内存的容量,将嵌入向量的数量与加速器的第二内存的容量进行比较,在加速器的第二内存的容量都不小于嵌入向量的数量的情况下,嵌入向量无溢出。或者,处理器可以根据各个加速器对应的嵌入向量的数量计算一个标准差,并设置一个阈值,比较该标准差与该阈值的大小。在标准差小于或者等于阈值的情况下,嵌入向量无溢出。
在嵌入向量溢出的情况下,第一嵌入向量一直存储于第一内存中,处理器不发送第一嵌入向量至加速器中。可选地,在嵌入向量的容量大于加速器的第二内存容量的情况下,处理器还可以读取一个新的盐值,并且保存到配置文件当中,利用新的盐值,重复上述步骤,重新计算嵌入向量与加速器之间的对应关系,直至所有加速器都不存在嵌入向量溢出的情况。
可选地,在嵌入向量无溢出的情况下,处理器可以将第一嵌入向量、嵌入向量地址、加速器之间的通信信息发送至对应的加速器的第二内存的高速缓冲存储器中。
上述方法可以掩盖服务器与加速器之间信息传输的流程,可以有效解决预取不均衡导致的加速器容量溢出问题,不会出现系统异常问题。
实施第二方面描述的方法,处理器通过读取盐和第一嵌入向量关键字,根据第一嵌入向量关键字确定第一哈希值,根据盐和上述第一哈希值确定第二哈希值,根据上述第二哈希值,进行模n运算,得到第一嵌入向量关键字对应的加速器。处理器确定是否存在嵌入向量溢出的情况,在没有嵌入向量溢出的情况下,处理器将第一嵌入向量发送至对应的加速器的第二内存中。在存在嵌入向量溢出的情况下,处理器不将第一嵌入向量送至加速器中,而是重新读取盐值。处理器通过在哈希值中加入字符串,也就是加盐的方式,将固定的模n映射关系变为动态的模n映射关系,改变嵌入向量与加速器的对应关系,使得嵌入向量可以均衡地分配到不同的加速器中,避免加速器中嵌入向量溢出,避免了系统异常的产生,达到均衡预取的效果。
第三方面,本发明实施例提供了一种嵌入向量预取装置,该装置包括获取单元、哈希运算单元、比较单元和数据输出单元。获取单元用于获取盐值和第一嵌入向量关键字,哈希运算单元用于根据第一嵌入向量关键字和盐值,确定第一嵌入向量关键字对应的加速器,用于确定分配至各个加速器的嵌入向量是否溢出。数据输出单元用于在无嵌入向量溢出的情况下,将第一嵌入向量发送至对应的加速器的第二内存中,或者,在存在嵌入向量溢出的情况下,不将所述第一嵌入向量发送至对应的加速器中,保持第一嵌入向量存储于第一内存中。
可选地,获取单元获取的盐值可以是随机生成的一个或者多个字符组成的字符串,或者,是存储在配置文件中的字符串。第一嵌入向量关键字为批数据中的任意一个嵌入向量关键字,批数据可以是获取单元从磁盘或者网络中读取得到的。获取单元用于将盐和第一嵌入向量关键字一并输入至哈希运算单元。
哈希运算单元用于根据第一嵌入向量关键字和盐值,确定第一嵌入向量关键字对应的加速器。可选地,哈希运算单元用于将第一嵌入向量关键字代入第一哈希算法,确定第一哈希值。在得到第一哈希值后,哈希运算单元用于将盐值加入到第一哈希值中,将加盐后的第一哈希值代入第二哈希算法中,确定第二哈希值。可选地,第一哈希算法和第二哈希算法可以是信息摘要算法、安全散列算法等。在得到第二哈希值后,哈希运算单元用于将第二哈希值转换为数字形式,再将第二哈希值和加速器数量代入模n映射关系中,确定第一嵌入向量关键字对应的加速器。哈希运算单元用于确定分配至各个加速器的嵌入向量是否溢出。
可选地,在获取到所有嵌入向量关键字对应的加速器后,比较单元可以用于将分配至各个加速器的嵌入向量的容量与各个加速器的第二内存的容量进行比较,在嵌入向量的容量大于加速器第二内存的容量的情况下,嵌入向量溢出。在嵌入向量的容量小于或者等于加速器第二内存的容量的情况下,不存在嵌入向量溢出的情况。比较单元也可以用于,在确定每一个嵌入向量关键字对应的加速器后,进行嵌入数量与各加速器的第二内存的容量进行比较。
可选地,在获取到所有嵌入向量关键字对应的加速器后,哈希运算单元可以用于根据各个加速器对应的嵌入向量的数量计算一个标准差,并设置一个阈值,比较该标准差与该阈值的大小。在标准差大于该阈值的情况下,嵌入向量溢出,在标准差小于或者等于该阈值的情况下,无嵌入向量溢出。
可选地,在无嵌入向量溢出的情况下,数据输出单元用于将第一嵌入向量,嵌入向量地址,加速器之间的通信信息发送至对应的加速器第二内存中。
可选地,在存在嵌入向量溢出的情况下,数据输出单元用于不将第一嵌入向量发送至加速器中,保持第一嵌入向量存储于第一内存中状态不变。可选地,获取单元可以用于重新获取一个新的盐值,存储到配置文件当中,重复上述过程,重新计算嵌入向量关键字与加速器之间的对应关系。
可选地,该装置可以广泛应用于基于深度学习的模型训练中,该装置还可以包括训练单元。
第四方面,本发明实施例,提供了一种计算设备,该计算设备包括处理器和存储器,其中,存储器存储计算机指令,处理器用于执行第一、第二或第三方面任一种可能的实现方式中各个模块的功能。
第五方面,本发明实施例,提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,指令在上述计算设备上运行,使上述计算设备执行第一、第二、第三方面所述的方法。
预取过程中运用的哈希算法,运算速度快,并且记录在预取过程中读取的盐,可以在所有能够实现均衡预取的盐中,进行训练效果等方面的比较,选取更优的盐达到更高的吞吐率,提高了整体的运算效率。
综上所述,本申请通过在基础哈希值上加盐的方式将固定的模n映射关系变为动态的模n映射关系,改变了嵌入向量与加速器这个位置信息之间的对应关系,使得嵌入向量关键字对应的嵌入向量可以均衡地分配到不同的加速器中,解决了由于预取不均衡导致的加速器内存容量不足的问题,保持系统正常运行。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的一种嵌入向量预取的应用系统的示意性框图;
图2是本发明实施例提供的一种嵌入向量预取的方法的流程图;
图3是本发明实施例提供的一种嵌入向量预取装置的结构示意图。
具体实施方式
为了解决上述加速器内存容量有限,嵌入向量溢出,导致系统异常的问题,本申请提供了一种嵌入向量预取的方法,能够将嵌入表中的嵌入向量均衡地分配到各个加速器中,避免系统产生异常。
如图1所示,图1是本申请提供的一种嵌入向量预取的应用系统的示意性框图。该应用系统100包括服务器110,加速器120和高速串行计算机扩展总线标准130。其中,服务器110与加速器120由之间PCIE 130等高速带宽互联,加速器120之间由PCIE 130或者网络连接。
服务器110是一种既具有计算能力又具有存储能力的设备,可以是物理服务器,比如X86服务器、ARM服务器等等,也可以是基于通用的物理服务器结合网络功能虚拟化(network functions virtualization,NFV)技术实现的虚拟机(virtual machine,VM),虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,比如云计算中的虚拟设备,本申请不作具体限定。在一种可能的实施方式中,服务器110中包括处理器111和第一内存112。应理解,图1所示的服务器可以包括更多或者更少的部件,也可以将图1所示的服务器中的多个部件集成为一个部件,本申请对服务器的结构不作具体限定。
处理器111可以由至少一个通用处理器构成,例如中央处理器(centralprocessing unit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gatearray,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。
处理器111用于处理来自服务器或者其他系统的数据访问请求,也用于处理系统内部生成的请求。示例性的,处理器111通过前端端口接收服务器110发送的写数据请求时,会将这些写数据请求中的数据暂时保存在第一内存112中,当第一内存112中的数据总量达到一定阈值时,处理器111通过后端端口将第一内存中存储的数据发送至硬盘进行持久化存储。处理器还可以在接收请求后,读取数据,读取盐和批数据,同样,将这些数据保存在第一内存中。
第一内存112是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(read only memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(dynamic random accessmemory,DRAM),或者存储级存储器(storage class memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(random access memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。第一内存还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read only memory,PROM)、可抹除可编程只读存储器(erasable programmable read only memory,EPROM)等。另外,第一内存还可以是双列直插式存储器模块或双线存储器模块(dual in-line memory module,简称DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(solid state disk,SSD)。
第一内存112可以用于存储数据信息,例如批数据和嵌入表,因此读取上述数据信息的速度很快。第一内存还可以用于存储程序代码,处理器读取第一内存中存储的数据,运行程序代码,处理器111运行第一内存中存储的程序代码可以实现对硬盘的管理。图1中第一内存112中的程序代码可以包括一个或多个单元,示例性地,该一个或多个单元可以是获取单元、哈希运算单元、比较单元和数据输出单元。应理解,程序代码中的各个模块单元是一种示例性的划分方式,各个模块单元之间可以合并或者拆分为更多或者更少的模块单元,且系统和模块之间的位置关系也不构成任何限制,本申请不作具体限定。
加速器120可以是图形处理器(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processing unit,NPU)或者是其他类型的加速卡(physicsprocessing unit,PPU)。在一种可能的实施方式中,加速器120包括第二内存121、指令解码器122、控制器123、多路选择器124和计算模块125。
第二内存121用于存储数据信息,同第一内存112结构,作用相似,只在内存容量上有所区别。第二内存中还存在高速缓冲存储器(cache),高速缓冲存储器的原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM。高速缓冲存储器是存在于主存与处理器之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小但速度快,接近于处理器的速度。高速缓冲存储器和主存储器之间信息的调度和传送由硬件自动进行。
指令解码器122用于接收处理器发送的指令,对处理器发送的指令进行解码,得到解码结果,该解码结果用于指示待进行计算的多个数据的地址以及运算类型。在一更具体的实施例中,指令解码器122包括状态寄存器以及指令缓存队列。状态寄存器为内存可寻址的空间,当处理器向该地址发送读取请求,指令解码器122随即向处理器返回状态寄存器中存储的加速器的工作状态。
控制器123接受指令解码器122发送过来的所述多个数据的地址和计算模块125输出的计算结果。
多路选择器124用于根据指令解码器122的控制信号,选择将控制器123或者处理器的访存命令发送给内存,以及,从内存中获取需要发送给控制器123以及处理器的数据。
计算模块125用于根据运算类型对多个数据执行相应的计算。计算模块125包括计算单元、输入单元、计算单元阵列和输出单元。其中,计算单元用于控制计算单元阵列执行指令对相应的数据处理操作。输入单元用于缓存准备用于执行指令的数据。输出单元用于缓存计算单元阵列执行指令之后得到的计算结果。
在应用系统中,第一内存112和第二内存121作用相似,只是在内存容量上有所差异,第二内存的容量小于第一内存的容量。由于嵌入表的容量普遍超过第二内存的容量,所以嵌入表只能存储在第一内存中,其中,第二内存121位于加速器120中,可以存储处理器发送的部分嵌入向量,嵌入向量地址和加速器之间的通信信息。
应理解,图1所示的加速器120可以包括更多的部件或者更少的部件,加速器也可以将其中的多个部件集成为一个部件,加速器的结构存在多种形式,本申请对加速器的具体结构不作任何具体限定。
高速串行计算机扩展总线标准130(peripheral component interconnectexpress,PCIE),旨在替代旧的总线标准。PCIE属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量等功能。
应理解,图1所示的高速串行计算机扩展总线标准130存在多种规格,从PCIE x1到PCIE x32等等,本申请对高速串行计算机扩展总线标准的种类不作任何具体限定。
如图2所示,图2是本申请提供的一种嵌入向量预取的方法的流程图。嵌入向量预取的方法可以应用于图1所示的应用系统中,该方法包括以下步骤:
处理器读取的批数据中存在m个嵌入向量关键字,处理器将每一个嵌入向量关键字对应的嵌入向量从第一内存中发送至第二内存中的操作都相同,操作步骤如下:
S201:处理器读取盐值和第一嵌入向量关键字。
在一种可能的实施方式中,盐值(salt)可以是随机生成的一个或者多个字符组成的字符串,或者,是存储在配置文件中的字符串。
在一种可能的实施方式中,第一嵌入向量关键字(embedding key)为批数据(batch)中的任意一个嵌入向量关键字。批数据可以包括嵌入表(embedding table)中各个嵌入向量(embedding)对应的关键字。在批数据包括多个嵌入向量关键字的情况下,如果多个嵌入向量关键字存在重复的嵌入向量关键字,可以将重复的嵌入向量关键字去掉,如果多个嵌入向量关键字存在用不到的嵌入向量关键字,可以将用不到的嵌入向量关键字进行删除。批数据可以是处理器从磁盘或者网络中读取得到的。
S202:处理器根据第一嵌入向量关键字和盐,确定第一嵌入向量关键字对应的加速器。
在一种可能的实施方式中,处理器根据第一嵌入向量关键字和盐,确定第一嵌入向量关键字对应的加速器信息的过程包括以下步骤S211~步骤S213。
S211:处理器根据第一嵌入向量关键字,确定第一哈希值。
在一种可能的实施方式中,处理器将第一嵌入向量关键字输入第一哈希算法中,确定第一哈希值。其中,第一哈希算法可以是信息摘要算法(message digest algorithmmd5,MD5),安全散列算法(secure hash algorithm 1,SHA-1)等,应理解,第一哈希算法还包括多种不同的形式,如SHA-224、SHA-256等等,本申请对第一哈希算法不作任何具体的限制。
在一种更具体的实施方式中,第一哈希算法可以表示为:
ADD1=hash(key);
其中,ADD1表示为第一哈希值,key表示为第一嵌入向量关键字,hash()函数表示为上述第一嵌入向量关键字和上述第一哈希值之间的映射关系。处理器将不同的嵌入向量关键字输入同一第一哈希算法时,得到的输出值的长度是固定的。可以理解,在第一嵌入向量关键字相同的情况下,第一哈希算法采用的具体算法不同,第一哈希值一般不同。
S212:处理器根据盐值和第一哈希值,确定第二哈希值。
在一种可能的实施方式中,处理器需要将盐值和第一哈希值结合。处理器将盐值和第一哈希值结合的方式可以包括:(1)将第一哈希值和盐值进行字符串拼接得到加盐后的第一哈希值;(2)将盐值插入到第一哈希值中的一个或多个位置,从而得到加盐后的第一哈希值。应理解,盐值和第一哈希值结合的方式也就是字符串结合的方式,除上述两种方式外,还存在很多不同的形式,本申请对盐值和第一哈希值结合的方式不作具体限定。然后,处理器将加盐后的第一哈希值输入第二哈希算法,第二哈希算法可以是信息摘要算法,安全散列算法等。应理解,第二哈希算法还包括多种不同的表现形式,如SHA-224、SHA-256等等,本申请对第二哈希算法不作任何具体的限制。
在一种更具体的实施方式中,第二哈希算法可以表示为:
S213:处理器根据第二哈希值,确定第一嵌入向量关键字对应的加速器。
在一种可能的实施方式中,处理器将第二哈希值转换为数字形式,与系统中的加速器的数量一起代入模n映射关系的公式中,确定第一嵌入向量关键字对应的加速器信息。
在一种更具体的实施方式中,模n映射关系可以表示为:
S203:处理器确定上述加速器是否存在嵌入向量溢出的情况,如果没有溢出,进入步骤S204,如果溢出,进入步骤S205。
在一种可能的实施方式中,处理器在得到第一嵌入向量关键字对应的加速器后,先对加速器是否存在嵌入向量溢出的情况进行判断,不将对应的第一向量发送至加速器中。处理器可以获取到每个加速器中可以存放的嵌入向量的数量,也就是第二内存的容量。处理器将分配到各个加速器上的嵌入向量的数量与加速器的第二内存的容量进行比较,在所有加速器的第二内存的容量都不小于分配到对应加速器的嵌入向量的数量的情况下,也就是嵌入向量无溢出的情况下,处理器执行步骤S204。在存在嵌入向量的数量大于加速器的第二内存的容量的情况下,嵌入向量溢出,处理器执行步骤S205。
在另一种可能的实施方式中,处理器根据各个加速器对应的嵌入向量的数量计算一个标准差,并设置一个阈值,比较该标准差与该阈值的大小。在标准差小于或者等于阈值的情况下,嵌入向量无溢出,处理器执行步骤S204。在标准差大于该阈值的情况下,嵌入向量溢出,处理器执行步骤S205。
S204:处理器将第一嵌入向量发送至对应的加速器中。
在一种可能的实施方式中,处理器确定所有加速器的第二内存的容量都不小于分配到对应加速器的嵌入向量的数量,处理器将第一嵌入向量关键字在嵌入表中找到对应的第一嵌入向量,并将该嵌入向量发送至对应的加速器中。
在一种更具体的实施方式中,处理器可以将第一嵌入向量通过PCIE发送至对应加速器第二内存中的高速缓冲存储器中。处理器还可以将嵌入向量的地址和加速器之间的通信信息发送至各加速器中。
S205:处理器不将第一嵌入向量发送至加速器中,保持第一嵌入向量存储于第一内存中。
在一种可能的实施方式中,处理器确定加速器中存在嵌入向量溢出的情况。处理器不将第一嵌入向量关键字在嵌入表中对应的第一嵌入向量发送至加速器中,第一嵌入向量一直存储于服务器的第一内存中。
在一种具体的实施方式中,处理器在对批数据中的每个嵌入向量关键字都计算完毕之后,可以得到每个嵌入向量关键字对应的加速器。处理器可以统计每个加速器的第二内存的容量,与分配到各个加速器上的嵌入向量的数量进行比较。在存在嵌入向量的数量大于加速器的第二内存的容量的情况下,处理器可以读取一个新的盐值,保存到配置文件当中,利用新盐值重复上述S201至S205的步骤,重新计算各个嵌入向量关键字与加速器之间的对应关系,直至所有的加速器中都不存在嵌入向量溢出的情况。在所有加速器的第二内存的容量都不小于分配至对应加速器的嵌入向量的数量的情况下,处理器可以各个嵌入向量发送至对应的加速器的第二内存中。
在另一种具体的实施方式中,处理器在确定批数据中的一个嵌入向量关键字对应的加速器后,统计每个加速器的第二内存的容量,与此时分配到各加速器上的嵌入向量的容量进行比较。在存在嵌入向量的数量大于加速器的第二内存的容量的情况下,处理器可以读取一个新的盐值,保存到配置文件当中,利用新盐值,重复上述S201至S205的步骤,重新计算各个嵌入向量关键字与加速器之间的对应关系,直至所有的加速器中都不存在嵌入向量溢出的情况。处理器还可以将在进行此次比较之前发送至加速器中的嵌入向量发送至服务器的第一内存中。在所有加速器的第二内存的容量都不小于分配至对应加速器的嵌入向量的数量的情况下,处理器将本次计算的一个嵌入向量关键字对应的一个嵌入向量通过PCIE发送至对应的加速器的第二内存中。处理器继续计算批数据中的下一个嵌入向量关键字对应的加速器,重复上述步骤。
在另一种具体的实施方式中,在所有加速器的第二内存的容量都不小于分配至对应加速器的嵌入向量的数量的情况下,处理器还可以将嵌入向量的地址,加速器之间的通信信息发送至各个加速器中。因为在推荐系统中,加速器进行模型训练时,可能需要用到其他加速器存储的嵌入向量。处理器根据加速器训练所需的嵌入向量的地址,将嵌入向量从其所在的加速器的高速缓冲存储器中提取出来,再根据加速器之间的通信信息,将该嵌入向量通过PCIE或者网络发送至需要该嵌入向量进行运算的加速器中。
在一个具体的实施例中,在推荐系统训练初始化时,处理器将嵌入表存储到第一内存中,从磁盘上读取批数据,同样存储到服务器的第一内存中。其中,批数据包括训练中要用到的一组嵌入向量关键字,每一个嵌入向量关键字对应嵌入表中唯一的一行,对应一个嵌入向量。处理器进一步解析批数据,对其中的嵌入向量关键字进行去重和切分,解析得到的批数据表示为keys=[2,5,9,12,15,17,20]。处理器随机产生一个盐值,salt=3。处理器调用盐值和批数据中的嵌入向量关键字,计算该嵌入向量关键字对应的加速器。在本实施例中,第一哈希算法为MD5。处理器先根据批数据中的一个嵌入向量关键字,例如key=2,执行第一哈希算法,代入公式ADD1=hash(key)中,得到第一哈希值ADD1为7f89。然后处理器将盐和第一哈希值进行字符串拼接,得到加盐后的第一哈希值为7f893。处理器将加盐后的第一哈希值,代入第二哈希算法,中,计算得到加盐后的第二哈希值6595。处理器将第二哈希值和系统中加速器数量代入模n映射关系,mod n中,通过模n映射关系计算,得到该嵌入向量关键字对应的加速器为device5。其中,第一哈希值和第二哈希值都以十六进制的形式表示,在进行模n运算时,第二哈希值以数字形式表示。批数据中其他嵌入向量对应的加速器可以通过同样的方式进行计算,不一一赘述。确定所有的嵌入向量关键字对应的加速器后,处理器统计分配至各加速器中的嵌入向量的容量,将该嵌入向量的容量与处理器统计的每个加速器的第二内存容量进行比较。确定存在嵌入向量的容量大于加速器的第二内存的容量的情况,嵌入向量溢出。此时,嵌入向量一直存储于服务器的第一内存中。处理器随机产生一个新的盐值,保存到配置文件中,再利用新盐值,重复上述步骤,重新计算嵌入向量关键字与加速器之间的对应关系,直至找到一个盐值,满足均衡预取的条件,使加速器不存在嵌入向量溢出的情况。处理器找到合适的盐值,确定各个加速器无嵌入向量溢出的情况,将嵌入向量,各个嵌入向量的地址,加速器之间的通信信息等通过PCIE发送至对应的加速器的第二内存中,预取过程结束,进入训练阶段。
加速器进行推荐模型训练时,需要调用其他加速器中存储的嵌入向量。处理器根据加速器第二内存中存储的训练所需的嵌入向量的地址,将嵌入向量从对应的加速器的高速缓冲存储器中提取出来,再根据两个加速器之间的通信信息,将该嵌入向量通过PCIE,从原始加速器发送至该加速器中。
综上可知,处理器通过读取盐和批数据,根据批数据中的第一嵌入向量关键字确定第一哈希值,根据盐和上述第一哈希值确定第二哈希值,根据上述第二哈希值,进行模n运算,得到第一嵌入向量关键字对应的加速器,处理器将第一嵌入向量发送至对应的加速器的第二内存中。处理器在上述过程中,利用的第一,第二哈希算法,无需记录嵌入向量位置,无需在加速器中记录嵌入表,也无需查找嵌入向量的位置,极大提高了运算速度。并且,处理器通过在第一哈希值中加入字符串,也就是加盐的方式,将固定的模n映射关系变为动态的模n映射关系,改变了嵌入向量与加速器这个位置信息之间的对应关系,使得每个加速器对应的嵌入向量的容量不大于加速器第二内存的容量,从而实现了均衡预取,避免了嵌入向量溢出,系统异常等情况。
如图3所示,图3是本申请提供的一种嵌入向量预取装置的结构示意图。预取装置300中的程序代码310包括获取单元320、哈希运算单元330、比较单元340和数据输出单元350。
同样,由于批数据中存在m个嵌入向量关键字,该装置将每一个嵌入向量关键字对应的嵌入向量从第一内存中发送至第二内存中的过程都相同,相同的过程如下:
获取单元用于获取盐值和第一嵌入向量关键字,其中,获取单元在存在多个嵌入向量关键字的情况下,可以对嵌入向量关键字进行去重和切分,并且将其存储在服务器的第一内存中。获取的盐值是一个字符串,可以进行拆分,可以存储在配置文件中,在没有配置文件的情况下,盐随机产生。获取单元用于将盐值和批数据一并输入至哈希运算单元。
哈希运算单元用于根据第一嵌入向量关键字和盐值,确定第一嵌入向量关键字对应的加速器。在一种可能的实施方式中,哈希运算单元用于将第一嵌入向量关键字代入第一哈希算法ADD1=hash(key)中,确定第一哈希值。其中,ADD1表示为第一哈希值,key表示为第一嵌入向量关键字,hash()函数表示为上述第一嵌入向量关键字和上述第一哈希值之间的映射关系。第一哈希算法可以是信息摘要算法,安全散列算法等,应理解,第一哈希算法作为基础哈希算法,存在很多不同的形式,本申请对第一哈希算法不作任何具体的限制。
在一种可能的实施方式中,在得到第一哈希值后,哈希运算单元用于将盐值加入到第一哈希值中,将加盐后的第一哈希值代入第二哈希算法中,确定第二哈希值。其中,ADD2表示为第二哈希值,salt为盐值,key表示为第一嵌入向量关键字,/>为加盐后的第一哈希值,hash()函数表示为上述加盐后的第一哈希值和上述第二哈希值之间的映射关系,第二哈希值与第一哈希值表现形式相同。盐值与第一哈希值结合的方式可以包括:(1)哈希运算单元用于将第一哈希值和盐值进行字符串拼接,得到加盐后的第一哈希值;(2)哈希运算单元用于将盐值插入到第一哈希值中的一个或多个位置,从而得到加盐后的第一哈希值。其中,第二哈希算法可以是信息摘要算法,安全散列算法等,应理解,第二哈希算法还包括多种不同的形式,如SHA-224、SHA-256等等,本申请对第二哈希算法不作任何具体的限制。应理解,盐值和第一哈希值结合的方式,除上述两种方式外,还存在很多不同的形式,本申请对盐值和第一哈希值结合的方式不作具体限定。
在一种可能的实施方式中,在得到第二哈希值后,哈希运算单元用于将第二哈希值转换为数字形式,再将第二哈希值和加速器数量代入模n映射关系mod n中,确定第一嵌入向量关键字对应的加速器。其中,dev表示加速器信息,salt为盐值,key表示为第一嵌入向量关键字,/>为第二哈希值,n为系统中加速器的数量,mod表示第二哈希值和加速器之间的映射关系。
在一种可能的实施方式中,比较单元用于确定分配至各个加速器的嵌入向量是否溢出。确定嵌入向量是否溢出的方式可以包括:(1)比较单元用于将分配至各个加速器的嵌入向量的容量与各个加速器的第二内存的容量进行比较,在嵌入向量的容量大于加速器第二内存的容量的情况下,嵌入向量溢出。(2)比较单元用于根据各个加速器对应的嵌入向量的数量计算一个标准差,并设置一个阈值,比较该标准差与该阈值的大小。在标准差大于该阈值的情况下,嵌入向量溢出。
数据输出单元将第一嵌入向量发送至对应的加速器的第二内存中。在一种可能的实施方式中,通过比较单元,得到各个加速器的内存容量都不小于对应的嵌入向量的容量,或者标准差小于或者等于阈值的结果,确定无嵌入向量溢出的情况。数据输出单元用于将第一嵌入向量,嵌入向量地址,加速器之间的通信信息发送至对应的加速器第二内存的高速缓冲存储器中。
在一种可能的实施方式中,通过比较单元,得到加速器的内存容量小于对应的嵌入向量的容量,或者标准差大于阈值的结果,确定存在嵌入向量溢出的情况。数据输出单元用于不将第一嵌入向量发送至对应的加速器中。在一种可能的实施方式中,获取单元用于重新获取一个新的盐值,存储到配置文件当中,重复上述各单元步骤,重新计算嵌入向量关键字与加速器之间的对应关系。
在一种可能的实施方式中,该嵌入向量预取的装置还可以包括训练单元。
综上可知,该嵌入向量预取的装置可以包括获取单元、哈希运算单元、比较单元和数据输出单元。结合四个单元,可以将固定的模n映射关系变换为动态的模n映射关系,也就是改变了嵌入向量对应的加速器,使得嵌入向量可以更加均衡地分配至不同的加速器中,解决了加速器第二内存容量有限,嵌入向量溢出的问题。
为了使本申请能够被更好地理解,下面在具体的应用场景中,结合本申请提供的嵌入向量预取的应用系统和方法进行详细描述。
在基于深度学习的推荐系统中,嵌入向量技术的应用非常广泛。在推荐模型训练过程中,处理器需要提前将训练所需的嵌入向量发送至加速器中。训练初始化时,由于嵌入表的容量普遍大于加速器的第二内存容量,处理器将嵌入表读取到服务器的第一内存中。处理器随机产生一个盐值,从磁盘中读取一个批数据。处理器对批数据中的,训练需要用到的嵌入向量关键字进行去重和切分,将批数据也存储到服务器的第一内存中。处理器执行第一内存中的程序代码,调用盐值和第一嵌入向量关键字,代入第一哈希算法,确定第一哈希值。处理器将第一哈希值与盐值通过拼接的方式进行结合,得到的加盐后的第一哈希值,将加盐后的第一哈希值代入第二哈希算法,确定第二哈希值。处理器继续执行第一内存中的程序代码,将第二哈希值和系统中加速器的数量代入模n映射关系中,确定第一嵌入向量关键字对应的加速器。
处理器确定所有嵌入向量关键字对应的加速器后,根据每一个加速器对应的嵌入向量的数量,计算得到一个标准差,并且设置一个阈值,比较标准差与阈值的大小。在标准差大于阈值的情况下,处理器将所有将要发送至加速器中的嵌入向量返回第一内存中。处理器重新读取一个新的盐值,存储到配置文件中,根据新盐值重复上述步骤,重新确定嵌入向量对应的加速器。处理器再一次比较标准差与阈值的大小,在确定标准差小于或者等于阈值,无嵌入向量溢出的情况下,将嵌入向量通过PCIE发送至对应的加速器的第二内存中。同时,处理器将每个加速器训练所需的嵌入向量的地址及加速器之间的通信信息也通过PCIE一并发送至各加速器中,预取过程结束。
通过上述确定嵌入向量是否溢出的方法可以保证加载的盐值使嵌入向量在训练过程中没有溢出的情况,保证系统正常运行,同时,可以掩盖服务器与加速器之间相互发送信息的流程,提高了整体的运算效率。
处理器将嵌入向量发送至加速器后,加速器开始进行推荐模型训练。训练需要其他加速器中的嵌入向量,加速器根据所需嵌入向量的地址将该嵌入向量从另一个加速器的高速缓冲存储器中提取出来,根据加速器之间的通信信息,将提取出的嵌入向量通过PCIE发送至需要的加速器中。加速器对获取的嵌入向量进行组装,训练。在训练完成后,加速器得到的嵌入向量的梯度信息,根据加速器之间的通信信息,将该梯度信息通过PCIE发送至各个加速器中,再根据该嵌入向量的地址,找到对应的嵌入向量,将梯度信息加入到原来的嵌入向量中,更新该嵌入向量。
记录上述训练过程中所有的盐值,在利用相同的嵌入向量再次进行训练的情况下,处理器可以直接读取合适的盐值。处理器在利用不同的盐值计算时,可以比较嵌入向量在各个加速器中的分布情况,或者比较对应的训练效果,进一步对盐值进行条件筛选,利用更优的盐值使系统达到更高的吞吐率。
综上可知,本申请提供的一种应用系统执行嵌入向量预取的方法,利用加盐的方式改变哈希值,改变通过哈希运算得到的嵌入向量关键字对应的加速器,实现加速器中无嵌入向量溢出,均衡预取的效果。其中,哈希运算速度快,计算过程中不必记录嵌入向量的位置,不必为了查找嵌入向量位置,不必在每个加速器中同步记录嵌入表,提高整体运算效率。该系统可以通过多次训练和条件筛选,选取更优质的盐,使系统可以达到更高的吞吐率,应用于并行处理的情况。
本申请实施例还提供一种计算设备,该计算设备包括处理器和存储器,存储器存储计算机指令,处理器包括执行图1-图3所示的各个模块的功能。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在处理器上运行时,图1-图3所示的方法流程得以实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括至少一个计算机指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含至少一个可用介质集合的服务器、数据中心等数据存储节点。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital videodisc,DVD)、或者半导体介质。半导体介质可以是SSD。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种嵌入向量预取的方法,其特征在于,包括:
处理器读取盐值和第一嵌入向量关键字,所述第一嵌入向量关键字为批数据中的任意一个嵌入向量关键字;
所述处理器根据所述盐值和所述第一嵌入向量关键字,确定所述第一嵌入向量关键字对应的加速器;
所述处理器确定所述加速器是否存在嵌入向量溢出的情况,在不存在嵌入向量溢出的情况下,所述处理器将第一嵌入向量发送至所述加速器中;
在存在嵌入向量溢出的情况下,所述处理器不将所述第一嵌入向量发送至所述加速器中,保持所述第一嵌入向量存储于第一内存中,所述处理器读取新的盐值,重新确定所述第一嵌入向量关键字对应的加速器,直至所述第一嵌入向量关键字对应的加速器不存在嵌入向量溢出的情况。
2.根据权利要求1所述的方法,其特征在于,
所述盐值为随机生成的一个或者多个字符组成的字符串,或者,是存储在配置文件中的字符串。
3.根据权利要求1所述的方法,其特征在于,所述处理器根据所述盐值和所述第一嵌入向量关键字,确定所述第一嵌入向量关键字对应的加速器包括:
所述处理器根据所述第一嵌入向量关键字,确定第一哈希值;
所述处理器根据所述盐值和所述第一哈希值,确定第二哈希值;
所述处理器根据所述第二哈希值,确定所述第一嵌入向量关键字对应的加速器。
4.根据权利要求3所述的方法,其特征在于,所述处理器根据所述第一嵌入向量关键字,确定第一哈希值,包括:
所述处理器将所述第一嵌入向量关键字输入第一哈希算法中,确定所述第一哈希值;
所述第一哈希算法包括信息摘要算法、安全散列算法中的一种或者多种。
5.根据权利要求3所述的方法,其特征在于,所述处理器根据所述盐值和所述第一哈希值,确定第二哈希值包括:
所述处理器将所述盐值和所述第一哈希值结合,得到加盐后的第一哈希值;
所述处理器将所述加盐后的第一哈希值,输入第二哈希算法,确定所述第二哈希值。
6.根据权利要求5所述的方法,其特征在于,所述处理器将所述盐值和所述第一哈希值结合,得到加盐后的第一哈希值,包括:
所述处理器将所述第一哈希值和所述盐值进行字符串拼接,得到加盐后的第一哈希值。
7.根据权利要求5所述的方法,其特征在于,所述处理器将所述盐值和所述第一哈希值结合,得到加盐后的第一哈希值,包括:
所述处理器将所述盐值插入到所述第一哈希值中的一个或多个位置,得到加盐后的第一哈希值。
8.根据权利要求3所述的方法,其特征在于,所述处理器根据所述第二哈希值,确定所述第一嵌入向量关键字对应的加速器,包括:
所述处理器将所述第二哈希值转换为数字形式,获取系统中的加速器的数量n,代入模n映射关系中,确定所述第一嵌入向量关键字对应的加速器。
9.根据权利要求1-8任一权利要求所述的方法,其特征在于,
在不存在嵌入向量溢出的情况下,所述处理器将第一嵌入向量发送至所述加速器中,包括:
在不存在嵌入向量溢出的情况下,所述处理器根据所述第一嵌入向量关键字从嵌入表中找到对应的第一嵌入向量,将所述第一嵌入向量发送到所述加速器的高速缓冲存储器中;
在存在嵌入向量溢出的情况下,所述处理器不将所述第一嵌入向量发送至所述加速器中,保持所述第一嵌入向量存储于第一内存中包括:
在存在嵌入向量溢出的情况下,所述处理器不将所述第一嵌入向量发送至所述加速器中,读取一个新的盐值,存储在配置文件中。
10.一种嵌入向量预取的装置,其特征在于,所述装置包括:
获取单元,用于获取盐值和第一嵌入向量关键字,所述第一嵌入向量关键字为批数据中的任意一个嵌入向量关键字;
哈希运算单元,用于根据所述盐值和所述第一嵌入向量关键字,确定所述第一嵌入向量关键字对应的加速器;
比较单元:用于确定所述加速器是否存在嵌入向量溢出的情况;
数据输出单元,用于在不存在嵌入向量溢出的情况下,将第一嵌入向量发送至所述加速器中,用于在存在嵌入向量溢出的情况下,不将所述第一嵌入向量发送至所述加速器中,处理器读取新的盐值,重新确定所述第一嵌入向量关键字对应的加速器,直至所述第一嵌入向量关键字对应的加速器不存在嵌入向量溢出的情况。
11.一种计算设备,其特征在于,所述计算设备包括处理器和存储器,所述存储器存储计算机程序,所述处理器执行所述计算机程序,以使所述计算设备执行如权利要求1至9任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序,所述程序在计算设备上运行时,使所述计算设备执行如权利要求1至9任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111157670.0A CN114936087B (zh) | 2021-09-29 | 2021-09-29 | 一种嵌入向量预取的方法、装置、系统及相关设备 |
PCT/CN2022/119301 WO2023051282A1 (zh) | 2021-09-29 | 2022-09-16 | 一种嵌入向量预取的方法、装置、系统及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111157670.0A CN114936087B (zh) | 2021-09-29 | 2021-09-29 | 一种嵌入向量预取的方法、装置、系统及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114936087A CN114936087A (zh) | 2022-08-23 |
CN114936087B true CN114936087B (zh) | 2023-06-02 |
Family
ID=82863035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111157670.0A Active CN114936087B (zh) | 2021-09-29 | 2021-09-29 | 一种嵌入向量预取的方法、装置、系统及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114936087B (zh) |
WO (1) | WO2023051282A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114936087B (zh) * | 2021-09-29 | 2023-06-02 | 华为技术有限公司 | 一种嵌入向量预取的方法、装置、系统及相关设备 |
CN117076720B (zh) * | 2023-10-18 | 2024-02-02 | 北京燧原智能科技有限公司 | 一种嵌入表访问方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019009630A (ja) * | 2017-06-26 | 2019-01-17 | 日本電信電話株式会社 | ネットワーク負荷分散装置および方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005098628A1 (ja) * | 2004-03-30 | 2005-10-20 | Ibm Japan, Ltd. | オーバーフロー防止方法、装置、及びプログラム |
CN100470550C (zh) * | 2007-04-02 | 2009-03-18 | 华为技术有限公司 | 一种信息存储的方法、信息查找的方法及引擎装置 |
CN102737064B (zh) * | 2011-04-15 | 2016-02-24 | 腾讯科技(深圳)有限公司 | 文件缓存方法及装置 |
JP6063321B2 (ja) * | 2013-03-27 | 2017-01-18 | 株式会社富士通エフサス | サーバ装置およびハッシュ値処理方法 |
CN105721390A (zh) * | 2014-12-01 | 2016-06-29 | 阿里巴巴集团控股有限公司 | 一种加密存储方法和装置 |
US10534613B2 (en) * | 2017-04-28 | 2020-01-14 | Intel Corporation | Supporting learned branch predictors |
US20190073580A1 (en) * | 2017-09-01 | 2019-03-07 | Facebook, Inc. | Sparse Neural Network Modeling Infrastructure |
CN107766258B (zh) * | 2017-09-27 | 2021-11-16 | 恩亿科(北京)数据科技有限公司 | 内存存储方法与装置、内存查询方法与装置 |
CN109379297B (zh) * | 2018-11-26 | 2023-01-10 | 锐捷网络股份有限公司 | 一种实现流量负载均衡的方法和装置 |
CN111767364B (zh) * | 2019-03-26 | 2023-12-29 | 钉钉控股(开曼)有限公司 | 数据处理方法、装置和设备 |
CN113132249A (zh) * | 2019-12-31 | 2021-07-16 | 华为技术有限公司 | 一种负载均衡方法和设备 |
CN114936087B (zh) * | 2021-09-29 | 2023-06-02 | 华为技术有限公司 | 一种嵌入向量预取的方法、装置、系统及相关设备 |
-
2021
- 2021-09-29 CN CN202111157670.0A patent/CN114936087B/zh active Active
-
2022
- 2022-09-16 WO PCT/CN2022/119301 patent/WO2023051282A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019009630A (ja) * | 2017-06-26 | 2019-01-17 | 日本電信電話株式会社 | ネットワーク負荷分散装置および方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114936087A (zh) | 2022-08-23 |
WO2023051282A1 (zh) | 2023-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114936087B (zh) | 一种嵌入向量预取的方法、装置、系统及相关设备 | |
US20190266193A1 (en) | Data processing method for bloom filter, and bloom filter | |
US10320695B2 (en) | Message aggregation, combining and compression for efficient data communications in GPU-based clusters | |
US10078646B2 (en) | Hardware efficient fingerprinting | |
CN115941598A (zh) | 一种流表半卸载方法、设备及介质 | |
CN107153680B (zh) | 一种分布式内存数据库在线扩展节点的方法及系统 | |
WO2023165401A1 (zh) | 可信度量装置、设备、系统及可信身份认证方法 | |
CN107276998A (zh) | 一种基于OpenSSL的性能优化方法及装置 | |
US20200142604A1 (en) | Using variable sized uncompressed data blocks to address file positions when simultaneously compressing multiple blocks | |
CN116457751A (zh) | 一种写数据通路结构和芯片 | |
JP7142665B2 (ja) | ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム | |
WO2022271327A1 (en) | Memory inclusivity management in computing systems | |
CN114550773A (zh) | 存储器控制器、存储系统和数据处理方法 | |
EP3051699B1 (en) | Hardware efficient rabin fingerprints | |
CN108121618B (zh) | 一种修复数据的方法和装置 | |
CN113419989B (zh) | 人工智能芯片及其操作方法 | |
CN114327281B (zh) | 用于ssd的tcg软硬件加速方法、装置、计算机设备及存储介质 | |
US11947512B2 (en) | Feedback-based inverted index compression | |
US20230305964A1 (en) | Method and apparatus for verifying integrity in memory-disaggregated environment | |
CN116186746B (zh) | 并行哈希加密方法、存储介质及电子设备 | |
CN117079703B (zh) | 用于测试芯片内嵌存储器的方法及装置、电子设备 | |
CN111158584B (zh) | 基于泛在电力物联网的配网施工安全质量管控平台大数据存储方法及系统 | |
US20220172325A1 (en) | Computational object storage for offload of data augmentation and preprocessing | |
WO2023051248A1 (zh) | 一种数据访问系统、方法及相关设备 | |
CN117667470A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |