CN113627618A - 使用启用列读取的存储器来实行随机稀疏提升和普罗克拉斯提斯正交稀疏散列的技术 - Google Patents
使用启用列读取的存储器来实行随机稀疏提升和普罗克拉斯提斯正交稀疏散列的技术 Download PDFInfo
- Publication number
- CN113627618A CN113627618A CN202011539216.7A CN202011539216A CN113627618A CN 113627618 A CN113627618 A CN 113627618A CN 202011539216 A CN202011539216 A CN 202011539216A CN 113627618 A CN113627618 A CN 113627618A
- Authority
- CN
- China
- Prior art keywords
- input data
- memory
- vector
- data vector
- projection matrix
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 161
- 238000000034 method Methods 0.000 title claims abstract description 51
- 239000013598 vector Substances 0.000 claims abstract description 194
- 239000011159 matrix material Substances 0.000 claims abstract description 83
- 238000013500 data storage Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 12
- 238000007667 floating Methods 0.000 claims description 6
- 238000010606 normalization Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000005192 partition Methods 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000255581 Drosophila <fruit fly, genus> Species 0.000 description 1
- 241000255601 Drosophila melanogaster Species 0.000 description 1
- 208000003028 Stuttering Diseases 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/583—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L27/00—Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate
- H01L27/02—Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers
- H01L27/04—Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body
- H01L27/06—Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body including a plurality of individual components in a non-repetitive configuration
- H01L27/0688—Integrated circuits having a three-dimensional layout
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Power Engineering (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Library & Information Science (AREA)
- Computing Systems (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
用于使用启用列读取的存储器来实行随机稀疏提升和普罗克拉斯提斯正交稀疏散列的技术包括:一种设备,其具有列可寻址的存储器、以及连接到存储器的电路。所述电路被配置成将输入数据向量集合添加到存储器作为二进制维度扩展向量集合,包括将每个输入数据向量与投影矩阵相乘。所述电路还被配置成从搜索数据向量产生搜索散列码,包括将搜索数据向量与投影矩阵相乘。此外,所述电路被配置成确定搜索散列码与每一个二进制维度扩展向量之间的汉明距离。
Description
背景技术
基于内容的相似性搜索(或简称为相似性搜索)是支持机器学习(ML)和人工智能应用(AI)的关键技术。在实行相似性搜索时,查询数据(诸如,指示对象(例如,图像)的数据)被用来搜索数据库以标识指示相似对象(例如,相似图像)的数据。然而,在大规模相似性搜索中使用的数据的庞大量和丰富性是一个极具挑战性的问题,其既是计算密集型也是存储器密集型的。
附图说明
在附图中作为示例而非作为限制图示了本文中描述的概念。为了说明的简洁和清楚起见,各图中图示的元件不一定按比例绘制。在认为适当的情况下,附图标记已经在各图当中被重复以指示对应或类似的元件。
图1是用于使用启用列读取的存储器来实行相似性搜索加速的计算设备的至少一个实施例的简化示图;
图2是在图1的计算设备中包括的存储器介质的至少一个实施例的简化示图;
图3是在双列直插式存储器模块(DIMM)中的图1的计算设备的存储器介质的至少一个实施例的简化示图;
图4是使用图1-3的存储器介质上的二进制搜索关键字而实行的随机关联搜索(SAS)的简化示图;
图5是可以使用图1的计算设备来实现的基于内容的图像检索(CBIR)系统的至少一个实施例的简化示图;
图6是用于图5的CBIR系统的基于深度学习的相似性搜索工作流程的简化示图;
图7是可以使用图1的计算设备的存储器介质来实现的随机稀疏提升(RSL)数据和控制流相似性搜索流水线的示图;
图8是可以使用图1的计算设备来实现的用于随机稀疏提升(RSL)的算法流水线和用于实行RSL的数学方程的示图;
图9是图8的RSL流水线的阶段的硬件映射的示图;
图10是可以由图1的计算设备利用以实行普罗克拉斯提斯(procrustean)正交稀疏散列(POSH)的流程图;
图11是可以使用图1的计算设备来实现的POSH相似性搜索流水线的数据和控制流程图;
图12是可以使用图1的计算设备来实现的POSH以及对应的优化问题和封闭形式解(closed-form solution)的算法表示;
图13是可以由图1的计算设备产生的长度1024的散列码中的设置位(set bit)的分布的标绘图;以及
图14-16是可以由图1的计算设备实行的用于实行加速的相似性搜索的方法的至少一个实施例的流程图。
具体实施方式
尽管本公开的概念容易受到各种修改和替代形式的影响,但是其具体实施例已作为示例在附图中示出,并且将在本文中进行详细描述。然而,应该理解的是,没有意图将本公开的概念限于所公开的特定形式,而是相反,意图是覆盖与本公开和所附权利要求书一致的所有修改、等同物和替代方案。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可能包括或可能不一定包括该特定特征、结构或特性。此外,这种短语不一定指代同一实施例。此外,当结合实施例描述特定特征、结构或特性时,认为结合其他实施例(无论是否被明确描述)来实现这种特征、结构或特性是在本领域技术人员的知识范围内的。附加地,应该领会到,以“至少一个A、B和C”的形式包括在列表中的项可以意指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。类似地,以“A、B或C中的至少一个”的形式列出的项可以意指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。
所公开的实施例可以在某些情况下以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由暂时性或非暂时性机器可读(例如,计算机可读)存储器介质承载或者存储在该暂时性或非暂时性机器可读(例如,计算机可读)存储器介质上的指令,该指令可以由一个或多个处理器来读取和执行。机器可读存储器介质可以体现为用于存储或传输采用由机器可读的形式的信息的任何存储设备、机构或其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。
在附图中,一些结构或方法特征可以以具体的布置和/或排序示出。然而,应该领会到,可以不要求这种具体布置和/或排序。而是,在一些实施例中,这种特征可以以与说明性附图中所示的方式和/或次序不同的方式和/或次序而布置。附加地,在特定附图中包括结构或方法特征并不意味着暗示在所有实施例中都要求这种特征,并且在一些实施例中,可能不包括这种特征,或者这种特征可以与其他特征组合。
现在参考图1,用于使用启用列读取的存储器来实行相似性搜索加速的计算设备100包括:处理器102、存储器104、输入/输出(I/O)子系统112、数据存储设备114、通信电路122和一个或多个加速器设备126。当然,在其他实施例中,计算设备100可以包括其他或附加的组件,诸如计算机中常见的那些组件(例如,显示器、外围设备等)。附加地,在一些实施例中,说明性组件中的一个或多个可以并入另一个组件,或以其他方式形成另一个组件的一部分。除非另行指定,否则如在本文中参考实行相似性搜索加速所使用的术语“存储器”可以指代存储器104和/或数据存储设备114。如本文中更详细地解释的,连接对应存储器介质110、120(例如,向其写入数据和从其中读取数据的任何设备或材料)的介质访问电路108、118(例如,被配置成访问对应存储器介质110、120中的数据并且对其进行操作的任何电路或设备)可以访问(例如,读取)向量的个体列(例如,位),以用于在实行相似性搜索(也被称为“随机关联搜索”(SAS))时使用。照此,该存储器作为“随机关联存储器”(例如,被设计成使得能够有效实行随机关联搜索)进行操作。
在说明性实施例中,存储器介质110具有三维交叉点架构,该架构具有与其他存储器架构(例如,动态随机存取存储器(DRAM))不同的数据访问特性,诸如使得能够每个图块(tile)访问一个位,以及在向相同分区或其他分区进行读取或写入之间引起时间延迟。介质访问电路108被配置成诸如通过在给定分区内并行地访问多个图块来(例如,在功率使用和速度方面)有效利用存储器介质110的架构。在一些实施例中,介质访问电路108可以利用暂存器(scratch pad)(例如,相对小的、低时延的存储器)来暂时地保留从存储器介质110读取的数据并且对其进行操作,以及将从一个分区读取的数据广播到存储器104的其他部分,以使得能够在存储器104内并行地实行计算(例如,矩阵运算)。附加地,在说明性实施例中,代替于向存储器104发送读取或写入请求来访问矩阵数据,处理器102可以发送更高级的请求(例如,针对宏操作的请求,诸如基于搜索关键字返回N个搜索结果的集合的请求)。照此,可以在存储器中(例如,在存储器104中或在数据存储设备114中)以对总线(例如,I/O子系统112)的最少使用来实行许多计算操作、诸如人工智能操作(例如,随机关联搜索),以在计算设备100的组件之间(例如,在存储器104或数据存储设备114与处理器102之间)传递数据。
在一些实施例中,介质访问电路108被包括在与存储器介质110相同的管芯中。在其他实施例中,介质访问电路108处于分离的管芯上,但是与存储器介质110处于相同的封装中。在又其他实施例中,介质访问电路108处于分离的管芯和分离的封装中,但是与存储器介质110处于相同的双列直插式存储器模块(DIMM)或板上。
处理器102可以体现为能够实行本文中描述的操作(诸如,执行应用(例如,可以利用随机关联搜索的人工智能相关应用))的任何设备或电路(例如,(一个或多个)多核处理器、微控制器、或其他处理器或处理/控制电路)。在一些实施例中,处理器102可以体现为包括或耦合到现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可重配置的硬件或硬件电路、或便于实行本文中描述的功能的其他专用硬件。
可以包括非易失性存储器(例如,两级存储器方案中的远存储器)的存储器104包括存储器介质110、以及在存储器介质110下面(例如,在较低位置处)并且耦合到存储器介质110的介质访问电路108(例如,诸如处理器、专用集成电路(ASIC)之类的设备或电路、或者由互补金属氧化物半导体(CMOS)或其他材料构造的其他集成电路)。介质访问电路108还连接到存储器控制器106,存储器控制器106可以体现为被配置成响应于对应请求(例如,来自可能正在执行人工智能相关应用的处理器102的请求,该应用依赖于随机关联搜索来识别对象、进行推理和/或实行相关的人工智能操作)而选择性地从存储器介质110进行读取和/或向其写入的任何设备或电路(例如,处理器、协处理器、专用电路等)。在一些实施例中,存储器控制器106可以包括向量函数单元(VFU)130,向量函数单元(VFU)130可以体现为能够从处理器102卸载基于向量的任务(例如,比较从存储在存储器介质110中的向量的特定列中读取的数据,确定存储在存储器介质110中的向量与搜索关键字之间的汉明距离,根据其汉明距离对向量进行排序等)的任何设备或电路(例如,专用电路、可重配置电路、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等)。
简要地参考图2,在说明性实施例中,存储器介质110包括图块架构,该图块架构在本文中也被称为交叉点架构(例如以下架构:其中存储器单元位于字线和位线的交点处并且可单独寻址,并且其中位存储基于体电阻(bulk resistance)中的改变),其中每个存储器单元(例如,图块)210、212、214、216、218、220、222、224、226、228、230、232、234、236、238、240可通过x参数和y参数(例如,列和行)来寻址。存储器介质110包括多个分区,其中每个分区包括图块架构。分区可以被堆叠为层202、204、206,以形成三维交叉点架构(例如,Intel3D XPoint™存储器)。与其中仅固定大小的多位数据结构(例如,字节、字等)可寻址的典型存储器设备不同,介质访问电路108被配置成在存储器控制器106的请求下从存储器介质110中读取个体位或其他数据单元,存储器控制器106可以响应于从处理器102接收到对应请求而产生该请求。
参考回图1,存储器104可以包括非易失性存储器和易失性存储器。非易失性存储器可以体现为能够以持久的方式存储数据(即使对该非易失性存储器中断了功率)的任何类型的数据存储装置。例如,非易失性存储器可以体现为一个或多个非易失性存储器设备。非易失性存储器设备可以包括以交叉点架构配置的一个或多个存储器设备,该交叉点架构使得能够实现位级可寻址性(例如,从个体数据位而不是从数据的字节或其他更大单元进行读取和/或向其写入的能力),并且非易失性存储器设备说明性地体现为三维(3D)交叉点存储器。在一些实施例中,非易失性存储器可以附加地包括其他类型的存储器,包括使用硫族化物相变材料(例如,硫族化物玻璃)的存储器设备、铁电晶体管随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、相变存储器(PCM)、结合了忆阻器技术的存储器、磁阻随机存取存储器(MRAM)、或自旋转移矩(STT)-MRAM的任何组合。易失性存储器可以体现为能够在向易失性存储器供给功率时存储数据的任何类型的数据存储装置。例如,易失性存储器可以体现为一个或多个易失性存储器设备,并且在理解了易失性存储器在其他实施例中可以体现为其他类型的非持久性数据存储装置的情况下,在下文中被周期性地称为易失性存储器。易失性存储器可以具有使得能够实现位级可寻址性的架构,类似于上面描述的架构。
处理器102和存储器104经由I/O子系统112通信地耦合到计算设备100的其他组件,该I/O子系统112可以体现为便于与计算设备100的处理器102和/或主存储器104和其他组件进行输入/输出操作的电路系统和/或组件。例如,I/O子系统112可以体现为或者以其他方式包括存储器控制器集线器、输入/输出控制集线器、集成传感器集线器、固件设备、通信链路(即,点对点链路、总线链路、线、电缆、光导、印刷电路板迹线等)、和/或便于输入/输出操作的其他组件和子系统。在一些实施例中,I/O子系统112可以形成片上系统(SoC)的一部分,并且与计算设备100的处理器102、主存储器104和其他组件中的一个或多个一起并入单个芯片中。
数据存储设备114可以体现为被配置成用于数据的短期或长期存储的任何类型的设备,诸如例如存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器、或其他数据存储设备。在说明性实施例中,数据存储设备114包括:类似于存储器控制器106的存储器控制器116、类似于存储器介质110的存储器介质120(也被称为“存储介质”)、以及类似于介质访问电路108的介质访问电路118。此外,存储器控制器116还可以包括类似于向量函数单元(VFU)130的向量函数单元(VFU)132。数据存储设备114可以包括:系统分区,其存储用于数据存储设备114的数据和固件代码;以及一个或多个操作系统分区,其存储用于操作系统的数据文件和可执行文件。
通信电路122可以体现为能够实现在计算设备100与另一个设备之间通过网络的通信的任何通信电路、设备或其集合。通信电路122可以被配置成使用任何一个或多个通信技术(例如,有线或无线通信)和相关联的协议(例如,以太网、蓝牙®、Wi-Fi®、WIMAX等)来实现这种通信。
说明性通信电路122包括:网络接口控制器(NIC)124,其也可以被称为主机结构接口(HFI)。NIC 124可以体现为一个或多个插入式板、子卡、网络接口卡、控制器芯片、芯片组、或可以由计算设备100用来与另一个计算设备连接的其他设备。在一些实施例中,NIC124可以体现为包括一个或多个处理器的片上系统(SoC)的一部分,或者被包括在也包含一个或多个处理器的多芯片封装上。在一些实施例中,NIC 124可以包括本地处理器(未示出)和/或本地存储器(未示出),它们两者都在NIC 124本地。在这种实施例中,NIC 124的本地处理器可以能够实行处理器102的一个或多个功能。附加地或替代地,在这种实施例中,NIC124的本地存储器可以在板级别、插座(socket)级别、芯片级别和/或其他级别处集成到计算设备100的一个或多个组件中。一个或多个加速器设备126可以体现为能够比通用处理器102更快地实行一组操作的任何(一个或多个)设备或电路。例如,(一个或多个)加速器设备126可以包括图形处理单元128,图形处理单元128可以体现为能够比处理器102更快地实行图形操作(例如,矩阵运算)的任何设备或电路(例如,协处理器、ASIC、可重配置电路等)。
现在参考图3,在一些实施例中,计算设备100可以利用双列直插式存储器模块(DIMM)架构300。在架构300中,存储器介质110的多个管芯与共享命令地址总线310连接。照此,在操作中,跨连接到共享命令地址总线310的所有存储器介质110来并行地读出数据。可以以如下配置来跨存储器介质110布置数据:允许跨存储器介质110的所有连接的管芯来读取同一列。
现在参考图4,计算设备100可以实行随机关联搜索400,这是一种用于在大型记录数据库中进行搜索并且查找与给定查询记录(关键字)相似的记录的高效且快速的方式。为了简单和清楚起见,随机关联搜索400和其他过程在本文中被描述为用存储器104来执行。然而,应该理解的是,取决于特定实施例,可以替代地或附加地用存储设备114来实行这些过程。鉴于存储器介质110允许以相似的读取时延进行逐行读取和逐列读取两者,存储器介质110特别适合于实现有效的随机关联搜索。如本文中更详细地描述的,为了利用存储器介质110的特性来实行有效的(例如,经加速的,使用比以其他方式原本要消耗的更少的功率和时间)随机关联搜索,计算设备100向存储器介质110以二进制格式(例如,1和0)写入数据库元素(例如,记录、向量、行等),作为稀疏的(例如,具有比1更多的0)散列码(例如,由散列函数产生的值的序列)。随后,在实行搜索时,将搜索关键字410的个体二进制值与存储在存储器介质110的块中的数据库元素(例如,向量)422、424、426、428、430、432、434中的对应二进制值进行比较。计算设备100确定搜索关键字410与每个数据库元素(例如,向量)之间的匹配的二进制值的数量,该数量表示搜索关键字410与每个数据库元素(例如,向量)之间的汉明距离。具有最大匹配数量(例如,最小汉明距离)的数据库元素(例如,向量)是针对随机关联搜索400的最相似的结果(例如,结果集合)。
取决于特定实施例(例如,是否存在向量函数单元130),示例操作流程可以如下那样进行。使用行写入操作将元素存储在存储器介质110中作为二进制向量。对于给定的随机关联搜索,计算设备100使用散列编码来格式化搜索查询,该散列编码与用于在数据库中产生向量的二进制格式的散列编码相匹配。在其中不存在VFU 130的至少一些实施例中,处理器102向存储器控制器106发送块列读取请求,以读取指定的列(例如,与搜索关键字410中的设置位(具有值1的位)相对应的列)。处理器102随后基于与被读取的列数据匹配的设置位的数量来对顶部匹配的行(例如,向量)进行排名。处理器102随后针对请求搜索结果的应用来标识顶部N个相似的行。在其中存在VFU 130的至少一些实施例中,该过程可以如下那样进行。处理器102可以向存储器控制器106发送指令,以实行宏操作(例如,基于给定搜索关键字410而返回顶部N个结果)。随后,存储器控制器106向介质访问电路108发送块列读取请求,以从存储器介质110中读取与搜索关键字410中的设置位相对应的列。存储器控制器106中的VFU 130随后基于与被读取的列数据匹配的设置位的数量来对顶部N个匹配的行(例如,向量)进行排名和排序,并且存储器控制器106随后向处理器102发送指示顶部N个匹配的行(例如,向量)的数据作为搜索结果。
现在参考图5,可以利用计算设备100来实现基于内容的图像检索系统500。在给定高维度向量的数据库和相同维度的查询向量q(例如,图4的搜索关键字410)的情况下,基于内容的图像检索(CBIR)系统500针对与q相似或比其他向量更接近q的数据库向量(例如,图4的向量422、424、426、428、430、432、434)进行搜索,该搜索基于相似性函数(例如,确定查询向量与每个数据库向量之间的距离的函数)。例如,基于内容的图像检索系统500使用查询图像来标识数据库中的相似图像。特征提取步骤可以涉及深度学习模型或其他类型的过程,诸如人类设计的算法。图6图示了用于CBIR系统500的基于深度学习的相似性搜索工作流程600,其中向量表示从图像内容中所提取的特征。在其他实施例中,向量可以表示(例如,经由深度学习或其他过程)而提取和概括的其他对象(例如,声音、视频、生物信息学数据等)的内容。在说明性实施例中,本计算设备100在操作中实现基于内容的相似性搜索系统(例如,系统500),该系统显著改进了搜索的运行时性能(例如,速度、功率使用等)和准确性。特别地,计算设备100利用存储器介质110的独特特征(例如,列和行可寻址性)对现代的、大规模的(例如,数十亿数量级)、复杂的且高维度的数据集进行操作。
现在参考图7,计算设备100可以使用存储器介质110来实现随机稀疏提升(RSL)数据和控制流相似性搜索流水线700。还参考图8,示出了可以被计算设备100用于实行随机稀疏提升(RSL)的算法流水线800和用于实行RSL的数学方程840。在随机稀疏提升中,计算设备100取用输入向量x(例如,d维浮点向量),并且在如图7和8中图示的以下三个步骤中进行操作,该操作以类似于黑腹果蝇(果蝇)的嗅觉系统的方式进行。在一个步骤710、810中,计算设备100实行数据归一化。在这样做的情况下,计算设备100将输入数据归一化以向特定变形(例如,平移、旋转、剪切应力(sheer stress)等)添加不变性(invariance)。例如,计算设备100可以确定输入数据中(例如,输入数据向量中)的值的均值,并且从值中去除(例如,减去)该均值。在随后的步骤720、820中,计算设备100实行维度扩展。在这样做的情况下,计算设备100将经归一化的输入数据随机投影到更高维度空间D,其中D大于d(例如,维度中的20到40倍增加)。随机投影确保了高维度投影向量中的每个元素从输入向量接收相对少的元素并且对这些元素求和,如图8中所示。该过程可以被形式化为输入向量x与维度(Dxd)的二进制稀疏投影矩阵W的矩阵乘法。计算设备100将随机稀疏投影矩阵W(也被称为模型参数)存储在存储器(例如,存储器104)中,以用于随后的查询。在随后的步骤730、830中,计算设备100使用赢家通吃(winner-take-all, WTA)策略将投影向量二进制化以产生散列码,其中投影向量中的顶部条目(例如,最大值)的仅一小部分(例如,D中的5%)被设置为1,并且其余条目被设置为0。RSL过程有效地利用了存储器介质的独特特征(例如,读取个体列的能力),以加速对大规模数据库(例如,十亿数量级的元素)的相似性搜索,而不会损失结果的准确性。具体地,该算法生成稀疏二进制散列码,并且是从输入到汉明空间的距离保持的变换(distance-preserving transformation)。散列码之间的汉明距离反映了产生它们的数据点之间的欧几里得距离。此外,稀疏二进制散列码减少了以其他方式原本需要的存储器读取操作的数量,这是因为在该散列码中与0相比具有相对少的1,并且信息仅包含在该二进制散列码中的设置位(例如,被设置为1的位)中。照此,该二进制散列码满足了随机关联搜索的所有要求,并且可以受益于存储器104所提供的存储器内二进制搜索加速。
现在参考图9,示出了RSL流水线(类似于流水线700)的阶段的硬件映射900的至少一个实施例。在训练期间,生成随机稀疏投影矩阵W,使用该矩阵W,将输入数据集从浮点向量变换成高维度稀疏二进制散列码。如图8中所示,该变换由计算主机(例如,中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)或其他电路)来实行。随后,将散列码和投影矩阵W存储在随机关联存储器(例如,存储器介质110)中。在加索引(indexing)期间,还使用相同的稀疏投影矩阵W来针对被添加到数据库的新元素生成二进制散列码。查询处理涉及:检索所存储的矩阵W,并且实行上述三个步骤来生成要被用于搜索的稀疏二进制代码(例如,图4的搜索关键字410)。计算设备100将查询散列码(例如,搜索关键字410)与数据库散列码(例如,向量422、424、426、428、430、432、434)进行比较,并且计算成对的汉明距离(例如,基于匹配的位,如上所描述)。在说明性实施例中,该比较是在存储器中(例如,在存储器104中)实行的。此外,在说明性实施例中,存储器104(例如,存储器控制器106)基于汉明距离至少部分地对数据库元素(例如,向量422、424、426、428、430、432、434)进行排序,并且返回最接近匹配的向量422、424、426、428、430、432、434(例如,最接近匹配的N个向量)的索引。
现在参考图10,计算设备100在操作中可以执行方法1000以优化(例如,适配)投影矩阵W,以针对要搜索的给定类型的数据产生更准确的搜索结果。方法1000在本文中被称为普罗克拉斯提斯正交稀疏散列(POSH)。尽管上面描述的随机稀疏提升方法为使用随机关联存储器(例如,存储器介质110)的相似性搜索提供了加速,但是使用POSH来适配(例如,优化)投影矩阵W保留了RSL的益处,同时增加了搜索结果的准确性。RSL方法的关键缺点在于:它将稀疏投影矩阵中的随机值用于散列码的计算,这无法使机器学习模型适配于正在被搜索的数据。换句话说,RSL方法无法从输入数据中进行学习。相比之下,POSH方法1000利用机器学习来适配投影矩阵W,以提供改进的(例如,优于RSL方法的)用于维度扩展的数据变换。
简要地参考图11,类似于图7的流水线700,流水线1100包括类似于方法1000的机器学习过程1110,用以使投影(例如,投影矩阵W)适配于训练数据。该机器学习过程基于交替的优化方法。参考图10和图12,该交替的优化方法如下那样进行。计算设备100将投影矩阵W初始化为随机稀疏二进制投影矩阵,并且使用上面描述的RSL方法来计算散列码h。随后,计算设备100将W固定并且优化散列码h。优化问题具有类似于RSL方法的封闭形式,如图12中所示。保持来自先前迭代的经优化的h固定,计算设备100然后针对W(例如,投影矩阵)进行优化作为正交普罗克拉斯提斯问题,该问题也具有封闭形式解,如图12中指示的那样。计算设备100随后通过上述两个步骤进行迭代,直到W和h两者都收敛到其对应的最优值为止。
因为交替的优化方法中的每一个步骤都具有封闭形式解,所以POSH过程在大规模数据集(例如,数十亿个记录)上相对快速地(例如,在50到100次迭代之后)达到收敛。与上面描述的RSL方法相比,实行POSH过程提供了更准确的搜索结果,并且同时满足了RSL的编码属性。因此,可以将POSH过程与上面描述的(例如,结合RSL描述的)加速的搜索操作进行组合,以针对相似性搜索提供快速且高效的结果。简要地参考图13,示出了散列码(例如,使用通过利用POSH方法优化的投影矩阵W而产生的散列码h)中的设置位(例如,具有值1的位)的分布1300。如图13中所指示的,散列码h中的设置位具有几乎均匀的分布。
现在参考图14,计算设备100在操作中可以执行用于实行加速的相似性搜索的方法1400。方法1400开始于框1402,在框1402中,计算设备100确定是否启用加速的相似性搜索。在这样做的情况下,计算设备100可以响应于来自(例如,由处理器102执行的)应用的启用加速搜索的请求、响应于确定(例如,配置文件中的)配置设置指示启用加速搜索、和/或基于其他因素而启用加速的相似性搜索。无论如何,响应于对启用加速搜索的确定,方法1400前进到框1404,在框1404中,计算设备100确定是否添加数据(例如,要搜索的输入数据)。计算设备100可以响应于来自(例如,由处理器102执行的)应用的添加要搜索的数据的请求、响应于来自另一个计算设备100的添加数据的请求(例如,经由通信电路122接收到的请求)、响应于确定输入数据的源包括尚未被计算设备100加索引(例如,在存储器介质110中被转换成二进制维度扩展向量)的新数据、和/或基于其他因素而确定添加数据。
响应于对添加数据的确定,方法1400前进到框1406,在框1406中,计算设备100将一个或多个输入数据向量添加到列可寻址存储器,作为(一个或多个)二进制维度扩展向量(例如,每个输入数据向量一个二进制维度扩展向量)。在这样做的情况下并且如框1408中所指示,在说明性实施例中,计算设备100添加具有数据值的一个或多个输入数据向量,该数据值指示要搜索的对象的特征(例如,基于特征提取过程)。例如并且如框1410中所指示,计算设备100可以添加具有数据值的一个或多个输入数据向量,该数据值指示图像或声音的特征。在其他实施例中,输入数据向量可以具有指示要搜索的其他类型的对象(例如,视频、诸如遗传序列之类的生物信息学数据等)的数据值。如框1412中所指示的,在说明性实施例中,计算设备100将具有浮点数据值的(一个或多个)输入数据向量添加到存储器(例如,存储器介质110)作为二进制维度扩展向量。在说明性实施例中,计算设备100对(一个或多个)输入数据向量实行归一化,如框1414中所指示的。在这样做的情况下,计算设备100向输入数据向量添加不变性,如框1416中所指示的。在一些实施例中,为了将(一个或多个)输入数据向量归一化,计算设备100确定(一个或多个)输入数据向量中的数据值的均值,如框1418中所指示的,并且从每个数据值中减去该均值,如框1420中所指示的。归一化过程还被示为图7中的步骤710和图8中的810。随后,方法1400前进到图15的框1422,在框1422中,在说明性实施例中,计算设备100对每个输入数据向量实行维度扩展。
现在参考图15并且如框1424中所指示,在实行维度扩展时,计算设备100将每个输入数据向量与投影矩阵(例如,二进制稀疏投影矩阵W)相乘。如框1426中所指示的,计算设备100可以将每个输入数据向量与具有随机二进制值的二进制稀疏投影矩阵(W)相乘(例如,随机稀疏提升)。使用具有随机二进制值的二进制稀疏投影矩阵的维度扩展还被表示在图7的步骤712中。替代地,在其他实施例中,计算设备100可以将每个输入数据向量与被适配于输入数据向量的投影矩阵(W)(例如,密集浮点矩阵)相乘(例如,POSH方法),来提供比随机稀疏提升方法更准确的搜索结果,如框1428中所指示的。在这样做的情况下并且如框1430中所指示,计算设备100可以使用已经通过如下方式被优化的投影矩阵(例如,密集浮点矩阵)来实行乘法:即通过在优化散列码与优化投影矩阵之间交替地迭代,直到散列码和投影矩阵已经收敛到对应的目标值为止。如框1432中所指示的,计算设备100可以使用已经使用正交普罗克拉斯提斯问题而适配的投影矩阵(例如,密集浮点矩阵)来实行乘法。上面关于图10(例如,方法1000)、图11(例如,机器学习过程1110)和图12描述了对投影矩阵的优化。
如框1434中所指示的,在说明性实施例中,计算设备100实行对每个维度扩展的输入数据向量的二进制化以产生对应的散列码。二进制化操作还被表示在图7(例如,作为步骤714)、图8(例如,作为步骤814)和图11中。在这样做的情况下并且如框1436中所指示,计算设备100可以使用赢家通吃转换来实行二进制化。例如并且如框1438、1440和1442中所指示的,计算设备100可以:根据给定维度扩展的输入向量中的数据值来确定阈值(例如,代表在维度扩展的输入向量中表示的最大值的第N个百分比的值);将维度扩展的输入向量中满足(例如,等于或大于)该阈值的所有数据值设置为1;以及将不满足该阈值的所有数据值设置为0。如框1444中所指示的,计算设备100将投影矩阵写入到存储器(例如,存储器104)。随后,或者如果在图14的框1404中确定不添加数据,则方法1400前进到图16的框1446,在框1446中,计算设备100确定是否已经获得(例如,诸如从处理器102所执行的应用接收到)搜索查询。
现在参考图16,响应于确定尚未获得搜索查询,方法1400循环回到图14的框1404,在框1404中,计算设备100再次确定是否添加数据(例如,向要搜索的附加数据加索引)。否则(例如,如果已经获得搜索查询),则方法1400前进到框1448,在框1448中,计算设备从搜索查询中包括的搜索数据向量产生搜索散列码。也就是说,在说明性实施例中,计算设备100获得搜索数据向量,该搜索数据向量具有指示要在相似性搜索(例如,随机相似性搜索)中使用的对象(例如,图像、音频、视频、生物信息学数据等)的特征的值,用以标识与该对象相似的数据(例如,存储器介质110中的数据)。在这样做的情况下并且如框1450中所指示,计算设备100实行对搜索数据向量的归一化(例如,类似于图14的框1414中的操作)。此外并且如框1452中所指示的,在说明性实施例中,计算设备100通过将搜索数据向量与用于对输入数据向量实行维度扩展的投影矩阵(例如,在图15的框1444中被写入到存储器的投影矩阵)相乘来实行维度扩展。附加地,在说明性实施例中并且如框1454中所指示的,计算设备100对维度扩展的搜索数据向量实行二进制化以产生搜索散列码(例如,图4的搜索关键字410)。在说明性实施例中,计算设备100以类似于图15的框1434的二进制化过程的过程来实行二进制化。
随后并且如框1456中所指示的,计算设备100诸如通过确定搜索散列码与每个二进制维度扩展向量之间有多少个设置位匹配,来确定搜索散列码(例如,搜索关键字410)与存储器(例如,存储器介质110)中的二进制维度扩展向量之间的汉明距离,如关于图4所描述的那样。随后,在框1458中,计算设备100根据每个二进制维度扩展向量与搜索散列码(例如,搜索关键字410)的汉明距离来标识二进制维度扩展向量的结果集合。在这样做的情况下并且如框1460中所指示的,在说明性实施例中,计算设备100根据二进制维度扩展向量的所确定的汉明距离对二进制维度扩展向量进行排序(例如,从最小距离到最大距离)。此外并且如框1462中所指示的,计算设备100标识具有最小汉明距离的预定义数量的维度扩展向量(例如,十个(或搜索查询中指定的所请求的搜索结果数量的)具有最小汉明距离的维度扩展向量)。附加地,计算设备100可以将结果集合中的二进制维度扩展向量转换成原始数据格式(例如,在归一化、维度扩展和二进制化之前的格式,诸如浮点格式),如框1464中所指示的。在已经从该搜索中标识了结果集合(例如,以供作出请求的应用来使用)的情况下,在说明性实施例中,方法1400循环回到图14的框1404,在框1404中,计算设备100确定是否将附加数据添加到存储器(例如,向将可搜索的附加数据加索引)。
示例
下面提供了本文中公开的技术的说明性示例。所述技术的实施例可以包括下面描述的示例中的任何一个或多个及其任何组合。
示例1包括一种设备,所述设备包括:列可寻址的存储器;连接到存储器的电路,其中所述电路用以:将输入数据向量集合添加到存储器作为二进制维度扩展向量集合,包括将每个输入数据向量与投影矩阵相乘;从搜索数据向量产生搜索散列码,包括将搜索数据向量与投影矩阵相乘;以及确定搜索散列码与每一个二进制维度扩展向量之间的汉明距离。
示例2包括示例1的主题,并且其中将每个输入数据向量与投影矩阵相乘包括:将每个输入数据向量与包括随机二进制值的投影矩阵相乘。
示例3包括示例1和2中任一项的主题,并且其中将每个输入数据向量与投影矩阵相乘包括:将每个输入数据向量与具有针对输入数据向量中的输入数据而优化的值的投影矩阵相乘。
示例4包括示例1-3中任一项的主题,并且其中将输入数据向量集合添加到存储器作为二进制维度扩展向量包括:在将每个输入数据向量与投影矩阵相乘之前,对每个输入数据向量实行归一化。
示例5包括示例1-4中任一项的主题,并且其中将每个输入数据向量与投影矩阵相乘产生了维度扩展的输入数据向量集合,并且所述电路进一步用以对每个维度扩展的输入数据向量实行二进制化。
示例6包括示例1-5中任一项的主题,并且其中对每个维度扩展的输入数据向量实行二进制化包括:根据维度扩展的输入数据向量中的数据值来确定阈值;将满足所述阈值的每个数据值设置为1;以及将不满足所述阈值的每个数据值设置为0。
示例7包括示例1-6中任一项的主题,并且其中将每个输入数据向量与投影矩阵相乘包括:将具有浮点数据的输入数据向量与投影矩阵相乘。
示例8包括示例1-7中任一项的主题,并且其中将每个输入数据向量与投影矩阵相乘包括:将具有数据值的输入数据向量与投影矩阵相乘,所述数据值指示从要搜索的对象中提取的特征。
示例9包括示例1-8中任一项的主题,并且其中将每个输入数据向量与投影矩阵相乘包括:将具有数据值的输入数据向量与投影矩阵相乘,所述数据值指示从要搜索的图像中提取的特征。
示例10包括示例1-9中任一项的主题,并且其中所述电路进一步用以根据每个二进制维度扩展向量与搜索散列码的汉明距离来标识二进制维度扩展向量的结果集合,其中所述结果集合是维度扩展向量集合的子集。
示例11包括示例1-10中任一项的主题,并且其中所述电路进一步用以根据每个二进制维度扩展向量与搜索散列码的汉明距离对二进制维度扩展向量进行排序。
示例12包括示例1-11中任一项的主题,并且其中将输入数据向量添加到存储器作为二进制维度扩展向量包括:确定输入数据向量中的数据值的均值,并且在将输入数据向量与投影矩阵相乘之前从输入数据向量中的数据值中去除所述均值。
示例13包括示例1-12中任一项的主题,并且其中存储器是列可寻址的和行可寻址的。
示例14包括示例1-13中任一项的主题,并且其中存储器具有三维交叉点架构。
示例15包括一种方法,所述方法包括:由具有列可寻址的存储器的设备将输入数据向量集合添加到存储器作为二进制维度扩展向量集合,包括将每个输入数据向量与投影矩阵相乘;由所述设备从搜索数据向量产生搜索散列码,包括将搜索数据向量与投影矩阵相乘;以及由所述设备来确定搜索散列码与每一个二进制维度扩展向量之间的汉明距离。
示例16包括示例15的主题,并且其中将每个输入数据向量与投影矩阵相乘包括:将每个输入数据向量与包括随机二进制值的投影矩阵相乘。
示例17包括一种系统,所述系统包括:处理器;列可寻址的存储器;连接到存储器的电路,其中所述电路用以:将输入数据向量集合添加到存储器作为二进制维度扩展向量集合,包括将每个输入数据向量与投影矩阵相乘;从搜索数据向量产生搜索散列码,包括将搜索数据向量与投影矩阵相乘;以及确定搜索散列码与每一个二进制维度扩展向量之间的汉明距离。
示例18包括示例17的主题,并且其中所述电路在数据存储设备中。
示例19包括示例17和18中任一项的主题,并且其中所述电路在存储器设备中。
示例20包括一个或多个机器可读存储介质,其包括存储在其上的多个指令,所述指令响应于被执行而使具有列可寻址的存储器的设备进行如下操作:将输入数据向量集合添加到存储器作为二进制维度扩展向量集合,包括将每个输入数据向量与投影矩阵相乘;从搜索数据向量产生搜索散列码,包括将搜索数据向量与投影矩阵相乘;以及确定搜索散列码与每一个二进制维度扩展向量之间的汉明距离。
Claims (20)
1.一种设备,其包括:
列可寻址的存储器;
连接到存储器的电路,其中所述电路用以:
将输入数据向量集合添加到存储器作为二进制维度扩展向量集合,包括将每个输入数据向量与投影矩阵相乘;
从搜索数据向量产生搜索散列码,包括将搜索数据向量与投影矩阵相乘;以及
确定搜索散列码与每一个二进制维度扩展向量之间的汉明距离。
2.根据权利要求1所述的设备,其中将每个输入数据向量与投影矩阵相乘包括:将每个输入数据向量与包括随机二进制值的投影矩阵相乘。
3.根据权利要求1所述的设备,其中将每个输入数据向量与投影矩阵相乘包括:将每个输入数据向量与具有针对输入数据向量中的输入数据而优化的值的投影矩阵相乘。
4.根据权利要求1所述的设备,其中将输入数据向量集合添加到存储器作为二进制维度扩展向量包括:在将每个输入数据向量与投影矩阵相乘之前,对每个输入数据向量实行归一化。
5.根据权利要求1所述的设备,其中将每个输入数据向量与投影矩阵相乘产生了维度扩展的输入数据向量集合,并且所述电路进一步用以对每个维度扩展的输入数据向量实行二进制化。
6.根据权利要求5所述的设备,其中对每个维度扩展的输入数据向量实行二进制化包括:
根据维度扩展的输入数据向量中的数据值来确定阈值;
将满足所述阈值的每个数据值设置为1;以及
将不满足所述阈值的每个数据值设置为0。
7.根据权利要求1所述的设备,其中将每个输入数据向量与投影矩阵相乘包括:将具有浮点数据的输入数据向量与投影矩阵相乘。
8.根据权利要求1所述的设备,其中将每个输入数据向量与投影矩阵相乘包括:将具有数据值的输入数据向量与投影矩阵相乘,所述数据值指示从要搜索的对象中提取的特征。
9.根据权利要求8所述的设备,其中将每个输入数据向量与投影矩阵相乘包括:将具有数据值的输入数据向量与投影矩阵相乘,所述数据值指示从要搜索的图像中提取的特征。
10.根据权利要求1所述的设备,其中所述电路进一步用以根据每个二进制维度扩展向量与搜索散列码的汉明距离来标识二进制维度扩展向量的结果集合,其中所述结果集合是维度扩展向量集合的子集。
11.根据权利要求10所述的设备,其中所述电路进一步用以根据每个二进制维度扩展向量与搜索散列码的汉明距离对二进制维度扩展向量进行排序。
12.根据权利要求1所述的设备,其中将输入数据向量添加到存储器作为二进制维度扩展向量包括:确定输入数据向量中的数据值的均值,并且在将输入数据向量与投影矩阵相乘之前从输入数据向量中的数据值中去除所述均值。
13.根据权利要求1所述的设备,其中存储器是列可寻址的和行可寻址的。
14.根据权利要求1所述的设备,其中存储器具有三维交叉点架构。
15.一种方法,其包括:
由具有列可寻址的存储器的设备将输入数据向量集合添加到存储器作为二进制维度扩展向量集合,包括将每个输入数据向量与投影矩阵相乘;
由所述设备从搜索数据向量产生搜索散列码,包括将搜索数据向量与投影矩阵相乘;以及
由所述设备来确定搜索散列码与每一个二进制维度扩展向量之间的汉明距离。
16.根据权利要求15所述的方法,其中将每个输入数据向量与投影矩阵相乘包括:将每个输入数据向量与包括随机二进制值的投影矩阵相乘。
17.一种系统,其包括:
处理器;
列可寻址的存储器;
连接到存储器的电路,其中所述电路用以:
将输入数据向量集合添加到存储器作为二进制维度扩展向量集合,包括将每个输入数据向量与投影矩阵相乘;
从搜索数据向量产生搜索散列码,包括将搜索数据向量与投影矩阵相乘;以及
确定搜索散列码与每一个二进制维度扩展向量之间的汉明距离。
18.根据权利要求17所述的系统,其中所述电路在数据存储设备中。
19.根据权利要求17所述的系统,其中所述电路在存储器设备中。
20.一个或多个机器可读存储介质,其包括存储在其上的多个指令,所述指令响应于被执行而使具有列可寻址的存储器的设备进行如下操作:
将输入数据向量集合添加到存储器作为二进制维度扩展向量集合,包括将每个输入数据向量与投影矩阵相乘;
从搜索数据向量产生搜索散列码,包括将搜索数据向量与投影矩阵相乘;以及
确定搜索散列码与每一个二进制维度扩展向量之间的汉明距离。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/867948 | 2020-05-06 | ||
US16/867,948 US11989553B2 (en) | 2020-05-06 | 2020-05-06 | Technologies for performing sparse lifting and procrustean orthogonal sparse hashing using column read-enabled memory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113627618A true CN113627618A (zh) | 2021-11-09 |
Family
ID=72042164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011539216.7A Pending CN113627618A (zh) | 2020-05-06 | 2020-12-23 | 使用启用列读取的存储器来实行随机稀疏提升和普罗克拉斯提斯正交稀疏散列的技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11989553B2 (zh) |
EP (1) | EP3907628A1 (zh) |
CN (1) | CN113627618A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11797531B2 (en) * | 2020-08-04 | 2023-10-24 | Micron Technology, Inc. | Acceleration of data queries in memory |
WO2022060350A1 (en) * | 2020-09-15 | 2022-03-24 | Intel Corporation | Facilitating improved use of stochastic associative memory |
US20210241025A1 (en) * | 2020-10-28 | 2021-08-05 | Beijing More Health Technology Group Co. Ltd. | Object recognition method and apparatus, and storage medium |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2012202352A1 (en) * | 2012-04-20 | 2013-11-07 | Canon Kabushiki Kaisha | Method, system and apparatus for determining a hash code representing a portion of an image |
US10482336B2 (en) * | 2016-10-07 | 2019-11-19 | Noblis, Inc. | Face recognition and image search system using sparse feature vectors, compact binary vectors, and sub-linear search |
US20190171665A1 (en) * | 2017-12-05 | 2019-06-06 | Salk Institute For Biological Studies | Image similarity search via hashes with expanded dimensionality and sparsification |
US10997427B1 (en) * | 2018-04-25 | 2021-05-04 | Zorroa Corporation | Using motion-based features to match video sequences |
US11693657B2 (en) * | 2019-09-05 | 2023-07-04 | Micron Technology, Inc. | Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems |
-
2020
- 2020-05-06 US US16/867,948 patent/US11989553B2/en active Active
- 2020-12-22 EP EP20216310.1A patent/EP3907628A1/en active Pending
- 2020-12-23 CN CN202011539216.7A patent/CN113627618A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11989553B2 (en) | 2024-05-21 |
EP3907628A1 (en) | 2021-11-10 |
US20200264874A1 (en) | 2020-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11604834B2 (en) | Technologies for performing stochastic similarity searches in an online clustering space | |
US11829376B2 (en) | Technologies for refining stochastic similarity search candidates | |
EP3907628A1 (en) | Technologies for performing random sparse lifting and procrustean orthogonal sparse hashing using column read-enabled memory | |
US9262500B2 (en) | Memory system including key-value store | |
US11500887B2 (en) | Technologies for tuning performance and/or accuracy of similarity search using stochastic associative memories | |
CN111752859A (zh) | 用于高效的随机关联搜索操作的技术 | |
US11074008B2 (en) | Technologies for providing stochastic key-value storage | |
US10949214B2 (en) | Technologies for efficient exit from hyper dimensional space in the presence of errors | |
US11262913B2 (en) | Technologies for efficient stochastic associative search operations with error-correcting code | |
US11258539B2 (en) | Technologies for performing encoding of data symbols for column read operations | |
CN111723928A (zh) | 用于执行高效记忆增强神经网络更新操作的技术 | |
JP5981666B2 (ja) | 情報検索機能を備えたメモリ、その利用方法、装置、情報処理方法。 | |
CN113764016A (zh) | 用于在dimm架构中对群集数据执行列读取操作的技术 | |
CN113672163A (zh) | 用于集群数据系统的基于列的数据布局技术 | |
CN117251641A (zh) | 向量数据库检索方法、系统、电子设备及存储介质 | |
US20230385258A1 (en) | Dynamic random access memory-based content-addressable memory (dram-cam) architecture for exact pattern matching | |
WO2016199808A1 (ja) | メモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法。 | |
Ding et al. | kNN hashing with factorized neighborhood representation | |
JP2020129376A (ja) | 神経網アルゴリズムを用いたアドレス生成器を有するメモリ装置及びこれを含むメモリシステム | |
Ng et al. | Two-layer localized sensitive hashing with adaptive re-ranking | |
CN116665772B (zh) | 一种基于内存计算的基因组图分析方法、装置和介质 | |
US11914587B2 (en) | Systems and methods for key-based indexing in storage devices | |
US20210294799A1 (en) | Sparse column-aware encodings for numeric data types | |
JP2018169636A (ja) | データ検索装置、データ検索lsi。 |
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 |