CN113779154B - 一种分布式学习索引模型的构建方法及应用 - Google Patents

一种分布式学习索引模型的构建方法及应用 Download PDF

Info

Publication number
CN113779154B
CN113779154B CN202111095824.8A CN202111095824A CN113779154B CN 113779154 B CN113779154 B CN 113779154B CN 202111095824 A CN202111095824 A CN 202111095824A CN 113779154 B CN113779154 B CN 113779154B
Authority
CN
China
Prior art keywords
data
model
node
index
array
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
Application number
CN202111095824.8A
Other languages
English (en)
Other versions
CN113779154A (zh
Inventor
华宇
李鹏飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202111095824.8A priority Critical patent/CN113779154B/zh
Publication of CN113779154A publication Critical patent/CN113779154A/zh
Application granted granted Critical
Publication of CN113779154B publication Critical patent/CN113779154B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种分布式学习索引模型的构建方法及应用,属于计算机分布式存储技术领域,包括:对各存储节点,分别将其存储的数据根据键值的大小进行排序后,以其存储的数据的键值作为输入,对应的排序位置作为输出,训练机器学习模型,得到各存储节点的学习索引模型,并同步到所有的计算节点中;计算节点通过RDMA操作直接修改存储节点中的数据,而无需存储节点的CPU参与工作;同时,计算节点异步地对旧模型进行重新训练,并将新模型同步到存储节点中;通过将修改数据和模型的操作放到分布式系统中的计算节点来执行,大大降低了存储节点的CPU开销。

Description

一种分布式学习索引模型的构建方法及应用
技术领域
本发明属于计算机分布式存储技术领域,更具体地,涉及一种分布式学习索引模型的构建方法及应用。
背景技术
面对海量数据的访存需求,数据中心将数据存储到分布式系统中,通过网络连接不同机器的内存来提供高容量、高效的数据存储和访问服务。将分布式系统中不同的机器分成存储节点和计算节点可以拥有更强的灵活性和扩展性,计算节点可以通过RDMA技术直接读写存储节点的内存,进一步提高了以网络为基础的分布式存储系统的性能。存储系统使用不同的索引结构来满足不同的需求,其中树形索引结构是满足范围请求的重要结构。但现有的树形索引结构并不适合以RDMA网络为基础的分布式存储系统,因为多层次的树形结构要求计算节点通过多次RDMA操作才能读取到最终的数据,引入了昂贵的网络开销。
现有的学习索引技术利用机器学习模型学习数据的分布规律,从而利用得到的模型对数据位置进行计算,使得我们只需使用少量的内存即可存储所有的模型并利用计算节点强大的计算性能计算出数据的位置,从而只需一次RDMA操作即可读取所需要的数据。相比于传统的树形索引策略,学习索引的空间、时间和网络的开销都小很多,更适合用于基于RDMA的分布式存储系统。然而,现有的学习索引方法难以用于存储节点和计算节点分离的分布式存储系统,主要因为存在以下挑战:
高CPU开销:对于写频繁的工作负载,数据的频繁改变使得模型也需要频繁重训练。由于重训练的时间较长且旧模型无法使用,为了满足并发请求任务的需求,现有的方法在存储节点维护一个树形的结构来处理动态的数据变化,并在重训练得到新模型之前,将所有的任务(包括增删改查)都放到存储节点来做。在这样的情况下,存储节点需要执行大量的数据修改任务且频繁重训练模型,大大增加了存储节点的计算负担,而计算能力不强的存储节点进一步降低了整体系统的性能,使得我们无法通过学习索引获取足够好的数据存取性能。
远程数据访存性能差:现有的降低存储节点CPU开销的方法之一是将数据修改和模型重计算任务放到计算节点来做,但这种方式需要我们对数据和模型进行上锁,以防止其他计算节点修改或读取不一致的数据和模型。这样的方式阻塞了其他任务的执行,大大降低了系统的并发性能,无法满足高效的数据存储和访问需求。
综上,现有的并发重训练的学习索引方案都需要将新数据临时放到额外的地址,在访问时引入了多次的网络开销,不适合用于基于RDMA的分布式网络存储系统。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供一种分布式学习索引模型的构建方法及应用,用以解决现有技术中存储节点的CPU开销较高的技术问题。
为了实现上述目的,第一方面,本发明提供了一种分布式学习索引模型的构建方法,包括:
对各存储节点,分别将其存储的数据根据键值key的大小进行排序后,以其存储的数据的键值key作为输入,对应的排序位置作为输出,训练机器学习模型,得到各存储节点的学习索引模型,并同步到所有的计算节点中;
学习索引模型包括多个相互独立的索引子模型;存储节点所存储的数据被划分到多个数据区间上,每个索引子模型分别用于索引一个数据区间内的数据,且各索引子模型所覆盖的数据区间互不重叠;各索引子模型分别由对应数据区间内的数据进行训练,以使各索引子模型的最大误差均小于预设阈值;
其中,第k个索引子模型的最大误差为max_errork=|Yk,i-f(Xk,i)|+δ;i为1,2,…,Nk;Nk为第k个索引子模型对应数据区间内的数据数量;Yk,i为第k个索引子模型对应数据区间内的第i个数据的排序位置;Xk,i为第k个索引子模型对应数据区间内的第i个数据的键值key;f(Xk,i)为第k个索引子模型对应数据区间内的第i个数据经第k个索引子模型预测后所得的排序位置;δ为偏差值;
存储节点中存储的数据排序后存储在多个大小为δ的数组中,所有数组的物理地址均存储在地址转换表中,且地址转换表被相应地同步到对应的计算节点中。
进一步优选地,存储节点所存储的数据排序后存储在由上述多个大小为δ的数组所形成的链表中;此时,数组对应为链表中的链表节点。
进一步优选地,上述索引子模型为线性回归模型,按照<key*,model>的形式进行存储;其中,key*为索引子模型所覆盖数据区间内的最小数据或最大数据,model为索引子模型的模型参数。
第二方面,本发明提供了一种基于上述分布式学习索引模型的构建方法所构建的学习索引模型的插入方法,包括以下步骤:
S11、计算节点采用其上的学习索引模型计算待插入数据的排序位置;
S12、基于计算节点上的地址转换表将所得排序位置转换成对应数组的物理位置,计算节点根据该物理地址通过单边RDMA操作从存储节点读取对应的数组;判断所读取的数组中是否包含待插入数据的键值key,若包含,则操作结束;否则,转至步骤S13;
S13、在存储节点上预分配一个数组来存储插入数据,若预分配的数组存在空闲槽,则计算节点直接将待插入数据插入到存储节点上预分配数组的空闲槽中;否则,转至步骤S14;
S14、在存储节点上为待插入数据创建一个新数组,更新地址转换表并同步到对应的计算节点中,将待插入数据插入到新数组的空闲槽中;并在这个过程中,计算节点异步执行以下操作:通过单边RDMA操作读取对应存储节点上待插入数据所在数据区间的所有数据,并基于所读取的数据重新训练待插入数据所在数据区间对应的索引子模型后,将所得索引子模型同步到对应的存储节点中。
进一步优选地,当存储节点中存储的数据排序后存储在由上述多个大小为δ的数组所形成的链表中时,步骤S13中,若预分配的数组存在空闲槽,则采用RDMA技术中的CAW操作对预分配的数组所对应的链表节点进行上锁,并将数据写入到预分配的数组所对应的链表节点的空闲位置后,对预分配的数组所对应的链表节点进行解锁;
若预分配的数组不存在空闲槽,则采用RDMA技术中的CAW操作对预分配的数组所对应的链表节点和地址转换表进行上锁,并在存储节点上为待插入数据创建一个新数组作为链表中的新链表节点;将新链表节点的物理地址插入到地址转换表中,之后将待插入数据插入到新数组的空闲槽中,最后对预分配的数组所对应的链表节点和地址转换表进行解锁。
进一步优选地,计算节点异步读取对应存储节点上待插入数据所在数据区间的所有数据时,记录存储节点上对应索引子模型的版本;基于所读取的数据重新训练待插入数据所在数据区间对应的索引子模型后,将重新训练得到的索引子模型的版本与存储节点上的索引子模型的版本进行比对;若两个版本相同,则将重新训练得到的索引子模型同步到对应的存储节点中,并更新存储节点上对应索引子模型的版本,以保证模型的正确更新。
第三方面,本发明提供了一种基于上述分布式学习索引模型的构建方法所构建的学习索引模型的查询方法,包括以下步骤:
S21、计算节点采用其上的学习索引模型计算待查询数据的排序位置;
S22、基于计算节点上的地址转换表将所得排序位置转换成对应数组的物理位置,计算节点根据该物理地址通过单边RDMA操作从存储节点读取对应的数组,在读取的数组中得到待查询数据所对应的指向数值value的指针;
S23、计算节点根据指向数值value的指针所指向的物理地址通过单边RDMA操作从对应存储节点中读取待查询数值value。
第四方面,本发明提供了一种基于上述分布式学习索引模型的构建方法所构建的学习索引模型的删除方法,包括步骤:
S31、计算节点采用其上的学习索引模型计算待删除数据的排序位置;
S32、基于计算节点上的地址转换表将所得排序位置转换成对应数组的物理位置,计算节点根据该物理地址通过单边RDMA操作从存储节点读取对应的数组,判断所读取的数组中是否包含待删除数据的key,若不包含,则判定对应存储节点中不存在待删除数据,操作结束;否则,转至步骤S33;
S33、计算节点在所读取的数组中得到待删除数据所对应的指向数值value的指针;根据指向数值value的指针所指向的物理地址,计算节点通过单边RDMA操作删除对应存储节点上的待删除数据。
进一步优选地,当存储节点中存储的数据排序后存储在由上述多个大小为δ的数组所形成的链表中时,步骤S33中,基于待删除数据的排序位置确定待删除数据所在的链表节点;利用RDMA技术中的CAW操作对待删除数据所在的链表节点进行上锁,之后将待删除数据从其所在的链表节点上删除,最后对待删除数据所在的链表节点进行解锁。
进一步优选地,当删除操作产生空链表节点时,将空链表节点所对应的数组删除并更新存储在对应存储节点上的地址转换表;且在这个过程中,计算节点异步执行以下操作:通过单边RDMA操作读取对应存储节点上待删除数据所在数据区间的所有数据,并基于所读取的数据重新训练待删除数据所在数据区间对应的索引子模型后,将所得模型同步到对应的存储节点中。
第五方面,本发明还提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现本发明所提供任意方法。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
1、本发明提供了一种分布式学习索引模型的构建方法,存储节点根据现有数据的分布情况自适应地构建了一个高效学习索引模型,然后将训练得到的学习索引模型同步到计算节点;其中,学习索引模型包括多个相互独立的索引子模型,每个索引子模型分别用于索引一个数据区间内的数据,且各索引子模型所覆盖的数据区间互不重叠;由此得到的分布式学习索引将大量计算任务放到了计算节点,通过在模型训练阶段加入偏差δ,并限制数据只能在大小为δ的数组中移动,计算节点可以通过RDMA操作修改各数组的数据(如插入、更新和删除)而不会降低模型的精度;另外,新创建的数组存储在地址转换表的结尾而不影响现有数组的排序顺序,无需重新训练模型就可以通过地址转换表查找所有的数组,不会造成数据丢失;在保证了修改数据时旧模型依旧可用后,可以在计算节点上异步地对模型进行重新训练,并将新模型同步到各节点中,该重新训练模型的操作在后台运行而不会阻塞其他节点的索引操作;相比现有的方案,本发明将访问和修改数据及索引的操作放到了计算节点来完成,大大降低了存储节点的CPU开销。
2、本发明所提供的分布式学习索引模型的构建方法,为保证所有数据都不丢,每一个训练数据的误差都不能超过最大误差,训练算法使最大误差在小于预定义阈值的情况下,让索引子模型覆盖尽可能长的区间长度,同时在计算最大误差时加入偏差值δ,使得所有数据可以任意移动至多δ个位置而不降低模型的精度,也无需更新地址转换表,地址转换表只有在新建或删除数组时才更新,大大降低了存储节点的CPU开销。
3、本发明所提供的基于上述分布式学习索引模型的构建方法所构建的学习索引模型的数据操作方法中,计算节点可以通过所构建的学习索引模型计算出数据的逻辑位置并通过单边RDMA操作读取存储节点的数据,同时,计算节点可以直接将新数据插入到存储节点预分配的槽中,无需存储节点CPU的参与;且当存储节点预分配的槽用完时,进行并发重训练,在得到新模型之前仍然可以使用旧模型计算所有数据的位置,保证没有数据丢失;重训练通过其他线程并发地执行,不影响其他的索引操作,大大减轻了存储节点的计算压力。本发明可以利用计算节点通过RDMA技术完成对数据的增删改查操作,大大减轻了存储节点的计算开销,空间开销较小、请求延迟较低。
4、本发明所提供的基于上述分布式学习索引模型的构建方法所构建的学习索引模型的数据操作方法采用细粒度锁的方式,只对模型预测范围内的数据进行上锁而不是锁住所有数据,减少了不同节点的操作冲突;另外,本发明采用异步的方式对模型进行重新训练,该操作在后台运行而不会阻塞其他的索引操作,从而增强了索引结构的并发性能,远程数据访存性能较好。
5、本发明所提供的基于上述分布式学习索引模型的构建方法所构建的学习索引模型的数据操作方法中,当重训练得到新的学习索引模型后,新模型通过基于版本的方法同步到所有结点,以避免已经被更新的学习索引模型被修改到以前的版本,以保证学习索引模型的一致性,从而保证模型的正确更新。
附图说明
图1为本发明实施例1提供的一种分布式学习索引模型的构建方法流程图;
图2为本发明实施例2提供的基于实施例1所提供的分布式学习索引模型的构建方法所构建的学习索引模型的插入方法流程图;
图3为本发明实施例2提供的以RDMA为基础的分布式存储系统中通过学习索引插入数据的方法流程图;
图4为本发明实施例2提供的以RDMA为基础的分布式存储系统中通过计算节点进行模型重训练的方法流程图;
图5为本发明实施例3提供的以RDMA为基础的分布式存储系统中通过学习索引查询数据的方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1、
一种分布式学习索引模型的构建方法,如图1所示,包括:
对各存储节点,分别将其存储的数据根据键值key的大小进行排序后,以其存储的数据的键值key作为输入,对应的排序位置作为输出,训练机器学习模型,得到各存储节点的学习索引模型,并同步到所有的计算节点中;本实施例中的数据包括键值key和指向数值value的指针pointer;
学习索引模型包括多个相互独立的索引子模型;存储节点所存储的数据按照键值key被划分到多个数据区间上,每个索引子模型分别用于索引一个数据区间内的数据,且各索引子模型所覆盖的数据区间互不重叠;各索引子模型分别由对应数据区间内的数据进行训练,以使各索引子模型的最大误差均小于预设阈值;其中,预设阈值的大小通常与缓存行cacheline的长度对齐,使数据的存储空间能整除cacheline长度,即数据个数乘以单个数据占用的空间后除以cacheline长度为整数;本实施例中预设阈值可设置为16、32、64、128等;阈值越大,索引子模型数量越少而搜索的范围越大,其大小通常根据数据的分布规律在模型数量和搜索范围间取到一个平衡。需要说明的是,上述各索引子模型相互独立,可以单个修改,不重叠地覆盖所有的数据并各自负责索引所覆盖区间内的数据。
其中,第k个索引子模型的最大误差为max_errork=|Yk,i-f(Xk,i)|+δ;i为1,2,…,Nk;Nk为第k个索引子模型对应数据区间内的数据数量;Yk,i为第k个索引子模型对应数据区间内的第i个数据的排序位置;Xk,i为第k个索引子模型对应数据区间内的第i个数据的键值key;f(Xk,i)为第k个索引子模型对应数据区间内的第i个数据经第k个索引子模型预测后所得的排序位置;δ为偏差值,其大小通常根据cacheline的长度预先设定,如可设置为8,16,32等,使最大误差与偏差值δ之差与cacheline对齐。为保证所有数据都不丢,每一个训练数据的误差都不能不超过最大误差,训练算法使最大误差在小于预定义阈值的情况下,让索引子模型覆盖尽可能长的区间长度,同时在计算最大误差时加入偏差值δ,使得所有数据可以任意移动至多δ个位置而不降低模型的精度。
进一步地,上述索引子模型可以为线性回归模型、浅层神经网络模型、卷积神经网络等;优选地,本实施例中,上述索引子模型为线性回归模型,采用OptimalPLR算法训练得到,按照<key*,model>的形式进行存储;其中,key*为索引子模型所覆盖数据区间内的最小数据或最大数据,model为索引子模型的模型参数,包括权重和偏移量;本实施例中,各索引子模型互相独立且每个索引子模型覆盖下的数据的排序位置都从逻辑0开始计数,修改任意索引子模型不会影响其他索引子模型的使用。
存储节点所存储的数据排序后存储在多个大小为δ的数组中,所有数组的物理地址均存储在地址转换表中;且地址转换表被相应地同步到对应的计算节点中,以保证计算节点上的地址转换表与学习索引模型的一致性。其中,存储节点所存储的数据按照键的大小进行排序,以便高效的范围请求。需要说明的是,数组可以灵活地创建在任何位置,物理上可以是不连续的,且物理位置一旦创建就无法修改;而地址转换表可以修改,通过地址转换表进行排序,逻辑上是有序且连续的;地址转换表与学习索引模型绑定,学习索引模型计算的逻辑地址(即排序位置)可以通过地址转换表变为物理地址。另外,只记录数组的开始位置可以减少地址转换表的大小,数组中的其他位置通过开始位置和排序位置计算得来。
需要说明的是,由于本发明在训练算法中我们加入了偏差δ,且数组大小为δ,所以数据在数组内移动时不会影响模型的精度,也无需更新地址转换表,地址转换表只有在新建或删除数组时才更新,大大降低了CPU开销。
上述多个大小为δ的数组可以连起来形成链表,也可以不连起来;为避免因数据插入和排序导致移动过多的数据,在一种可选实施方式下,将上述多个大小为δ的数组可连起来形成链表;存储节点所存储的数据排序后存储在由上述多个大小为δ的数组所形成的链表中,链表用于存储真实的键值数据,所有的数据按照键的大小进行排序以便高效的范围请求;此时,数组对应为链表中的链表节点,即每一个链表节点对应一个数组;同时分别将各索引子模型覆盖下的所有链表节点的物理位置存到各自的地址转换表中,用于逻辑地址到物理地址的转换;需要说明的是,地址转换表有多个,每个索引子模型均对应一个地址转换表。具体地,将N对(一般为8~256)数据放到一个链表节点(即一个数组上)内,并将不同的链表节点组织成链表的形式,索引子模型按照数据和其逻辑位置(即排序位置)进行训练,链表内的所有链表节点的物理地址都存放在地址转换表中以便后续通过学习索引模型进行数据访问。
需要说明的是,只要保证了模型参数和地址转换表逻辑地址的一致即可保证所有数据都可以被索引,没有数据丢失。其原因在于模型是根据数据的逻辑地址训练而来,且新链表节点总可以通过现有链表节点通过指针得到,因此即使是旧模型也可以索引所有数据,而保证当前模型与相应的逻辑地址的一致性即可。
进一步地,本发明包含索引操作线程、重训练线程和模型同步线程,不同的线程执行不同的任务。其中索引操作线程完成数据的增、删、改、查功能,重训练线程执行异步重训练任务,以对学习索引模型中的对应索引子模型进行重新训练;而模型同步线程会将重训练得到的索引子模型同步到不同的服务器节点上。在同步过程中,根据索引子模型版本号进行索引子模型的更新,保证模型的一致。该一致性包括索引子模型的参数和地址转换表逻辑地址的一致性,采用共享地址转换表、不同索引子模型单独保存逻辑地址的方式既减少了地址转换表的空间开销,又保证了地址转换表的一致性。
实施例2、
一种基于实施例1所提供的分布式学习索引模型的构建方法所构建的学习索引模型的插入方法,如图2所示,包括以下步骤:
S11、计算节点采用其上的学习索引模型计算待插入数据的排序位置;
具体地,根据待插入数据的键值key确定学习索引模型中对应的索引子模型,将待插入数据的键值key输入到索引子模型中得到待插入数据的排序位置;
S12、基于计算节点上的地址转换表(待插入数据所在数据区间对应的索引子模型所对应的地址转换表)将所得排序位置转换成对应数组的物理位置,计算节点根据该物理地址通过单边RDMA操作从存储节点读取对应的数组;判断所读取的数组中是否包含待插入数据的key,若包含,则操作结束;否则,转至步骤S13;
S13、在存储节点上预分配一个数组来存储插入数据,若预分配的数组存在空闲槽,则计算节点直接将待插入数据插入到存储节点上预分配数组的空闲槽中;否则,转至步骤S14;
具体地,对于新数据,计算节点直接将数据插入到存储节点预分配数组的空闲槽中,如果预分配的槽用完了,就通过重训练操作分配更多的位置以容纳新的数据,同时,重训练操作通过并发地执行从而不影响其他操作。
S14、在存储节点上为待插入数据创建一个新数组,更新地址转换表(待插入数据所在数据区间对应的索引子模型所对应的地址转换表)并同步到对应的计算节点中,将待插入数据插入到新数组的空闲槽中;并在这个过程中,计算节点异步执行以下操作:通过单边RDMA操作读取对应存储节点上待插入数据所在数据区间的所有数据,并基于所读取的数据重新训练待插入数据所在数据区间对应的索引子模型后,将所得索引子模型同步到对应的存储节点中。
具体地,若预分配的数组存在空闲槽,则对预分配的数组进行上锁,并将数据写入到预分配的数组的空闲位置后,对预分配的数组进行解锁;若预分配的数组不存在空闲槽,则对预分配的数组和地址转换表进行上锁,并在存储节点上为待插入数据创建一个新数组;将新数组的物理地址插入到地址转换表中,之后将待插入数据插入到新数组的空闲槽中,最后对预分配的数组和地址转换表进行解锁。
进一步地,当存储节点所存储的数据排序后存储在由上述多个大小为δ的数组所形成的链表中时,若预分配的数组存在空闲槽,则采用RDMA技术中的CAW操作对预分配的数组所对应的链表节点进行上锁,并将数据写入到预分配的数组所对应的链表节点的空闲位置后,对预分配的数组所对应的链表节点进行解锁;
若预分配的数组不存在空闲槽,则采用RDMA技术中的CAW操作对预分配的数组所对应的链表节点和地址转换表进行上锁,并在存储节点上为待插入数据创建一个新数组作为链表中的新链表节点;将新链表节点的物理地址插入到地址转换表中,之后将待插入数据插入到新数组的空闲槽中,最后对预分配的数组所对应的链表节点和地址转换表进行解锁。
进一步地,创建了新数组则表明该模型需要重训练,此时设置重训练信号并通知重训练线程进行异步重训练,而该插入过程无需等待重训练的执行即可结束该插入过程。
在重训练得到新模型之前,旧模型可以计算得到所有数据的位置,从而保证在并发重训练时没有数据丢失;为了减轻存储节点的计算压力,本发明在计算节点中实现重新训练过程,采用异步的方式预取所需要的数据执行重训练;最终,将新训练好的模型通过基于版本的方式同步到对应的存储节点上,以保证模型的正确更新,其他计算节点的模型在下一次执行索引操作的时候进行同步(其他计算节点在每一次从存储节点读取数据的时候,都会顺带判断自己的模型是不是最新的,如果不是,那时再从存储节点进行更新;相比每次模型更新就同步所有计算节点的模型,可以减少同步的开销)。具体地,计算节点异步读取对应存储节点上待插入数据所在数据区间的所有数据时,记录存储节点上对应索引子模型的版本;基于所读取的数据重新训练待插入数据所在数据区间对应的索引子模型后,将重新训练得到的索引子模型的版本与存储节点上的索引子模型的版本进行比对;若两个版本相同,则将重新训练得到的索引子模型同步到对应的存储节点中,并更新存储节点上对应索引子模型的版本,以避免已经被更新的模型被修改到以前的版本,从而保证模型的一致性;若两个版本不相同,说明此时的模型已经被其他计算节点更新过了,不进行更新,操作结束。
进一步地,以存储节点所存储的数据排序后存储在由上述多个大小为δ的数组所形成的链表中为例,在以RDMA为基础的分布式存储系统中通过学习索引插入数据的方法流程图如图3所示,所有的插入过程由计算节点完成,其流程包括如下步骤:
Step 1:计算节点的CPU根据待插入的数据调用相应的索引子模型进行位置计算;
Step 2:索引子模型计算出待插入数据的逻辑位置;
Step 3:使用地址转换表将逻辑地址转换成物理地址;
Step 4:计算节点通过RDMA网卡读取存储节点的数据;
Step 5:RDMA网卡将计算节点请求的物理地址的数据返回到计算节点,计算节点在返回的数据中进行查找,如果待插入的数据已存在则无需重复插入,并结束插入流程;如果待插入的数据不存在且链表结点有空余位置,则直接插入数据;
Step 6:如果待插入的数据不存在且链表结点没有空余位置,则创建新的链表结点,并将新结点的位置插入地址转换表中;
Step 7:将新结点插入到链表中,并将待插入数据插入到空余位置,完成插入流程。
进一步地,如图4所示为本发明在以RDMA为基础的分布式存储系统中通过计算节点进行模型重训练的实施例子。重训练是异步执行的,该过程并不会影响其他操作,当重训练线程检测到重训练信号时,触发重训练,其流程包括如下步骤:
Step 1:计算节点通过RDMA网卡从存储节点预取待进行重训练的索引子模型覆盖下的所有数据;
Step 2:RDMA网卡在存储节点上根据预取数据的物理位置读取数据,并返回给计算节点;
Step 3:计算节点根据预取到的数据在本地完成重训练;
Step 4:计算节点通过RDMA网卡将索引子模型发送到存储节点;
Step 5:通过RDMA写技术在存储节点上写入新的索引子模型,保证索引子模型的参数和地址转换表的一致性,完成模型的同步。
需要说明的是,计算节点因修改数据会触发重训练,如插入操作和删除操作中计算节点创造新的链表结点或删除空结点时,需要改变逻辑位置,此时会触发重训练。如链表中现有链表节点的空余位置不足时,创建新的链表节点并将该链表节点的位置插入到地址转换表中,只有存在于地址转换表中的链表节点才能被使用;且链表节点的逻辑位置只用通过重训练才能被修改。
重训练得到新模型之前,旧模型仍然可以索引到所有的数据,没有数据丢失;其原因在于采用链表节点的结构存储所有的数据,模型根据数据和链表的逻辑位置进行训练,新节点可以通过现有节点通过指针查询且在重训练之前不会影响现有节点的逻辑位置,从而保证了旧模型可以索引所有数据。
相关技术方案同实施例1,这里不做赘述。
实施例3、
一种基于实施例1所提供的分布式学习索引模型的构建方法所构建的学习索引模型的查询方法,包括以下步骤:
S21、计算节点采用其上的学习索引模型计算待查询数据的排序位置;
具体地,根据待查询数据的键值key确定学习索引模型中对应的索引子模型,将待查询数据的键值key输入到索引子模型中得到待查询数据的排序位置;
S22、基于计算节点上的地址转换表(待查询数据所在数据区间对应的索引子模型所对应的地址转换表)将所得排序位置转换成对应数组的物理位置,计算节点根据该物理地址通过单边RDMA操作从存储节点读取对应的数组,在读取的数组中得到待查询数据所对应的指向数值value的指针;
S23、计算节点根据指向数值value的指针所指向的物理地址通过单边RDMA操作从对应存储节点中读取待查询数值value。
进一步地,以存储节点所存储的数据排序后存储在由上述多个大小为δ的数组所形成的链表中为例,在以RDMA为基础的分布式存储系统中通过学习索引查询数据的方法流程图如图5所示,其中,存储节点将所有数据按照链表节点的方式进行存储,并将链表节点地址保存到地址转换表中,根据数据和其逻辑地址训练得到学习索引模型,学习索引模型和地址转换表同步到计算节点用于数据查询。在计算节点上查询数据的流程包含如下步骤:
Step 1:计算节点的CPU根据待查询的数据调用相应的索引子模型进行进行位置计算;
Step 2:索引子模型计算出待查询数据的逻辑位置;
Step 3:使用地址转换表将逻辑地址转换成物理地址;
Step 4:计算节点通过RDMA网卡读取存储节点的数据;
Step 5:RDMA网卡将计算节点请求的物理地址的数据返回到计算节点,计算节点在返回的数据中进行查找,完成查询过程。
相关技术方案同实施例1,这里不做赘述。
实施例4、
一种基于实施例1所提供的分布式学习索引模型的构建方法所构建的学习索引模型的删除方法,包括步骤:
S31、计算节点采用其上的学习索引模型计算待删除数据的排序位置;
具体地,根据待删除数据的键值key确定学习索引模型中对应的索引子模型,将待删除数据的键值key输入到索引子模型中得到待删除数据的排序位置;
S32、基于计算节点上的地址转换表(待删除数据所在数据区间对应的索引子模型所对应的地址转换表)将所得排序位置转换成对应数组的物理位置,计算节点根据该物理地址通过单边RDMA操作从存储节点读取对应的数组,判断所读取的数组中是否包含待删除数据的key,若不包含,则判定对应存储节点中不存在待删除数据,操作结束;否则,转至步骤S33;
S33、计算节点在所读取的数组中得到待删除数据所对应的指向数值value的指针;根据指向数值value的指针所指向的物理地址,计算节点通过单边RDMA操作删除对应存储节点上的待删除数据。
其中,删除过程如下:基于待删除数据的排序位置确定待删除数据所在的数组,对待删除数据所在的数组进行上锁,之后将待删除数据从其所在的数组上删除,最后对待删除数据所在的数组进行解锁。
进一步地,当存储节点所存储的数据排序后存储在由上述多个大小为δ的数组所形成的链表中时,步骤S33中,基于待删除数据的排序位置确定待删除数据所在的链表节点;利用RDMA技术中的CAW操作对待删除数据所在的链表节点进行上锁,之后将待删除数据从其所在的链表节点上删除,最后对待删除数据所在的链表节点进行解锁。
需要说明的是,当删除操作产生空链表节点时,将空链表节点所对应的数组删除并更新存储在对应存储节点上的地址转换表;且在这个过程中,计算节点异步执行以下操作:通过单边RDMA操作读取对应存储节点上待删除数据所在数据区间的所有数据,并基于所读取的数据重新训练待删除数据所在数据区间对应的索引子模型后,将所得模型同步到对应的存储节点中。
相关技术方案同实施例1和实施例2,这里不做赘述。
实施例5、
一种基于实施例1所提供的分布式学习索引模型的构建方法所构建的学习索引模型的更新方法,包括以下步骤:
S41、计算节点采用其上的学习索引模型计算待更新数据的排序位置;
具体地,根据待更新数据的键值key确定学习索引模型中对应的索引子模型,将待更新数据的键值key输入到索引子模型中得到待更新数据的排序位置;
S42、基于计算节点上的地址转换表(待查询数据所在数据区间对应的索引子模型所对应的地址转换表)将所得排序位置转换成对应数组的物理位置,计算节点根据该物理地址通过单边RDMA操作从存储节点读取对应的数组;判断所读取的数组中是否包含待更新数据的key,若包含,则转至步骤S43;否则,操作结束;
S43、在读取的数组中得到待更新数据所对应的指向数值value的指针,计算节点根据指向数值value的指针所指向的物理地址通过单边RDMA操作将对应存储节点中所存储的数值value更新为待更新数据的数值value。
相关技术方案同实施例1,这里不做赘述。
综上,本发明所提供的基于上述分布式学习索引模型的构建方法所构建的学习索引模型的数据操作方法,计算节点通过RDMA操作直接修改存储节点中的数据,而无需存储节点的CPU参与工作;同时,计算节点异步地对旧模型进行重新训练,并将新模型同步到存储节点中;通过将修改数据和模型的操作放到分布式系统中的计算节点来执行,大大降低了存储节点的CPU开销。
实施例6、
一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现本发明实施例1、实施例2、实施例3和/或实施例4中所提供任意方法。
相关技术方案同实施例1、实施例2、实施例3和实施例4,这里不做赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种分布式学习索引模型的构建方法,其特征在于,包括:对各存储节点,分别将其存储的数据根据键值key的大小进行排序后,以其存储的数据的键值key作为输入,对应的排序位置作为输出,训练机器学习模型,得到各存储节点的学习索引模型,并同步到所有的计算节点中;
所述学习索引模型包括多个相互独立的索引子模型;所述存储节点所存储的数据被划分到多个数据区间上,每个索引子模型分别用于索引一个数据区间内的数据,且各索引子模型所覆盖的数据区间互不重叠;各索引子模型分别由对应数据区间内的数据进行训练,以使各索引子模型的最大误差均小于预设阈值;
其中,第k个索引子模型的最大误差为max_errork=|Yk,i-f(Xk,i)|+δ;i为1,2,…,Nk;Nk为第k个索引子模型对应数据区间内的数据数量;Yk,i为第k个索引子模型对应数据区间内的第i个数据的排序位置;Xk,i为第k个索引子模型对应数据区间内的第i个数据的键值key;f(Xk,i)为第k个索引子模型对应数据区间内的第i个数据经第k个索引子模型预测后所得的排序位置;δ为偏差值;
所述存储节点中存储的数据排序后存储在多个大小为δ的数组中,所有数组的物理地址均存储在地址转换表中,且所述地址转换表被相应地同步到对应的计算节点中。
2.根据权利要求1所述的分布式学习索引模型的构建方法,其特征在于,所述存储节点中存储的数据排序后存储在由所述多个大小为δ的数组所形成的链表中;此时,数组对应为链表中的链表节点。
3.根据权利要求1或2所述的分布式学习索引模型的构建方法,其特征在于,所述索引子模型为线性回归模型,按照<key*,model>的形式进行存储;其中,key*为所述索引子模型所覆盖数据区间内的最小数据或最大数据,model为所述索引子模型的模型参数。
4.一种基于权利要求1-3任意一项所述分布式学习索引模型的构建方法所构建的学习索引模型的插入方法,其特征在于,包括以下步骤:
S11、所述计算节点采用其上的学习索引模型计算待插入数据的排序位置;
S12、基于所述计算节点上的地址转换表将所得排序位置转换成对应数组的物理位置,所述计算节点根据所述物理地址通过单边RDMA操作从存储节点读取对应的数组;判断所读取的数组中是否包含待插入数据的key,若包含,则操作结束;否则,转至步骤S13;
S13、在所述存储节点上预分配一个数组来存储插入数据,若预分配的数组存在空闲槽,则所述计算节点直接将待插入数据插入到所述存储节点上预分配数组的空闲槽中;否则,转至步骤S14;
S14、在所述存储节点上为待插入数据创建一个新数组,更新地址转换表并同步到对应的计算节点中,将待插入数据插入到所述新数组的空闲槽中;并在这个过程中,所述计算节点异步执行以下操作:通过单边RDMA操作读取对应存储节点上待插入数据所在数据区间的所有数据,并基于所读取的数据重新训练待插入数据所在数据区间对应的索引子模型后,将所得索引子模型同步到对应的存储节点中。
5.根据权利要求4所述分布式学习索引模型的构建方法所构建的学习索引模型的插入方法,其特征在于,当所述存储节点中存储的数据排序后存储在由所述多个大小为δ的数组所形成的链表中时,若预分配的数组存在空闲槽,则采用RDMA技术中的CAW操作对预分配的数组所对应的链表节点进行上锁,并将待插入数据写入到预分配的数组所对应的链表节点的空闲位置后,对预分配的数组所对应的链表节点进行解锁;
若预分配的数组不存在空闲槽,则采用RDMA技术中的CAW操作对预分配的数组所对应的链表节点和地址转换表进行上锁,并在所述存储节点上为待插入数据创建一个新数组作为链表中的新链表节点;将所述新链表节点的物理地址插入到所述地址转换表中,之后将待插入数据插入到所述新数组的空闲槽中,最后对预分配的数组所对应的链表节点和地址转换表进行解锁。
6.根据权利要求4或5所述分布式学习索引模型的构建方法所构建的学习索引模型的插入方法,其特征在于,所述计算节点异步读取对应存储节点上待插入数据所在数据区间的所有数据时,记录所述存储节点上对应索引子模型的版本;基于所读取的数据重新训练待插入数据所在数据区间对应的索引子模型后,将重新训练得到的索引子模型的版本与存储节点上的索引子模型的版本进行比对;若两个版本相同,则将重新训练得到的索引子模型同步到对应的存储节点中,并更新所述存储节点上对应索引子模型的版本,以保证模型的正确更新。
7.一种基于权利要求1-3任意一项所述分布式学习索引模型的构建方法所构建的学习索引模型的查询方法,其特征在于,包括以下步骤:
S21、所述计算节点采用其上的学习索引模型计算待查询数据的排序位置;
S22、基于所述计算节点上的地址转换表将所得排序位置转换成对应数组的物理位置,所述计算节点根据所述物理地址通过单边RDMA操作从存储节点读取对应的数组,在读取的数组中得到待查询数据所对应的指向数值value的指针;
S23、所述计算节点根据所述指向数值value的指针所指向的物理地址通过单边RDMA操作从对应存储节点中读取待查询数值value。
8.一种基于权利要求1-3任意一项所述分布式学习索引模型的构建方法所构建的学习索引模型的删除方法,其特征在于,包括步骤:
S31、所述计算节点采用其上的学习索引模型计算待删除数据的排序位置;
S32、基于所述计算节点上的地址转换表将所得排序位置转换成对应数组的物理位置,所述计算节点根据所述物理地址通过单边RDMA操作从存储节点读取对应的数组,判断所读取的数组中是否包含待删除数据的key,若不包含,则判定对应存储节点中不存在待删除数据,操作结束;否则,转至步骤S33;
S33、所述计算节点在所读取的数组中得到待删除数据所对应的指向数值value的指针;根据所述指向数值value的指针所指向的物理地址,所述计算节点通过单边RDMA操作删除对应存储节点上的待删除数据。
9.根据权利要求8所述分布式学习索引模型的构建方法所构建的学习索引模型的删除方法,其特征在于,当所述存储节点中存储的数据排序后存储在由所述多个大小为δ的数组所形成的链表中时,所述步骤S33中,基于待删除数据的排序位置确定待删除数据所在的链表节点;利用RDMA技术中的CAW操作对待删除数据所在的链表节点进行上锁,之后将待删除数据从其所在的链表节点上删除,最后对待删除数据所在的链表节点进行解锁;
当删除操作产生空链表节点时,将空链表节点所对应的数组删除并更新存储在对应存储节点上的地址转换表;且在这个过程中,计算节点异步执行以下操作:通过单边RDMA操作读取对应存储节点上待删除数据所在数据区间的所有数据,并基于所读取的数据重新训练待删除数据所在数据区间对应的索引子模型后,将所得模型同步到对应的存储节点中。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现权利要求1-9任意一项所述的方法。
CN202111095824.8A 2021-09-18 2021-09-18 一种分布式学习索引模型的构建方法及应用 Active CN113779154B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111095824.8A CN113779154B (zh) 2021-09-18 2021-09-18 一种分布式学习索引模型的构建方法及应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111095824.8A CN113779154B (zh) 2021-09-18 2021-09-18 一种分布式学习索引模型的构建方法及应用

Publications (2)

Publication Number Publication Date
CN113779154A CN113779154A (zh) 2021-12-10
CN113779154B true CN113779154B (zh) 2024-04-23

Family

ID=78852051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111095824.8A Active CN113779154B (zh) 2021-09-18 2021-09-18 一种分布式学习索引模型的构建方法及应用

Country Status (1)

Country Link
CN (1) CN113779154B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115270941A (zh) * 2022-07-15 2022-11-01 天翼云科技有限公司 一种训练数据分类模型的方法、装置、设备及存储介质
CN116089434B (zh) * 2023-04-10 2023-06-13 北京奥星贝斯科技有限公司 一种数据存储方法、装置、存储介质及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651455A (zh) * 2020-05-26 2020-09-11 上海交通大学 基于机器学习的高效并发索引数据结构

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651455A (zh) * 2020-05-26 2020-09-11 上海交通大学 基于机器学习的高效并发索引数据结构

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
游理通 ; 王振杰 ; 黄林鹏 ; .一个基于日志结构的非易失性内存键值存储系统.计算机研究与发展.2018,(09),全文. *

Also Published As

Publication number Publication date
CN113779154A (zh) 2021-12-10

Similar Documents

Publication Publication Date Title
CN110083601B (zh) 面向键值存储系统的索引树构建方法及系统
US5317727A (en) Method apparatus for determining prefetch operating for a data base
US11386065B2 (en) Database concurrency control through hash-bucket latching
CN113779154B (zh) 一种分布式学习索引模型的构建方法及应用
US7805427B1 (en) Integrated search engine devices that support multi-way search trees having multi-column nodes
US4823310A (en) Device for enabling concurrent access of indexed sequential data files
CN112363979B (zh) 一种基于图数据库的分布式索引方法和系统
CN100367239C (zh) 用于数据库系统的考虑了高速缓存的并行控制方案
US20080052488A1 (en) Method for a Hash Table Lookup and Processor Cache
Li et al. FINEdex: a fine-grained learned index scheme for scalable and concurrent memory systems
US8086641B1 (en) Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same
CN111126625B (zh) 一种可扩展的学习索引方法及系统
CN103106286A (zh) 元数据的管理方法和装置
CN111651455A (zh) 基于机器学习的高效并发索引数据结构
Li et al. {ROLEX}: A Scalable {RDMA-oriented} Learned {Key-Value} Store for Disaggregated Memory Systems
CN112749198A (zh) 一种基于版本号的多级数据缓存方法及装置
CN100557581C (zh) 一种面向数据流的Cache管理方法
US7987205B1 (en) Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations
CN101339527B (zh) 影子内存的备份方法及装置
CN112000845B (zh) 一种基于gpu加速的超空间哈希索引方法
US7953721B1 (en) Integrated search engine devices that support database key dumping and methods of operating same
Rudolph COMPETITIVE SNOOPY CACHING.
Fent et al. Start—self-tuning adaptive radix tree
CN111274456B (zh) 基于nvm主存的数据索引方法及数据处理系统
Yao et al. NV-QALSH: an nvm-optimized implementation of query-aware locality-sensitive hashing

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