CN106133721B - 并行决策树处理器架构 - Google Patents
并行决策树处理器架构 Download PDFInfo
- Publication number
- CN106133721B CN106133721B CN201580014613.3A CN201580014613A CN106133721B CN 106133721 B CN106133721 B CN 106133721B CN 201580014613 A CN201580014613 A CN 201580014613A CN 106133721 B CN106133721 B CN 106133721B
- Authority
- CN
- China
- Prior art keywords
- decision tree
- cluster
- decision
- processor
- score data
- 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
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/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- 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/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
Abstract
本文所公开的是一种决策树多处理器系统。该系统包括多个决策树处理器,其访问共同特征向量并且关于共同特征向量执行一个或多个决策树。
Description
背景技术
决策树是由决策节点和左和右子树和/或叶组成的二进制搜索树。决策节点包括要被做出的决策。分支从决策节点通向其他决策节点或叶节点,并且对分支之一的选择基于在决策节点处做出的决策。示例决策包括对两个值(诸如特征值和阈值)进行比较。如果特征值小于或等于阈值,则选择左子树;如果特征值不小于或等于阈值,则选择右子树。分支前进到下一节点,并且如果下一节点是决策节点,则做出另一决策等,直到选择通向叶节点的分支。叶节点表示决策树的输出或端点。示例输出是针对决策树的输出值或得分。该过程被称为遍历决策树。
在其他应用中,决策树用于对文档搜索中的文档进行排名。在一个示例中,决策树用于计算特性项(例如网页)与特定搜索查询的相关性。获得候选搜索结果文档的初始集合,并且产生针对候选搜索结果文档的特征向量。该特征向量表示候选搜索结果文档的各方面(例如文档统计)。特征的一个示例是搜索查询字在候选文档中出现的次数。每个决策树节点包括阈值和特征标识符,其可以用于查找针对候选搜索结果文档的特征值。遍历决策树,并且树遍历过程最终到达叶节点并且输出相关联的得分。该得分(或如果使用超过一个决策树,则多个得分)用于确定候选搜索结果的相关性。多个文档的相对得分用于对文档进行排名。
除搜索之外,决策树具有各种用途。决策树用于实现手势识别、语音识别、数据挖掘以及其他类型的计算。
发明内容
提供该发明内容以引入在下文详细描述中进一步描述的本公开的简化概念。该发明内容不旨在标识所要求变化的主题的关键特征,其也不旨在用于确定所要求变化的主题的范围。
本描述的实施例包括决策树评分的硬件实施方式,其使得比基于传统软件的决策树评分更快的决策树评分。决策树评分系统的芯片上架构包括在一个或多个专用电路或可编程逻辑电路中并行实现的多个决策树处理器。在芯片上架构的顶层处是决策树评分器(DTS),其从上游计算系统主机或处理系统接收特征向量(例如,特征值的集合),将特征向量发送到第一决策树群集(DTC),从决策树群集接收得分,以及将结果输出到主机或其他下游系统。在层次结构的下一层处,多个决策树群集(DTC)在其之间分布特征向量,并且处理得分并将得分从决策树处理器传播到邻近的DTC和DTS。DTC包括一个或多个决策树处理器和一个或多个特征存储区片(FST)。特征值和阈值压缩降低了针对决策树评分系统的带宽和存储要求。
附图说明
参考附图阐述了详细描述。在附图中,参考标记中的最左边的(一个或多个)数字标识参考标记首次出现的附图。不同的附图中的相同参考标记的使用指示类似或相同的项。
图1是根据各个实施例的包括一个或多个硬件实现的决策树评分器的示例决策树评分系统的框图。
图2图示了根据本公开的各个实施例编码的决策树。
图3图示了实数线上的唯一的阈值的示例列表。
图4图示了根据各个实施例的决策树评分器的示例架构。
图5图示了根据各个实施例的决策树群集的示例架构。
图6图示了根据各个实施例的决策树处理器的多级、多线程、管线树遍历实施方式。
图7描绘了根据各个实施例的示出执行决策树节点的示例过程的流程图。
图8图示了根据各个实施例的通过决策树评分器对多个决策树进行评分的过程。
图9图示了根据各个实施例的通过决策树群集对多个决策树进行评分的过程。
图10图示了根据各个实施例的对多个决策树的阈值进行编码的过程。
图11图示了根据各个实施例的对特征值的集合进行编码的过程。
图12是可用于执行本文所描述的各种方法的示例计算系统的框图。
具体实施方式
概述
本描述的实施例包括决策树评分的硬件实施方式,其使得比基于传统的软件的决策树评分更快决策树得分。该硬件实施方式包括被实现为电路的、执行决策树程序的一个或多个决策树处理器。决策树程序是已经被转换为由决策树处理器可执行的程序或其他数据的决策树。决策树程序包括决策树表,其包括针对决策树的各个决策节点、特征标识符、阈值和输出值。决策树处理器的一些实施例以多级和/或多线程方式遍历决策树。在多线程实施例中,决策树处理器的每级执行不同的决策树线程;因此,n级多线程决策树处理器并发地执行每周期多达n个决策树的部分。
实施例包括用于将决策树编码、压缩和/或编译为在决策树处理器内执行的过程、系统和装置。在各个实施例中,通过布置节点从决策树消除指针,使得在决策树中节点中具有其之间的分支的一些节点邻近决策树表中的特定节点。利用下一节点数据(诸如偏移值或增量值)标识其他节点。叶值是决策树节点表示的一部分,而不是不同的叶节点条目的一部分。
在一些实施例中,特征值和阈值压缩降低了针对决策树评分系统的带宽和存储要求,同时还增加了实施例能够处理的工作量的大小。在本描述的一些实施例中,针对在一个或多个决策树中与特定特征相比较的每个阈值创建分类列表,并且将阈值索引分配给阈值。虽然可能阈值的总数是大的(例如,在一些实施例中通过32位浮点数来表示),但是针对多个决策树中的特定特征的实际阈值的总数实际上小得多,通常不超过255个阈值(但是更大数目的阈值也是可能的)。创建密集或非密集定点小整数阈值索引。阈值索引可以是从0到阈值的总数的数字,并且因此可以由4位、8位或其他n位固定点值表示。在其他实施例中,阈值索引可以是负数,并且可以包括不连续的整数值,诸如0、2、4、6或其他不连续的整数值。特征值也可以编码为n位固定点特征值索引,使得阈值索引与特征值索引的比较相当于原始非压缩阈值与原始非压缩特征值的比较。
在一些实施例中,多个决策树处理器被并行实现在一个或多个专用电路或可编程逻辑电路上。在一些实施例中,多个决策树处理器执行或关于共同特征向量并发地执行决策树。在芯片上架构的顶层处是决策树评分器(DTS),其从上游计算系统主机或处理系统接收特征向量(例如,特征值的集合),将特征向量发送到第一决策树群集(DTC),从决策树群集接收得分,并且将结果输出到主机或其他下游系统。在层次结构的下一层处,多个决策树群集(DTC)在其之间分布特征向量并且将得分从决策树处理器传播到邻近的DTC和DTS。在层次结构的下一层处,DTC包括一个或多个决策树处理器和一个或多个特征存储区片(FST)。该决策树处理器可以是多线程以关于共同特征向量并发地执行多个决策树。FST将要被评分的特征向量存储在多个决策树上,并且在一些实施例中被双缓冲以使得特征集能够写到FST,同时另一特征集由决策树处理器访问以用于评分。
本文所描述的实施例服从专用硬件中(诸如ASIC中)或可编程逻辑器件中(诸如FPGA中)的实施方式。实施例的各方面也服从多核处理器、芯片上系统(SoC)(例如,SoC上的一个或多个决策树评分核心)和/或具有扩展的指令集的通用处理器,并且因此能够响应于一个或多个原子处理器指令而部分地或全部地执行决策树。可以以多种方式实现本文所描述的设备、过程和系统。下文参考以下附图提供示例实施方式。
示例决策树评分系统
图1是根据各个实施例的包括一个或多个硬件实现的决策树评分器102的示例决策树评分系统100的框图。主机104包括决策树编码器106,其用于将决策树编码为模型上下文108以用于在决策树评分器102上执行。如下文更详细描述的,决策树编码器106使用可变长度节点表示决策树,其中,利用邻接和偏移消除子树指针,叶值被包括在节点表示中,并且阈值被编码为阈值索引值。决策树编码器106降低决策树的大小以使得其中的更多个能够被加载到决策树评分器102上。决策树编码器106还可以或备选地使用其他压缩技术来压缩模型上下文108的决策树数据(或编码的决策树数据)。在这些实施例中,决策树评分器102或其他芯片上逻辑被配置为将压缩的决策树或编码的决策树数据解压缩以用于在决策树评分器102上进行评分。
主机104还包括特征向量编码器110,其对特征向量112内的特征值进行编码以降低决策树评分器102的带宽和存储要求,使特征向量112与编码的模型上下文108相兼容,并且将模型上下文108和特征向量112放置到更容易由如本文中的各个实施例所描述的专用硬件处理的形式中。如该详细描述内的其他地方更详细描述的,特征向量编码器110选择针对特征的特征索引值,使得特征索引值与模型上下文108内的阈值索引值的比较相当于对应的特征值和阈值的比较。
主机104包括决策树评分调度器114,其调度决策树评分作业。主机104接收或确定特征向量112的各种各个特征向量将对模型上下文108的各个特征向量进行评分。决策树评分作业的示例集合包括:
特征向量1/模型上下文A
特征向量2/模型上下文B
特征向量3/模型上下文A
特征向量4/模型上下文B
由于通常将新模型上下文加载到决策树评分器102中比将新特征向量加载到决策树评分器102中花费更多时间,因而决策树评分调度器114将决策评分作业重新排列以降低将新模型上下文108加载到决策树评分器102中的次数。继续以上示例,决策树评分作业被重新排列如下:
特征向量1/模型上下文A
特征向量3/模型上下文A
特征向量2/模型上下文B
特征向量4/模型上下文B
在搜索领域中,模型上下文是与所执行的搜索的类型相关联的决策树的集合。利用不同的决策树的集合的搜索上下文的示例是语言(可以使用以德语查询执行搜索的不同的模型上下文执行英语查询的搜索)、图像搜索、新搜索、视频搜索等。其他搜索上下文可以要求不同的模型上下文。
主机104被配置为经由数据路径接口(诸如接口118和120)通信地耦合到一个或多个专用设备或可编程逻辑设备116。在各个实施例中,接口118和120是外围组件接口Express(PCI-Express)接口,但是在不脱离实施例的范围的情况下,可以使用其他接口类型和规格。接口类型的确定可以基于接口带宽目标,其可以进而基于针对决策树评分系统100的吞吐量目标。在特定示例中,其中目标处理速度是每搜索文档评分一微秒,使用本文所描述的决策树和特征压缩技术导致每特征向量(例如,每候选搜索结果文档)近似2-8KB或每秒近似2-8GB。PCI-Express适于该目标,但是其他接口类型和规格也可以适于该目标或其他目标。在不脱离实施例的范围的情况下,还可以使用多个接口代替单个高速接口。
如下文更详细描述的,主机104可以被实现为由计算系统的一个或多个通用处理器可执行的多个编程指令。然而,主机104的一个或多个方面可以被实现在专用电路或可编程逻辑电路(诸如ASIC芯片或FPGA芯片)。
决策树评分器102包括一个或多个决策树群集122。决策树群集122被配置为在其之间分布模型上下文108和特征向量112。备选地或者附加地,决策树评分器102可以包括用于贯穿决策树评分器102传递模型上下文108和/或特征向量112的互连网络。决策树群集122还被配置为处理和传播来自邻近的决策树群集122以及来自决策树群集122内的决策树处理器124的决策树得分。决策树群集122被配置为处理从决策树处理器124和邻近的决策树群集所接收的得分-其可以包括对决策树得分进行求和-并且将经处理的得分(例如求和的得分)传播到其他邻近的决策树群集122,如该详细描述内的其他地方更详细描述的。决策树评分器102被配置为从决策树群集122之一接收针对决策树评分作业的最终得分(例如,标量或向量)并且将得分输出给主机104或另一下游设备。
决策树处理器124包括用于执行一个或多个模型上下文108的决策树的电路,诸如并行并且并发地针对特征向量112中的共同特征向量或针对特征向量112中的不同特征向量,这取决于实施方式。特征存储库126中的不同特征存储库可以存储特征向量112的共同特征向量或特征向量112中的不同特征向量。每个决策树群集122内的特征存储库126可以存储特征向量112中的相同的或不同的特征向量112。
如本文所使用的,决策树处理器124包括用于对决策树进行评分的电路。决策树处理器124可以包括用于对决策树和决策树代码本身进行评分的电路,其被实现为决策树表并且被存储在对决策树处理器124可访问的某个存储器中。一个或多个决策树表可以被硬编码到决策树处理器124中,被存储在决策树处理器124内的存储器上,或被存储在与决策树处理器124相关联并且通信地耦合到决策树处理器124的存储器上。存储决策树表的存储器可以是共享的或专用存储的,并且可以是随机存取存储器(RAM)、闪速存储器、只读存储器(ROM)或其他存储器类型。存储决策树表的存储器可以是管芯上的(诸如管芯上存储器)或可以是附接存储器上的芯片外的,诸如可以经由高速存储器接口通信地耦合。模型上下文可以共同驻留在共享或专用存储器内。在一些实施例中,主机104可以将模型上下文108提供给决策树评分器102和/或芯片上的或附接的存储器。当调度工作量时,主机104可以向决策树评分器102提供应当加载或由决策树处理器124访问和执行的模型上下文108的指示。在一些实施例中,可以存在存储决策树表的两层存储器;第一层存储器(其可以是芯片上的或附接的存储器,并且可以共享或专用于一个或多个决策树处理器124)利用根据当前工作量要求待执行的特定(一个或多个)决策树表被加载或可加载。第二层存储器(其可以是芯片上的或在附接存储器中、共享或专用于一个或多个决策树处理器124)可以存储一个或多个共同驻留的模型上下文,其全部或部分可加载到第一层决策树表存储器中。
主机104可以将特征向量112中的共同特征向量提供给多个专用设备或可编程逻辑设备116,并且还将单个模型上下文108的决策树表提供给多个专用设备或可编程逻辑设备116。因此,跨越多个专用设备或可编程逻辑设备116的单独的决策树群集122和决策树处理器124可以对单个模型上下文108针对特征向量112中的共同特征向量的决策树进行评分。来自多个专用设备或可编程逻辑设备116中的每个设备的评分数据可以在如该详细描述内的其他地方所描述的多个专用设备或可编程逻辑设备116中的每个设备内传播,并且还传递回到主机104。在一些实施例中,评分数据可以从第一专用设备或可编程逻辑设备116传递到另一专用设备或可编程逻辑设备116,其可以进一步传播得分数据(诸如通过求和或附加得分,或附加得分的总和)以产生针对专用设备或可编程逻辑设备116二者的组合的得分数据。
在不脱离实施例的范围的情况下,处理得分数据的其他方法也是可能的。例如,每个决策树评分器102可以从决策树处理器124和/或决策树评分器102内的决策树群集122接收得分或得分的总和的列表,并且将最后的总和值提供给主机104、另一可编程逻辑设备116或某个其他下游设备。决策树评分器102可以将得分(或得分的总和)提供给主机104、另一可编程逻辑设备116或其他下游设备。主机104、其他可编程逻辑设备116或其他下游设备可以执行特征向量112的最终评分,诸如通过对得分求和或执行某个其他算法,以诸如基于来自多个专用设备或可编程逻辑设备116中的一个或多个设备的得分数据,确定针对特征向量112的最终得分。
在一些实施例中,专用设备116或可编程逻辑设备116可以是或被包括在以下各项中的一个或多个中:专用集成电路(ASIC)、可编程逻辑器件诸如现场可编程门阵列(FPGA)、片上系统(SoC)、作为具有对决策树评分的专用部分的通用处理器的一部分、某个其他逻辑器件或以上内容的某种组合。
具有扩展的指令集的通用处理器
在一些实施例中,扩展通用处理器的指令集架构以包括决策树遍历、评分指令和状态。在一些实施例中,指令集包括遍历决策树中的一个节点的指令。在一些实施例中,扩展的指令集包括用于遍历多个节点或遍历从根(顶节点)到叶的整个决策树的指令。
由具有扩展的指令集的通用处理器可用于遍历决策树的状态包括决策树节点和特征向量数据的表示。可以以数据结构、以可执行指令或以某种其他形式表示决策树节点。作为数据结构,决策树可以表示为包括一个或多个节点的树,该节点包括特征标识符、阈值和左字树数据和右子树数据,其可以标识左(相应右)子树节点或左(相应右)叶节点或叶评分数据。特定节点的数据可以捆绑到邻近的字节中,例如记录或“结构”或“类”或可以跨表散布。在决策树节点被表示为数据结构的情况下,通过数据值(例如,节点的索引或指针(机器地址))标识树节点。响应于遍历一个或多个节点的指令而遍历树节点包括:以树节点标识符开始、取回其标识的特征、将其与节点的阈值相比较,并且使用比较结果来确定左子树或右子树的树节点标识符或右或左叶/叶值。在一些实施例中,遍历节点的指令(在本文中被称为NODEWALK指令)可以采用两个参数,例如包含指向数节点的指针的寄存器和包含指向RAM中的特征向量的指针的寄存器,并且可以产生两个值,例如,包含指向左或右子树(如果非叶节点)的指针或者包含输出值(如果叶节点)的寄存器,以及包含如果NODEWALK已经到达叶值(终止树遍历)所设定的标记的条件代码寄存器。在汇编语言中,树遍历包括:
;利用决策树的根节点的地址加载r1
;利用特征向量的地址加载r2
repeat:
rl=NODEWALK rl,r2;从一个节点遍历到其左或右子树节点
JNE repeat;重复,直到到达叶
;到达叶;叶输出值处于r1
NODEWALK的另一实施例捆绑循环测试并且跳到一个指令中:
;利用决策树的根节点的地址加载
;利用特征向量的地址加载r2
repeat2:
rl=NODEWALKREPEAT rl,r2,repeat2;遍历一个节点,
重复;直到;到达叶
;到达叶;叶输出值处于r1
另一实施例遍历一个指令中的整个树:
;利用决策树的根节点的地址加载
;利用特征向量的地址加载r2
r3=TREEWALK rl,r2;遍历树
;叶输出值处于r1
在一些实施例中,决策树被表示为由实现决策树遍历指令的处理器执行的一系列树遍历指令。该指令对应于决策树中的一个节点。该指令(被表示为比特串)包括比特字段,其包括特征标识符、阈值和左和右子树节点和/或叶和叶值的标识符。在该实施例中,利用指令(机器代码)地址标识树节点。因此,树遍历包括执行改变程序控制流以跳到针对左子树或右子树的代码的树代码遍历指令。
例如,如果决策树由两个节点组成:
这可以由该程序表示:
其中,NODE指令编码:
leaf-output-value=NODE#feature-identifier,#threshold-value,
#left-subtree-address,#right-subtree-address,#left-leaf-output-value,
#right-leaf-output-value,#leaf-code-address,feature-vector-address-r
egister
#字段是指令的“立即(immediate)”值比特字段。
在该实施例中,通过执行其第一NODE指令对决策树进行评分,其跳到下一左或右NODE指令等直到其到达叶。根NODE指令的比特字段对特征标识符(10)、阈值(41)、左子树(“left”)、右子树(nil)、左叶值(nil)和右叶值(c)进行编码。在该示例中,如果所标识的特征小于或等于阈值tl,那么在地址“左”处控制传送到第二NODE指令。该指令的比特字段对其特征标识符(20)、阈值(t2)、左和右子树(nil)和左和右叶输出值(相应地a和b)进行编码。如果节点指令前进到叶,那么其向指定地址(结束)传送控制并且在输出寄存器中获得叶索引或输出值。
在其他实施例中,树遍历指令可以使用隐性寄存器、专用寄存器或存储器位置来标识特征向量和叶节点地址。其他实施例可以采用可变长度指令编码来压缩或消除未被用于表示特定决策树节点的指令比特字段(诸如nil子树字段)。其他实施例可以利用存储器中的指令的邻接来以与先前所描述的方式类似的方式压缩或消除比特字段(诸如左子树地址或右子树地址)。
在一些实施例中,决策树数据结构存储器或决策树指令存储器可以被集成到通用处理器中、被外部地存储到其中或可以通过存储器高速缓存层次结构耦合到外部存储器。
具有决策树遍历、评分指令和状态的通用处理器还可以耦合到特征存储RAM。在一些实施例中,可以通过如该详细描述内的其他地方所描述的特征向量分布网络自动地加载特征存储RAM。具体而言,在不要求通过具有用于遍历决策树的扩展的指令集的通用处理器执行任何指令的的情况下,可以通过特征向量分布网络将新特征数据加载到该RAM中。这可以节省对决策树评分所要求的时间和能量。
具有决策树遍历、评分指令和状态的通用处理器也可以耦合到得分聚合系统。这可以包括附加寄存器、线程状态、加法器树网络,以累积起由于如NODEWALK、TREEWALK或NODE的指令的叶输出值(得分)以将节点遍历到叶节点。这也可以节省对决策树评分所要求的时间和能量。
示例决策树编码
图2图示了根据本公开的各个实施例编码的决策树。在图2中图示了示例决策树200。其包括多个决策节点202和多个叶节点204。决策节点202包括各种特征,包括特征标识符(其可以是地址)、索引号、参考数字、或标识在决策节点202处被比较的特征的其他标识符。该决策节点202还包括与特征值(经由特征标识符参考的)相比较的阈值。该决策节点202还包括左分支指针和右分支指针,其指示其中定位下一节点的位置。每个决策节点202表示比较;例如,节点数字7示出特征值(被标识为特征“FI”)与阈值数字10相比较。在不脱离实施例的范围的情况下,其他比较是可能的。
本文所描述的实施例指代左分支、右分支、左节点、右节点等。但是仅出于描述决策树的原因而使用这些术语。一般而言,决策树遍历算法执行特征值与阈值之间的比较,并且基于比较的结果,继续到第一节点或第二节点。为了便于描述,这些接下来的节点在本文中被称为左节点和右节点,但是这不以文字或限制性意义理解。
叶节点204包括叶值。当决策树遍历算法到达叶节点204时,完成遍历决策树的特定实例,并且输出到达的对应于特定叶节点204的叶值。
决策树编码器106对决策树200进行编码。决策树编码器106创建针对模型上下文内的每个决策树的决策树表206。在决策树表206中,利用邻接消除至少一些分支指针。因此,决策树200中的节点1在决策树表中被编码为在节点2之前。节点3被列出在节点2之后,并且节点4在节点3之后。因此,在决策树表206内的节点1-3的执行期间,决策树处理器(诸如决策树处理器124之一)知道基于特征值与阈值的比较的结果,将决策树表206中的接下来的邻近节点或者由下一节点数据(诸如偏移值)引用的另一节点选择为待由决策树处理器执行的下一节点。因此,基于图2中的示例邻接,执行决策树表206的决策节点的结果(其指示选择左分支)导致将邻近节点选择为下一节点。因此,在特定决策节点具有通向另一决策节点(并且非叶节点)的左分支,决策树表206中的邻近节点是下一叶节点。使用下一节点数据(诸如偏移值)标识右下一节点。在不存在左决策节点的情况下(由于例如左分支通向叶节点),右下一节点相邻是可能的;还可以由下一节点数据(诸如偏移值)标识这样的右节点,或其可以假定是邻近的。
除了基于邻接将决策节点202布置在决策树表206内,决策树编码器106还包括决策树表206内的决策节点202的表示中的叶节点204的任何叶节点值。例如,通过决策树编码器106对节点7进行编码使得其表示包括叶值。基于节点7的执行的结果(例如,基于特征值与阈值10的比较,如图2中所示),决策树处理器选择输出左叶节点的值或者将节点8选择为下一决策节点以用于处理。
决策节点202在决策树表206内被表示为可变长度决策节点(一些被示出为比其他更小来说明这一点)。在一个示例中,以下字段由决策树编码器106用于编码决策节点。
2叶:{feat_ad;info;L_Leaf_val;R_Leaf_val}(72比特)
1叶:{feat_ad;info;L_Leaf_val or R_Leaf_val}(48比特)
0叶:{feat_ad;info;delta(可选的)}(24或36比特)
决策树表206内的决策节点202的所有表示包括特征标识符(“feat_ad”)和信息(“info”)字段。该特征标识符标识其中找到在决策节点的执行中要与阈值相比较的特征值(其可以是如该详细描述内的其他地方所描述的特征索引值)的特征存储内的位置。该特征标识符可以是决策树处理器使用来查找特征存储库内(诸如特征存储库126内)的特征值的地址或其他标识符。该信息字段包括下文更详细讨论的各个子字段。
二叶决策节点还包括左叶值(“L_Leaf_val”)和右叶值(“R_Leaf_val”)。这些值表示决策树200的可能的结果或输出。一叶决策节点包括左叶值(“L_Leaf_val”)或右叶值(“R_Leaf_val”)中的一个。叶值可以包括各种数据类型,包括整数、固定点、浮点或标识存储在决策树表外部的唯一值的索引。
没有叶的决策节点(诸如节点2)包括标识其中定位右决策节点的可选的增量值。在这种情况下,左决策节点被定位在邻近位置处的决策树表206内(例如,对于节点2而言,“左”决策节点是节点3)。右决策节点被定位在由增量值可标识的决策树表206内的位置处。决策树处理器处理增量值以确定右决策节点值。例如,决策树处理器可以将增量值添加到当前执行决策节点的位置值(例如,索引值或地址)以获得下一右决策节点的位置值(例如,地址或索引值)。在一些实例中,增量值被包括在info字段内,如下文更详细描述的。在这些实例中,分离的增量值未被包括在节点表示中。
在示例实施方式中,fead_ad字段是12比特,info字段是12比特,rdelta字段是12比特,左叶值是24比特,并且右叶值是24比特。
info字段包括标识阈值、是否存在左叶、是否存在右叶的各种子字段,并且对用于定位下一右节点的共同偏移或增量值进行编码。info字段的一个示例如下:
Info:{nyb;x;l_leaf;r_leaf;threshold}
在一些实施例中,nyb字段是标识特征值是4比特还是8比特字(例如,特征值是否是“半字节”)的1比特,x字段是1位,l_leaf是1比特,r_leaf是1比特,并且threshold是8比特,但是在不脱离实施例的范围的情况下,可以使用其他字段大小。l_leaf字段指示节点是否包括左叶值;同样地,r_leaf字段指示节点是否包括右叶值。如上文所指出的,info字段可以用于对右节点偏移或增量值进行编码,从而消除对于节点中的分离的增量字段的需要。在x=l的情况下,l_leaf和r_leaf字段用于对四个共同偏移值进行编码。在特定示例中,l_leaf和r_leaf字段用于对8字、12字、16字和20字的偏移(其中,1字=12比特,在该特定示例中)进行编码,但是在不脱离实施例的范围的情况下,可以对其他偏移值进行编码。在不能利用info字段内的共同偏移值之一对偏移值进行编码的情况下—由于例如下一右节点不在作为远离当前节点的共同偏移之一的位置处—使用可选的分离的偏移增量字段。在一些实施例中,多个决策树被存储在一个决策树表中,以及适当的编码标识决策树的数目和/或决策树表内的一个或多个决策树的位置。
在一些实施例中,决策树表206还包括DTT报头208,其对决策树表206的各方面进行编码(诸如包含在决策树表206内的决策树的数目和决策树表206内的一个或多个决策树的开始位置)。
示例阈值和特征压缩
在给定决策树内或在多个决策树内(诸如在模型上下文108内),决策节点包括特征标识符和阈值。在示例决策树节点执行时,将(从由特征标识符feat_ad索引的位置处的特征向量读取的)特征值与阈值相比较。该比较可以是确定特征值是否小于或等于阈值。如果是,那么选择左分支;如果否,那么选择右分支。在不脱离实施例的范围的情况下,其他类型的比较是可能的,诸如小于、大于或大于或等于。虽然下文所描述的特征值和阈值编码的各个示例假定决策树比较包括确定特征值是否小于或等于阈值,但是在不脱离实施例的范围的情况下,基于其他类型的决策树比较,可以针对特征值和阈值执行类似的编码。
贯穿多个决策树,将在一个或多个节点中引用给定特征fi。引用给定特征fi的节点将包括一个或多个阈值tvi之一。因此,在给定模型上下文内(例如,一个或多个决策树)并且对于特定特征fi而言,决策树编码器106确定与对应于特定特征fi的特征值fvi相比较的阈值tvi的列表tsi。不与特定特征fi相比较的阈值未被包括在针对特定特征fi的列表中(虽然它们将被包括在针对其他特征的其他列表中)。为了对模型上下文内的特定fi的阈值tvi进行编码,使用以下程序。
对于每个特征fi而言,决策树编码器106形成被包括在还引用fi的模型上下文的决策树中的任一任何节点中的所有唯一阈值tvi的分类列表tsi。图3图示了实数线300上的唯一阈值tvi的示例列表tsi。分类列表tsi仅包括阈值tvi的唯一阈值,因此即使其被包括在引用给定模型上下文内的fi的多个节点中,特定阈值tvi也仅出现在tsi中一次。
在图3中示出了针对tsi中的阈值tvi的示例编码302。索引号tvii以递增顺序被分配到tsi内的实数线300上的每个唯一tvi,使得最小tvi被分配索引0,并且最大tvi被分配tsi内的第一tvi的总数减一的索引号。在图3中所示的示例中,阈值tl是最小tvi,并且被分配索引0,而阈值t6是最大tvi并且被分配阈值索引值5。在阈值是大数目的情况下,定点整数索引值tvii的分配降低了表示决策树节点表示内的阈值所要求的比特的数目。例如,阈值tvi可以是32比特浮点数(虽然在不脱离实施例的范围的情况下,可以使用其他比特数和其他变量类型),并且在图3中所图示的示例中,与三比特数一样小可以用于表示阈值索引tvii(虽然其他位数可以被用于表示tvii和特征索引值fvii,如下文更详细描述的)。
除将tvi编码为tvii之外,特征向量编码器110将对应于特征向量112中的fi的特征值fvi编码为特征索引值fvii,使得其与编码的阈值索引值tvii兼容。每个特征向量112包括针对每个fi的特征值fvi的列表。在一些实施例中,基于阈值索引值tvii,将特征值fvi编码为特征索引值fvii,并且特别地对其进行编码,使得阈值索引值tvii与特征索引值fvii的比较的结果相当于将阈值tvi与特征值fvi相比较的结果。通过这种方式对特征值进行编码,基于原始特征值和阈值,针对编码的特征向量112的模型上下文108内的编码的决策树的执行的结果产生与决策树的基于传统软件的执行相同的输出。
继续图3中所图示的示例,模型上下文108内的决策树的决策节点的执行基于确定特征值fvi是否小于或等于阈值tvi。因此,在该示例中,特征值fvi被编码为特征索引值fvii中使得
当且仅当fvi≤tvi时,fvii<tvii
更一般地,特征值fvi被编码为特征索引值fvii使得
当且仅当fvi比较tvi时,fvii比较tvii
其中,比较表示在决策树的执行期间所执行的比较函数(例如,≤、≥、<或>之一=。在图3中所示的示例中,选择特征索引值fvii使得
fvii是最大的整数,使得fvi<=tsi[fvii],
或者否则如果fi>tsi[#tsi-l],则fvii=#tsi。
其中#tsi是与特定模型上下文内的特定特征fi相关联的阈值ti的总数(例如,引用特征fi的节点中的所有阈值tvi)。换句话说,特征索引值fvii被选择为以以下各项下中的任一项:(1)对应于大于或等于特征值fvi的阈值tvi中的最小阈值的阈值索引值tvii,或者如果所有阈值tvi小于特征值fvi,(2)大于最大阈值索引值tvii的数目。在上文所示的示例中,对应的fvii被选择为等于阈值tvi的总数的数目,其比最大tvii大1,然而,可以选择比最大tvii更大的任何数目。
在图3中所图示的示例中,特征向量编码器110将示例特征fl-f6编码为编码304。关于特征fl,t2是大于或等于fl的最小tvi,并且因此,针对f1的特征索引值fvii被设定为与针对t2的tvii相同(即,1)。关于特征f6,没有tvi大于或等于f6;因此,针对f6的fvii被设定为大于最大tvii的数目。在图3中所示的示例中,针对t6的fvii被设定为6,其比最大tvii(5)大1。而且,在图3中所示的示例中,f4被编码为3。
在实施例中,被选择为对与特定fi相关联的tvi和fvi进行编码的比特数足够大以容纳#tsi(与引用fi的决策节点相关联的第一tvi的总数)。在一些实施例中,可能的索引长度的集合在的索引长度用于表示tvi和fvi,其降低了对tvi和fvi进行编码的复杂性。在一个特定示例中,tvi和fvi被编码为4比特字、8比特字或者多个8比特字,但是在不脱离实施例的范围的情况下,可以使用其他字长。在特定示例中,选择索引字长使得
·如果lg(#tsi)<4,则将tvi和fvi重新编码为4比特,其中lg(x)是以2为底的x的对数。
·否则如果lg(#tsi)<8,则将tvi和fvi编码为8比特
·否则利用#tsi>255阈值比较将任何tvi和fvi重新编码为(#tsi)/255分离的fi
在fi被编码为(#tsi)/255分离的fi的情况下,决策节点由决策树编码器106重新编码为指示(#tsi)/255分离的fi之一,并且因此对节点的对应的阈值tvi进行重新编码。在特定示例中,具有tsi内的1259总tvi的fi导致与被重新编码为五个不同的节点之一的特定的fi相关联的节点,每个具有分离的fi和8比特阈值。因此,fvii=0被编码为(0,0,0,0,0)(例如针对原始fi被分解为的所有分离的fi,被编码为0);fvii=255被编码为(255、0、0、0、0)(例如,针对分离的fi中的第一个的255和针对分离的fi的所有其他的0);fvii=256被编码为(255,1,0,0,0)(例如,针对分离的fi中的第一个的255、针对第二个分离的fi的1、以及0针对所有其他的0);fvii=1258被编码为(255,255,255,255,238)。还以类似的方式对针对分离的fi的阈值tvi进行编码。
并行架构
图4图示了根据各个实施例的实现在专用集成电路或可编程集成电路上的决策树评分器102的架构400。该架构400包括布置在网格中的多个决策树群集(DTC)122。该DTC122被配置为从决策树评分器102接收模型上下文108和特征向量112。该DTC 122包括多个决策树处理器124的子集和特征存储库126的子集。决策树处理器124的子集可以是利用与决策树处理器的其他子集相同或不同的决策树表加载和/或可加载的,并且特征存储库126的子集可以是利用相同或不同的特征向量加载或可加载的(例如其可以利用共同特征向量被加载)。
DTC 122可以从第一邻近DTC 122接收特征向量112并且将其分布到DTC 122的第二邻近DTC 122。在一个示例中,DTC 122-A被配置为从DTC 122-C接收特征向量112,并且将一些特征向量112分布到DTC 122-C和122-D,如由图4中的箭头所图示的。
同样地,DTC 122可以从第一邻近DTC 122接收得分数据并且将其传播到DTC 122的第二邻近DTC 122。该得分数据可以基于如由决策树处理器124中的不同的决策树处理器124(诸如针对共同特征集)输出的单独的决策树得分。该得分数据可以是得分的列表、得分的求和或基于单个得分的一些其他得分数据(诸如单个得分的乘法或用于处理得分的某个其他算法)。该得分的列表可以是来自单个决策树结果的得分的列表或处理的得分的列表。例如,来自特定决策树群集122的所有得分可以求和并且附加到所有DTC 122得分的列表,使得最终得分数据包括来自每个DTC 122的求和得分的列表。在另一示例中,可以对来自由单个决策树处理器124执行的决策树的所有得分进行求和,并且来自所有决策树处理器的求和得分可以列在最终得分数据中等。在不脱离实施例的范围的情况下,可以使用传播得分数据的其他方式。在一些实施例中,来自每个DTC 122、DTC 122组、决策树处理器124、决策树处理器124组、单个决策树、决策树组的经处理或原始得分数据以某种其他方式(诸如在分离的输出网络上)被提供给DTS 400并且未被传播给邻近的DTC 122,如本文所描述的。
在图4中所示的示例中,DTC 122-E被配置为从邻近的DTC 122-F和122-G接收得分数据。DTC 122-E被配置为从邻近的DTC 122-F和122-G接收得分数据连同由DTC 122-E内的决策树处理器(诸如决策树处理器124)所提供的得分数据,处理得分数据以确定组合的得分数据(诸如通过对得分求和、将得分附加到单个得分的列表或以某种其他方式处理得分数据),并且将组合的得分数据传递到执行类似功能的邻近的DTC 122-H等,直到所有得分被传播到将最终得分数据传递到DTS 102的DTC 122中的最后一个。更一般地,DTC 122被配置为传播得分数据使得得分不被重复计算。例如,通过DTS 102的得分传播的特定模式使DTC 122中的任一个避免从相同得分已经被处理到其中的两个相邻DTC 122接收两个得分。
在一些实施例中,将模型上下文加载到决策树评分器架构400包括将不同的决策树表加载到DTC 122内的决策树区片中的不同的决策树区片中,包括贯穿决策树评分器架构400的DTC 122的决策树处理器分布的多个决策树。在这些实施例中,加载到DTC 122中的决策树中的每个决策树基于共同特征向量,产生不同的得分。
在一些实施例中,同时被加载到决策树架构400中的不同的决策树表可以是单个模型上下文108的一部分或不同的模型上下文108的一部分。在一些实施例中,多个决策树模型被编码到单个模型上下文中。在一个示例中,两个模型可以类似但是具有一些差异。稍微地修改针对两个模型的决策树以引入选择模型1或者模型2的新决策节点。另外,到特征向量中的适当的特征选择模型1或者模型2。
在一些实施例中,将特征向量加载到决策树评分器架构400包括将相同特征向量加载到DTC 122的特征存储区片中的每一个中。因此,针对具有处理(例如,求和)并且传播回到DTS 102的所有得分的相同特征集,对在实施例中彼此不同的DTC的多个决策树进行评分。
在其他实施例中,利用相同决策树来加载DTC 122的各个DTC 122,使得其执行与DTC 122中的其他DTC 122相同的决策树。可以将不同的特征向量加载到DTC中的不同的DTC,使得针对不同的特征向量执行决策树。在一些实施例中,利用不同的特征向量和相同的决策树来加载DTC 122,或者决策树组被加载到决策树评分器架构400中。在这些实施例中,利用不同的一个或多个特征向量组来加载每个DTC 122。针对特征向量对决策树进行评分,并且当模型上下文的所有决策树流过特征向量并且被执行时,在针对特征向量的时间上累积评分。在这些实施例中,DTC 122可以被配置为保持针对特征向量的得分时,直到针对特征向量加载并且执行模型上下文的所有决策树;备选地,单个决策树得分被传输到主机104,其累积并且处理针对特定特征向量的得分。
在其他实施例中,利用不同的决策树作业(例如,模型上下文和特征向量的组合)来记载不同的DTC 122组。因此,决策树评分器架构400的第一部分针对第一模型上下文确定针对第一特征向量的得分,决策树评分器架构400的第二部分针对第二模型上下文确定针对第二特征向量的得分等,以及决策树评分器架构400的第N个部分针对第N个模型上下文确定针对第N个特征向量的得分。在这些实施例中,利用模型上下文的决策树和逐个分布在用于评分的部分内的特征向量来加载每个部分的DTC 122,或者利用不同的特征向量来加载每个部分的DTC 122,并且模型上下文的决策树逐个被分布在用于评分的部分内。
决策树评分器架构400内的DTC 122的数目可以放大到任意大的数目,这取决于在其上实现决策树评分器架构400的集成电路的大小和能力。
在一些实施例中,利用超过一个决策树评分器架构400,其各自具有并行执行的自身的DTC 122集。在这些实施例中,单个模型上下文可以加载到一个或多个芯片的DTC 122上,并且特征向量逐个被分布到不同的芯片的DTC 122以用于评分。在其他实施例中,利用逐个分布到用于评分的DTC 122中的每一个中的模型上下文的不同的决策树将不同的特征向量加载到不同的芯片的DTC 122中。在各种其他实施例中,这些方法的组合可以被用于组合的多芯片决策树评分器架构400的不同的部分。
在一些实施例中,确定加载到决策树评分器架构400的模型上下文的总体或组合得分基于相关函数(诸如加法或者乘法),其中,对得分进行分组的顺序不确定结果。因此,DTC 122中的DTC内的决策树的分布对于针对加载到架构400中的模型上下文的决策树产生对于特定特征向量的正确最后或组合得分不必是重要的。在其他实施例中,针对特征向量和模型上下文决策树评分作业的得分的处理不是相关的,并且贯穿架构分布决策树和/或特征向量的顺序对于确定针对特定特征向量的最后或组合得分是重要的。
可以经由专用设备或可编程逻辑设备116内部的一个或多个网络将特征向量112、模型上下文108的决策树表和/或得分数据分布到DTC 122和/或决策树处理器124。DTC122、决策树处理器124和各种特征存储库126中的一个或多个可以是经由分组报头可寻址的。不管可加载到针对决策树处理器124的共享或专用存储中的决策树表的分布方法如何,决策树表可以单独地传输(诸如经由分组)并且寻址到DTC 122或决策树处理器124中的一些DTC或决策树处理器,或者决策树表可以一起被分布。主机104和/或决策树评分器102内的逻辑可以确定DTC 122和决策树处理器124之间的单个决策树表的分布。而且,DTC 122可以包括将决策树表分布到决策树处理器124中的单独的一些决策树处理器124的逻辑。
图4图示了将得分和特征向量分布到芯片上多处理器系统的决策树处理器的网络的示例。具体而言,DTC 122充当用于聚集/处理得分数据和特征向量的网络元件。在其他实施例中,其他网络类型用于将得分和/或特征向量分布到决策树处理器和/或特征存储库。在这些其他实施例中,可以包括或可以不包括决策树群集122作为架构的一部分。在一个实施例中,决策处理器可以布置在决策树处理器的网格中,并且得分和/或特征向量可以经由决策树处理器直接并且最终地分布到决策树评分器或其他得分聚集元件。在其他实施例中,广播网络(其可以是总线、网格、点对点、轴辐式或其他拓扑)可以将决策树处理器(和/或决策树群集122)连接到决策树评分器或提供特征向量和/或接收/累积/处理来自决策树处理器的得分的其它元件。在其他实施例中,片上网络(NOC)(其可以具有诸如将配置数据分布到FPGA元件或其他功能的其他目的)可以被重新使用,以从决策树处理器到决策树评分器或其他评分聚集元件分布特征向量,和/或将得分数据从决策树处理器提供到决策树评分器或其他得分聚集元件。
得分聚集元件可以接收并且累积来自决策树处理器和/或决策树群集122的得分数据。该得分聚集元件可以处理得分数据,其可以包括对得分数据求和、将得分数据附加到得分的列表或向量、执行某种其他算法以基于所接收的数据而计算得分等。该得分聚集元件可以以处理的形式或者以原始的形式将得分数据传递到主机或其他下游元件。
实施例可以包括分离的网络,一个网络用于得分数据并且另一个网络用于特征向量。因此,在不同的实施例中,网络可以是特征网络、得分聚集网络或二者。在一些实施例中,决策树群集122可以充当针对特征网络或得分网络中的一者或两者的网络元件。在不脱离实施例的范围的情况下,其他示例是可能的。
图5图示了根据各个实施例的实现在专用集成电路或可编程集成电路上的决策树群集122的架构500。该架构500包括一个或多个决策树处理器124和一个或多个特征存储库126。图5中所图示的示例架构500包括五个决策树处理器124和一个特征存储库126,虽然在各个其他实施例中,使用其他数目的决策树处理器124和特征存储库126。
DTC 122包括接收针对特征存储库126中的存储库的特征向量的特征输入总线寄存器,例如,64比特特征输入总线寄存器。DTC 122包括累积并且输出保持得分的得分输出寄存器,以用于输出到DTC 122的邻近的DTC,例如,33比特固定点得分输出寄存器。DTC 122的加法器树对来自决策树处理器124和来自一个或两个或两个以上邻近的DTC 122的得分进行合计。当其中执行的所有决策树线程已经完成并且输出得分时,决策树处理器124输出完成的标记。DTC 122累积完成的标记,并且在加法器树将来自邻近的DTC 122的得分添加到来自决策树处理器124的得分时,DTC 122就将得分输出到一个或多个邻近的DTC 122。这时候,DTC 122还将完成信号输出到其上游DTC 122(诸如通过可以与DTS 102内的互连网络相同或不同的完成信号网络)以分布特征向量、得分数据和/或决策树表数据。在最后DTC122的情况下,得分和完成信号被输出到DTS 102。在接收到完成信号时,DTC 122和决策树评分器102就确定上游DTC 122已经完成其决策树执行并且所有可用的得分被接收在输入总线上,得分将不再等待接收,并且得分准备被添加到决策树处理器124的得分并且被传播到下游DTC 122和/或决策树评分器102。
在一些实施例中,特征存储库126被双缓冲以使得一个特征集能够加载到特征存储库126,同时另一特征集由决策树处理器124读取。在一个示例中,特征存储库126包括两个32比特写端口,这使得特征存储库126能够以250MHz收回64位的特征数据。在一个示例中,特征存储库126包括使得特征存储库126能够接收每周期两个8比特特征的两个32比特读端口。特征存储库126接收来自决策树处理器124的特征标识符并且利用特征值(例如,8比特特征值和标记)做出响应。
在一些实施例中,通过由特定决策树群集122的决策树处理器124使用的特征向量的子集的选择性捕获降低了特征存储库126上的存储空间。并非特征向量112内的所有特征将由特定决策树群集122的决策树引用;因此,在一些实施例中,通过仅捕获通过由特定DTC122的决策树处理器124执行的决策树实际上引用的一些特征值降低了特征存储库126上的存储空间。因此,可以在被寻址到特征存储库126或特定特征存储库126被包括在其中的DTC122的分组中引用要由特定特征存储库126存储的特征向量的部分。该特征存储库126可以提供有掩模(诸如在被寻址到特征存储库126或DTC 122的分组中),其标识用于选择性地存储的特征向量的部分。
如下文将更详细描述的,决策树处理器124是能够执行多个决策树的多线程树遍历引擎。在决策树处理器124内将决策树存储为决策树表。在各个实施例中,决策树表被存储在各种存储器存储类型上,诸如随机存取存储器,包括动态随机存取存储器(DRAM)、块随机存取存储器(BRAM)、静态随机存取存储器(SRAM)等。在一些实施例中,决策树处理器124包括五级管线,如下文更详细描述的;因此,只要存在至少五个可运行的线程(对应于其执行尚未完成的五个决策树),决策树处理器124就能够在每个时钟周期上发起遍历决策树的一个节点。
多级树遍历管线
在一些实施例中,决策树处理器包括管线架构。图6图示了根据各个实施例的决策树处理器的多级、多线程、管线树遍历电路600。该电路600被实施在决策树处理器内的逻辑电路内。线程电路(或线程级)(图6中表示的“TH”)从NEXT_THDS表602接收下一线程TH_THD。在图6中所图示的示例中,NEXT_THDS表602是32x5比特,并且因此存储高达32个5比特下一线程数目;因此多达32个线程可以由电路600处理。NEXT_THDS表602是线程的链接列表;初始地所有线程被列在NEXT_THDS表602中;当线程完成(通过输出叶值)时,线程从NEXT_THDS表602解链接。一旦将所有线程从NEXT_THDS表602解链接,决策树处理器将完成信号输出到决策树群集,这指示其完成所有线程。线程电路使用来自NEXT_THDS表602的下一线程标识符发出针对来自节点地址表(NODE_ADS表604)和叶表(叶表606)的下一线程的下一节点地址的读取。NODE_ADS表604是32x13比特,并且因此存储多达32个13位下一节点地址(针对每个线程一个)。
叶表606存储叶输出标记;在针对叶表606内的特定线程的条目存储输出标记(例如,1或0)的情况下,叶值被输出到决策树群集并且线程从NEXT_THDS表602解链接。
在叶输出标记指示先前未选择叶值的情况下,下一节点地址被传递到读取节点电路(读取级)(在图6中表示的“RN”),并且通过针对下一节点描述符的电路600发出对应于当前线程的节点表NTAB 608的读取。在实施例中,NTAB 608被存储在决策树处理器的电路内的专用存储器上或与决策树处理器的电路相关联的专用存储器上。在其他实施例中,NTAB608被存储在从决策树处理器分离并且通信地耦合到决策树处理器的存储器中。在一些实施例中,NTAB 608被存储在由多个决策树处理器共享的存储器中。
在电路600的F1特征电路(或F1特征级)中读出节点描述符的12比特特征地址F1_FEAT_AD和12比特info字段FI_INFO连同下一节点数据(诸如偏移值,如果存在于NTAB 608中的话)。例如,下一左节点地址和右节点地址和下一左叶标记值和右叶标记值通过该级处的逻辑610被预计算并且是节点地址、info字段和可选的rdelta偏移字段的函数。info字段确定是否存在节点一、二或零下一子树节点,并且是否存在一、二或零叶值。下一左和右下一节点地址基于NTAB 608内的邻接和FI_RDELTA值(如果存在的话)或根据info字段中的偏移值进行预计算,如该详细描述内的其他地方所描述的。在一些实施例中,在当前节点具有左子树节点时,下一左节点地址是邻近当前节点(紧接地跟随)的节点的地址,并且下一左叶标记是假。否则,当前节点具有左叶输出值,并且下一左节点对当前节点内的包含左叶值的(一个或多个)字的地址进行寻址,并且下一左叶标记是真。预计算对于下一右节点地址和下一右叶标记而言是类似的。在当前节点具有右子树节点但是没有左子树节点时,下一右节点地址是邻近当前节点(紧接地跟随)的节点的地址,并且下一右叶标记是假。在当前节点具有左子树节点和右子树节点二者时,通过添加当前节点地址和偏移确定下一右节点地址(其值被编码在info字段内或者明确地表示在任选的rdelta偏移字段中),并且下一右叶标记是假。否则,当前节点具有右叶输出值,并且下一右节点对当前节点内的包含右叶值的(一个或多个)字的地址进行寻址,并且下一右叶标记是真。
在电路600的F2特征电路(或F2特征级)处,从特征存储库612(例如,特征存储库126)读取与F1_FEAT_AD相关联的特征值。在实施例中,FST 126被配置为由两个不同的决策树处理器读取;因此,示出了具有两个输入和两个输出的特征存储库612。
在电路600(在图6中表示的“EX”)的执行电路(或执行级)处,通过逻辑614将从特征存储612读取的特征值(“EX_FEAT”)与当前执行的节点的阈值(EX_TH)相比较。阈值EX_TH和特征值EX_FEAT可以是阈值索引值和特征索引值,如在该详细描述中的其他地方描述的,或者其可以是未压缩的阈值和特征值。本公开的实施例不限于一个或另一个的使用。基于由逻辑614输出的比较的结果,将下一左节点地址或者下一右节点地址写到NODE_ADS表604中的线程的条目。还基于由逻辑614输出的比较的结果,将下一左叶标记或者下一右叶标记写到LEAFS表606中的线程的条目。
一旦执行电路选择针对特定线程的叶值并且设定叶标记,那么下一次线程就被发出到管线中,读取叶标记并且NODE_ADS表604中的节点地址不是节点的地址,而是NTAB 608内的先前节点内的叶值字的地址。在RN电路处,从NTAB 608读取这些叶值字,从而获得针对特定线程的得分620,而不是特征地址和info字段的叶值。得分620可以被输出到决策树群集,如该详细描述内的其他地方所描述的。另外,当叶标记是真时,从NEXT_THDS表602解链接线程,使得其不再次由管线获取。
电路600的各部分中的每个部分(TH、RN、FI、F2和EX)并发地处理线程中的不同线程。因此,在任何时候,电路600处理多达五个不同的线程的某个部分,其对应于每个时钟周期并发地处理多达五个不同的决策树的某个部分。
示例过程
图7描绘了根据各个实施例的示出执行决策树的示例过程700的流程图。在702处,决策树处理器(例如,决策树处理器管线的线程电路或级)确定要由处理器执行的下一线程并且发出对节点表的读取以确定下一线程的下一节点地址。
在704处,决策树处理器(例如,决策树处理器管线的读取节点电路或级)从可以存储在决策树处理器内的决策树节点表取回决策树节点数据(诸如决策树节点字,包括至少特征指示符和阈值)。决策树节点的子集还包括下一节点数据,诸如下一节点偏移值。
决策树节点执行的最终结果导致叶值的输出作为决策树遍历线程的输出(诸如在决策树节点执行导致选择左叶值或右叶值的情况下)。在706处,决策树处理器(例如,决策树处理器的读取电路或级)确定是否针对特定线程设定叶标记(诸如在通过管线的线程的先前传递期间)。在设定叶标记的情况下,在708处,从线程表解链接特定线程。在710处,决策树节点的叶值数据(诸如一个或多个叶值字)由决策树处理器管线的读取节点电路或级读取并且输出到决策树群集或某种其他输出网络。
在712处,在未设定叶标记的情况下,决策树处理器(例如,决策树处理器管线的特征电路或级)从特征存储读取由特征指示符所标识的特征值。
在714处,决策树处理器(例如,决策树处理器管线的特征电路或级)基于下一节点数据(诸如偏移值和邻近当前执行的节点的下一决策树节点),对可能的下一决策树节点地址进行预计算。决策树处理器(例如,决策树处理器管线的特征电路或级)还或备选地预计算针对右或左叶数据的地址(诸如当前决策树节点的右或左叶字或值)。如该详细描述内的其他地方所指出的,决策树节点表的节点的子集包括一个或多个叶值。叶节点的存在指示决策节点的执行的可能结果是选择输出下一次线程穿过管线的叶值。因此,决策树处理器根据存在是左叶还是左下一节点并且基于在所执行的特定决策节点中存在是右叶值还是右下一节点,对左叶数据地址或左下一节点地址之一和右叶数据地址或右下一节点地址之一进行预计算。在714处的预计算发生在由决策树处理器的决策节点的执行之前。
在一些实施例中,通过处理下一节点数据诸如决策树节点的偏移值(诸如通过将偏移值添加到当前节点的位置以到达下一节点的位置)执行下一节点地址中的一些下一节点地址的预计算。下一节点数据(诸如偏移值)是由在决策节点内提供的不同的下一节点数据(诸如偏移值)或者由决策节点的info字段编码,如该详细描述内的其他地方所描述的。预计算下一节点地址还基于针对下一节点地址中的一些下一节点地址的邻接。
在716处,决策树处理器(例如,决策树处理器管线的执行电路或级)执行决策树节点。执行决策树节点包括将决策树节点的阈值与从特征存储所取回的特征值相比较。阈值可以是阈值索引值,并且特征值可以是特征索引值,如该详细描述内的其他地方所描述的。
在718处,决策树处理器(例如,决策树处理器管线的执行电路或级)确定针对要被取回和执行的线程的下一决策树节点和/或包含下一次线程被获取到管线中待输出的叶值的叶数据的地址。基于执行决策树节点的结果,确定对叶数据的下一决策树节点或地址的选择。比较的一些结果(诸如在特征值小于或等于阈值的情况下)导致基于下一节点数据(诸如下一节点偏移值)确定下一决策树节点。比较的其他结果(诸如在特征值不小于或等于阈值的情况下)导致确定邻近在决策树处理器内的决策树相关联的决策树表内的当前执行的节点的下一决策树节点。
在720处,通过决策树处理器(例如,通过决策树处理器的线程电路或级)做出所有线程是否已经退出的确定。由于线程在710处输出叶值并且完成,因而其在708处从决策树线程的链接列表解链接。当所有线程被解链接时,完成该决策树处理器124中的决策树执行。每个线程对应于单个决策树;因此一旦完成所有线程,决策树处理器就输出完成信号并且输出来自决策树执行的一个或多个得分。
图8图示了根据各个实施例的通过决策树评分器对多个决策树进行评分的过程800。在802处,决策树评分器102从主机104或其他上游处理系统接收模型上下文108。在804处,决策树评分器102将模型上下文108加载到多个决策树群集122上。
在806处,决策树评分器102从主机104或从上游处理系统接收特征向量112。在808处,决策树评分器102将特征向量112提供给决策树群集122中的第一决策树群集。因此,在一些实施例中,将共同特征向量提供给决策树群集122和决策树处理器124。
在810处,决策树评分器102从决策树群集122之一接收最终得分和完成信号,这指示决策树群集已经完成利用多个决策树对特征向量的评分。在812处,决策树评分器102将最终得分提供给主机104或下游处理系统,其在一些实施例中可以包括另一决策树评分器或其他系统。
图9图示了根据各个实施例的通过决策树群集对多个决策树进行评分的过程900。在902处,决策树群集(DTC)122从决策树评分器102或从邻近的DTC 122接收特征向量(诸如共同特征向量)。在904处,DTC 122将特征向量提供给其他邻近的DTC 122。通过这种方式,特征向量被分布到决策树评分器内的所有DTC。
在906处,决策树群集122使得多个DTC 122内的多个决策树处理器124开始执行被加载到DTC 122上的模型上下文内的多个决策树。执行多个决策树可以是并发的,并且可以由多线程、多级管线决策树处理器执行。除了其他方面,执行决策树包括阈值(或阈值索引值)与共同特征向量的特征值(或特征索引值)的比较以及基于比较选择下一节点和/或输出值。执行决策树导致针对多个决策树中的一些决策树的对应的得分。
在908处,DTC 122从决策树处理器124接收由于决策树处理器124上的决策树的执行的对应的得分和完成信号。在910处,DTC 122从邻近的DTC 122接收得分和完成信号。
在912处,基于接收到完成信号和得分,DTC 122利用来自邻近的DTC 122的得分处理来自决策树处理器124的得分。例如,DTC 122可以对得分求和来产生累积得分。在另一示例中,DTC 122可以将得分或来自DTC 122内的决策树处理器124的得分的总和附加到从邻近的DTC 122所接收的得分数据。
在914处,DTC 122将累积得分和完成信号传播到邻近的DTC 122,最终到达DTC122的最后的DTC,其将最终得分提供给决策树评分器102。通过这种方式,来自在DTC 122中的每个DTC内的决策树处理器124上执行的决策树中的每个决策树的单独的得分被累积到最终的得分数据(诸如来自决策树处理器中的单个决策树处理器的得分的最后总和或得分的列表或得分的集合)并且被传播到决策树评分器102。
图10图示了根据各个实施例的对多个决策树的阈值进行编码的过程1000。在1002处,决策树编码器106标识对应于特定特征的多个决策树(诸如模型上下文1008内的那些)的所有决策节点中引用的所有阈值。
在1004处,决策树编码器106确定与一个或多个决策树中的特定特征相关联的唯一阈值的列表。在一些实施例中,诸如以递增或以递减顺序对列表进行排序。在1006处,决策树编码器106至少部分基于与一个或多个决策树中的特定特征相关联的唯一阈值的排序列表中的值的数目,确定要用于表示针对阈值的阈值索引值的比特的数目。
在一个特定示例中,在与特定特征相关联的阈值的总数的以2为底的对数小于4的情况下,阈值索引被编码为4比特字,并且在与特定特征相关联的阈值的总数的以2为底的对数小于8的情况下,阈值索引被编码为8比特字。在与特定特征相关联的阈值的总数的以2为底的对数大于8的情况下,多个特征用于表示编码的决策树中的特定特征,使得通过n/255确定用于表示特定特征的特征数目,其中n等于与特定特征相关联的阈值的总数,如该详细描述内的其他地方所描述的。8比特字用于表示针对这些多个特征的阈值。在其他实施例中,修改决策树以代替具有超过预定值的多个唯一阈值的一个节点而包括多个决策节点。在不脱离实施例的范围的情况下,其他示例是可能的。
在1008处,决策树编码器106确定针对唯一阈值的列表的多个阈值索引。在一些实施例中,索引值被分配给分类列表,使得与较小的阈值相关联的阈值索引值小于与较大的阈值相关联的阈值索引值,虽然在其他实施例中,较大的索引值被分配给较小的阈值。在一个特定示例中,唯一阈值中的最小的阈值被分配阈值索引值0,并且最大一个被分配等于唯一阈值的总数减去一的阈值索引值。在不脱离实施例的范围的情况下,其他示例是可能的。
在1010处,决策树编码器106表示一个或多个决策树,使得与特定特征相关联的一个或多个决策树的决策节点包括阈值索引值。针对多个决策树中的至少一个决策节点中引用的每个特征重复过程1000,直到利用阈值索引值对多个决策树中的所有阈值进行编码。
图11图示了根据各个实施例的对特征值的向量进行编码的过程1100。如上文关于图10所描述的,对针对每个特征的阈值进行编码。对针对编码的决策树的集合要被评分的特征向量的特征值进行编码,使得特征值与编码的阈值兼容。在1102处,特征向量编码器110接收待由多个决策树评分的特征向量112。
在1104处,特征向量编码器110将与特定特征相关联的特征值与对应于特定特征(例如,上文所描述的列表tsi)的阈值相比较。在1106处,通过特征向量编码器110做出以下确定:关于对应于特征向量中的特定特征的特征值是否大于与具有特定特征的多个决策树中的相关联的阈值集中的最大阈值。
在1108处,一旦确定特征值不大于最大阈值(“否”路径),则特征向量编码器110标识大于或等于特征值的唯一阈值的列表的最小的阈值。
在1110处,特征向量编码器110对特征值进行编码以产生等于排序阈值索引值中的特定阈值索引值的编码的特征值(例如,特征索引值),该特定阈值索引值对应于唯一阈值的排序列表的最小阈值。
在1112处,一旦确定特征值大于最大阈值(“是”路径),则特征向量编码器110将特征索引值设定为大于最大的阈值索引值。在一个特定示例中,特征索引值被设定为等于与特征相关联的唯一阈值的总数,但是可以使用大于最大阈值索引值的任何数目。通过这种方式,对特征索引值进行设定使得在决策树执行期间阈值索引值与对应的特征索引值的比较的结果(诸如通过决策树处理器124)相当于对应的阈值与对应的特征值的比较的结果。
在单个块中图示了图7-图11的示例过程的操作,并且参考那些块概述了图7-图11的示例过程的操作。描述操作的顺序不旨在被解释为限制的,并且任何数目的所描述的操作可以以任何顺序组合、分离为子操作和/或并行执行以实现过程。根据本公开的各个实施例的过程可以包括仅逻辑流程图中所描绘的操作中的一些或全部操作。
示例计算系统
图12是可用于执行本文所描述的各种方法的示例计算系统1200的框图。计算系统1200可以被配置为能够实现决策树评分系统的全部或一部分的任何适合的计算设备(诸如主机104)。根据各种非限制性示例,适合的计算设备可以包括个人计算机(PC)、手持式设备、可穿戴智能设备、智能电话、平板计算机、膝上型计算机、台式计算机、游戏系统、电子媒体播放器(诸如mp3播放器和电子书阅读器)、服务器、服务器群、数据中心、专用计算机、这些的组合或能够存储和执行本文所描述的决策树评分系统的全部或一部分的任何其他(一个或多个)计算设备。
在一个示例配置中,计算系统1200包括一个或多个处理器1202和存储器1204。该计算系统1200还可以包含允许与各种其他系统通信的(一个或多个)通信连接1206。该计算系统1200还可以包括一个或多个输入设备1208(诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等)和通信地耦合到(一个或多个)处理器1202和存储器1204的一个或多个输出设备1210(诸如显示器、扬声器、打印机等)。
存储器1204可以存储在(一个或多个)处理器1202上可加载并且可执行的程序指令以及在这些程序的执行期间所生成和/或结合这些程序可用的数据。在所图示的示例中,存储器1204存储操作系统1212,其提供计算系统1200的基本系统功能性,并且除了其他方面,还提供计算系统1200的其他程序和程序模块的操作。
计算机可读介质
取决于所使用的计算设备的配置和类型,图12中的计算系统1200的存储器1204可以包括易失性存储器(诸如随机存取存储器(RAM))和/或非易失性存储器(诸如只读存储器(ROM)、闪速存储器等)。存储器1204还可以包括附加的可移除存储和/或不可移除存储,包括但不限于闪速存储器、磁性存储器、光学存储器和/或带存储器,其可以提供针对计算系统1200的计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。
存储器1204是计算机可读介质的示例。计算机可读介质包括至少两种类型的计算机可读介质(即,计算机存储介质和通信介质)。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何过程或技术实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于相变存储器(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器或其他存储器技术、压缩磁盘只读存储器(CD-ROM)、数字多用光盘(DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备或可以用于存储用于由计算设备访问的信息的任何其他非传输介质。相反,通信介质可以实现计算机可读指令、数据结构、程序模块、调制数据信号(诸如载波或其他传输机制)中的其他数据。如本文所定义的,计算机存储介质不包括通信介质。
结论
虽然本公开使用特定于结构特征和/或方法动作的语言,但是本发明不限于所描述的特定特征或动作。而相反,特定特征和动作被公开为实现本发明的说明性形式。
Claims (18)
1.一种决策树评分硬件系统,包括:
多个决策树群集,其被布置在可编程集成电路上的网格中,其中所述多个决策树群集中的每个决策树群集包括:
多个决策树处理器,每个决策树处理器具有并行可执行的一个或多个决策树;
双缓冲特征存储库,其被配置为并发地将第一共同特征向量集合写入到所述特征存储库,并且针对所述多个决策树处理器中的每个决策树处理器,提供对被存储在所述特征存储库中的第二共同特征向量集合的访问;
其中所述多个决策树群集中的两个或更多个决策树群集被配置为从所述多个决策树群集中的邻近决策树群集接收通过第二多个整个决策树的执行生成的得分数据,所述两个或更多个决策树群集各自具有第一多个整个决策树;以及
所述多个决策树群集中的所述两个或更多个决策树群集中的每个决策树群集被配置为并行处理接收到的所述得分数据以及从所述决策树群集内的所述第一多个整个决策树生成的得分数据,以产生组合的得分数据。
2.根据权利要求1所述的决策树评分硬件系统,其中针对所述多个决策树群集中的每个决策树群集,所述多个决策树处理器中的第一决策树处理器还关于所述第二共同特征向量集合执行所述决策树中的第一决策树,并且所述决策树处理器中的第二决策树处理器关于所述第二共同特征向量集合并发地执行所述决策树中的第二决策树。
3.根据权利要求1所述的决策树评分硬件系统,其中所述两个或更多个决策树群集中的每个决策树群集还通过以下各项中的一项来处理接收到的所述得分数据和生成的所述得分数据:
将接收到的所述得分数据附加到生成的所述得分数据以产生所述组合的得分数据;或
对接收到的所述得分数据与生成的所述得分数据求和以产生所述组合的得分数据。
4.根据权利要求1所述的决策树评分硬件系统,其中针对所述多个决策树群集中的每个决策树群集,所述决策树处理器中的至少一个决策树处理器基于对所述一个或多个决策树的执行的结果来输出得分,所述决策树评分硬件系统还包括:
得分聚集网络,其用于收集由所述决策树处理器输出的得分。
5.根据权利要求1所述的决策树评分硬件系统,还包括以下各项中的一项或两项:
所述多个决策树群集中的子集,其包括决策树处理器的子集,其中所述多个决策树群集中的所述子集中的第一决策树群集从所述多个决策树群集中的所述子集中的第二决策树群集接收共同特征集合,并且将所述共同特征集合传播到所述多个决策树群集中的所述子集中的第三决策树群集;以及
特征网络,其耦合到所述多个决策树群集中的每个决策树群集中的所述多个决策树处理器,以向所述多个决策树群集中的每个决策树群集中的所述多个决策树处理器中的每个决策树处理器提供所述共同特征集合。
6.根据权利要求1所述的决策树评分硬件系统,其中针对所述多个决策树群集中的每个决策树群集,所述多个决策树处理器还包括在多线程进程中并发地执行多个决策树的多个多线程决策树处理器。
7.根据权利要求1所述的决策树评分硬件系统,其中所述多个决策树群集包括所述多个决策树群集中的决策树群集的模式,所述模式被配置为避免从相同的得分数据已经处理到其中的两个邻近的决策树群集接收所述得分数据。
8.一种决策树评分方法,包括:
提供被布置在可编程集成电路上的网格中的多个决策树群集;
在所述多个决策树群集中的每个决策树群集中提供多个决策树处理器;
在所述多个决策树群集中的每个决策树群集中提供双缓冲特征存储库;
在被布置在可编程集成电路上的网格中的多个决策树群集中的每个决策树群集中并发地将第一共同特征向量写入到所述双缓冲特征存储库,所述多个决策树群集中的每个决策树群集具有被实现在芯片上决策树评分系统内的多个决策树处理器;
将第二共同特征向量提供到所述多个决策树处理器中的每个决策树处理器,在所述多个决策树处理器中的每个决策树处理器上,每个决策树处理器参考所述第二共同特征向量来并行地执行一个或多个决策树;
由所述多个决策树群集中的两个或更多个决策树群集从所述多个决策树群集中的邻近决策树群集接收通过第二多个整个决策树的执行生成的得分数据,所述两个或更多个决策树群集各自具有第一多个整个决策树;以及
由所述多个决策树群集中的所述两个或更多个决策树群集中的每个决策树群集并行处理接收到的所述得分数据以及从所述决策树群集内的所述第一多个整个决策树生成的得分数据,以产生组合的得分数据。
9.根据权利要求8所述的方法,还包括:由所述多个决策树群集中的每个决策树群集中的所述多个决策树处理器参考所述第二共同特征向量来并发地执行所述多个决策树。
10.根据权利要求8所述的方法,还包括:
基于执行所述多个决策树的结果,将针对所述多个决策树群集中的每个决策树群集中的所述多个决策树中的至少一个决策树的得分输出到得分聚集网络中。
11.根据权利要求8所述的方法,还包括针对所述多个决策树群集中的每个决策树群集中的并发地:
将第三共同特征向量加载到所述特征存储库中;以及
由所述决策树处理器中的至少一个决策树处理器执行所述多个决策树中的至少一个决策树,所述执行包括从所述特征存储库读取所述第三共同特征向量的一个或多个特征。
12.根据权利要求8所述的方法,还包括:
贯穿所述多个决策树群集传播所述第一共同特征向量,所述传播包括:从第一相邻的决策树群集接收所述第一共同特征向量,以及
由所述多个决策树群集中的至少一个决策树群集将所述第一共同特征向量传递到第二相邻的决策树群集。
13.根据权利要求8所述的方法,其中所述多个决策树群集包括所述多个决策树群集中的决策树群集的模式,所述模式被配置为避免从相同的得分数据已经处理到其中的两个邻近的决策树群集接收所述得分数据。
14.一种决策树遍历系统,包括:
多个决策树群集,其被布置在可编程集成电路上的网格中;
在所述多个决策树群集中的每个决策树群集中的多个决策树处理器,其中所述多个决策树处理器中的每个决策树处理器包括并行可执行的一个或多个决策树;以及
在所述多个决策树群集中的每个决策树群集中的双缓冲特征存储库,其被配置为并发地:
将第一共同特征向量写入到所述特征存储库;以及
通过所述多个决策树处理器中的每个决策树处理器来提供对被存储在所述特征存储库中的第二共同特征向量的访问;
其中所述多个决策树群集中的两个或更多个决策树群集被配置为从所述多个决策树群集中的邻近决策树群集接收通过第二多个整个决策树的执行生成的得分数据,所述两个或更多个决策树群集各自具有第一多个整个决策树;以及
所述多个决策树群集中的所述两个或更多个决策树群集被配置为并行处理接收到的所述得分数据以及从所述决策树群集内的所述第一多个整个决策树生成的得分数据,以产生组合的得分数据。
15.根据权利要求14所述的决策树遍历系统,还包括:
第二特征存储库,存储所述第一共同特征向量;以及
第二多个决策树处理器,其:
访问来自所述第二特征存储库的所述第一共同特征向量;以及
通过比较所述第二多个决策树的阈值与所述第一共同特征向量内的特征值来执行所述第二多个决策树。
16.根据权利要求14所述的决策树遍历系统,由所述多个决策树处理器利用对所述第二共同特征向量的访问来并发地将第三共同特征向量写到所述特征存储库。
17.根据权利要求14所述的决策树遍历系统,其中所述特征存储库和所述多个决策树处理器是被包括在以下各项中的一项中的第一特征存储库和第一多个决策树处理器:第一可编程逻辑设备、第一专用集成电路、或具有第一增强指令集的第一芯片上处理器,并且所述决策树遍历系统还包括:
第二可编程逻辑设备、第二专用集成电路、或具有第二增强指令集的第二芯片上处理器中的一个,其包括:
第二特征存储库,其用于存储所述第一共同特征向量;以及
第二多个决策树处理器,其访问来自所述第二特征存储库的所述第一共同特征向量,并且通过比较第三多个整个决策树的第二阈值与所述第一共同特征向量内的特征值来执行所述第三多个整个决策树;
所述第二可编程逻辑设备、所述第二专用集成电路、或具有所述第二增强指令集的所述第二芯片上处理器被配置为:
从以下各项中的一项接收第一得分数据:所述第一可编程逻辑设备、所述第一专用集成电路、或具有所述第一增强指令集的所述第一芯片上处理器,所述第一得分数据源自所述第二多个整个决策树的执行;以及
利用源自所述第三多个整个决策树的执行的第二得分数据来处理所述第一得分数据,以产生针对所述第一共同特征向量的组合的得分数据。
18.根据权利要求14所述的决策树遍历系统,其中所述多个决策树群集包括所述多个决策树群集中的决策树群集的模式,所述模式被配置为避免从相同的得分数据已经处理到其中的两个邻近的决策树群集接收所述得分数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/216,990 US10332008B2 (en) | 2014-03-17 | 2014-03-17 | Parallel decision tree processor architecture |
US14/216,990 | 2014-03-17 | ||
PCT/US2015/020050 WO2015142595A1 (en) | 2014-03-17 | 2015-03-12 | Parallel decision tree processor architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106133721A CN106133721A (zh) | 2016-11-16 |
CN106133721B true CN106133721B (zh) | 2019-10-01 |
Family
ID=52774572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580014613.3A Active CN106133721B (zh) | 2014-03-17 | 2015-03-12 | 并行决策树处理器架构 |
Country Status (14)
Country | Link |
---|---|
US (1) | US10332008B2 (zh) |
EP (1) | EP3120262A1 (zh) |
JP (1) | JP6605573B2 (zh) |
KR (1) | KR102376117B1 (zh) |
CN (1) | CN106133721B (zh) |
AU (1) | AU2015231828A1 (zh) |
CA (1) | CA2939959A1 (zh) |
CL (1) | CL2016002294A1 (zh) |
IL (1) | IL247166A0 (zh) |
MX (1) | MX2016011670A (zh) |
PH (1) | PH12016501639A1 (zh) |
RU (1) | RU2016136985A (zh) |
SG (1) | SG11201607431XA (zh) |
WO (1) | WO2015142595A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150262062A1 (en) * | 2014-03-17 | 2015-09-17 | Microsoft Corporation | Decision tree threshold coding |
US20170004455A1 (en) * | 2015-06-30 | 2017-01-05 | Linkedin Corporation | Nonlinear featurization of decision trees for linear regression modeling |
US10699213B2 (en) | 2016-03-07 | 2020-06-30 | Micron Technology, Inc. | Space efficient random decision forest models implementation utilizing automata processors |
CN108319991B (zh) * | 2017-01-16 | 2021-02-09 | 航天信息股份有限公司 | 一种节点工程布线图确定方法及装置 |
CN106971528A (zh) * | 2017-03-31 | 2017-07-21 | 上海智觅智能科技有限公司 | 一种压缩红外空调遥控码库的算法 |
EP3422245B1 (en) * | 2017-06-28 | 2022-02-16 | NXP USA, Inc. | Methods, processing engines, and microprocessors for classifying data according to decision trees |
US11216431B2 (en) * | 2017-09-12 | 2022-01-04 | Apple Inc. | Providing a compact representation of tree structures |
CN108170769A (zh) * | 2017-12-26 | 2018-06-15 | 上海大学 | 一种基于决策树算法的装配制造质量数据处理方法 |
JP7069898B2 (ja) * | 2018-03-16 | 2022-05-18 | 株式会社リコー | 学習識別装置および学習識別方法 |
WO2019183868A1 (en) * | 2018-03-29 | 2019-10-03 | Intel Corporation | Methods, systems, articles of manufacture and apparatus to improve resource utilization for binary tree structures |
CN109086815B (zh) * | 2018-07-24 | 2021-08-31 | 中国人民解放军国防科技大学 | 基于fpga的决策树模型中的浮点数离散化方法 |
US10602207B2 (en) * | 2018-08-03 | 2020-03-24 | Facebook, Inc. | Neural network based content distribution in an online system |
JP7095479B2 (ja) * | 2018-08-10 | 2022-07-05 | 株式会社リコー | 学習装置および学習方法 |
CN109376590A (zh) * | 2018-09-07 | 2019-02-22 | 百度在线网络技术(北京)有限公司 | 基于无人车的障碍物分类方法、装置、设备以及存储介质 |
JP7176359B2 (ja) * | 2018-11-05 | 2022-11-22 | 株式会社リコー | 学習装置および学習方法 |
JP7196542B2 (ja) * | 2018-11-05 | 2022-12-27 | 株式会社リコー | 学習装置および学習方法 |
US20200160450A1 (en) * | 2018-11-19 | 2020-05-21 | Jpmorgan Chase Bank, N.A. | Systems and methods for decision tree-based management of market risk stress scenarios |
US11206287B2 (en) * | 2019-01-29 | 2021-12-21 | Battelle Memorial Institute | Evaluating cyber-risk in synchrophasor systems |
US10657603B1 (en) * | 2019-04-03 | 2020-05-19 | Progressive Casualty Insurance Company | Intelligent routing control |
CN111027435B (zh) * | 2019-12-02 | 2022-12-02 | 清华大学 | 一种基于梯度提升决策树的识别系统、装置和方法 |
KR20230012632A (ko) * | 2020-06-19 | 2023-01-26 | 알베르트-루드비히스-우니베르시테트 프라이부르크 | 결정 트리 앙상블의 분류를 위한 아키텍처 및 방법 |
US11615827B2 (en) * | 2020-10-15 | 2023-03-28 | Hewlett Packard Enterprise Development Lp | Hardware accelerator with analog-content addressable memory (a-CAM) for decision tree computation |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902871A (zh) * | 2012-07-03 | 2013-01-30 | 成都中医药大学 | 针灸临床循证决策支持系统及其应用方法 |
CN103532908A (zh) * | 2012-07-02 | 2014-01-22 | 清华大学 | 一种基于二级决策树的p2p协议识别方法 |
CN103546441A (zh) * | 2012-07-16 | 2014-01-29 | 清华大学 | 基于多级决策树的协议识别方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5020059A (en) | 1989-03-31 | 1991-05-28 | At&T Bell Laboratories | Reconfigurable signal processor |
US5146540A (en) | 1990-02-22 | 1992-09-08 | International Business Machines Corp. | Processor allocation method and apparatus for multiprocessor execution of a constraint satisfaction search |
US6212628B1 (en) * | 1998-04-09 | 2001-04-03 | Teranex, Inc. | Mesh connected computer |
US6571210B2 (en) | 1998-11-13 | 2003-05-27 | Microsoft Corporation | Confidence measure system using a near-miss pattern |
US8195705B2 (en) | 2001-12-11 | 2012-06-05 | International Business Machines Corporation | Hybrid search memory for network processor and computer systems |
US7246102B2 (en) | 2001-12-21 | 2007-07-17 | Agere Systems Inc. | Method of improving the lookup performance of three-type knowledge base searches |
US6938049B2 (en) | 2002-06-11 | 2005-08-30 | The Regents Of The University Of California | Creating ensembles of decision trees through sampling |
US8117137B2 (en) | 2007-04-19 | 2012-02-14 | Microsoft Corporation | Field-programmable gate array based accelerator system |
US8650144B2 (en) | 2008-02-14 | 2014-02-11 | Yahoo! Inc. | Apparatus and methods for lossless compression of numerical attributes in rule based systems |
US7877724B2 (en) | 2008-05-09 | 2011-01-25 | Lsi Corporation | Decision tree representation of a function |
US8533129B2 (en) | 2008-09-16 | 2013-09-10 | Yahoo! Inc. | Efficient data layout techniques for fast machine learning-based document ranking |
US8687893B2 (en) | 2011-03-31 | 2014-04-01 | Microsoft Corporation | Classification algorithm optimization |
US9384278B2 (en) | 2011-04-07 | 2016-07-05 | Ebay Inc. | Methods and systems for assessing excessive accessory listings in search results |
US8879831B2 (en) | 2011-12-15 | 2014-11-04 | Microsoft Corporation | Using high-level attributes to guide image processing |
US9292767B2 (en) * | 2012-01-05 | 2016-03-22 | Microsoft Technology Licensing, Llc | Decision tree computation in hardware utilizing a physically distinct integrated circuit with on-chip memory and a reordering of data to be grouped |
US10152674B2 (en) * | 2012-01-16 | 2018-12-11 | Texas Instruments Incorporated | Accelerated decision tree execution |
EP2746991A1 (en) | 2012-12-21 | 2014-06-25 | Nederlandse Organisatie voor toegepast -natuurwetenschappelijk onderzoek TNO | Image pattern recognition system and method |
US20150262062A1 (en) | 2014-03-17 | 2015-09-17 | Microsoft Corporation | Decision tree threshold coding |
US20150262063A1 (en) | 2014-03-17 | 2015-09-17 | Microsoft Corporation | Decision tree processors |
-
2014
- 2014-03-17 US US14/216,990 patent/US10332008B2/en active Active
-
2015
- 2015-03-12 RU RU2016136985A patent/RU2016136985A/ru not_active Application Discontinuation
- 2015-03-12 CA CA2939959A patent/CA2939959A1/en not_active Abandoned
- 2015-03-12 MX MX2016011670A patent/MX2016011670A/es unknown
- 2015-03-12 JP JP2017501068A patent/JP6605573B2/ja active Active
- 2015-03-12 AU AU2015231828A patent/AU2015231828A1/en not_active Abandoned
- 2015-03-12 EP EP15713082.4A patent/EP3120262A1/en not_active Ceased
- 2015-03-12 SG SG11201607431XA patent/SG11201607431XA/en unknown
- 2015-03-12 KR KR1020167025570A patent/KR102376117B1/ko active IP Right Grant
- 2015-03-12 CN CN201580014613.3A patent/CN106133721B/zh active Active
- 2015-03-12 WO PCT/US2015/020050 patent/WO2015142595A1/en active Application Filing
-
2016
- 2016-08-08 IL IL247166A patent/IL247166A0/en unknown
- 2016-08-17 PH PH12016501639A patent/PH12016501639A1/en unknown
- 2016-09-13 CL CL2016002294A patent/CL2016002294A1/es unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103532908A (zh) * | 2012-07-02 | 2014-01-22 | 清华大学 | 一种基于二级决策树的p2p协议识别方法 |
CN102902871A (zh) * | 2012-07-03 | 2013-01-30 | 成都中医药大学 | 针灸临床循证决策支持系统及其应用方法 |
CN103546441A (zh) * | 2012-07-16 | 2014-01-29 | 清华大学 | 基于多级决策树的协议识别方法 |
Non-Patent Citations (2)
Title |
---|
Accelerating a random forest classifer:multi-core,GP-GPU,or FPGA?;Van Essen et al.;《2012 IEEE 20th International Symposium on Field-Programmable Custom Computing Machines》;20121231;第232-239页 * |
double buffering;JONES,B.et al.;《www.fpgarelated.com/showthread/comp.arch.fpga/55681-1.php》;20061204;全文第2-最后一段 * |
Also Published As
Publication number | Publication date |
---|---|
PH12016501639A1 (en) | 2016-10-03 |
EP3120262A1 (en) | 2017-01-25 |
MX2016011670A (es) | 2016-11-07 |
AU2015231828A1 (en) | 2016-09-08 |
WO2015142595A1 (en) | 2015-09-24 |
RU2016136985A (ru) | 2018-03-20 |
JP2017517082A (ja) | 2017-06-22 |
CL2016002294A1 (es) | 2017-03-24 |
JP6605573B2 (ja) | 2019-11-13 |
SG11201607431XA (en) | 2016-10-28 |
RU2016136985A3 (zh) | 2018-10-24 |
CA2939959A1 (en) | 2015-09-24 |
KR20160132853A (ko) | 2016-11-21 |
US10332008B2 (en) | 2019-06-25 |
KR102376117B1 (ko) | 2022-03-17 |
CN106133721A (zh) | 2016-11-16 |
US20150262064A1 (en) | 2015-09-17 |
IL247166A0 (en) | 2016-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106133721B (zh) | 并行决策树处理器架构 | |
JP6126127B2 (ja) | ステートマシンにおけるルーティング用の方法およびシステム | |
JP6082753B2 (ja) | ステートマシンにおけるデータ解析用の方法およびシステム | |
US9665083B2 (en) | Counter operation in a state machine lattice | |
EP2875433B1 (en) | Methods and systems for handling data received by a state machine engine | |
KR101920956B1 (ko) | 상태 기계에서의 검출을 위한 방법들 및 시스템들 | |
KR101873619B1 (ko) | 상태 기계 격자에서의 불리언 로직 | |
CN110516810B (zh) | 一种量子程序的处理方法、装置、存储介质和电子装置 | |
US20150262062A1 (en) | Decision tree threshold coding | |
US20150262063A1 (en) | Decision tree processors | |
US20180113951A1 (en) | Graph traversal using automata processor | |
Ahmad | 40 Algorithms Every Programmer Should Know: Hone your problem-solving skills by learning different algorithms and their implementation in Python | |
CN105830160A (zh) | 用于将经屏蔽数据写入到缓冲器的设备及方法 | |
US11461662B1 (en) | Compilation time reduction for memory and compute bound neural networks | |
Kim | Energy-Efficient Accelerator Design for Emerging Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1226839 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1226839 Country of ref document: HK |