CN111984864B - 对象推荐方法、装置、电子设备和存储介质 - Google Patents
对象推荐方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN111984864B CN111984864B CN202010821330.2A CN202010821330A CN111984864B CN 111984864 B CN111984864 B CN 111984864B CN 202010821330 A CN202010821330 A CN 202010821330A CN 111984864 B CN111984864 B CN 111984864B
- Authority
- CN
- China
- Prior art keywords
- account
- model
- feature vector
- fpga
- vector
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 239000013598 vector Substances 0.000 claims abstract description 318
- 238000004364 calculation method Methods 0.000 claims abstract description 77
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000012549 training Methods 0.000 claims description 40
- 238000012821 model calculation Methods 0.000 claims description 36
- 238000003062 neural network model Methods 0.000 claims description 32
- 238000013135 deep learning Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 22
- 238000012545 processing Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 11
- 239000000284 extract Substances 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 7
- 238000010276 construction Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于对象推荐方法、装置、电子设备和存储介质,所述方法包括:响应于针对目标账号的对象推荐请求,分别确定使用目标账号的账号特征参数计算得到的账号特征向量和使用备选对象的对象特征参数计算得到的对象特征向量;调用预先经过训练并部署在FPGA中的匹配模型对账号特征向量和对象特征向量进行前向计算,并将计算得到的匹配度提供至对象推荐系统,以使对象推荐系统根据该匹配度向目标账号推荐备选对象,其中,上述匹配度用于表征备选对象与目标账号之间的匹配程度。
Description
技术领域
本公开涉及对象推荐领域,尤其涉及对象推荐方法、装置、电子设备和存储介质。
背景技术
在线推理等对象推荐系统通常基于Tensorflow、Caffe或PyTorch等开源软件对应的软件架构训练的神经网络模型完成相关推荐任务。
在相关技术中,主要利用FPGA(Field-Programmable Gate Array,现场可编程门阵列)适应神经网络模型的模型算子,并通过计算上述模型算子实现对待推荐对象的推荐。但由于利用FPGA全面支持模型算子的开发难度较大,且需要在FPGA中部署支持模型算子的复杂编程逻辑,导致对象推荐系统的整体开发效率较低且维护成本高,特别是难以适用于计算需求或集群规模较小的场景。
发明内容
本公开提供了对象推荐方法、装置、电子设备和存储介质,以至少解决相关技术中的技术问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提出一种对象推荐方法,包括:
响应于针对目标账号的对象推荐请求,分别确定使用所述目标账号的账号特征参数计算得到的账号特征向量和使用备选对象的对象特征参数计算得到的对象特征向量;
调用预先经过训练并部署在现场可编程逻辑门阵列FPGA中的匹配模型对所述账号特征向量和所述对象特征向量进行前向计算,并将计算得到的匹配度提供至对象推荐系统,以使所述对象推荐系统根据所述匹配度向所述目标账号推荐所述备选对象,其中,所述匹配度用于表征所述备选对象与所述目标账号之间的匹配程度。
可选的,确定所述账号特征向量,包括:
解析所述对象推荐请求并提取所述目标账号的账号特征向量;或者,
根据本地预存的所述目标账号的账号信息或者所述对象推荐请求中携带的所述目标账号的账号信息,计算所述目标账号的账号特征向量。
可选的,确定所述对象特征向量,包括:
提取所述对象推荐请求中携带的所述备选对象的对象特征参数;
若匹配计算服务器对应的缓存中存在匹配于所述对象特征参数的特征向量,则将该特征向量确定为所述备选对象的对象特征向量;
若所述缓存中不存在匹配于所述对象特征参数的特征向量,则使用所述对象特征参数计算所述备选对象的对象特征向量,并将所述对象特征向量保存在所述缓存中。
可选的,所述匹配模型包括基于深度学习的神经网络模型。
可选的,在所述FPGA中部署匹配模型,包括:
在所述FPGA中部署所述神经网络模型的权重、偏置和从所述神经网络模型的计算图中提取的结构参数。
可选的,所述调用预先经过训练并部署在FPGA中的匹配模型对所述账号特征向量和所述对象特征向量进行前向计算,包括:
将所述账号特征向量和所述对象特征向量输入所述FPGA,以使所述FPGA将所述账号特征向量和所述对象特征向量作为所述匹配模型的输入参数参与针对所述匹配模型的前向运算以得到所述匹配度,其中,所述匹配模型被部署在所述FPGA中。
可选的,所述将所述账号特征向量和所述对象特征向量输入所述FPGA,包括:
基于所述账号特征向量和所述对象特征向量构建输入层向量;
将所述输入层向量输入所述FPGA。
可选的,所述将所述账号特征向量和所述对象特征向量输入所述FPGA,包括:
在接收到多个所述对象推荐请求的情况下,将多个所述对象推理请求分别对应的所述账号特征向量和所述对象特征向量合并后输入所述FPGA。
根据本公开实施例的第二方面,提出一种对象推荐系统,包括:
模型训练子系统,用于训练匹配模型,并将经过训练的所述匹配模型提供至FPGA硬件子系统;
模型计算子系统,用于响应于针对目标账号的对象推荐请求,分别确定使用所述目标账号得账号特征参数计算得到的账号特征向量和使用备选对象的对象特征参数计算得到的对象特征向量;将所述账号特征向量和所述对象特征向量输入现场可编程门阵列FPGA硬件子系统;并将所述FPGA硬件子系统返回的计算结果发送至对象推荐子系统;
FPGA硬件子系统,用于部署所述模型训练子系统提供的经过训练的所述匹配模型,基于所述匹配模型对所述账号特征向量和所述对象特征向量进行前向计算,并将计算得到的匹配度返回至所述模型计算子系统,其中,所述匹配度用于表征所述备选对象与所述目标账号之间的匹配程度;
对象推荐子系统,用于接收所述模型计算子系统发送的所述匹配度,并根据所述匹配度向所述目标账号推荐所述备选对象。
可选的,还包括:
分布式存储子系统,用于保存预先经过训练的所述匹配模型,并将所述匹配模型的所述模型参数发送至所述模型计算子系统。
可选的,所述对象推荐模型包括基于深度学习的神经网络模型,所述模型训练子系统还用于:
获取经过训练的所述匹配模型的模型参数,所述模型参数包括权重、偏置和从所述神经网络模型的计算图中提取的结构参数;
将所述模型参数提供至FPGA硬件子系统。
根据本公开实施例的第三方面,提出一种对象推荐装置,包括:
向量确定模块,被配置为响应于针对目标账号的对象推荐请求,分别确定使用所述目标账号的账号特征参数计算得到的账号特征向量和使用备选对象的对象特征参数计算得到的对象特征向量;
前向计算模块,被配置为调用预先经过训练并部署在现场可编程逻辑门阵列FPGA中的匹配模型对所述账号特征向量和所述对象特征向量进行前向计算,并将计算得到的匹配度提供至对象推荐系统,以使所述对象推荐系统根据所述匹配程度向所述目标账号推荐所述备选对象,其中,所述匹配度用于表征所述备选对象与所述目标账号之间的匹配程度。
可选的,所述向量确定模块,还被配置为:
解析所述对象推荐请求并提取所述目标账号的账号特征向量;或者,
根据本地预存的所述目标账号的账号信息或者所述对象推荐请求中携带的所述目标账号的账号信息,计算所述目标账号的账号特征向量。
可选的,所述向量确定模块,还被配置为
提取所述对象推荐请求中携带的所述备选对象的对象特征参数;
若匹配计算服务器对应的缓存中存在匹配于所述对象特征参数的特征向量,则将该特征向量确定为所述备选对象的对象特征向量;
若所述缓存中不存在匹配于所述对象特征参数的特征向量,则使用所述对象特征参数计算所述备选对象的对象特征向量,并将所述对象特征向量保存在所述缓存中。
可选的,所述匹配模型包括基于深度学习的神经网络模型。
可选的,还包括:
模型部署模块,被配置为在所述FPGA中部署所述神经网络模型的权重、偏置和从所述神经网络模型的计算图中提取的结构参数。
可选的,所述前向计算模块,还被配置为:
将所述账号特征向量和所述对象特征向量输入所述FPGA,以使所述FPGA将所述账号特征向量和所述对象特征向量作为所述匹配模型的输入参数参与针对所述匹配模型的前向运算以得到所述匹配度,其中,所述匹配模型被部署在所述FPGA中。
可选的,所述前向计算模块,还被配置为:
基于所述账号特征向量和所述对象特征向量构建输入层向量;
将所述输入层向量输入所述FPGA。
可选的,所述前向计算模块,还被配置为:
在接收到多个所述对象推荐请求的情况下,将多个所述对象推理请求分别对应的所述账号特征向量和所述对象特征向量合并后输入所述FPGA。
根据本公开实施例的第四方面,提出一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述第一方面中任一实施例所述的对象推荐方法。
根据本公开实施例的第五方面,提出一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述第一方面中任一实施例所述的对象推荐方法。
根据本公开实施例的第六方面,提供一种计算机程序产品,所述计算机程序产品被配置为执行上述第一方面中任一实施例所述的对象推荐方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
根据本公开的实施例,使用FPGA作为计算硬件搭建对象推荐系统,利用服务器主机获取对象推荐模型的模型参数并部署在FPGA中。一方面,FPGA只需要在接收到服务器发送的对象推荐请求相关的账号特征向量和对象特征向量后进行简单的矩阵计算,即可完成对对象推荐模型的前向计算并获得目标账号与备选对象之间的匹配度,而不需要在对象推荐系统的搭建阶段通过编程使FPGA适应复杂的模型算子,因此对象推荐系统的搭建及维护效率较高。另一方面,相对于价格高昂的GPU,本公开方案采用成本较低的FPGA,因此搭建的对象推荐系统硬件成本较低,尤其适用于计算需求或者计算集群规模较小的场景,有效地避免了计算资源的浪费。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据本公开的实施例之一示出的一种对象推荐方法流程图;
图2是根据本公开的实施例之一示出的一种对象推荐系统结构图;
图3是根据本公开的实施例之一示出的一种对象推荐方法交互流程图;
图4是根据本公开的实施例之一示出的一种对象推荐装置的示意框图;
图5是根据本公开的实施例之一示出的一种电子设备的结构图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在线推理等对象推荐系统通常基于Tensorflow、Caffe或PyTorch等开源软件对应的软件架构训练的神经网络模型完成相关推荐任务,对对象进行推荐的过程即包括对神经网络模型进行计算的过程。相关技术提供了两种对象推荐系统的搭建方式:
一种是使用GPU作为计算硬件搭建对象推荐系统,以利用GPU自身支持Tensorflow软件等相应模型算子的特性完成对软件训练的神经网络模型的计算。但由于GPU等计算硬件通常价格高昂导致对象推荐系统硬件成本较高,因此在对象推荐系统的计算需求较小或者计算集群规模较小的场景下,易造成计算资源的严重浪费。
另一种是使用FPGA作为计算硬件搭建对象推荐系统,使用FPGA适应Tensorflow软件等相应模型算子以完成对软件训练的神经网络模型的计算。但由于利用FPGA全面支持模型算子的开发难度大,且需要支持复杂的硬件编程,因此开发及维护成本较高,导致对象推荐系统整体方案的成本仍然较高。
为解决上述技术问题,本公开提出一种对象推荐方法,使用FPGA作为计算硬件搭建对象推荐系统,利用服务器主机获取对象推荐模型的模型参数并部署在FPGA中,以使用该对象推荐模型进行目标账号与备选对象之间匹配度的计算。
图1是根据本公开的实施例示出的一种对象推荐方法流程图,该方法应用于模型计算服务器;如图1所示,该方法可以包括:
步骤102,响应于针对目标账号的对象推荐请求,分别确定使用所述目标账号的账号特征参数计算得到的账号特征向量和使用备选对象的对象特征参数计算得到的对象特征向量。
需要说明的是,本公开涉及到的对象推荐请求对应的请求发送方可以为目标账号对应的客户端,此时,客户端主动请求获取目标对象;请求发送方也可以为提供对象推荐服务的对象推荐子系统,此时,后台的对象推荐服务主动向目标账号推荐目标对象。上述对象推荐请求可以是单一推荐请求,也可以是批量推荐请求,本公开对所接收对象推荐请求的来源及数量并不进行限制。本公开涉及到的目标账号可以为一个或多个独立账号,也可以为归属于同一类型的多个账号,例如群组内的成员账号等。
在一实施例中,响应于对象推荐请求,可以确定其对应的账号特征向量。例如,为减少模型计算服务器的任务量,请求发送方生成的在对象推荐请求中可以预先携带有根据目标账号的账号特征向量计算得到的账号特征向量,此时模型计算服务器接收到上述对象推荐请求后可以直接解析该请求并从中提取账号特征向量,以加快模型计算服务器的请求处理过程。又例如,为避免不同请求发送方各自生成上述目标账号对应的账号特征向量可能导致的特征向量形式不统一,对象推荐请求中可以携带目标账号的账号信息,而由模型计算服务器从该账号信息中提取账号特征参数并计算相应的账号特征向量,此时由模型计算服务器统一建立所接收对象推荐请求对应的账号特征向量,保证了不同对象推荐请求对应的账号特征向量的格式统一性,便于针对账号对象推荐请求的处理及后续模型计算的顺利进行。又或者,模型计算服务器本地可以预先存储有上述目标账号的账号信息,因此可以从本地存储的该账号信息中提取目标账号的账号特征参数,并根据该账号特征参数计算相应的账号特征向量。其中,上述账号信息可以包括账号名称、账号ID、账号注册时间、账号等级、账号历史对象获取记录、账号的对象获取偏好等至少一种信息。上述账号特征参数可以按照预设规则从账号信息中提取,提取出的账号特征参数用于表征目标账号的至少一种账号特征,例如在备选对象为文章、视频等可观看作品的情况下,可以依次按照账号ID、账号历史观看作品的作品类型、账号历史观看时长最长的作品标签等,不再赘述。可以预设上述账号特征参数对应的参数顺序及特征计算规则,并使用该顺序及规则计算账号特征参数对应的账号特征向量。
在一实施例中,可以根据对象推荐请求确定备选对象对应的对象特征向量。上述对象推荐请求中可以携带备选对象的对象特征参数,模型计算服务器可以基于从对象推荐请求中提取的上述对象特征参数确定备选对象。例如,请求发送方可以仅指定对象类型、对象发布方账号、对象发布时间段、对象更新时刻和/或对象推荐次数等模糊信息作为上述对象特征参数,此时模型计算服务器可以在对象库中确定匹配于上述模糊信息的对象作为备选对象;请求发送方也可以直接指定对象ID、对象标签或其他多种信息组合构成的精准信息作为上述对象特征参数,此时模型计算服务器可以直接根据上述精准信息唯一确定备选对象(当然,备选对象可以有多个)。在确定上述备选对象后,模型计算服务器可以在其对应的缓存中查询匹配于上述对象特征参数的特征向量。在查询到上述特征向量的情况下,即将该特征向量确定为备选对象的对象特征向量;否则,在未查询到上述特征向量的情况下,可以直接基于备选对象的对象特征参数或上述对象推荐请求中携带的针对对象的其他信息生成相应的对象特征向量,并将生成的对象特征向量保存在上述缓存中,以便下次需要时直接从缓存中获取该备选对象的上述对象特征向量,从而减少对象特征向量的确定时间。其中,上述缓存可以为模型计算服务器的本地缓存,也可以为与模型计算服务器预关联的分布式缓存,如redis缓存或Memcached缓存等。
步骤104,调用预先经过训练并部署在现场可编程逻辑门阵列FPGA中的匹配模型对所述账号特征向量和所述对象特征向量进行前向计算,并将计算得到的匹配度提供至对象推荐系统,以使所述对象推荐系统根据所述匹配度向所述目标账号推荐所述备选对象,其中,所述匹配度用于表征所述备选对象与所述目标账号之间的匹配程度。
在一实施例中,上述对象推荐模型可以为基于深度学习的神经网络模型,例如DNN(Deep Neural Network,深度神经网络)、CNN(Convolutional Neural Networks,卷积神经网络)或RNN(Recurrent Neural Network,循环神经网络)等。此时,上述神经网络模型的模型参数可以包括:权重、偏置和从上述神经网络模型的计算图中提取的结构参数等。上述结构参数用于表征神经网络模型的模型结构,以全连接的DNN模型为例,上述结构参数可以表征该DNN模型中隐藏层的层数,和/或每一层所包含计算节点的个数等,本公开对于上述神经网络模型的具体形式以及相应的模型参数并不进行限制。另外,上述神经网络模型可以基于Tensorflow、Caffe或PyTorch等开源软件对应的软件架构进行训练得到。
在一实施例中,上述对象推荐模型可以为经过模型训练及验证的推荐模型,上述部署预先训练得到的对象推荐模型的模型参数的过程可以包括:获取预先训练得到的对象推荐模型的模型参数并其发送至FPGA,以使FPGA将上述模型参数保存在自身的固定内存中,当然,可能还需要进行相关的部署配置。通过在FPGA中部署上述神经网络模型的模型参数,使得FPGA在模型计算时只需要基于上述模型参数和输入参数进行前向计算,即简单的矩阵计算即可,并不需要通过编程使FPGA支持复杂的Tensorflow算子、Caffe算子或PyTorch算子等模型算子,因此FPGA的计算较为简单,有助于提高对象推荐模型的计算速度。
在一实施例中,上述匹配模型可以被部署在FPGA中,进而,模型计算服务器可以将上述账号特征向量和对象特征向量输入FPGA,以使FPGA将账号特征向量和对象特征向量作为匹配模型的输入参数参与针对匹配模型的前向运算以得到匹配度。其中,上述匹配模型对账号特征向量和对象特征向量进行的前向计算,即为利用账号特征向量和对象特征向量进行的矩阵计算,该矩阵计算过程仅涉及到矩阵的加、减、乘等简单运算,进而能够实现较高的计算效率。
在一实施例中,可以先基于上述账号特征向量和对象特征向量构建输入层向量,然后将上述输入层向量输入FPGA,该输入层向量即被作为神经网络模型的输入参数参与该模型的模型的计算过程。其中,构建输入层向量时,可以将包括账号特征向量和对象特征向量的多个行(或列)向量构建为一个行(或列)向量,从而便于将输入层特征向量一次性输入对象推荐模型。
在一实施例中,在接收到多个对象推荐请求的情况下,可以将多个对象推荐请求分别对应的账号特征向量和对象特征向量合并后输入FPGA。例如,如可以合并为一个Batch批处理,以减少对FPGA的写入次数。可以先在任一对象推荐请求对应的账号特征向量和对象特征向量之间建立预设的第一关联关系,如添加相同的对应于请求的标记,然后将多个请求对应的标记后的账号特征向量和对象特征向量进行合并,最终一次性输入FPGA。相应的,在同一请求对应多个计算结果的情况下,FPGA也可以为对应于同一请求的多个计算结果添加预设的第二关联关系,从而模型计算服务器接收到多个结果后可以基于上述第二关联确定对应于同一请求的计算结果。
实际上,在本实施例中,作为一示例性实施例,可以先在FPGA中部署模型参数,再向FPGA发送账号特征向量和对象特征向量;或者,作为另一示例性实施例,可以先向FPGA发送账号特征向量和对象特征向量,再在FPGA中部署模型参数。换言之,“在FPGA中部署模型参数”与“向FPGA发送账号特征向量和对象特征向量”并不存在必然的先后顺序,可以根据实际情况进行调整。
模型计算服务器将上述账号特征向量、对象特征向量和对象推荐模型的模型参数发送至FPGA后,后者基于对象推荐模型的模型参数对应对上述账号特征向量和对象特征向量进行前向计算,并将相应的计算结果返回至模型计算服务器。后者接收后将计算结果发送至对象推荐系统,以便对象推荐系统使用表征上述目标账号和备选对象之间匹配程度的匹配度将备选对象中的目标对象推荐至上述目标账号,从而完成对上述对象推荐请求的响应过程。例如,在计算结果为上述账号特征向量和对象特征向量之间的相似度,或者上述目标账号和备选对象之间的匹配度的情况下,目标对象可以为上述相似度或匹配度大与预设阈值的备选对象,或者相似度或匹配度最大的预设数量个备选对象等。
根据上述实施例,使用FPGA作为计算硬件搭建对象推荐系统,利用服务器主机获取对象推荐模型的模型参数并部署在FPGA中。一方面,FPGA只需要在接收到服务器发送的对象推荐请求相关的账号特征向量和对象特征向量后进行简单的矩阵计算,即可完成对对象推荐模型的前向计算,并不需要在对象推荐系统的搭建阶段通过编程使FPGA适应复杂的模型算子,因此对象推荐系统的搭建及维护效率较高。另一方面,相对于价格高昂的GPU,本公开方案采用成本较低的FPGA,因此搭建的对象推荐系统硬件成本较低,尤其适用于计算需求或者计算集群规模较小的场景,有效地避免了计算资源的浪费。
相应的,本公开还提供了一种对象推荐系统。下面结合图2所示的一种对象推荐系统示意图,对该系统的结构及工作过程进行详细描述。如图2所示,该系统可以包括:
模型训练子系统201,用于训练对象推荐模型,并将经过训练的对象推荐模型提供至模型计算子系统203。
在一实施例中,模型训练子系统201可以先获取训练样本,该训练样本可以包括样本账号和被推荐至样本账号的样本对象,以及样本账号和未被推荐至样本账号的样本对象,并且样本对象可以被预先标注实际推荐结果已构成相应的正样本和负样本。模型训练子系统201可以将包括上述正样本和负样本的训练样本输入待训练的对象推荐模型中,并基于模型输出的计算结果与样本所标注的实际推荐结果之间的偏差调整对象推荐模型的模型参数。例如,若对象推荐模型为DNN模型,可以调整DNN模型的隐藏层的层数、每层(包含输入层input layer和隐藏层hidden layer)的节点数、相邻层的节点之间的连接关系、每个节点对应的权重及偏置等,实际调整的模型参数可以根据具体情况进行设置,本公开对此并不进行限制。对模型进行训练的具体过程可以参见相关技术中公开的内容,此处不再赘述。
可选的,本系统还可以包括分布式缓存子系统202,用于保存预先经过训练的对象推荐模型,并将对象推荐模型的模型参数发送至模型计算子系统203。例如,上述分布式缓存子系统202可以为Hadoop分布式存储系统或Redis分布式存储系统等。在上述模型训练子系统201完成对对象推荐模型的训练或对训练后的模型进行验证后,可以将训练完成的对象推荐模型保存在分布式缓存子系统202中,具体的,可以保存对象推荐模型的全部模型信息,也可以仅保存对象推荐模型的基本信息。以对象推荐模型为神经网络模型为例,上述基本信息可以包括神经网络模型的权重、偏置和计算图;也可以为权重、偏置和根据计算图提取的神经网络模型的结构信息等,本公开对此并不进行限制。
当然,在不存在上述分布式缓存子系统202的情况下,模型计算子系统203可以直接将模型参数发送至模型计算子系统203(图2中未示出)。
在一实施例中,当上述模型训练子系统201完成针对对象推荐模型的新一轮训练后,可以将训练完成或验证完成的上述模型或模型参数更新至上述分布式缓存子系统202中,以便逐步提高模型计算结果的精确度。对于任一对象推荐请求,其相关计算过程涉及到的对象推荐模型可以是当前分布式缓存子系统202中保存的任一版本的对象推荐模型,例如最新版本的对象推荐模型。
模型计算子系统203,用于响应于对象推荐子系统205发送的针对目标账号的对象推荐请求,分别确定目标账号对应的账号特征向量和备选对象对应的对象特征向量;将账号特征向量和对象特征向量输入FPGA硬件子系统204,并将所述FPGA硬件子系统204返回的计算结果发送至对象推荐子系统205。
在一实施例中,模型计算子系统203可以部署在该对象推荐系统的服务器主机中。模型计算子系统203可以包括内部存储模块203A、请求及推理模块203B和特征提取模块203C。其中,内部存储模块203A通过读取分布式缓存子系统202中保存的对象推荐模型的模型参数,并将上述模型参数发送至FPGA硬件子系统204,使FPGA硬件子系统204完成对上述模型参数的部署。特征提取模块203C可以先确定待推荐对象,例如对象库中的全部对象或满足预设条件的部分对象等,然后按照预设的特征提取规则提取待推荐对象的预设对象特征,然后基于预设对象特征生成待推荐对象对应的待推荐对象特征向量,并保存在自身对应的本地缓存中,其中,上述预设对象特征可以为对象的类型、更新时刻、推荐次数和/或用户反馈评分值等。请求及推理模块203B接收到对象推荐子系统205发送的对象推荐请求后,可以先提取对象推荐请求中包含的账号特征向量和特征信息,然后基于该特征信息在特征提取模块203C对应的上述本地缓存中查询相匹配的特征向量,以作为备选对象对应的对象特征向量;当然,在上述缓存中未查询到的情况下,也可以根据上述对象推荐请求中包含的特征信息或对象推荐请求中携带的针对对象的其他信息生成备选对象对应的对象特征向量并保存在上述缓存中。请求及推理模块203B将确定的上述账号特征向量和对象特征向量发送至FPGA硬件子系统204中,以使后者基于上述向量完成针对对象推荐模型的计算过程。
在上述过程中,请求及推理模块203B确定账号特征向量和对象特征向量并发送至FPGA硬件子系统204,以及内部存储模块203A将对象推荐模型的模型参数发送至FPGA硬件子系统204之间并不存在必然的前后顺序关系,可以根据实际情况进行调整。
FPGA硬件子系统204,用于对账号特征向量、对象特征向量和对象推荐模型的模型参数进行前向计算,并将相应的计算结果返回至模型计算子系统203;其中,上述对象推荐模型预先经过训练且其对应的模型参数被部署至FPGA硬件子系统204。
在一实施例中,上述FPGA硬件子系统204可以为与模型计算子系统203相连接的独立FPGA芯片,也可以为多个FPGA芯片构成的FPGA计算集群,当然,无论是独立FPGA还是FPGA计算集群,除FPGA芯片外还应包含支持FPGA芯片或FPGA集群正常工作所需的必要外围电路及控制电路,不再赘述。
再一实施例中,上述模型计算子系统203与FPGA硬件子系统204之间的全部数据通讯,都可以通过PCIe(Peripheral Component Interconnect express,高速串行计算机扩展总线)总线进行传输,以保证数据传输的速度,进而提高处理效率。
对象推荐子系统205,用于接收所述模型计算子系统203发送的计算结果,其中,该计算结果用于表征目标账号和备选对象之间的匹配程度;然后根据上述匹配程度向目标账号推荐相应的备选对象。
在一实施例中,上述对象推荐子系统205可以为部署在上述服务器主机、其他服务器或云服务器中的对象推荐服务。其接收到模型计算子系统203发送的计算结果后,基于上述计算结果确定目标对象并推荐至目标账号。例如,在计算结果为上述账号特征向量和对象特征向量之间的相似度,或者上述目标账号和备选对象之间的匹配度的情况下,上述目标对象可以为上述相似度或匹配度大与预设阈值的备选对象,或者相似度或匹配度最大的预设数量个备选对象。
在上述对象推荐系统中,通过各个子系统的上述配合过程完成针对目标用户的对象推荐请求的处理过程。
为了更清楚地说明本公开的对象推荐方案,下面以模型训练子系统201、分布式缓存子系统202、模型计算子系统203、FPGA硬件子系统204和对象推荐子系统205分别为GPU、Hadoop、服务器、FPGA和推荐请求方,对象为视频、对象推荐模型为DNN模型的场景为例,对上述各部分之间的交互过程进行说明。图3是根据本公开的实施例之一示出的一种对象推荐方法交互流程图。如图3所示,该方法可以包括以下步骤:
步骤301,服务器确定待推荐视频后,提取并缓存待推荐视频特征向量。
服务器可以先确定待推荐视频,例如视频库中的全部视频或满足预设条件的部分对象等,然后按照预设的特征提取规则提取待推荐视频的预设视频特征,然后基于预设视频特征生成待推荐视频对应的待推荐视频特征向量,并保存在自身对应的本地缓存中,其中,上述预设视频特征可以为视频的类型、上传时刻、视频总时长、用户平均播放时长、观看人数、弹幕数量、点赞数量、评论数量、转发数量等的一个或多个。
步骤302,GPU获取训练样本后训练DNN模型。
在本实施例中,GPU可以先获取训练样本,如样本账号和经过推荐计算被推荐至样本账号(正样本)或未被推荐至目标账号(负样本)的样本对象,并且样本对象可以被预先标注实际推荐结果。GPU可以将上述训练样本输入待训练的对象推荐模型中,并基于模型输出的计算结果与样本所标注的实际推荐结果之间的偏差调整对象推荐模型的模型参数。例如,可以调整DNN模型的隐藏层的层数、每层(包含输入层input layer和隐藏层hiddenlayer)的节点数、相邻层的节点之间的连接关系、每个节点对应的权重及偏置等,实际调整的模型参数可以根据具体情况进行设置,本公开对此并不进行限制。对模型进行训练的具体过程可以参见相关技术中公开的内容,此处不再赘述。
在一实施例中,上述训练样本可以结合目标账号的用户画像进行确定,以尽量满足不同类型、不同偏好用户的视频喜好,从而为目标账号提供更加准确的个性化视频推荐服务。
在一实施例中,GPU获取训练样本并训练DNN模型的过程可以周期性进行。例如每个1天、1周或1个月在前一次训练完成的DNN模型的基础上重新训练一次,当然,上述预设的时间间隔可以根据DNN模型的对象类型、对象更新时间、业务需求等实际情况进行调整。在另一实施例中,GPU获取训练样本并训练DNN模型的过程可以在模型输出满足预设条件的情况下进行。例如,可以在模型所输出推荐对象的平均转化效果低于某一预设阈值的情况下,认为该模型当前推荐结果不够准确,从而开始对其进行重新训练以实现模型更新。在又一实施例中,GPU也可以在发生预设业务事件后进行获取训练样本并训练DNN模型。例如,当对象推荐系统所服务的业务系统的业务逻辑发生调整,如视频服务平台的“科技”类视频的平台权重增大,则相应的调整DNN模型中关于“科技”类视频的推荐权重,以便将更多的“科技”类视频推荐给目标用户。
在一实施例中,GPU进行上述训练时可以使用Tensorflow、Caffe或PyTorch等开源软件对应的软件架构,以便充分发挥GPU自动支持上述软件框架的技术优势。训练完成的上述DNN模型包括计算图、权重和偏置,还可以包括其他必要的模型信息。
步骤303,GPU将训练完成的DNN模型发送至Hadoop保存。
在一实施例中,GPU完成上述训练后,可以将训练完成的DNN模型发送至Hadoop分布式缓存系统进行保存,以便减少服务器直接与GPU通讯的网络开销。具体的,上述DNN模型可以为训练好的模型对应的计算图、权重、偏置及其他必要的模型信息等构成的完整模型信息;也可以为训练好的模型对应的计算图、权重和偏置;还可以为权重、偏置和GPU从训练好的模型对应的计算图中提取出的模型的结构信息。
在一实施例中,在GPU完成对DNN模型的更新训练之后,Hadoop可以仅保存更新后的最新版本的DNN模型对应的上述模型参数,以尽量减少存储空间的占用并加快参数查找速度;也可以同时保存最新版本的模型参数及其历史版本的模型参数,以便服务器灵活选择所需要的模型参数。
当然,上述Hadoop是可选部分,在不存在上述Hadoop的情况下,CPU可以直接与GPU通讯以获取DNN模型的模型参数。
步骤304,服务器向Hadoop发送模型参数获取请求,并在接收Hadoop返回的DNN模型对应的模型参数后,将模型参数发送至FPGA。
服务器需要在FPGA中部署DNN模型的模型参数时,可以从Hadoop中获取模型参数。在一实施例中,Hadoop可以在DNN模型更新后,将最新版本DNN模型的模型参数主动发送至服务器,以使服务器对FPGA中的当前版本模型参数进行更新。
在另一实施例中,服务器可以在需要部署DNN模型的模型参数时,主动向Hadoop发送模型参数获取请求,以便获取Hadoop返回的模型参数。因为Hadoop中可能同时保存有多套模型的模型参数,因此上述模型参数获取请求中可以指定欲获取DNN模型的模型标识,如模型ID、版本号。因为模型ID无法唯一标识模型参数,因此若模型参数获取请求中携带模型ID,则Hadoop接收请求后可以根据模型ID查到该模型的当前最新版本,然后将最新版本对应的模型参数返回至服务器。因为版本号可以唯一标识模型参数,因此若模型参数获取请求中携带版本号,则Hadoop接收请求后可以直接将版本号对应的模型参数返回至服务器。
在本实施例中,服务器接收到上述模型参数后可以直接将模型参数发送至FPGA。
实际上,Hadoop也可以将DNN模型的计算图、权重和偏置发送至服务器,由服务器从计算图中提取DNN模型的结构参数,并将该结构参数、权重和偏置发送至FPGA。
步骤305,FPGA部署模型参数。
在一实施例中,FPGA接收到DNN模型的模型参数后,将模型参数保存在自身的固定内存中,并进行相应的参数配置,从而完成对模型参数的部署。具体的配置过程可以参见相关技术中FPGA部署神经网络模型的模型参数的内容,此处不再赘述。
实际上,上述步骤301所述的服务器提取并缓存待推荐视频特征向量与步骤302-305所述的训练、保存及部署DNN模型参数的过程,并不存在必然的先后顺序关系。可以先执行步骤301再执行步骤302-305,也可以先执行步骤302-305再执行步骤301,上述步骤的实际执行顺序可以根据实际情况进行调整。
步骤306,推荐请求方向服务器发送针对目标账号的视频推荐请求。
在一实施例中,推荐请求方可以是独立的目标账号对应的目标客户端,此时视频推荐请求可以由客户端在检测到针对目标客户端实施的预设操作后发出,其中,该预设操作可以为视频刷新操作。上述推荐请求方也可以是为目标账号提供视频推荐服务的推荐服务平台,此时该推荐服务平台主动向服务器发出视频推荐请求,以实现针对上述目标客户端中已登录目标账号的视频推荐。在推荐请求方是目标客户端的情况下,视频推荐请求可以由该客户端生成;在推荐请求方是推荐服务平台的情况下,视频推荐请求可以由上述客户端或该推荐服务平台生成。
在一实施例中,上述视频推荐请求中可以包含备选视频的特征信息,例如可以为视频ID、视频发布方ID、视频类型标识和/或账号关联标记等信息;上述视频推荐请求中还可以包含目标账号的账号特征向量或账号信息,以便于服务器基于上述信息确定目标账号的账号特征向量和备选视频的视频特征向量。
步骤307,服务器确定目标账号对应的账号特征向量和视频特征向量。
在一实施例中,若上述视频推荐请求中携带目标账号的账号特征向量,则服务器可以直接解析上述视频推荐请求并提取账号特征向量。若上述频推荐请求中未携带目标账号的账号特征向量,但携带有目标账号的账号特征向量,则服务器可以从上述视频推荐请求中提取目标账号的账号特征向量,然后基于提取的账号特征向量生成目标账号的账号。
在一实施例中,若上述视频推荐请求中包含备选视频的特征信息,则服务器可以上述视频推荐请求中提取备选视频的特征信息,然后在服务器的本地缓存中查询与该特征信息相匹配的待推荐视频特征向量。若查找到匹配于该特征信息的待推荐视频特征向量,则可以将该待推荐视频特征向量确定为备选视频的视频特征向量(相应的,该待推荐视频被确定为备选视频);否则,若未查找到匹配于该特征信息的待推荐视频特征向量,则可以在视频库中查找匹配于该特征信息的原始视频,并基于被查找到的原始视频计算其对应的特征向量以作为视频特征向量(相应的,被查找到的原始视频被确定为备选视频)。
实际上,上述视频获取请求对应的账号特征向量和视频特征向量的数量是不固定的,例如,针对1个目标账号的视频获取请求中指定了100条备选视频,则该视频推荐请求实际上对应于目标账号的1个账号特征向量和100个备选视频的100个视频特征向量。当然,若上述视频推荐请求是同时针对5个目标账号的,则该视频推荐请求中可以包含这5个目标账号的特征信息或账号特征向量,相应的,其中任一目标账号对应的备选视频的个数可以由该视频推荐请求指定或由服务器根据该视频推荐请求确定。对于任意视频推荐请求对应的N个备选视频,FPGA需要分别使用N个视频特征向量计算N次,相应的,最终得到N个子结果,这N个子结果共同构成针对该视频推荐请求的计算结果(当然,也可以理解为得到的是针对该视频推荐请求的N个计算结果,本公开对此不作限制,只是为便于描述采用前一种解释方式)。
步骤308,服务器构建输入层向量并发送至FPGA。
在一实施例中,服务器可以基于确定出的上述账号特征向量和视频特征向量创建输入层向量,该输入层向量是能够同时反映目标账号的账号特征和备选视频的视频特征。具体的,在上述账号特征向量和视频特征向量的维度类型相同的情况下,可以基于二者创建更高维的输入层向量。例如,账号特征向量Z和视频特征向量P均为1×5的一维行向量,其中Z=[1,2,3,1,1],P=[5,6,5,5,8],则可以创建输入层向量In1=[1,2,3,1,1,5,6,5,5,8],也可以创建输入层向量In2=[5,6,5,5,8,1,2,3,1,1]。上述账号特征向量Z和视频特征向量P的向量长度也可以不同,本公开对此并不进行限制。当然,上述输入层向量的创建规则仅是示例性的,具体的创建规则可以根据DNN模型的输入层特征及视频特征等具体情况进行确定,不再赘述。
服务器创建上述输入层向量后,可以将该向量发送至FPGA,以使输入层向量作为DNN模型的输入参数参与模型计算。在一实施例中,在接收到多个视频推荐请求的情况下,可以将多个视频推荐请求分别对应的输入层向量合并为一个Batch(批处理脚本)后输入FPGA,以减少对FPGA的写入次数。关于Batch的具体处理过程可以参见相关技术中公开的内容,本公开对此并不进行限制。
在另一实施例中,服务器也可以将账号特征向量和视频特征向量单独输入FPGA并参与计算。此时,在接收到多个视频推荐请求的情况下,可以将多个视频推荐请求分别对应的账号特征向量和视频特征向量合并为一个Batch批处理后输入FPGA,以减少对FPGA的写入次数。例如,可以先在任一视频推荐请求对应的账号特征向量和视频特征向量之间建立预设的第一关联关系,如添加相同的对应于请求的标记,然后将多个请求对应的标记后的账号特征向量和视频特征向量进行合并,最终一次性输入FPGA。相应的,在同一请求对应多个计算结果的情况下,FPGA也可以为对应于同一请求的多个计算结果添加预设的第二关联关系,从而模型计算服务器接收到多个结果后可以基于上述第二关联确定对应于同一请求的计算结果。
在一实施例中,服务器可以针对上述任一视频推荐请求构建Actor模型的流水线系统,从而令针对该视频推荐请求的处理过程中的每个步骤唯一对应的线程都作为独立的Actor实现归属于该视频推荐请求的单一功能。通过构建针对视频推荐请求的上述流水线系统,保证了任一视频推荐请求的处理过程中各个步骤之间在时间逻辑上的一致性,以避免线程开启时间顺序混乱可能导致的请求处理失败。
实际上,上述步骤301与步骤307之间需要满足步骤301先于步骤307执行的顺序。而步骤302-305与步骤306-308之间无需满足固定的时间顺序,可以根据具体情况调整各步骤的执行顺序,本公开对此不作限制。
步骤309,FPGA利用输入层向量和已部署的模型参数进行前向计算。
在一实施例中,上述FPGA可以为与服务器相连接的独立FPGA芯片,也可以为多个FPGA芯片构成的FPGA计算集群,当然,无论是独立FPGA还是FPGA计算集群,除FPGA芯片外还应包含支持FPGA芯片或FPGA集群正常工作所需的必要外围电路及控制电路,不再一一赘述。
在本实施例中,对于已经部署有DNN模型的模型参数的FPGA,接收到上述输入层向量或者独立的账号特征向量和视频特征向量后,可以直接利用上述向量计算和预先部署的模型参数实现对DNN模型的前向计算,并得到以上述向量作为输入值时对应的模型输出值(即DNN模型的计算结果,如用于表征备选视频和目标账号之间匹配程度的匹配度)。实际上,正因为FPGA中预先部署有DNN模型的模型参数,所以FPGA进行上述前向计算时只需完成加、减、乘等简单的矩阵运算即可,并不需要FPGA适应DNN模型中复杂的模型算子,因此显著简化了FPGA的运算过程。
如前所述,任一视频推荐请求可能对应于分别对应N个备选视频的N个视频特征向量,相应的,针对该视频推荐请求的计算结果也包含N个子结果,任一子结果唯一对应一个备选视频,用于表征该备选视频和视频推荐请求所对应目标账号的匹配程度。
FPGA计算得到上述计算结果后,可以将上述计算结果返回至服务器,例如,可以将同一视频获取请求对应的多个子结果打包合并为针对视频推荐请求的计算结果后返回至服务器;也可以分别为各个子结果添加与上述视频推荐请求相关的归属标记后,将各个子结果依次分别返回至服务器,以便服务器在接收到任一子结果后可以基于该子结果的归属标记确定该子结果归属于相应的视频推荐请求。
步骤310,服务器将FPGA返回的计算结果发送至推荐请求方。
在一实施例中,服务器在接收到针对某视频推荐请求的单一计算结果或多个子结果打包合并后的计算结果后,可以将该计算结果返回至发送该视频推荐请求的推荐请求方。服务器在接收到多个子结果后,可以基于子结果各自携带的归属标记确定归属于同一视频推荐请求的多个子结果,然后将归属于同一视频推荐请求的多个子结果打包合并后发返回至相应视频推荐请求的推荐请求方。
在一实施例中,若推荐请求方是独立的目标账号对应的目标客户端,此时该目标客户端可以基于该计算结果确定需要获取的目标视频,然后将根据目标视频信息从相应的服务器中获取目标视频并展示,从而完成对用户刷新操作的响应;目标客户端也可以将上述计算结果发送至相应的服务器,由该服务器基于该计算结果确定需要获取的目标视频并推荐至目标客户端。若推荐请求方是推荐服务平台,则该推荐服务平台可以基于该计算结果确定需要获取的目标视频,并将目标视频推荐至目标客户端。至此,完成针对视频推荐请求的响应过程。
与前述对象推荐方法的实施例相对应地,本公开还提出了对象推荐装置的实施例。
图4是根据本公开的实施例之一示出的一种对象推荐装置的示意框图。本实施例所示的对象推荐装置可以适用于推荐服务对应的服务端,所述服务端对应的服务器可以为包含一独立主机的物理服务器或主机集群承载的虚拟服务器等。所述推荐服务对应的推荐对象可以是视频、广告、音频、文本、网页、优惠券等多种形式的网络资源。
如图4所示,所述对象推荐装置可以包括:
向量确定模块401,被配置为响应于针对目标账号的对象推荐请求,分别确定使用所述目标账号的账号特征参数计算得到的账号特征向量和使用备选对象的对象特征参数计算得到的对象特征向量;
前向计算模块402,被配置为调用预先经过训练并部署在现场可编程逻辑门阵列FPGA中的匹配模型对所述账号特征向量和所述对象特征向量进行前向计算,并将计算得到的匹配度提供至对象推荐系统,以使所述对象推荐系统根据所述匹配程度向所述目标账号推荐所述备选对象,其中,所述匹配度用于表征所述备选对象与所述目标账号之间的匹配程度。
可选的,所述向量确定模块401,还被配置为:
解析所述对象推荐请求并提取所述目标账号的账号特征向量;或者,
根据本地预存的所述目标账号的账号信息或者所述对象推荐请求中携带的所述目标账号的账号信息,计算所述目标账号的账号特征向量。
可选的,所述向量确定模块401,还被配置为
提取所述对象推荐请求中携带的所述备选对象的对象特征参数;
若匹配计算服务器对应的缓存中存在匹配于所述对象特征参数的特征向量,则将该特征向量确定为所述备选对象的对象特征向量;
若所述缓存中不存在匹配于所述对象特征参数的特征向量,则使用所述对象特征参数计算所述备选对象的对象特征向量,并将所述对象特征向量保存在所述缓存中。
可选的,所述匹配模型包括基于深度学习的神经网络模型。
可选的,还包括:
模型部署模块403,被配置为在所述FPGA中部署所述神经网络模型的权重、偏置和从所述神经网络模型的计算图中提取的结构参数。
可选的,所述前向计算模块402,还被配置为:
将所述账号特征向量和所述对象特征向量输入所述FPGA,以使所述FPGA将所述账号特征向量和所述对象特征向量作为所述匹配模型的输入参数参与针对所述匹配模型的前向运算以得到所述匹配度,其中,所述匹配模型被部署在所述FPGA中。
可选的,所述前向计算模块402,还被配置为:
基于所述账号特征向量和所述对象特征向量构建输入层向量;
将所述输入层向量输入所述FPGA。
可选的,所述前向计算模块402,还被配置为:
在接收到多个所述对象推荐请求的情况下,将多个所述对象推理请求分别对应的所述账号特征向量和所述对象特征向量合并后输入所述FPGA。
本公开的实施例还提出一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述任一实施例所述的对象推荐方法。
本公开的实施例还提出一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述任一实施例所述的对象推荐方法。
本公开的实施例还提出一种计算机程序产品,所述计算机程序产品被配置为执行上述任一实施例所述的对象推荐方法。
图5是根据本公开的实施例示出的一种电子设备的示意框图。例如,电子设备500可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图5,电子设备500可以包括以下一个或多个组件:处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,输入/输出(I/O)的接口512,传感器组件514,以及通信组件518。
处理组件502通常控制电子设备500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器520来执行指令,以完成上述对象推荐方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
存储器504被配置为存储各种类型的数据以支持在电子设备500的操作。这些数据的示例包括用于在电子设备500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件506为电子设备500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为电子设备500生成、管理和分配电力相关联的组件。
多媒体组件508包括在电子设备500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当电子设备500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(MIC),当电子设备500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件518发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
I/O接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件514包括一个或多个传感器,用于为电子设备500提供各个方面的状态评估。例如,传感器组件514可以检测到电子设备500的打开/关闭状态,组件的相对定位,例如所述组件为电子设备500的显示器和小键盘,传感器组件514还可以检测电子设备500或电子设备500一个组件的位置改变,用户与电子设备500接触的存在或不存在,电子设备500方位或加速/减速和电子设备500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件518被配置为便于电子设备500和其他设备之间有线或无线方式的通信。电子设备500可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件518经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件518还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在本公开一实施例中,电子设备500可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述对象推荐方法。
在本公开一实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由电子设备500的处理器520执行以完成上述对象推荐方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
需要说明的是,在本公开中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本公开实施例所提供的方法和装置进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本公开的限制。
Claims (16)
1.一种对象推荐方法,其特征在于,包括:
响应于针对目标账号的对象推荐请求,分别确定使用所述目标账号的账号特征参数计算得到的账号特征向量和使用备选对象的对象特征参数计算得到的对象特征向量;
调用预先经过训练并部署在现场可编程逻辑门阵列FPGA中的匹配模型对所述账号特征向量和所述对象特征向量进行前向计算,并将计算得到的匹配度提供至对象推荐系统,以使所述对象推荐系统根据所述匹配度向所述目标账号推荐所述备选对象,其中,所述匹配度用于表征所述备选对象与所述目标账号之间的匹配程度,所述匹配模型包括基于深度学习的神经网络模型;在所述FPGA中部署匹配模型,包括:在所述FPGA中部署所述神经网络模型的权重、偏置和从所述神经网络模型的计算图中提取的结构参数。
2.根据权利要求1所述的方法,其特征在于,确定所述账号特征向量,包括:
解析所述对象推荐请求并提取所述目标账号的账号特征向量;或者,
根据本地预存的所述目标账号的账号信息或者所述对象推荐请求中携带的所述目标账号的账号信息,计算所述目标账号的账号特征向量。
3.根据权利要求1所述的方法,其特征在于,确定所述对象特征向量,包括:
提取所述对象推荐请求中携带的所述备选对象的对象特征参数;
若匹配计算服务器对应的缓存中存在匹配于所述对象特征参数的特征向量,则将该特征向量确定为所述备选对象的对象特征向量;
若所述缓存中不存在匹配于所述对象特征参数的特征向量,则使用所述对象特征参数计算所述备选对象的对象特征向量,并将所述对象特征向量保存在所述缓存中。
4.根据权利要求1所述的方法,其特征在于,所述调用预先经过训练并部署在FPGA中的匹配模型对所述账号特征向量和所述对象特征向量进行前向计算,包括:
将所述账号特征向量和所述对象特征向量输入所述FPGA,以使所述FPGA将所述账号特征向量和所述对象特征向量作为所述匹配模型的输入参数参与针对所述匹配模型的前向运算以得到所述匹配度,其中,所述匹配模型被部署在所述FPGA中。
5.根据权利要求4所述的方法,其特征在于,所述将所述账号特征向量和所述对象特征向量输入所述FPGA,包括:
基于所述账号特征向量和所述对象特征向量构建输入层向量;
将所述输入层向量输入所述FPGA。
6.根据权利要求4所述的方法,其特征在于,所述将所述账号特征向量和所述对象特征向量输入所述FPGA,包括:
在接收到多个所述对象推荐请求的情况下,将多个所述对象推理请求分别对应的所述账号特征向量和所述对象特征向量合并后输入所述FPGA。
7.一种对象推荐系统,其特征在于,包括:
模型训练子系统,用于训练匹配模型,并将经过训练的所述匹配模型提供至FPGA硬件子系统;所述匹配模型包括基于深度学习的神经网络模型,所述模型训练子系统还用于:获取经过训练的所述匹配模型的模型参数,所述模型参数包括权重、偏置和从所述神经网络模型的计算图中提取的结构参数;将所述模型参数提供至FPGA硬件子系统;
模型计算子系统,用于响应于针对目标账号的对象推荐请求,分别确定使用所述目标账号得账号特征参数计算得到的账号特征向量和使用备选对象的对象特征参数计算得到的对象特征向量;将所述账号特征向量和所述对象特征向量输入现场可编程门阵列FPGA硬件子系统;并将所述FPGA硬件子系统返回的计算结果发送至对象推荐子系统;
FPGA硬件子系统,用于部署所述模型训练子系统提供的经过训练的所述匹配模型,基于所述匹配模型对所述账号特征向量和所述对象特征向量进行前向计算,并将计算得到的匹配度返回至所述模型计算子系统,其中,所述匹配度用于表征所述备选对象与所述目标账号之间的匹配程度;
对象推荐子系统,用于接收所述模型计算子系统发送的所述匹配度,并根据所述匹配度向所述目标账号推荐所述备选对象。
8.根据权利要求7所述的系统,其特征在于,还包括:
分布式存储子系统,用于保存预先经过训练的所述匹配模型,并将所述匹配模型的模型参数发送至所述模型计算子系统。
9.一种对象推荐装置,其特征在于,包括:
向量确定模块,被配置为响应于针对目标账号的对象推荐请求,分别确定使用所述目标账号的账号特征参数计算得到的账号特征向量和使用备选对象的对象特征参数计算得到的对象特征向量;
前向计算模块,被配置为调用预先经过训练并部署在现场可编程逻辑门阵列FPGA中的匹配模型对所述账号特征向量和所述对象特征向量进行前向计算,并将计算得到的匹配度提供至对象推荐系统,以使所述对象推荐系统根据所述匹配度向所述目标账号推荐所述备选对象,其中,所述匹配度用于表征所述备选对象与所述目标账号之间的匹配程度,所述匹配模型包括基于深度学习的神经网络模型;
模型部署模块,被配置为在所述FPGA中部署匹配模型,包括:在所述FPGA中部署所述神经网络模型的权重、偏置和从所述神经网络模型的计算图中提取的结构参数。
10.根据权利要求9所述的装置,其特征在于,所述向量确定模块,还被配置为:
解析所述对象推荐请求并提取所述目标账号的账号特征向量;或者,
根据本地预存的所述目标账号的账号信息或者所述对象推荐请求中携带的所述目标账号的账号信息,计算所述目标账号的账号特征向量。
11.根据权利要求9所述的装置,其特征在于,所述向量确定模块,还被配置为
提取所述对象推荐请求中携带的所述备选对象的对象特征参数;
若匹配计算服务器对应的缓存中存在匹配于所述对象特征参数的特征向量,则将该特征向量确定为所述备选对象的对象特征向量;
若所述缓存中不存在匹配于所述对象特征参数的特征向量,则使用所述对象特征参数计算所述备选对象的对象特征向量,并将所述对象特征向量保存在所述缓存中。
12.根据权利要求9所述的装置,其特征在于,所述前向计算模块,还被配置为:
将所述账号特征向量和所述对象特征向量输入所述FPGA,以使所述FPGA将所述账号特征向量和所述对象特征向量作为所述匹配模型的输入参数参与针对所述匹配模型的前向运算以得到所述匹配度,其中,所述匹配模型被部署在所述FPGA中。
13.根据权利要求12所述的装置,其特征在于,所述前向计算模块,还被配置为:
基于所述账号特征向量和所述对象特征向量构建输入层向量;
将所述输入层向量输入所述FPGA。
14.根据权利要求12所述的装置,其特征在于,所述前向计算模块,还被配置为:
在接收到多个所述对象推荐请求的情况下,将多个所述对象推理请求分别对应的所述账号特征向量和所述对象特征向量合并后输入所述FPGA。
15.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的对象推荐方法。
16.一种计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至6中任一项所述的对象推荐方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010821330.2A CN111984864B (zh) | 2020-08-14 | 2020-08-14 | 对象推荐方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010821330.2A CN111984864B (zh) | 2020-08-14 | 2020-08-14 | 对象推荐方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984864A CN111984864A (zh) | 2020-11-24 |
CN111984864B true CN111984864B (zh) | 2023-12-26 |
Family
ID=73434018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010821330.2A Active CN111984864B (zh) | 2020-08-14 | 2020-08-14 | 对象推荐方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984864B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650778B (zh) * | 2020-12-24 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 信息推荐系统、方法、装置、服务器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105678379A (zh) * | 2016-01-12 | 2016-06-15 | 腾讯科技(深圳)有限公司 | 一种cnn的处理方法和装置 |
CN108520300A (zh) * | 2018-04-09 | 2018-09-11 | 郑州云海信息技术有限公司 | 一种深度学习网络的实现方法和装置 |
CN110851729A (zh) * | 2019-11-19 | 2020-02-28 | 深圳前海微众银行股份有限公司 | 资源信息推荐方法、装置、设备及计算机存储介质 |
CN111125528A (zh) * | 2019-12-24 | 2020-05-08 | 三角兽(北京)科技有限公司 | 信息推荐方法及装置 |
-
2020
- 2020-08-14 CN CN202010821330.2A patent/CN111984864B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105678379A (zh) * | 2016-01-12 | 2016-06-15 | 腾讯科技(深圳)有限公司 | 一种cnn的处理方法和装置 |
CN108520300A (zh) * | 2018-04-09 | 2018-09-11 | 郑州云海信息技术有限公司 | 一种深度学习网络的实现方法和装置 |
CN110851729A (zh) * | 2019-11-19 | 2020-02-28 | 深圳前海微众银行股份有限公司 | 资源信息推荐方法、装置、设备及计算机存储介质 |
CN111125528A (zh) * | 2019-12-24 | 2020-05-08 | 三角兽(北京)科技有限公司 | 信息推荐方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111984864A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684510B (zh) | 视频排序方法、装置、电子设备及存储介质 | |
CN112131410A (zh) | 多媒体资源展示方法、装置、系统和存储介质 | |
RU2640632C2 (ru) | Способ и устройство для доставки информации | |
CN109670077B (zh) | 视频推荐方法、装置和计算机可读存储介质 | |
CN109961094B (zh) | 样本获取方法、装置、电子设备及可读存储介质 | |
CN111898018A (zh) | 一种虚拟资源的发送方法、装置、电子设备及存储介质 | |
CN113553509B (zh) | 一种内容推荐方法、装置、电子设备及存储介质 | |
CN111984864B (zh) | 对象推荐方法、装置、电子设备和存储介质 | |
CN115203543A (zh) | 内容推荐方法、内容推荐模型的训练方法及装置 | |
US20220245401A1 (en) | Method and apparatus for training model | |
CN112256445B (zh) | 基于应用程序的数据处理方法、装置、设备及存储介质 | |
CN113553448A (zh) | 一种推荐模型训练方法、装置、电子设备及存储介质 | |
CN117453933A (zh) | 一种多媒体数据推荐方法、装置、电子设备及存储介质 | |
CN113411246B (zh) | 一种回复处理方法、装置和用于回复处理的装置 | |
CN112784151B (zh) | 一种确定推荐信息的方法及相关装置 | |
CN110674416A (zh) | 游戏推荐方法及装置 | |
CN113177162B (zh) | 搜索结果的排序方法、装置、电子设备和存储介质 | |
CN109753205B (zh) | 一种显示方法及装置 | |
CN112764846B (zh) | 界面显示方法、装置、电子设备和存储介质 | |
CN112083811B (zh) | 一种候选项展示方法和装置 | |
CN111291268B (zh) | 信息处理方法、信息处理装置及存储介质 | |
CN110929771B (zh) | 图像样本分类方法及装置、电子设备、可读存储介质 | |
CN114676308A (zh) | 搜索词推荐方法、装置、电子设备、存储介质及产品 | |
CN113128181A (zh) | 一种信息处理方法及装置 | |
CN113569148A (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 |