CN117951346B - 面向向量数据库的混合加速架构 - Google Patents
面向向量数据库的混合加速架构 Download PDFInfo
- Publication number
- CN117951346B CN117951346B CN202410349055.7A CN202410349055A CN117951346B CN 117951346 B CN117951346 B CN 117951346B CN 202410349055 A CN202410349055 A CN 202410349055A CN 117951346 B CN117951346 B CN 117951346B
- Authority
- CN
- China
- Prior art keywords
- vector
- distance
- task
- calculation
- module
- 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
- 239000013598 vector Substances 0.000 title claims abstract description 170
- 230000001133 acceleration Effects 0.000 title claims abstract description 78
- 238000004364 calculation method Methods 0.000 claims abstract description 111
- 230000011218 segmentation Effects 0.000 claims abstract description 49
- 238000012545 processing Methods 0.000 claims abstract description 44
- 239000000284 extract Substances 0.000 claims abstract description 5
- 238000012163 sequencing technique Methods 0.000 claims description 44
- 239000011159 matrix material Substances 0.000 claims description 42
- 238000009825 accumulation Methods 0.000 claims description 12
- 239000000872 buffer Substances 0.000 claims description 9
- 230000008707 rearrangement Effects 0.000 claims description 6
- 238000000926 separation method Methods 0.000 claims description 6
- 230000001174 ascending effect Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000006835 compression Effects 0.000 claims description 3
- 238000007906 compression Methods 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 26
- 238000000034 method Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 230000008901 benefit Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 238000013139 quantization Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010845 search algorithm Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 241000157593 Milvus Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开面向向量数据库的混合加速架构,涉及集成电路领域,包括主核和两个副核,主核中任务切分模块进行任务切分,任务调度模块根据调度副核执行加速任务;第一副核根据切分任务执行距离计算流水线,其中的距离计算模块根据向量库和待查询向量计算向量距离,从高速存储器中提取待查询向量和向量库、缓存向量距离,向主核反馈距离计算流水线的计算结果;第二副核根据切分任务执行排序流水线,其中的数据排序模块根据向量距离进行向量排序,向主核反馈排序流水线的排序结果,主核根据排序结果输出向量查询结果。该方案通过硬件实现多流水并行处理,实现各种模式下的混合加速功能,副核自定义加速功能,提供更快处理速度和更高存储访问带宽。
Description
技术领域
本申请实施例涉及数据库领域,特别涉及一种面向向量数据库的混合加速架构。
背景技术
对于非结构化的数据或知识,可以通过一定的学习和训练将其编码为向量,这些非结构化的数据包括:文本、图像、音频、视频等等。向量数据库的主要作用是存储和处理向量数据,并提供高效的向量检索功能。向量数据库的核心思想就是相似度搜索,通过计算一个向量与其他所有向量之间的距离来找到最相似的向量。
为提高向量数据库的性能,以往的研究方向都倾向于更高效率的向量索引结构和更合理的向量查询方法,因此涌现出了各式各样的向量搜索算法。这些算法都有一个特点:为了提高搜索性能,可以仅计算一部分向量的距离。这种方法称为近似最近邻(approximate nearest neighbors:ANN),它提高了速度,但牺牲了结果的质量。常用的ANN索引包括局部敏感哈希(Locally Sensitive Hashing:LSH)、分层可导航小世界(Hierarchical Navigable Small Worlds:HNSW)、倒排文件索引(Inverted File Index:IVF)、倒排乘积量化等。
另外一种提高向量数据库性能的方向是通过使用 GPU、NPU、FPGA等专有硬件加速向量查询。比如Milvus、Faiss等数据库除了提供了CPU版本,还提供了GPU版本加速查询。由于不同加速硬件和专有芯片的结构设计均不相同,如何能够结合这些硬件的特性从而高效地执行向量索引的请求目前仍在探索中。
发明内容
本申请实施例提供面向向量数据库的混合加速架构,解决使用软件加速数据库查询向量速度慢和牺牲结果质量的问题。
本申请提供了面向向量数据库的混合加速架构,包括主核和两个以多流水线并发处理的第一副核与第二副核,所述主核包含有任务调度模块和任务切分模块;所述任务切分模块根据查询任务进行任务切分,所述任务调度模块根据切分任务调度第一副核和/或第二副核执行相应的流水线加速任务;所述第一副核与第二副核分别连接高速存储器,所述高速存储器中缓存有用于向量加速查询的向量库;
所述第一副核根据接收的切分任务执行距离计算流水线,每条距离计算流水线包括计算管理模块和距离计算模块,所述距离计算模块根据向量库和待查询向量计算向量距离;所述计算管理模块根据切分任务从高速存储器中提取待查询向量和向量库、缓存向量距离,以及向主核反馈距离计算流水线的计算结果;
所述第二副核根据接收的切分任务执行排序流水线,每条排序流水线包含有数据排序模块,所述数据排序模块根据第一副核获得的向量距离进行向量排序,以及向主核反馈排序流水线的排序结果,所述主核根据排序结果输出向量查询结果。
本申请实施例提供的技术方案带来的有益效果至少包括:
1)提供更加灵活的模型配置;混合加速架构中引入了FPGA/ASIC/SOC等硬件,这些硬件能够灵活的实现各种自定义功能,从而因此为向量检索提供了更多的可能性。
2)提供多种硬件混合加速;混合加速架构将不同的运算功能进行分离,并根据各自运算的特点,使用不同的硬件进行加速,充分发挥硬件的优势,从而能大大提高了数据处理能力。
3)加速不同类型的算法模型;向量库检索的算法模型有很多种,使用混合加速架构能在一定程度上对各种算法模型都有一定的加速效果。混合加速架构中使用新的计算方式和排序方式,并使用流水线和多batch等技术,同时提高了存储访问的带宽。从而对多种不同的算法模型都有一定加速作用。
5)多级流水线处理;混合加速架构在设计时采用流水线的设计思想,并通过多级流水线并行的方式提高处理带宽。混合加速架构中会将任务按照功能拆分成多个不同的子任务,并将功能相同的任务进行批量处理,从而实现多任务并行处理的功能。
附图说明
图1是本申请实施例提供的面向向量数据库的混合加速架构;
图2是本申请另一实施例提供的面向向量数据库的混合加速架构;
图3 是本申请实施例提供保护的面向向量数据库的混合加速架构的细节图;
图4是第一副核中距离计算流水线的结构示意图;
图5是查表流水线中的结构示意图;
图6是排序流水线中数据排序模块的结构示意图;
图7是第二副核中数据重排模块的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
因为传统的向量加速都是在算法软件上进行极致优化,但这种优化都是基于CPU进行加速处理的。但CPU受限于自身的功能特性只能执行复杂的程序功能,对于高并发和大量简单的计算任务就显得捉襟见肘,特别是高并发任务会严重拖慢处理速度,在数据库加速领域的可发挥空间不大。
针对上述问题,本申请提供一种面向向量数据库的混合加速架构,如图1所示,该混合架构包括主核和两个以多流水线并发处理的第一副核与第二副核。其中的主核是整个***的核心执行部分,主要根据待执行的加速任务进行数据处理和任务划分,并调用第一副核和/或第二副核是协处理器执行具体的加速任务。在本实施例中,以市面上常用的加速算法原理来进行硬件规划设计,具体让主核进行整体加速任务的调度和任务分发处理,控制第一副核执行向量距离计算,控制第二副核来执行向量距离的排序计算。整个过程中,一个输入***的加速任务就被分发到两个副核中运行,而主核只根据***请求触发任务分发、总体调度的工作,以及相关任务等。
在一种可能的实施例中,主核采用具备处理复杂任务和功能的CPU芯片,第一副核选用计算切分后子任务的GPU芯片。GPU的主要特点是高并发和高带宽。CPU会将切分好的计算子任务以队列的形式源源不断的发送给GPU,而在GPU内部的表现为大量的计算相关子任务并行运行。
第二副核可选用FPGA/ASIC/SOC芯片,因为GPU计算核心离存储较远,对于存储访问时延迟较高,因此一些快速存储访问的任务由FPGA/ASIC/SOC来完成。FPGA/ASIC/SOC的优势在于其计算核心和存储核心距离较近,且能够轻松实现一些CPU和GPU中没有的较复杂的指令,并且FPGA/ASIC/SOC具有运行快、延迟低的特性,能在更短的时间内完成任务。
第一副核与第二副核分别连接高速存储器DRAM/HBM。此处的高速存储器可以是DRAM或HBM, HBM内存全名叫高带宽存储器(High Bandwidth Memory,缩写HBM)。DRAM/HBM提供了数据存储和交换功能,DRAM具有高带宽和大容量的特性。高带宽保证了数据能在不同设备之间的传输效率,在较大的容量保证了数据没有达到一定规模前,完全可以驻留在内存中。相对于DRAM而言,HBM拥有更高的位宽,能更快速的完成数据读写。在本方案中,DRAM/HBM主要存储用于向量加速查询的向量库。此外,考虑到大容量存储的因素,还可以在***中加入存储大数据的SSD存储介质,当数据规模巨大,达到百亿甚至千亿级别时,数据存储容量将会变得非常庞大,这是就需要通过NVME或者SSD等提供更大的存储空间。
当然,上述主要是考虑简单的向量距离计算和排序,在一些更高精度的向量加速查询算法中还包括查表计算和查表距离排序等情况。此时可以给***再增加具备多流水线并发处理的第三副核。
图2是另一实施例提供的面向向量数据库的混合加速架构的示意图,在图1的基础上增加多流水线并发处理的第三副核,专门用来处理查表任务。
图3是本申请实施例提供保护的面向向量数据库的混合加速架构的细节图,其中的主核内部包含有任务调度模块和任务切分模块。任务切分模块根据查询任务将主体任务进行任务切分,即变成多个子任务,每个子任务都对应特定的功能。任务调度模块则根据切分任务调度第一副核和/或第二副核执行相应的流水线加速任务。
第一副核在接收到切分任务后,根据切分任务执行距离计算流水线,因为副核都是采用并行计算模式,所以可以并行处理多条流水线,具体数量由芯片设计性能决定,例如图3中列出n条距离计算流水线,当切分的任务数量超过n条距离计算流水线时,则第一副核满负荷并行处理。每条距离计算流水线包括计算管理模块和距离计算模块。距离计算模块根据向量库和待查询向量计算向量距离。计算管理模块根据切分任务从高速存储器中提取待查询向量和向量库、缓存向量距离,以及向主核反馈距离计算流水线的计算结果。这一过程中GPU先从DRAM/HBM中获取待查询向量和从向量库提取向量,而当DRAM/HBM中不存在相关向量时,需要先从SSD中调取,然后再送入计算管理模块。
第二副核在接收到切分任务后,根据切分任务执行排序流水线,与第一副核类似的,每条排序流水线包含有数据排序模块,数据排序模块根据第一副核获得的向量距离进行向量排序,以及向主核反馈排序流水线的排序结果。这一过程需要联动第一副核的距离输出,即将计算的向量矩阵输入到数据排序模块中进行排序。而主核作为整体调度处理中心,会根据最终的排序结果输出目标向量,即查询结果。
上述的第二副核继承第一副核输出计算的模式主要针对暴力搜索模型算法和倒排文件索引(IVF)模型算法的应用,因为这种加速索引主要是直接采用直接全量搜索或者是粗检索与精检索结合的方式进行加速。此外,市面上还有基于倒排乘积量化(IVFPQ)模型算法的应用,通过筛选聚类空间和计算距离矩阵的方式来进行向量加速,针对这类加速算法,可以将第二副核中分配一定资源额度执行计算距离矩阵的资源,或者是额外使用第三副核来计算。
本实施例设计的第三副核与第二副核类似,采用FPGA/ASIC/SOC芯片,以多流水线并发处理。第三副核在接收到切分任务后,根据切分任务执行查表流水线,每个查表流水线包含有查表距离计算模块,查表距离计算模块根据压缩向量库和第一副核输出的距离矩阵计算查表距离,计算完成后的查表距离存储至高速存储器中,并向主核反馈查表排序流水线的查表结果。在这个过程中使用了压缩向量库,压缩向量库是为了快速计算而对向量库中向量进行压缩后形成的查找库,压缩向量库的压缩向量与向量库中的向量本质上是一一对应的,其同样存储在高速存储器中。
特别说明的是,因为不同的加速原理所包含的步骤不同,所以当该混合架构针对倒排文件索引和暴力搜索模型等算法原理执行加速任务时,第一副核接收的切分任务是不含查表操作的,此时的第一副核查询向量并输出向量距离。紧接着通过主核的调度,会控制第二副核继续根据向量距离执行排序任务。
但当该混合架构针对倒排乘积量化模型等算法原理执行加速任务时,此时的第一副核会查询向量矩阵并输出距离矩阵,以及将距离矩阵缓存到高速存储器中。紧接着第三副核根据缓存的距离矩阵继续执行查表流水线并输出查表距离。然后第二副核才会继续基于查表距离执行排序流水线,根据查表距离进行向量排序和结果反馈。这两种执行原理的区别在于,前者不需要第三副核的参与,而后者执行原理需要第三副核执行。
对于三个并行处理的副核来说,主核中需要设置有对应所有副核的任务切分模块、队列模块和结果模块,以实现有目的的任务切分和调度。
针对第一副核来说,计算任务切分模块将计算任务切分后送入计算队列模块。计算队列模块根据计算任务建立计算任务排序表,并根据计算任务顺序将计算任务送入并行处理的距离计算流水线中执行。计算结果模块根据距离计算流水线反馈的计算结果建立计算结果反馈表。对于距离计算流水线来说是并行处理的,只有在所有流水线满负荷运行状态下,待处理的切分任务就需要根据顺序在计算任务排序表中排队等待。而计算结果反馈表则是用来存储已完成计算任务的队列,且后续的排序和/或查表也需要基于该计算结果反馈表依次执行相应的任务。
针对第三副核来说,查表任务切分模块将查表任务切分后送入查表队列模块。查表队列模块根据查表任务建立查表任务排序表,并根据查表任务顺序将查表任务送入并行处理的查表流水线中执行。查表结果管理队列根据查表流水线反馈的查表结果建立查表结果反馈表。特别的,对于一些特定算法,查表任务切分模块正是基于第一副核中计算结果反馈表触发或生成的查表任务,进而对其进行切分后处理,从数据继承角度可以直接看出,查表任务需要利用第一副核输出的距离矩阵。
针对第二副核来说,排序任务切分模块将排序任务切分后送入排序队列模块。排序队列模块根据排序任务建立排序任务排序表,并根据排序任务顺序将排序任务送入并行处理的排序流水线中执行。排序结果模块根据排序流水线反馈的排序结果建立排序结果反馈表。基于设计原理,对于不含查表操作的查询任务,排序任务切分模块根据计算结果反馈表中的计算结果建立排序任务。但对于包含查表操作的查询任务,排序任务切分模块则根据查找结果反馈表中的查表结果建立排序任务。
上述三个副核中,第二与第三副核使用FPGA/ASIC/SOC,而第一副核使用GPU,FPGA/ASIC/SOC相对于GPU来说最大的优势在于其存储访问延时低,FPGA/ASIC/SOC中的寄存器和片上内存(BRAM)是属于控制逻辑本身的结构,无需花费额外的访问时间。而对于GPU来说,使用的是共享内存,存储访问时需要做仲裁和缓存一致性处理等操作,因此延时较高。另外,FPGA中每个逻辑单元和周期其他逻辑单元都相互连接,能够实现各种灵活的控制功能;而GPU内的结构固定,在数据控制的灵活性上相对较差。基于以上两点原因,在进行排序任务和查表任务时没有使用GPU而是使用FPGA/ASIC/SOC来实现。但是使用FPGA/ASIC/SOC也有一些缺陷,比如内部的DSP资源相对较少,无法快速的完成大规模的数据运算;而相对应的GPU在数字运算和并行运算上有得天独厚的优势。因此在进行向量距离计算任务时,使用GPU进行运算。
图4是第一副核中距离计算流水线的结构示意图,其中的计算管理模块包括Query缓存单元、数据分离单元和ID距离同步单元。Query缓存单元负责从高速缓存器读取并缓存执行距离计算流水线的全部向量数据,特别是一次缓存单拍流水线执行所需的数据。因为向量查询和计算是需要进行标记的,所以向量库中提取的向量数据是向量本身和ID号,此时的数据分离单元负责将向量数据的ID号与向量分离,并将ID号进行暂存管理。而ID距离同步单元则主要用于在计算的收尾阶段获取计算管理模块的输出距离,将数据分离单元暂存的ID号与输出距离进行同步绑定,并输出向量距离或矩阵距离。
距离计算模块包括单维距离计算单元和高维距离计算单元;因为实际数据库处理的数据中大多是高位向量,如64维和128维向量等。在硬件模块中只能构建基础运算单元进行单维度计算,所以此处的单维度计算单元将多维向量按照单维向量逐个计算。之后的高维距离计算单元将单拍数据的各个维度的维度距离并行累加计算。此处的单拍就是距离计算模块一个节拍的执行过程。因为高维度距离计算单元是多个单维度的叠加运算,通常选择16维度运算。而在实际向量数据为32维度时,就需要两拍叠加运行。即缓存向量数据的计算量大于距离计算模块的单拍处理量时,就需要距离计算模块迭代计算,且高维距离计算单元缓存多次迭代的并行累加结果,将迭代的并行累加结果进行串行累加计算,才能输出最终结果,即向量距离或矩阵距离。
图5是查表流水线中的结构示意图,查表距离计算模块包括DMA传输单元、数据对齐单元、队列选择单元、队列选择器和距离累加单元。
DMA传输单元将距离矩阵读取至片上RAM中缓存,因为片上RAM的读取时间相对于其他存储方式快得多,从而保证了查表的速度,需要提前从DRAM中提取到片上RAM。而压缩向量读取后实时查询向量矩阵,并不需要缓存。数据对齐单元对输入的压缩向量进行整形,按照距离矩阵的行列数将数据对齐。
此外,由于距离矩阵的创建和查询是在不同步骤中实现,因此可以使用多队列实现矩阵的创建和查询同步进行。比如在查询距离矩阵1时,同时创建距离矩阵2,当距离矩阵1查询完后,可以立即展开对距离矩阵2的查询,这样大大缩减了运行时间。为此,副核需要先基于各个距离矩阵队列的查询和创建状态生成队列选择信号,队列选择单元根据队列选择信号确定选择目标距离矩阵队列,队列选择器则根据队列选择信号输出对目标距离矩阵队列进行分段查询结果。距离查询输出后需要对分段的查询距离进行累加,原因在于查表过程中使用了乘积量化的思想,将一个向量切分成多段,查表输出的结果是每一段的距离,因此距离累加单元需要对分段查询结果进行并行累加,输出矩阵距离。
图6是排序流水线中数据排序模块的结构示意图,无论是查表操作还是距离计算操作,最终都需要通过排序流水线进行排序输出。数据排序模块包括排序单元和缓存单元。排序单元包括若干级联的分拣器sorter,级联的分拣器逐级对输入的查表距离或向量距离的距离大小进行降序排序,并通过最后一级分拣器输出目标数量个升序排列的查表距离或向量距离。分拣器内部由比较器、FIFO缓存和一定的判断逻辑组成,主要实现的功能为输入2组数据,按照顺序分拣出距离较小数据进行输出。
在一些实施例中,分拣器参数设置为m-sorter/n,其中的m表示分拣器sorter对每组的m个数据进行排序,n表示分拣器中用于辅助排序的缓存器数量。除去最后一级分拣器外,其余每个分拣器输入和输出的数据量是固定的,区别在于将数据进行有序的升序排序。具体来说,后分拣器接收前分拣器的前输出,且后一个排序数量是前分拣器排序数量的两倍。这种分拣排序逻辑就是排序的数据量成倍增加,直至最后一组将全部数据完成排序,区别在于其中最后一级分拣器根据设定的top k算法选取目标数量截取输出,即top k的k个输出。分拣器内部具体由比较器、FIFO缓存和一定的判断逻辑组成,图6中为top-128实现的过程,各级分拣器依次对数据中的每组1个数据、2个数据、4个数据、8个数据、16个数据、32个数据、64个数据和128个数据进行排序。最后一组分拣器和前面的不同,原因在于最后一组分拣器只需要挑拣有用数据,无用数据可直接丢弃;而对于前面的分拣器来说,所有的数据都不可丢弃。分拣器在实现过程中是迭代使用的,而每次的实现都需要进行大量比较运算和数据缓存,而使用FPGA/ASIC/SOC时,存储单元和计算单元距离很近,数据获取延时低,从而能够高效的实现分拣器的功能。缓存单元中用于存储最后一级分拣器输出的目标数量个升序排列的查表距离或向量距离,并向主核反馈排序结果。
特别的,在一些实施例中,对于一些处理量较大的排序任务,其本身被切分为多个子任务并输入多条排序流水线中并行处理,此时的每一条排序流水线仅仅是部分子任务的距离排序结果,因而还需要对关联的并行流水之间进行排序,因而在第二副核中还设置有数据重排模块。
图7是第二副核中数据重排模块的结构示意图,数据重排模块包含二叉树结构的比较器,二叉树结构的比较器连接各个排序流水线的输出,将排序结果进行逐级比较,输出最小距离的排序流水线,并反馈排序结果。以图7示出的为例,在第一层,排序1结果和排序2结果输入第一比较器MUX1,排序3结果和排序4结果输入第二比较器MUX2,在第二层,MUX1输出的比较1结果与MUX2输出的比较2结果输入第三比较器MUX3,通过这种逐级输入比较的方式最终输出比较n结果,也就是输出最终的top 排序。
排序输出给CPU是距离最近的K个ID+距离。这边的输出是有两种不同的情况,一种是IVF(倒排文件索引)时,输出的是IVF聚类空间的ID和距离;另一种是在向量距离排序时,输出的是向量的ID和距离,这个是最终的结果。IVF结果和向量排序的结果都是存储在CPU的内存中,不再写入HBM,两种结果存储的地址不同。两种结果处理方式不同,对于IVF的结果,CPU会分配创建距离矩阵和查表任务;对于向量距离结果,CPU会直接输出。
基于上述原则,当排序任务切分为单个排序流水线执行时,缓存单元直接根据排序结果向主核反馈。当排序任务切分为多个并行排序流水线执行时,对应排序流水线中的缓存单元将排序结果输入至数据重排模块,通过二叉树结构的比较器进行逐级比较,输出最小排序距离,并根据最小排序距离向主核反馈排序结果。
基于上述的混合架构运行暴力搜索的查询过程时,可以将查询任务切分成距离计算和排序两个子任务,GPU负责距离计算,FPGA负责快速排序,CPU负责任务控制和缓存的调度,通过相互的配合,更高效的完成向量检索。
将上述模型通过混合加速架构进行加速的好处如下:
a.将距离计算和距离排序进行分离。
b.通过专用芯片处理专项任务;通过GPU计算距离;通过FPGA/ASIC/SOC计算排序,加速了各自处理的效率。
c.批量流水操作;可以通过多批次batch操作等,使多个待查询向量同时输入,从而能够在GPU和FPGA中实现多级流水线进行加速,提高了检索效率。
基于上述的混合架构运行倒排文件索引的查询过程时,由于倒排文件索引的思想是通过聚类缩小搜索范围而加速搜索速度,整个查询的过程被分成了粗计算、粗排序、精确计算和精确排序4个子任务。粗计算和精确计算是在GPU中完成的;而粗排序和精确排序在FPGA/ASIC/SOC上完成;任务的调度由CPU执行;各个子任务之间的交换数据存储在高速缓存中。
将上述模型通过混合加速架构进行加速的好处如下:
a.将距离计算和距离排序进行分离。
b.通过专用芯片处理专项任务;通过GPU计算距离;通过FPGA/ASIC/SOC计算排序,加速了各自处理的效率。
c.批量流水操作;将功能相同的任务放在一起进行处理,从而可以实现批量操作,另外可以通过流水线加速处理。
d.通过HBM提高数据访问带宽;混合加速架构可以将聚类中心和聚类空间向量存放在HBM中,从而提高了数据访问带宽,进一步加速计算。
基于上述的混合架构运行倒排乘积量化的查询过程时,由于IVFPQ是在IVF基础上添加了乘积量化(PQ),大幅度压缩了高维向量的内存使用量。IVFPQ与IVF在实现上最主要的不同之处在于向量查询过程中需要建立距离矩阵和查询距离矩阵。建立距离矩阵任务需要进行大量的计算,主要由GPU完成;查询距离矩阵功能则需要高效的存储访问功能,在FPGA/ASIC/SOC中实现。
将上述模型通过混合加速架构进行加速的好处如下:
a.将距离计算、距离排序和查表运算进行分离。
b.通过专用芯片处理专项任务;通过GPU计算距离;通过FPGA/ASIC/SOC计算排序;通过FPGA/ASIC/SOC进行查表计算,加速了各自处理的效率。
c.批量流水操作;将功能相同的任务放在一起进行处理,从而可以实现批量操作,另外可以通过流水线加速处理。
d.通过HBM提高数据访问带宽;混合加速架构可以将聚类中心、聚类空间向量和压缩向量存放在HBM中,从而提高了数据访问带宽,进一步加速计算。
e.通过片上RAM加速查表功能;在进行查表操作时,可以使用片上RAM作为临时缓存,加速查表的过程。
综上所述,本申请实施例提供的混合架构可以达到如下技术效果:
1)提供更加灵活的模型配置;混合加速架构中引入了FPGA/ASIC/SOC等硬件,这些硬件能够灵活的实现各种自定义功能,从而因此为向量检索提供了更多的可能性。
2)提供多种硬件混合加速;混合加速架构将不同的运算功能进行分离,并根据各自运算的特点,使用不同的硬件进行加速,充分发挥硬件的优势,从而能大大提高了数据处理能力。
3)加速不同类型的算法模型;向量库检索的算法模型有很多种,使用混合加速架构能在一定程度上对各种算法模型都有一定的加速效果。混合加速架构中使用新的计算方式和排序方式,并使用流水线和多batch等技术,同时提高了存储访问的带宽。从而对多种不同的算法模型都有一定加速作用。
4)海量向量数据支持;混合加速架构提供额外的储存空间,能够应对海量的向量数据存储。
5)多级流水线处理;混合加速架构在设计时采用流水线的设计思想,并通过多级流水线并行的方式提高处理带宽。混合加速架构中会将任务按照功能拆分成多个不同的子任务,并将功能相同的任务进行批量处理,从而实现多任务并行处理的功能。
6)通过HBM、片上RAM等加速计算;混合加速架构还有一个很大的优势在于可以通过HBM和片上RAM等进行加速,传统的向量数据库使用的主要存储为DRAM和SSD,而混合加速架构引进了FPGA/ASIC/SOC等新的硬件,新的硬件可以提供HBM和片上RAM等存储介质,从而使得存储带宽更高。
以上对本发明的较佳实施例进行了描述;需要理解的是,本发明并不局限于上述特定实施方式,其中未尽详细描述的设备和结构应该理解为用本领域中的普通方式予以实施;任何熟悉本领域的技术人员,在不脱离本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例,这并不影响本发明的实质内容;因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (12)
1.一种面向向量数据库的混合加速架构,其特征在于,包括主核和两个以多流水线并发处理的第一副核与第二副核,所述主核包含有任务调度模块和任务切分模块;所述任务切分模块根据查询任务进行任务切分,所述任务调度模块根据切分任务调度第一副核和/或第二副核执行相应的流水线加速任务;所述第一副核与第二副核分别连接高速存储器,所述高速存储器中缓存有用于向量加速查询的向量库;
所述第一副核根据接收的切分任务执行距离计算流水线,每条距离计算流水线包括计算管理模块和距离计算模块,所述距离计算模块根据向量库和待查询向量计算向量距离;所述计算管理模块根据切分任务从高速存储器中提取待查询向量和向量库、缓存向量距离,以及向主核反馈距离计算流水线的计算结果;
所述第二副核根据接收的切分任务执行排序流水线,每条排序流水线包含有数据排序模块,所述数据排序模块根据第一副核获得的向量距离进行向量排序,以及向主核反馈排序流水线的排序结果,所述主核根据排序结果输出向量查询结果。
2.根据权利要求1所述的面向向量数据库的混合加速架构,其特征在于,加速架构还包括多流水线并发处理的第三副核;所述第三副核根据接收的切分任务执行查表流水线,每个查表流水线包含有查表距离计算模块,所述查表距离计算模块根据压缩向量库和第一副核输出的距离矩阵计算查表距离;
所述第三副核将计算获得的查表距离存储至高速存储器中,以及向主核反馈查表排序流水线的查表结果;其中,所述压缩向量库存储在所述高速存储器中,压缩向量库的压缩向量与向量库中的向量一一对应。
3.根据权利要求2所述的面向向量数据库的混合加速架构,其特征在于, 当所述第一副核接收的切分任务不含查表操作时,所述第一副核查询向量并输出向量距离;
当接收的切分任务含查表操作时,所述第一副核查询向量矩阵并输出距离矩阵,以及将所述距离矩阵缓存到高速存储器中;所述第三副核根据缓存的距离矩阵继续执行查表流水线并输出查表距离,所述第二副核继续基于查表距离执行排序流水线,根据查表距离进行向量排序和结果反馈。
4.根据权利要求2所述的面向向量数据库的混合加速架构,其特征在于,所述主核中设置有所有副核的任务切分模块、队列模块和结果模块;
计算任务切分模块将计算任务切分后送入计算队列模块;计算队列模块根据计算任务建立计算任务排序表,并根据计算任务顺序将计算任务送入并行处理的距离计算流水线中执行;计算结果模块根据距离计算流水线反馈的计算结果建立计算结果反馈表;
查表任务切分模块将查表任务切分后送入查表队列模块;查表队列模块根据查表任务建立查表任务排序表,并根据查表任务顺序将查表任务送入并行处理的查表流水线中执行;查表结果管理队列根据查表流水线反馈的查表结果建立查表结果反馈表;
排序任务切分模块将排序任务切分后送入排序队列模块;排序队列模块根据排序任务建立排序任务排序表,并根据排序任务顺序将排序任务送入并行处理的排序流水线中执行;排序结果模块根据排序流水线反馈的排序结果建立排序结果反馈表;其中,对于不含查表操作的查询任务,排序任务切分模块根据计算结果反馈表中的计算结果建立排序任务;对于包含查表操作的查询任务,排序任务切分模块根据查找结果反馈表中的查表结果建立排序任务。
5.根据权利要求3所述的面向向量数据库的混合加速架构,其特征在于,所述计算管理模块包括Query缓存单元、数据分离单元和ID距离同步单元;
所述Query缓存单元从高速缓存器读取并缓存执行距离计算流水线的全部向量数据;所述向量数据是包含唯一ID号的向量;
所述数据分离单元将向量数据的ID号与向量分离,并将ID号进行暂存管理;
所述ID距离同步单元获取计算管理模块的输出距离,将所述数据分离单元暂存的ID号与输出距离进行同步绑定,并输出向量距离或矩阵距离。
6.根据权利要求5所述的面向向量数据库的混合加速架构,其特征在于, 所述距离计算模块包括单维距离计算单元和高维距离计算单元;所述单维距离计算单元将多维向量按照单维向量逐个计算,所述高维距离计算单元将单拍数据的各个维度的维度距离并行累加计算;
其中,当缓存向量数据的计算量大于距离计算模块的单拍处理量时,所述距离计算模块迭代计算,且高维距离计算单元缓存多次迭代的并行累加结果,将迭代的并行累加结果进行串行累加计算,并输出结果。
7.根据权利要求6所述的面向向量数据库的混合加速架构,其特征在于,所述查表距离计算模块包括DMA传输单元、数据对齐单元、队列选择单元、队列选择器和距离累加单元;
所述DMA传输单元将距离矩阵读取至片上RAM中缓存;
所述数据对齐单元对输入的压缩向量进行整形,按照距离矩阵的行列数将数据对齐;
所述队列选择单元根据队列选择信号确定选择目标距离矩阵队列,队列选择器根据队列选择信号输出对目标距离矩阵队列进行分段查询结果;所述队列选择信号基于各个距离矩阵队列的查询和创建状态确定;
所述距离累加单元对分段查询结果进行并行累加,输出矩阵距离。
8.根据权利要求6所述的面向向量数据库的混合加速架构,其特征在于,所述数据排序模块包括排序单元和缓存单元;
所述排序单元包括若干级联的分拣器,级联的分拣器逐级对输入的查表距离或向量距离的距离大小进行降序排序,并通过最后一级分拣器输出目标数量个升序排列的查表距离或向量距离;
所述缓存单元用于存储最后一级分拣器输出的目标数量个升序排列的查表距离或向量距离,并向主核反馈排序结果。
9.根据权利要求8所述的面向向量数据库的混合加速架构,其特征在于,分拣器参数设置为m-sorter/n,其中的m表示分拣器sorter对每组的m个数据进行排序,n表示分拣器中用于辅助排序的缓存器数量;后分拣器接收前分拣器输出,且排序数量是前分拣器排序数量的两倍;其中,最后一级分拣器根据设定的目标数量截取输出。
10.根据权利要求9所述的面向向量数据库的混合加速架构,其特征在于,所述第二副核还包括数据重排模块,所述数据重排模块包含二叉树结构的比较器,二叉树结构的比较器连接各个排序流水线的输出,将排序结果进行逐级比较,输出最小距离的排序流水线,并反馈排序结果。
11.根据权利要求10所述的面向向量数据库的混合加速架构,其特征在于,当排序任务切分为单个排序流水线执行时,所述缓存单元直接根据排序结果向主核反馈;
当排序任务切分为多个并行排序流水线执行时,对应排序流水线中的缓存单元将排序结果输入至据重排模块,通过二叉树结构的比较器进行逐级比较,输出最小排序距离,并根据最小排序距离向主核反馈排序结果。
12.根据权利要求2所述的面向向量数据库的混合加速架构,其特征在于,所述主核为CPU、第一副核为GPU、第二副核以及第三副核为FPGA/ASIC/SOC。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410349055.7A CN117951346B (zh) | 2024-03-26 | 2024-03-26 | 面向向量数据库的混合加速架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410349055.7A CN117951346B (zh) | 2024-03-26 | 2024-03-26 | 面向向量数据库的混合加速架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117951346A CN117951346A (zh) | 2024-04-30 |
CN117951346B true CN117951346B (zh) | 2024-05-28 |
Family
ID=90805493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410349055.7A Active CN117951346B (zh) | 2024-03-26 | 2024-03-26 | 面向向量数据库的混合加速架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117951346B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118227535A (zh) * | 2024-05-22 | 2024-06-21 | 深存科技(无锡)有限公司 | 近io流水计算的加速器架构和ai加速*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109597459A (zh) * | 2017-09-30 | 2019-04-09 | 英特尔公司 | 用于空间阵列中的特权配置的处理器和方法 |
CN114757565A (zh) * | 2022-04-29 | 2022-07-15 | 深圳供电局有限公司 | 一种基于流水线式作业的最优动态电网数据调度*** |
CN116010669A (zh) * | 2023-01-18 | 2023-04-25 | 深存科技(无锡)有限公司 | 向量库重训练的触发方法、装置、检索服务器及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626334B2 (en) * | 2014-12-24 | 2017-04-18 | Intel Corporation | Systems, apparatuses, and methods for K nearest neighbor search |
-
2024
- 2024-03-26 CN CN202410349055.7A patent/CN117951346B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109597459A (zh) * | 2017-09-30 | 2019-04-09 | 英特尔公司 | 用于空间阵列中的特权配置的处理器和方法 |
CN114757565A (zh) * | 2022-04-29 | 2022-07-15 | 深圳供电局有限公司 | 一种基于流水线式作业的最优动态电网数据调度*** |
CN116010669A (zh) * | 2023-01-18 | 2023-04-25 | 深存科技(无锡)有限公司 | 向量库重训练的触发方法、装置、检索服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117951346A (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Johnson et al. | Billion-scale similarity search with GPUs | |
Tomasic et al. | Performance of inverted indices in shared-nothing distributed text document information retrieval systems | |
CN117951346B (zh) | 面向向量数据库的混合加速架构 | |
Li et al. | Hippogriffdb: Balancing i/o and gpu bandwidth in big data analytics | |
Pan et al. | Fast GPU-based locality sensitive hashing for k-nearest neighbor computation | |
Khorasani et al. | Scalable simd-efficient graph processing on gpus | |
Lieberman et al. | A fast similarity join algorithm using graphics processing units | |
Sismanis et al. | Parallel search of k-nearest neighbors with synchronous operations | |
CN107341507B (zh) | 一种基于gpu与级联哈希的快速图像sift特征匹配方法 | |
CN116627892B (zh) | 一种数据近存储计算方法、装置和存储介质 | |
Sukhwani et al. | Database analytics: A reconfigurable-computing approach | |
JP4758429B2 (ja) | 共有メモリ型マルチプロセッサシステム及びその情報処理方法 | |
CN110874271A (zh) | 一种海量建筑图斑特征快速计算方法及*** | |
CN111966678A (zh) | 一种有效提升gpu上b+树检索效率的优化方法 | |
CN108052535B (zh) | 基于多处理器平台的视觉特征并行快速匹配方法和*** | |
CN115203383A (zh) | 用于在候选向量集中查询相似向量的方法和装置 | |
CN110795469B (zh) | 基于Spark的高维序列数据相似性查询方法及*** | |
CN115878824B (zh) | 图像检索***、方法和装置 | |
CN112000845B (zh) | 一种基于gpu加速的超空间哈希索引方法 | |
Wasif et al. | Scalable clustering using multiple GPUs | |
CN107368375B (zh) | 一种基于MapReduce的K-means聚类算法FPGA加速*** | |
Malik et al. | Task scheduling for GPU accelerated hybrid OLAP systems with multi-core support and text-to-integer translation | |
CN115836346A (zh) | 存内计算设备及其数据处理方法 | |
KR20230169321A (ko) | 데이터 의존적이고 불규칙한 오퍼레이션들을 위한 프로그래밍 가능 가속기 | |
Barrientos et al. | Range query processing on single and multi GPU environments |
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 |