加速大规模相似性计算的制作方法

文档序号:20274838发布日期:2020-04-03 19:30阅读:169来源:国知局

背景技术
::本说明书涉及大规模相似性计算的计算过程。在许多情况下,可能希望确定输入样本是否与多个存储记录匹配,或者匹配程度如何。作为一个示例,可能希望确定dna样本是否与存储在dna记录的数据库中的记录中的任何一个匹配。数据库有可能包含许多dna记录(例如,数十万甚至数百万个记录)。通常,可能希望响应于输入样本从数据库中检索某一数量个(n个)存储记录。输入样本可以是数据库中被确定为与输入样本最接近的n个匹配的n个记录。检索到的记录的数量n比数据库中的记录的总数小,通常小得多。n个检索到的记录可以首先按照最可能的顺序排列。常规地,这种检索过程可以涉及计算输入样本和存储在数据库中的每个记录之间的相似性的度量,然后识别具有计算出的相似性度量的最高值的n个记录。n个检索到的记录可以被重新排序,以便参考计算出的相似性度量的值来排列。随着存储的记录的数量增加,这个过程变得越来越计算密集和耗时。技术实现要素:一种方法、系统和装置,包括编码在计算机存储介质上的计算机程序,用于使用实体相关性系统的第一处理器来获取存储在存储设备处的数据。数据包括关于多个实体的信息。第一处理器使用获取的数据来生成数据阵列。每个数据阵列包括多个实体的参数值,并且被配置用于在第二处理器的相应的计算单元处进行处理。系统向第二处理器提供数据阵列。第二处理器被配置为执行相关性算法,以在相应的计算单元处同时处理数据阵列。第二处理器基于使用算法和参数值在单元处执行的计算来计算相关性分数。系统基于相关性分数来确定数据阵列的实体之间的关系。这些关系指示存在于实体的子集之间的重叠属性。本说明书中描述的主题的一个方面可以用计算机实施的方法来体现。该方法包括:由实体相关性系统的第一处理单元获取存储在存储设备处的数据,数据包括关于多个实体的信息;以及在第一处理单元处使用从数据存储设备获取的数据来生成多个数据阵列。多个数据阵列中的每个数据阵列:i)包括多个实体的参数值;并且ii)被配置用于在第二处理单元的相应的计算单元处进行处理。该方法包括:在实体相关性系统处,向第二处理单元提供至少两个数据阵列,第二处理单元被配置为执行相关性算法,以在第二处理单元的相应的计算单元处同时处理至少两个数据阵列;在第二处理单元处,基于使用相关性算法和多个实体的参数值在相应的计算单元处执行的计算来计算相关性分数;以及在实体相关性系统处,基于计算出的相关性分数来确定至少两个数据阵列的实体之间的关系,其中这些关系指示存在于实体的至少一个子集之间的重叠属性。这些和其他实施方式各自都可以可选地包括以下特征中的一个或多个。例如,在一些实施方式中,计算相关性分数包括:选择特定相关性算法作为相似性算法或条件概率算法;使用特定相关性算法计算至少两个数据阵列的实体之间的交集和至少两个数据阵列的实体之间的并集;以及基于交集和并集来计算相关性分数。在一些实施方式中,第一处理单元是中央处理单元(cpu),其对从数据存储设备获取的数据进行预分类,以生成多个数据阵列;第二处理单元是图形处理单元(gpu),其使用至少两个数据阵列的实体的参数值来执行并行计算;以及特定相关性算法是jaccard相似性算法、余弦相似性算法或条件概率算法。在一些实施方式中,生成包括:基于略图算法对包括关于多个实体的信息的数据进行分类;并且响应于分类,生成数据的略图表示,每个略图表示对应于多个数据阵列中的每一个。在一些实施方式中,每个数据阵列是存储在存储设备处的数据的略图表示;并且多个数据阵列的至少一个子集包括各自都具有预定数量的实体的相应的数据阵列。在一些实施方式中,根据在第二处理单元处包括的计算单元的数量来确定每个略图表示的大小。在一些实施方式中,提供包括:将每个数据阵列存储在第二处理单元处的高速缓冲存储器中,其中高速缓冲存储器表示第二处理单元的紧凑存储器,并且根据紧凑存储器的数据容量来确定每个数据阵列的大小。在一些实施方式中,数据阵列中的至少一个被配置用于由在第二处理单元处包括的多个计算单元中的每一个访问。在一些实施方式中,确定实体之间的关系包括:确定计算出的相关性分数是否超过阈值分数;以及响应于确定计算出的相关性分数超过阈值分数,生成使用超过阈值分数的相关性分数排序的实体列表。本说明书中描述的主题的另一方面可以用计算机实施的方法来体现。该方法包括:在第一处理单元(例如,cpu)处接收第一数据项;由第一处理单元并且至少从所接收的第一数据项生成数据结构,每个数据结构表示相应的数据集;将数据结构存储在第二处理单元(例如,gpu)的存储器中;在第一处理单元处接收来自用户的查询;由第二处理单元针对存储在第二处理单元处的两个或更多个数据结构并行处理查询;以及将处理的结果从第二处理单元返回到第一处理单元。这些和其他实施方式各自都可以可选地包括以下特征中的一个或多个。例如,在一些实施方式中,第二处理单元包括多个处理核心,并且由第二处理单元针对数据结构处理查询包括:针对数据结构中的相应的一个数据结构,在每个处理核心中并行处理查询。在一些实施方式中,由第二处理单元针对存储在第二处理单元处的数据结构处理查询包括:对于存储在第二处理单元处的数据结构,确定数据结构和查询之间的相应的相似性度量。在一些实施方式中,将处理的结果从第二处理单元返回到第一处理单元包括返回识别作为查询的n个最佳匹配的数据结构的信息。在一些实施方式中,该方法包括:第一处理单元从接收到的查询生成查询数据结构,并将查询数据结构发送到gpu;并且其中,由第二处理单元处理查询包括针对存储在第二处理单元处的数据结构处理查询数据结构。在一些实施方式中,数据结构和查询数据结构是kmv略图。在一些实施方式中,由第二处理单元针对存储在第二处理单元处的数据结构处理查询包括确定查询数据结构和所存储的数据结构的并集。在一些实施方式中,由第二处理单元针对存储在第二处理单元处的数据结构处理查询包括确定查询数据结构和所存储的数据结构的交集。在一些实施方式中,由第二处理单元针对存储在第二处理单元处的数据结构处理查询包括确定查询数据结构和数据结构之间的jaccard相似性。在一些实施方式中,在第一处理单元处接收数据项包括从数据托管服务接收数据项;其中,在第一处理单元处接收数据项包括从数据托管服务接收数据项;并且其中,该方法还包括将处理的结果从第一处理单元返回到数据托管服务。在一些实施方式中,该方法还包括:在第一处理单元处接收第二查询;以及由第二处理单元针对存储在第二处理单元处的数据结构处理第二查询。在一些实施方式中,该方法还包括:在第一处理单元处接收第二数据项;由第一处理单元并且至少从所接收的第二数据项生成更新的数据结构,每个更新的数据结构表示相应的数据集;以及将更新的数据结构存储在第二处理单元的存储器中。在一些实施方式中,该方法还包括:在第一处理单元处接收第三查询;以及由第二处理单元针对存储在第二处理单元处的更新的数据结构处理第三查询。在一些实施方式中,一种包括与第二处理单元通信的第一处理单元的处理系统,该处理系统被配置为执行如在本
发明内容的前述段落中的任一段落中定义的方法。在一些实施方式中,一种包含存储的指令的计算机可读介质,当该指令被包括与第二处理单元通信的第一处理单元的处理系统执行时,使得处理系统执行如在本
发明内容的前述段落中的任一段落中定义的方法。本公开的一方面提供了一种方法,该方法包括:在第一处理单元处接收第一数据项;由第一处理单元并且至少从所接收的第一数据项生成数据结构,每个数据结构表示相应的数据集;将数据结构存储在第二处理单元的存储器中;在第一处理单元处接收来自用户的查询;由第二处理单元针对存储在第二处理单元处的两个或更多个数据结构并行处理查询;以及将处理的结果从第二处理单元返回到第一处理单元。在这方面,第一处理单元可以是cpu(中央处理单元),第二处理单元可以是gpu(图形处理单元)。可以实施本说明书中描述的主题的特定实施例,以便实现以下优点中的一个或多个。相对于其他数据相关性系统,图形处理单元可以以增加的速度确定预分类数据阵列的实体之间的相关性分数、计算结果和/或相似性关系。图形处理器可以执行与执行数据相关性算法(jaccard相似性算法)相关联的必要的计算,而无需在执行相关性算法之前对数据进行分类/预分类。此外,相对于其他相关性系统,图形处理器可以通过很少的或没有线程间数据通信来执行必要的计算。这是因为图形处理器的每个计算单元针对由系统用户提交的每个查询对特定的数据阵列集执行计算。例如,使用某些低成本的图形处理器,可以实施所描述的技术,从而仅使用图形处理器的单个计算单元实现一秒内多于2000万次相似性计算。在一些实施方式中,用于实现至少2000万次相似性计算的一秒的持续时间比标准处理器(例如,cpu)执行相同计算量所需的时间快10倍以上。因此,所描述的技术允许给定处理器在给定时间内处理更大的数据阵列(或者在更短时间内处理给定大小的数据阵列),因此,相对于其他数据处理装置有效地提供了增加的计算能力用于实现数据相关性计算。另外,所描述的技术提供了可重复的自动化过程,该过程涉及最少的人工干预,并且不需要手动执行预分类数据、生成数据阵列或配置数据阵列的大小。这样,这些技术使得计算系统能够快速执行系统以前无法以快速方式自动执行的操作(例如,大量的相似性计算),由于图形处理器/gpu计算环境中的使用k-最小散列(k-min-hash)或k-最小值(k-minimumvalue)算法对数据进行分类的挑战,所以系统以前无法以快速方式自动执行这些操作。本说明书中描述的主题的一个或多个实施例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求书,主题的其他特征、方面和优点将变得显而易见。附图说明图1是使用计算系统的处理器确定实体之间的相关性的示例计算系统的框图。图2是用于确定实体之间相关性的示例过程的流程图。图3是与图1的计算系统中的至少一个处理器相关联的示例架构。图4是与图1的计算系统中的至少一个处理器相关联的另一示例架构。图5是可以结合本说明书中描述的方法使用的计算系统的框图。不同附图中相同的附图标记和名称表示相同的元件。具体实施方式本文档描述了用于实施k-最小散列或k-最小值(“kmv”)数据处理算法对在图形处理单元(gpu)处预加载的数据进行分类从而计算实体之间的关系的技术。具体地,所描述的技术可用于通过将预分类的数据存储在gpu上来加速数据相关性计算(例如,用于确定实体之间的相似性),使得gpu的计算单元可以快速确定实体之间的关系。gpu通过执行特定类型的相关性算法来确定关系。由于在执行相关性算法之前不再需要gpu对数据进行预分类,所以可以在gpu处以相对于当前系统增加的速度来计算或确定关系。例如,实体相关性系统存储包括描述不同实体的信息的大量数据。系统可以包括中央处理单元(cpu),中央处理单元被配置为从数据存储设备获取数据,对数据进行预分类,并生成各自包括预定数量的实体的多个预分类的数据阵列。响应于cpu执行kmv略图算法来处理所获取的数据,对数据进行预分类并生成数据阵列。数据阵列对应于相应的数据的集合(或数据集)。一般来说,一个数据集的实体可以是项目、个人、或各种电子和现实世界对象。例如,一个数据集的实体可以是居住在某个地理区域(例如,英国(u.k.))的特定人口(例如,20多岁的男性)中的个人或用户。类似地,另一数据集的实体可以是也居住在相同地理区域的另一人口(例如,普通人群)中的用户。系统包括张量数据流接口,该接口被配置为预加载至少两个数据阵列(例如,张量)以用于存储在gpu的存储设备中。响应于系统接收对信息的用户查询,gpu有效地计算相应的数据集中的实体之间的相关性(例如,相似性)。例如,查询可以寻求指示英国20岁男性相对于英国一般人群对哪个域名更感兴趣的信息。系统通过执行特定类型的相关性算法(例如,jaccard相似性算法)计算表征不同数据集的实体之间的关系的相关性分数,进而计算相关性。系统使用在gpu处计算的相关性分数来生成结果集,该结果集提供响应于接收到的查询的信息。图1是使用计算系统的处理器来确定实体之间的相关性的计算系统100的框图。系统100通常包括计算服务器102、实体相关性系统104、数据存储设备106和数据摄取组件108。如下文更详细描述的,系统100包括专用硬件电路,其被配置为执行特定计算规则以用于实施k-最小散列或k-最小值(“kmv”)算法。这些特定规则的执行使得能够对大型实体数据集进行分类(例如,预分类),并在特定类型的处理单元处预加载实体数据集。处理单元可以是被配置为计算数据集的实体之间的关系的处理器设备(例如,图形处理单元(gpu))。具体地,使用系统100实施的技术用于加速不同的数据相关性计算,例如,用于确定实体之间的重叠属性和/或相似性。现在参考系统100的元件,计算服务器102被配置为使用实体相关性系统104来确定至少不同数据集的实体之间的相关性。在一些实施方式中,实体相关性系统104作为包括两个或更多个处理器微芯片的硬件电路(例如,专用电路)的子系统被包括在服务器102内。通常,服务器102可以包括处理器(例如,cpu和gpu)、存储器和数据存储设备106,它们共同形成服务器102的计算机系统。这些计算机系统的处理器处理由服务器102执行的指令,包括存储在存储器中或数据存储设备106上的指令,以显示用于在系统100的示例显示监视器处输出的图形信息。在一些实施方式中,执行存储的指令使得本文描述的一个或多个动作被服务器102或系统104执行。在其他实施方式中,可以适当地使用多个处理器,以及多个存储器和多种类型的存储器。例如,服务器102可以与多个其他计算设备连接,其中每个设备(例如,服务器阵列、服务器组、模块或多处理器系统)执行本说明书中描述的动作、操作或逻辑流程的部分。系统104包括数据托管服务110、数据流模块112和处理器模块114。托管服务110被配置为使用数据流模块112与处理器模块114界面接合,以响应于数据摄取组件108处的用户交互提供数据以用于在模块114处处理。在一些实施方式中,托管服务110被配置用于对各种不同数据源的实时访问,以获取或接收不同类型的数据。可以使用数据流模块112的数据流管理特征(如下所述)提供所获取的数据以用于在模块114处处理。例如,系统104和托管服务110可以与摄取组件108交互,以接收根据摄取组件108处的用户交互生成的查询数据120。类似地,系统104和托管服务110可以访问存储设备106,以获取各种数据的集合(例如,数据集)以用于在模块114处处理。托管服务110包括与“略图”相对应的信息的数据库。在一些实施方式中,基于对从存储设备106获取的数据集执行的分析和信息分类来生成这些略图以用于存储在托管服务110的数据库中。托管服务110的数据库可以包括按信息类型分组或以其他方式表征的各种略图。例如,数据库可以包括与不同类型的用户查询、个人或个体、不同地理区域的人口、域名、商业产品或各种数字和现实世界项目或对象相对应的预分类的实体数据的略图。在一些实施方式中,存储在数据库中的每个略图由唯一类型指示符识别,用于表征关于形成略图的实体(或查询)的信息。例如,唯一类型指示符可以将略图识别为包括特定类型的实体(例如,个人、位置、数字资产、或它们每一个的组合)或使用查询数据120获取并引用略图的实体的特定类型的查询的信息。如本文档中使用的,“略图(sketch)”是描述一组人或一组事物的数据阵列。例如,略图可以是生活在美国的一组人或生活在英国的另一组人。此外或可替换地,略图可以是一组个人、数字资产或标识符(例如,在特定日期和/或从特定地理位置访问特定url(例如,www.example.com)的ip地址)。在一些实施方式中,多个略图的数据库中的每个略图可以是经由唯一类型指示符分组的人的集合(或分配给人或项目的相应的标识符)。例如,第一个略图可以包括18岁的人,其中每个18岁的人是居住在英国特定城市(例如,伦敦)的离散实体,而第二个不同的略图可以包括在特定时间期限内被用户点击或交互的特定类型的在线内容(例如,赞助内容项)。如下文更详细描述的,系统104被配置为使用从查询数据120识别的查询和从存储设备106获取的数据集来生成多个数据阵列。在模块114处处理数据阵列,以生成对由与摄取组件108交互的用户提交的查询响应的结果集。在一些实施方式中,查询是由系统100经由摄取组件108实时接收的当前查询。在一些实施方式中,系统104确定与接收到的查询相关联的实体类型,使用相关联的实体类型识别已经从托管服务110的数据库访问的至少两个数据阵列(或略图),并且使用从数据库访问的至少两个数据阵列来处理查询。响应于处理查询,系统104生成响应于查询的结果集。数据流模块112可以是被配置为提供系统100的数据流管理功能的计算模块。在一些实施方式中,数据流模块112被配置为提供应用程序接口(api,applicationprograminterface)和机器学习(ml,machine-learning)框架。api和ml框架使得系统100能够使用kmv数据处理算法来处理和分类在模块114处经由托管服务110接收的数据集。例如,模块114的第一处理器116(例如,cpu116)可以接收数据集,用于使用数据流模块112的api特征生成预分类的数据阵列。一般来说,第一处理器116是示例cpu,并且在本文可以被称为“cpu116”。在一些实施方式中,数据流模块112与托管服务110通信,以接收或获取数据集以用于在模块114处处理。如下文更详细描述的,cpu116通过执行kmv算法来处理数据集,以生成多个相应的略图或数据阵列,该略图或数据阵列各自都具有预定义的大小属性。此外,模块114的第二处理器118(例如,gpu118)可以接收多个数据阵列的至少一个子集,用于加载到第二处理器118的高速缓冲存储器中。一般来说,第二处理器118是示例gpu,并且在本文可以被称为“gpu118”。使用数据流模块112的ml框架,系统100使得gpu118执行算法(例如,相关性算法),以使用在gpu118的高速缓冲存储器处加载的数据阵列来执行相关性分析。具体地,gpu118可以是用于执行不同类型的ml算法的几种类型的gpu中的任何一种。在这种情况下,数据流模块112被配置为使得特定内核被提供以用于与可以作为模块114的处理器设备而被包括的不同类型的gpu中的每一种gpu接合。在一些实施方式中,数据流模块112被配置为使得设计者可以生成用于在可以在模块114处包括的不同类型的gpu上执行的软件指令和其他编码算法。在一些实施方式中,可以执行算法来执行用于确定与实体有关的相似性、推断、概率和相关性的计算,或者用于使用统计分析来辨别大型数据集的实体之间的关系的计算。处理器模块114包括cpu116和gpu118。如上所述,cpu116接收经由托管服务110获取的数据集,执行kmv数据处理算法以对数据进行预分类,并基于kmv算法(例如,略图算法)的执行和预分类的数据来生成多个数据阵列。模块114可以被配置为对数据集中的实体数据进行分类,并且基于预先确定的处理时间表(例如,每天一次批处理)使用在cpu116处运行或执行的批处理来生成数据阵列。在一些实施方式中,模块114被配置为基于对经由托管服务110获取的数据集中的实体数据流的分析来生成预分类的数据阵列。多个预分类的数据阵列中的每一个对应于相应的略图,这些略图各自都具有预定义的大小属性。例如,预定义大小可以被设置为使得每个数据阵列包括不多于64,000(“64k”)个实体。在一些实施方式中,大小属性可以是多于64k个实体但少于将超过gpu118的某存储容量的特定数量的实体。在一些实施方式中,基于gpu118的高速缓冲存储器容量来设置数据阵列的预定义大小属性。gpu118接收在gpu118的存储器/存储介质处加载的多个数据阵列或多组数据阵列。例如,在单个实例中,基于在cpu118生成数据阵列之后发生在gpu处的单个数据加载,cpu118接收多个实体的信息。数据阵列被加载并被存储在gpu存储器的被认为相对于gpu的其他存储部分较为“紧凑”的区域中。例如,可以基于每数据阵列64k个实体的预定义的大小属性,将多个数据阵列加载到gpu的紧凑高速缓冲存储器中。换句话说,当64k个实体中的每个实体的信息密度(例如,参数值)不超过紧凑高速缓冲存储器的阈值容量时,数据阵列各自都被配置用于存储在紧凑高速缓冲存储器中。在一些实施方式中,数据阵列可以表示张量,因此,在本文数据阵列可以被称为数据结构或查询张量或实体张量。在一些实施方式中,张量是几何对象,并且示例几何对象包括矩阵和数据阵列。示例张量可以是一维几何对象或多维几何对象。如下面参考图2至图4更详细描述的,对于在系统100处接收的给定查询,可以执行单个数据加载操作,使得gpu118接收数据以用于生成对查询的响应。在加载操作期间,gpu118可以接收具有关于不同实体的信息的至少一个数据阵列,并且该数据阵列具有与接收到的查询的类型指示符匹配的实体类型指示符。gpu118还可以接收与接收到的查询有关或者与接收到的查询具有阈值相关量的查询张量。gpu118使用在数据加载操作期间获取的信息来生成对查询的响应。在一些实施方式中,批处理运行,其中系统104为托管服务110的数据库计算大量略图。然后gpu118通过与数据流模块112相关联的api为多个略图或数据阵列中的每一个加载信息或参数值。在一些实施方式中,gpu118将该数据从可经由托管服务110访问的示例僵局数据库(impassedatabase)加载到其自身的内部存储器中。僵局数据库可以与僵局服务相关联,该僵局服务通过数据流api与cpu116和gpu118通信,以加载数据阵列并发布在摄取组件108处接收到的查询。例如,在运行时期间,针对使用从托管服务110通过数据流模块112的api到gpu118的查询路径在gpu118处加载的数据阵列来处理发布的查询。图2是用于确定相应的数据阵列的实体之间的相关性的示例过程200的流程图。例如,过程200可以是用于使用在gpu116处执行的相似性算法来计算实体之间相似性的过程流程。过程200可以使用上述系统100来实施或执行,并且过程200的描述可以引用系统100的上述计算资源。在一些实施方式中,过程200的所描述的动作通过可由本文档中描述的计算系统的至少一个处理器和存储器执行的编程软件指令来实现。现在参考过程200,系统100的第一处理单元(例如,cpu)116获取存储在存储设备106中的数据。获取的数据包括关于多个实体的信息(202)。例如,一个数据阵列的实体可以由包括不同类型的项目、个人、或各种电子和现实世界项目或对象的数据集来表示。例如,一个数据集(数据阵列)的实体可以是居住在某个地理区域(例如,英国(u.k.))的特定人群(例如,20多岁的男性)中的个人或用户。类似地,另一数据集的实体可以是也居住在相同地理区域的另一人口中的各种类型的项目或用户(例如,普通人口中的用户)。处理单元/cpu116使用从存储设备获取的数据生成多个数据阵列306(204)。多个数据阵列306中的每个生成的数据阵列308、310、312通常包括被分配给该数据阵列的多个实体中的每个实体的一个或多个参数值。也就是说,图3中dataarray_1308中的“entity_1,1”可以表示dataarray_1中多个实体的第一实体的一个或多个参数值,图3中dataarray_1308中的“entity_1,2”表示第二实体的一个或多个参数值,依此类推。参数值可以定义特定类型的实体,也可以定义数据阵列中单个实体的属性或特征。例如,参数值可以将实体类型定义为对应于个人,其中个人(例如,实体)的属性包括个人已经提供的信息,诸如个人的性别、个人的年龄或个人的地理位置。在一些实施方式中,实体类型可以对应于基于网络的资源或数字的资源(例如,实体),并且基于网络的资源/实体的属性可以是与基于网络的实体相关联的域名、统一资源定位符(url)或互联网协议(ip)地址。对于这里讨论的系统收集和/或使用关于用户的个人信息的情况,可以向用户提供启用/禁用或控制可以收集和/或使用个人信息(例如,关于用户的社交网络、社交动作或活动、用户偏好或用户当前位置的信息)的程序或特征的机会。此外,在存储或使用某些数据之前,可以以一种或多种方式对其进行处理,使得移除与用户相关联的个人可识别信息。例如,用户的身份可以被匿名化,使得不能确定用户的个人可识别信息,或者用户的地理位置可以在获取位置信息的地方被概括(诸如被概括为城市、邮政编码或州级),使得不能确定用户的具体位置。系统100被配置为分析和处理经由存储设备106可访问的不同数据源。例如,cpu116可以分析和处理包括数据源,该数据源包括由某些用户与之交互的印象日志或诸如来自由不同用户访问的搜索引擎的搜索数据的数据源。在一些实施方式中,由用户组或由相应的用户的用户标识符(id)组形成的实体可以基于年龄、性别、兴趣、位置或组中每个用户的其他特征被分成不同的组。kmv算法可以表示使用关于实体组中的每个用户或每个用户id的信息来处理的示例散列算法。在一些实施方式中,用户id的多个集合被表示为大参数值,这些参数值用作发射器(emitter),用于预分类数据以生成数据阵列。例如,使用散列算法完成对数据进行预分类,该散列算法将任意整数串散列成均匀分布的发射器,以生成数据阵列。因此,对于示例用例,cpu116执行kmv算法对用户id进行分类,以便生成表示某一预定义的整个用户集的略图。例如,cpu116可以从一千万个用户id(与运动相关印象交互的年龄在18岁至35岁之间的男性)的整个用户集执行分类,以生成仅最少64,000个用户id的略图或数据阵列,作为整个用户集的略图表示。在一些实施方式中,系统100可以被配置为参考数据集的信息中包括的任何属性或参数值对信息分类,而不是参考用户id对信息分类。所生成的数据阵列中的每一个被配置用于在第二处理单元(例如,gpu)118的相应的计算单元处进行处理。系统100向gpu118提供至少两个数据阵列,以计算评分数据,并基于计算出的评分数据确定数据阵列的实体之间的关系(206)。例如,在对于至少一个查询会话的单个实例中,略图被加载到gpu118的存储器中。查询会话表示用户查询实体相关性系统104的时间,该用户寻求获取指示略图的实体之间的关系的结果集。因此,在查询时,由于系统已经预分类和预加载了用于处理查询的数据,所以相对于其他相关性系统,可以以提高的速度和效率来确定对用户提交的查询的响应。在一些实施方式中,在任何给定时刻,用户可以通过经由查询路径将新的略图作为查询传递给系统104来访问和随机查询系统104。gpu118被配置为执行相关性算法,以在gpu118的相应的单元处同时处理数据阵列。例如,处理单元118基于在相应的计算单元处执行的计算来计算一个或多个相关性分数(208)。具体地,gpu118执行相关性算法(例如,jaccard相似性算法),并使用数据阵列中的实体的参数值来计算相关性分数。参数值作为输入被提供用于涉及相关性算法的数学计算。系统100基于计算出的相关性分数来确定至少两个数据阵列的实体之间的关系(210)。在一些实施方式中,关系指示实体的至少一个子集之间的重叠属性或者相应的数据阵列的实体之间的相似性。例如,系统100通过计算gpu118的单个计算单元处的交集和并集以及表征该交集和并集的对应的相关性分数来确定实体之间的相似性。为进一步说明评分和关系的确定,在运行时操作场景期间,托管服务110与gpu118接合,以传递新的略图作为用于处理的查询张量,以确定响应于查询的结果。例如,用户可以访问系统100,其中托管服务110是对用户查询提供响应(例如,实时地)的实时服务平台的部分。在一些实施方式中,使用经由托管服务110提供的到gpu118的接口,用户实时提交查询以用于由gpu118处理。gpu118使用本文档描述的技术来处理查询,以返回结果或结果集作为对用户提交的查询的响应。gpu118执行相关性算法以计算用户查询与数据库中给定集合(或数据集)的每个数据阵列的交集和并集。例如,用于确定交集和并集以及对应的相关性分数的大规模计算的部分在gpu118的单个计算单元处处理。针对表示在gpu118的每个计算单元(例如,线程或核心)处加载的略图或数据阵列的数据结构来处理查询。系统104通过执行大规模并行计算来处理查询,该大规模并行计算可以涉及gpu中的每个计算单元被用于针对数据结构中的相应的一个数据结构来处理查询。换句话说,数据结构中的该相应的一个数据结构可以表示被加载用于在单个gpu计算单元处处理的实体的不同数据阵列。例如,可以在第一计算单元处加载具有生活在美国的某年龄段的女性(第一实体)的64k个用户id的第一略图,从而可以针对第一略图的第一实体来处理查询。同样,可以在第二个不同的计算单元处加载具有生活在英国的某年龄段的男性(第二实体)的64k个用户id的第二略图,从而可以针对第二略图的第二实体来处理查询。在一些实施方式中,托管服务110表示信息库,其接收并处理查询以返回指示诸如实体之间的相似性或涉及不同实体集的条件概率之类的关系的结果。例如,查询(或命令)可以是“与一些较早的查询相关联的所有条件概率是多少?”。另一查询可以与访问特定网站或url的所有年龄的人的条件概率有关。类似地,另一查询可以是“生活在美国的30岁女性相对于生活在英国的40岁男性所访问的重叠的url是什么?”。对于给定查询,系统100可以计算交集和并集以确定第一数据阵列的实体与第二数据阵列的实体之间的关系,并且针对基于用户提交的查询所生成的查询略图来计算交集和并集。例如,系统100可以通过使用gpu118的相应的计算单元执行jaccard相似性算法来计算交集和并集以确定关系。在一些实施方式中,所执行的算法用于确定相似性分数,相似性分数指示相对于查询所指示的约束、在gpu118的相应的计算单元处处理的数据结构的实体之间的相应的相似性度量。系统104使用gpu118基于在至少两个集合或数据阵列中包括的实体的比较来计算jaccard相似性(或相关性)分数。例如,jaccard相似性分数可以提供对两个集合之间共享哪些实体以及两个集合之间哪些实体不同的数值指示。在一些实施方式中,jaccard相似性分数提供两个数据集的相似性度量,范围从0%到100%。例如,百分比越高,两个实体集越相似。一般来说,相关性分数可以是相似性分数、条件概率、指示统计关系的度量、或者定义用于向用户查询提供结果的兴趣排序的特定输出参数。gpu118可以被配置为执行以下命令i)至iv)。这些命令可以表示一组特定的计算机实施的规则,用于确定数据阵列的实体之间的关系:i)tf.sketch_gpu_load_table(query_tensor)ii)tf.sketch_gpu_load_table(gpu_table_uri)iii)tf.sketch_gpu_method(simlarity_method_enum)→j(x,y)=|x∩y|/|x∪y|(formula_similarity_score)iv)tf.sketch_gpu_results(top_k_return)响应于执行这些命令,系统104基于特定相似性方法,并使用预加载和由gpu_table_uri指定的实体数据,返回查询张量的前k个相似结果。在一些实施方式中,query_tensor可以是以矢量化方式表示查询实体的矢量(例如,高维矢量)。gpu_table_uri可以指定表类型和表名(例如,sstablea1_inmarket_profile),其中使用加载命令tf.sketch_gpu_load_table将表预加载到gpu118中。simlarity_method_enum可以指定选择的相似性计算方法。在一些实施方式中,选择的相似性计算方法可以是诸如jaccard相似性方法或余弦相似性方法的方法。参考交集和并集,系统100可以参考一般的集合操作计算任意两个集合(两个不同阵列/略图的实体)的交集的大小以及交集和并集的比率。这些计算提供了一个基本基准,在此基本基准上可以构建各种其他计算过程。在这种情况下,系统100可以使用从各种信息源获取的数据来确定实体集之间的多种类型的统计关系。例如,jaccard相似性是可以被确定的一种统计关系,而概率(例如,条件概率)指示另一种统计关系。一般来说,任何有关的统计都可以基于所描述的教导相对于集合的基数进行计算。系统104可以被配置为从算法的子集当中选择特定相关性算法。该算法可以被选择为相似性算法或条件概率算法中的一个。gpu118执行特定相关性算法,并计算至少两个数据阵列的实体之间的交集和至少两个数据阵列的实体之间的并集。系统104基于交集和并集计算相关性分数。在一些实施方式中,所选择的相关性算法是jaccard相似性算法、余弦相似性算法、唯一统计算法、或用于确定数据集之间的条件概率的特定计算过程。图3是与图1的计算系统中的至少一个处理器相关联的示例架构300。架构300包括gpu/cpu传送块302和相应的数据阵列308、310和312。在一些实施方式中,数据阵列312是基于经由摄取组件108接收的用户查询而生成的查询张量。如下文更详细描述的,查询张量312被处理以确定响应于接收到的查询的结果。如上所述,使用cpu116生成的所生成的数据阵列308、310、312中的每一个被接收,并使用传送块302在gpu118处加载。具体地,数据阵列308、310、312中的每一个被配置用于在gpu118的相应的计算单元处进行处理。系统100使用传送块302和紧凑存储器(例如,gpu高速缓存)来加载和存储描述数据阵列的各种预分类实体的数据。例如,至少数据阵列308和310的实体可以是居住在某个地理区域(例如,英国(uk))的特定人口(例如,20岁的男性)中的用户。至少使用存储在gpu118的紧凑存储器处的相应的数据阵列308和310中的预分类实体的集合来执行相关性计算。数据阵列被配置用于基于数据阵列的预定义的大小和数据结构而被存储在gpu118的紧凑存储器或数据高速缓存中。例如,可以设置预定义的大小,使得每个数据阵列包括不多于64,000(“64k”)个实体。在一些实施方式中,可以基于gpu118的处理器核心结构来导出相应的数据阵列的该预定义的大小属性。执行相关性算法以执行计算,使得在gpu118内发生大规模并发处理(例如,大规模并行计算)。例如,并发处理可以涉及一个或多个传送块302中的计算单元的子集(线程块304)。当计算使用多于gpu118中所有计算单元的阈值百分比时,计算可以被认为是“大规模并发处理”或“大规模并行的”。例如,大规模并行计算可以使用gpu118中70%以上的可用计算单元(或一些其他适当的阈值量)。线程组(线程块)可以配置用于串行和并行执行两者。在一些实施方式中,gpu118包括线程块304的数千个计算单元或线程。如本文所使用的,gpu118的计算单元由表示线程组的线程块来定义。如图3所示(如下所述),每个线程块可以被映射到对应的传送块302。在一些实施方式中,系统100包括多个传送块,并且每个传送块定义了传输路径,在该传输路径中,cpu生成的略图被传送以在线程块304的计算单元处加载。图4是与涉及cpu116和gpu118的计算过程相关联的示例处理架构400。根据图形处理器处包括的计算单元的数量来确定加载并存储在gpu118的相应的线程块304(包括多个计算单元)处的每个数据阵列的大小。在一些实施方式中,系统104执行过程402,过程402使得gpu118取得存储位置,用于在gpu的高速缓冲存储器处加载和存储每个数据阵列。gpu118的高速缓冲存储器可以表示紧凑存储器,并且根据紧凑存储器中存储位置的数据容量确定每个数据阵列的大小。在gpu118处加载的至少一个数据阵列是被配置用于在gpu118的每个计算单元处访问的查询张量(例如,数据阵列312)。例如,查询张量被复制并在gpu118处被并行访问,以计算相应的数据阵列的实体之间的关系(例如,相似性)。每个计算单元访问并使用查询张量的查询信息来计算每个单元处的相应的相关性分数。当在gpu118处以并行方式针对查询张量同时处理至少两个数据阵列时,系统104确定不同数据阵列的实体之间的相似性和其他关系。具体地,架构400可用于实施用于加速数据计算以确定实体之间的相似性和其他关系的技术。例如,这些技术可以涉及将预分类的数据阵列配置为具有不超过gpu118的存储器阈值的大小属性(例如,64k)。这些技术还可以涉及将数据阵列存储在gpu118处,并将每个数据阵列分配给gpu118的特定计算单元。系统104可以确定每个数据阵列到计算单元的分配,使得该单元可以快速访问相关数据以确定实体之间的关系。在一些实施方式中,系统104执行过程404,过程404使得cpu116取得由gpu118产生的计算结果。例如,cpu116获取表示计算结果的相关性分数,并处理结果以生成查询响应,该查询响应被提供用于输出给提交查询的用户。在一些实施方式中,确定实体之间的关系包括确定计算出的相关性分数是否超过阈值分数。响应于确定计算出的相关性分数超过阈值分数,系统104生成使用超过阈值分数的相关性分数进行排序的实体列表。在一些实施方式中,系统104通过返回识别作为查询的n个最佳匹配的一个或多个数据阵列的信息,将在gpu118执行的计算的结果返回给cpu116。例如,系统104使用当在相应的计算单元处针对查询张量处理数据阵列时计算的相关性分数来确定查询的n个最佳匹配。在一些实施方式中,作为查询的n个最佳匹配的数据结构被包括在使用超过阈值相关性分数的相关性分数进行排序的所生成的实体列表中。因此,可以基于对所生成的排序的实体的列表的分析来识别作为查询的n个最佳匹配的数据阵列。在一些实施方式中,gpu118以相对于其他相关性系统增加的速度来确定分数、计算结果、和/或实体之间的关系。这是因为所描述的技术使得gpu118能够执行必要的计算,而无需在执行特定相关性算法之前对数据进行分类/预分类。此外,相对于其他相关性系统,gpu118可以在最少线程间数据通信或没有线程间数据通信的情况下执行必要的计算。这是因为所描述的技术使gpu118的每个计算单元能够对数据阵列的特定集合执行计算,而无需将中间结果通信传达给相邻线程块进行附加的处理。图5是作为客户端或一个或多个服务器的、可以被用于实施本文档中描述的系统和方法的计算设备500、550的框图。计算设备500旨在表示各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。计算设备550旨在表示各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话、智能手表、头戴式设备和其他类似的计算设备。这里示出的组件、它们的连接和关系以及它们的功能仅仅是示例性的,并不意味着限制本文档中描述和/或要求保护的实施方式。计算设备500包括处理器502、存储器504、存储设备506、连接到存储器504和高速扩展端口510的高速接口508、以及连接到低速总线514和存储设备506的低速接口512。组件502、504、506、508、510和512中的每一个都使用各种总线互连,并且可以安装在公共主板上或者以其他适当的方式安装。处理器502可以处理用于在计算设备500内执行的指令,包括存储在存储器504或存储设备506中的指令,以在外部输入/输出设备(诸如,耦合到高速接口508的显示器516)上显示gui的图形信息。在其他实施方式中,可以适当地使用多个处理器和/或多个总线,以及多个存储器和多种类型的存储器。另外,可以连接多个计算设备500,例如作为服务器阵列、刀片服务器组或多处理器系统,其中每个设备提供必要操作的部分。存储器504在计算设备500中存储的信息。在一个实施方式中,存储器504是计算机可读介质。在一个实施方式中,存储器504是一个或多个易失性存储单元。在另一实施方式中,存储器504是一个或多个非易失性存储单元。存储设备506能够为计算设备500提供大容量存储。在一个实施方式中,存储设备506是计算机可读介质。在各种不同的实施方式中,存储设备506可以是软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其他类似的固态存储设备,或者设备的阵列,包括存储区域网络中的设备或其他配置。在一个实施方式中,计算机程序产品有形地体现在信息载体中。计算机程序产品包含指令,当该指令被执行时,执行一种或多种方法,诸如上述那些方法。信息载体是计算机或机器可读介质,诸如存储器504、存储设备506或处理器502上的存储器。高速控制器508管理计算设备500的带宽密集型操作,而低速控制器512管理较低带宽密集型操作。这种职责分配只是示范性的。在一个实施方式中,高速控制器508例如通过图像处理器或加速器耦合到存储器504、显示器516,并且耦合到可以接受各种扩展卡(未示出)的高速扩展端口510。在实施方式中,低速控制器512耦合到存储设备506和低速扩展端口514。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口可以例如通过网络适配器耦合到一个或多个输入/输出设备(诸如键盘、定点设备、扫描仪)或网络设备(诸如交换机或路由器)。如图所示,计算设备500可以以许多不同的形式实施。例如,它可以实施为标准服务器520,或者在这种服务器的组中多次实施。它也可以被实施方式为机架式服务器系统524的部分。此外,它可以在诸如膝上型计算机522的个人计算机中实施方式。可替换地,来自计算设备500的组件可以与移动设备(未示出)中的其他组件结合,诸如设备550。每个这种设备可以包含计算设备500、550中的一个或多个,并且整个系统可以由彼此通信的多个计算设备500、550组成。计算设备550包括处理器552、存储器564、诸如显示器554的输入/输出设备、通信接口566和收发器568以及其他组件。设备550还可以设置有存储设备,诸如微驱动器或其他设备,以提供附加的存储。组件550、552、564、554、566和568中的每一个都使用各种总线互连,并且组件中的几个可以安装在公共主板上或者以其他适当的方式安装。处理器552可以处理用于在计算设备550内执行的指令,包括存储在存储器564中的指令。处理器还可以包括独立的模拟和数字处理器。处理器可以提供例如设备550的其他组件的协调,诸如用户界面的控制、设备550运行的应用以及设备550的无线通信。处理器552可以通过耦合到显示器554的控制接口558和显示接口556与用户通信。显示器554可以是例如tftlcd显示器或oled显示器,或其他适当的显示技术。显示接口556可以包括用于驱动显示器554以向用户呈现图形和其他信息的适当电路。控制接口558可以从用户接收命令,并转换它们以提交给处理器552。此外,可以提供与处理器552通信的外部接口562,以便设备550能够与其他设备进行近区通信。例如,外部接口562可以例如经由对接过程提供有线通信,或者例如经由蓝牙或其他这种技术提供无线通信。存储器564在计算设备550中存储信息。在一个实施方式中,存储器564是计算机可读介质。在一个实施方式中,存储器564是一个或多个易失性存储单元。在另一实施方式中,存储器564是一个或多个非易失性存储单元。还可以提供扩展存储器574,扩展存储器574通过扩展接口572连接到设备550,扩展接口572可以包括例如simm卡接口。这种扩展存储器574可以为设备550提供额外的存储空间,或者也可以为设备550存储应用或其他信息。具体地,扩展存储器574可以包括执行或补充上述过程的指令,并且还可以包括安全信息。因此,例如,扩展存储器574可以被提供作为设备550的安全模块,并且可以用允许安全使用设备550的指令来编程。此外,可以经由simm卡提供安全应用,以及附加信息,诸如以不可破解的方式在simm卡上放置识别信息。如下所述,存储器可以包括例如闪存和/或mram存储器。在一个实施方式中,计算机程序产品有形地体现在信息载体中。计算机程序产品包含指令,当该指令被执行时,执行一种或多种方法,诸如上述那些方法。信息载体是计算机或机器可读介质,诸如存储器564、扩展存储器574或处理器552上的存储器。设备550可以通过通信接口566无线通信,通信接口566在必要时可以包括数字信号处理电路。通信接口566可以提供各种模式或协议下的通信,诸如gsm语音呼叫、sms、ems或mms发送消息、cdma、tdma、pdc、wcdma、cdma2000或gprs等。这种通信可以例如通过射频收发器568发生。此外,可以发生短程通信,诸如使用蓝牙、wifi或其他这种收发器(未示出)。此外,gps接收器模块570可以向设备550提供附加的无线数据,这些数据可以被在设备550上运行的应用适当地使用。设备550还可以使用音频编解码器560可听地通信,音频编解码器560可以从用户接收口头信息,并将其转换成可用的数字信息。音频编解码器560同样可以为用户生成可听声音,诸如通过例如在设备550的手机中的扬声器。这种声音可以包括来自语音电话呼叫的声音,可以包括记录的声音,例如语音消息、音乐文件等,并且还可以包括由在设备550上运行的应用生成的声音。如图所示,计算设备550可以多种不同的形式实施。例如,它可以被实施为蜂窝电话580。它也可以被实施为智能手机582、个人数字助理或其他类似移动设备的一部分。这里描述的系统和技术的各种实施方式可以在数字电子电路、集成电路、专门设计的asic、计算机硬件、固件、软件和/或其组合中实施。这些不同的实施方式可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,该可编程系统包括至少一个可编程处理器,该可编程处理器可以是专用的或通用的,耦合成从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。这些计算机程序,也称为程序、软件、软件应用或代码,包括用于可编程处理器的机器指令,并且可以用高级过程和/或面向对象的编程语言和/或汇编/机器语言来实施。如本文所使用的,术语“机器可读介质”、“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备,例如磁盘、光盘、存储器、可编程逻辑设备(pcd),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。为了提供与用户的交互,这里描述的系统和技术可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备(例如,crt(阴极射线管)或lcd(液晶显示器)监控器)以及用户可以通过其向计算机提供输入的键盘和定点设备(例如,鼠标或轨迹球)。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。这里描述的系统和技术可以在计算系统中实施,该计算系统包括后端组件(例如,作为数据服务器)或者包括中间件组件(诸如应用服务器)或者包括前端组件(诸如具有图形用户界面或网络浏览器的客户端计算机,用户可以通过该图形用户界面或网络浏览器与这里描述的系统和技术的实施方式交互),或者包括这种后端、中间件或前端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(诸如通信网络)相互连接。通信网络的示例包括局域网(lan)、广域网(wan)和互联网。计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户机和服务器的关系是通过在相应的计算机上运行的计算机程序产生的,并且彼此之间具有客户机-服务器关系。如在本说明书中使用的,术语“模块”旨在包括但不限于被配置为执行一个或多个软件程序的一个或多个计算机,该一个或多个软件程序包括使得计算机的(多个)处理单元/(多个)设备执行一个或多个功能的程序代码。术语“计算机”旨在包括任何数据处理或计算设备/系统,诸如台式计算机、膝上型计算机、大型计算机、个人数字助理、服务器、手持设备、智能电话、平板计算机、电子阅读器或能够处理数据的任何其他电子设备。已经描述了许多实施例。然而,应当理解,在不脱离本发明的精神和范围的情况下,可以进行各种修改。因此,其他实施例在以下权利要求的范围内。虽然本说明书包含许多具体的实施细节,但这些细节不应被解释为对所要求保护的范围的限制,而是对特定实施例特有的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中以组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实施或以任何合适的子组合实施。而且,尽管上述特征可以被描述为以某些组合起作用,并且甚至最初是这样要求保护的,但是在某些情况下,可以从该要求保护的组合中删除该组合中的一个或多个特征,并且所要求保护的组合可以指向子组合或子组合的变体。类似地,尽管在附图中以特定顺序描绘了操作,但这不应当理解为为了实现希望的结果,要求以所示的特定顺序或相继顺序执行这种操作,或者要求执行所有例示的操作。在某些情况下,多任务处理和并行处理可能是有利的。而且,上述实施例中各种系统模块和组件的分离不应当理解为在所有实施例中都需要这种分离,而应当理解所描述的程序组件和系统通常可以集成在单个软件产品中或者封装到多个软件产品中。已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中列举的动作可以以不同的顺序执行,并且仍然实现希望的结果。作为一个示例,附图中描绘的一些过程不一定需要所示的特定顺序或相继顺序来实现希望的结果。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1