CN112181732A - 参数服务器节点的恢复方法和恢复系统 - Google Patents
参数服务器节点的恢复方法和恢复系统 Download PDFInfo
- Publication number
- CN112181732A CN112181732A CN202011187099.2A CN202011187099A CN112181732A CN 112181732 A CN112181732 A CN 112181732A CN 202011187099 A CN202011187099 A CN 202011187099A CN 112181732 A CN112181732 A CN 112181732A
- Authority
- CN
- China
- Prior art keywords
- level
- parameter server
- server node
- level storage
- parameter
- 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.)
- Granted
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 99
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000003860 storage Methods 0.000 claims abstract description 673
- 238000013507 mapping Methods 0.000 claims abstract description 230
- 230000015654 memory Effects 0.000 claims abstract description 106
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 9
- 238000012549 training Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供一种参数服务器节点的恢复方法和恢复系统。所述恢复方法包括:在参数服务器节点重启后,从参数服务器节点的非易失性内存中获取第一层数据,其中,第一层数据包括参数服务器节点头信息,用于查询参数服务器节点的节点信息和第一级存储子模块信息;基于第一层数据,从参数服务器节点的非易失性内存中获取第二层数据中的每个第一级存储子模块头信息,其中,第二层数据包括M个第一级存储子模块头信息和M个第一级存储子模块哈希映射信息,第二层数据用于查询该参数服务器节点的各个第一级存储子模块中存储的模型参数;基于每个第一级存储子模块头信息,遍历第二层数据中的每个第一级存储子模块哈希映射信息,以恢复参数服务器节点上的模型参数。
Description
技术领域
本公开涉及计算机技术领域,更具体地说,涉及一种参数服务器节点的恢复方法和恢复系统。
背景技术
工业界已经部署上线的机器学习模型,因为线上服务要求非常高的实时性,所以模型参数都需要存储在高速的DRAM(Dynamic Random Access Memory动态随机存取存储器)内存当中。而工业级机器学习模型参数总量巨大,超过了单台机器的存储容量,所以往往需要部署基于DRAM内存的参数服务器集群为在线预测服务提供高并发的参数查询支持。参数服务器(Parameter Server)是一个编程框架,用于方便分布式并行程序的编写,其中重点在于对大规模参数的分布式存储和协同的支持。而线上参数服务器主要用于存储已训练好的超大规模参数,并为线上服务提供高并发,高可用的模型参数查询服务。然而,传统的基于DRAM内存的参数服务器在部署过程中存在两个问题,第一是巨大的内存消耗带来的整体硬件成本的提升,第二是当参数服务器集群中任意节点故障下线后,恢复过程非常耗时。
发明内容
本公开的示例性实施例可至少部分地解决上述问题。
根据本公开的一方面,提供一种参数服务器节点的恢复方法,其中,所述参数服务器节点是参数服务器集群中的一个节点,且所述参数服务器节点是基于非易失性内存的参数服务器节点,所述参数服务器节点的非易失性内存中存储的每个模型的模型参数在逻辑上被划分为至少一级存储子模块,所述恢复方法包括:在所述参数服务器节点重启后,从所述参数服务器节点的非易失性内存中获取所存储的第一层数据,其中,第一层数据包括参数服务器节点头信息,用于查询所述参数服务器节点的节点信息和第一级存储子模块信息;基于所述第一层数据,从所述参数服务器节点的非易失性内存中获取所存储的第二层数据中的每个第一级存储子模块头信息,其中,所述第二层数据包括M个第一级存储子模块头信息和M个第一级存储子模块哈希映射信息,所述第二层数据用于查询该参数服务器节点的各个第一级存储子模块中存储的模型参数,其中,M为该参数服务器节点上存储的第一级存储子模块的数量;基于每个第一级存储子模块头信息,遍历所述第二层数据中的每个第一级存储子模块哈希映射信息,以恢复所述参数服务器节点上存储的模型参数。
可选地,所述第一层数据可被存储在所述参数服务器节点的非易失性内存中的固定位置处;其中,从所述参数服务器节点的非易失性内存中获取所存储的第一层数据,可包括:从所述参数服务器节点的非易失性内存中的固定位置处读取所述第一层数据。
可选地,所述参数服务器节点头信息可包括参数服务器节点ID和第一级存储子模块ID列表;所述第一级存储子模块头信息可包括该第一级存储子模块ID、该第一级存储子模块存储的模型参数的版本信息、以及该第一级存储子模块的指向下一级哈希映射的指针。
可选地,第一级存储子模块ID列表中包括的第一级存储子模块ID可由模型ID和对应模型中的第一级存储子模块ID组成。
可选地,基于所述第一层数据,从所述参数服务器节点的非易失性内存中获取所存储的第二层数据中的每个第一级存储子模块头信息,可包括:基于第一级存储子模块ID列表,确定所述参数服务器节点的所有第一级存储子模块ID;基于所述参数服务器节点的所有第一级存储子模块ID中的每个第一级存储子模块ID,获取具有相应第一级存储子模块ID的第一级存储子模块头信息。
可选地,所述第一级存储子模块哈希映射信息可包括该第一级存储子模块下的各个从第二级至第N级存储子模块中每一级存储子模块的哈希映射、以及该第一级存储子模块下的各个第N级存储子模块下的模型参数哈希映射,其中,N为模型参数被划分的存储子模块的级数;其中,每一级存储子模块的哈希映射的键可为该级存储子模块的ID,值可为指向下一级哈希映射的指针,模型参数哈希映射的键可为参数名,值可为参数值,每一级存储子模块的哈希映射和模型参数哈希映射可通过该级存储子模块或该模型参数的上一级存储子模块相应的指针指向下一级哈希映射的链接。
可选地,所述基于每个第一级存储子模块头信息,遍历所述第二层数据中的每个第一级存储子模块哈希映射信息,以恢复所述参数服务器节点上存储的模型参数,可包括:针对每个第一级存储子模块执行以下操作:通过上一级存储子模块相应的指向下一级哈希映射的指针搜索下一级哈希映射,直到搜索到模型参数哈希映射;基于模型参数哈希映射,恢复模型参数。
可选地,在模型参数被划分为一级存储子模块的情况下:每个第一级存储子模块哈希映射信息可包括该第一级存储子模块下的模型参数哈希映射,其中,第一级存储子模块头信息中的指向下一级哈希映射的指针可为指向模型参数哈希映射的指针;其中,所述通过上一级存储子模块相应的指向下一级哈希映射的指针搜索下一级哈希映射,直到搜索到模型参数哈希映射,可包括:通过第一级存储子模块头信息中的指向模型参数哈希映射的指针,搜索模型参数哈希映射。
可选地,在模型参数被划分为两级存储子模块的情况下:每个第一级存储子模块哈希映射信息可包括第一级存储子模块下的各个第二级存储子模块的哈希映射以及该第一级存储子模块下的各个第二级存储子模块的模型参数哈希映射,其中,第一级存储子模块头信息中的指向下一级哈希映射的指针可为指向第二级存储子模块的哈希映射的指针,每个第二级存储子模块的哈希映射的键可为该第二级存储子模块ID,值为指向该第二级存储子模块下的模型参数哈希映射的指针;其中,所述通过上一级存储子模块相应的指向下一级哈希映射的指针搜索下一级哈希映射,直到搜索到模型参数哈希映射,可包括:通过第一级存储子模块头信息中的指向第二级存储子模块哈希映射的指针,搜索第二级存储子模块的哈希映射;通过第二级存储子模块的哈希映射中的指向模型参数哈希映射的指针,搜索模型参数哈希映射。
可选地,所述恢复方法还可包括:在所述第一级存储子模块头信息中的模型参数版本信息与存储在所述参数服务器集群的元数据节点上的模型参数版本信息一致的情况下,执行所述恢复的步骤;在所述第一级存储子模块头信息中的模型参数版本信息与存储在所述参数服务器集群的元数据节点上的模型参数版本信息不一致的情况下,不执行所述恢复的步骤,而从后端存储系统中拉取最新版本的模型参数,并插入所述参数服务器节点;其中,所述参数服务器集群的元数据节点存储模型参数的最新版本号,所述后端存储系统存储最新版本的模型参数。
可选地,所述非易失性内存可包括STT-RAM、PCM、ReRAM和3DxPoint中的至少一个。
根据本公开的另一方面,提供一种参数服务器节点的恢复系统,其中,所述参数服务器节点是参数服务器集群中的一个节点,且所述参数服务器节点是基于非易失性内存的参数服务器节点,所述参数服务器节点的非易失性内存中存储的每个模型的模型参数在逻辑上被划分为至少一级存储子模块,所述恢复装置包括:第一获取装置,被配置为:在所述参数服务器节点重启后,从所述参数服务器节点的非易失性内存中获取所存储的第一层数据,其中,第一层数据包括参数服务器节点头信息,用于查询所述参数服务器节点的节点信息和第一级存储子模块信息;第二获取装置,被配置为:基于所述第一层数据,从所述参数服务器节点的非易失性内存中获取所存储的第二层数据中的每个第一级存储子模块头信息,其中,所述第二层数据包括M个第一级存储子模块头信息和M个第一级存储子模块哈希映射信息,所述第二层数据用于查询该参数服务器节点的各个第一级存储子模块中存储的模型参数,其中,M为该参数服务器节点上存储的第一级存储子模块的数量;恢复装置,被配置为:基于每个第一级存储子模块头信息,遍历所述第二层数据中的每个第一级存储子模块哈希映射信息,以恢复所述参数服务器节点上存储的模型参数。
可选地,所述第一层数据可被存储在所述参数服务器节点的非易失性内存中的固定位置处;其中,第一获取装置可被配置为:从所述参数服务器节点的非易失性内存中的固定位置处读取所述第一层数据。
可选地,所述参数服务器节点头信息可包括参数服务器节点ID和第一级存储子模块ID列表;所述第一级存储子模块头信息可包括该第一级存储子模块ID、该第一级存储子模块存储的模型参数的版本信息、以及该第一级存储子模块的指向下一级哈希映射的指针。
可选地,第一级存储子模块ID列表中包括的第一级存储子模块ID由模型ID和对应模型中的第一级存储子模块ID组成。
可选地,第二获取装置可被配置为:基于第一级存储子模块ID列表,确定所述参数服务器节点的所有第一级存储子模块ID;基于所述参数服务器节点的所有第一级存储子模块ID中的每个第一级存储子模块ID,获取具有相应第一级存储子模块ID的第一级存储子模块头信息。
可选地,所述第一级存储子模块哈希映射信息可包括该第一级存储子模块下的各个从第二级至第N级存储子模块中每一级存储子模块的哈希映射、以及该第一级存储子模块下的各个第N级存储子模块下的模型参数哈希映射,其中,N为模型参数被划分的存储子模块的级数;其中,每一级存储子模块的哈希映射的键可为该级存储子模块的ID,值可为指向下一级哈希映射的指针,模型参数哈希映射的键可为参数名,值可为参数值,每一级存储子模块的哈希映射和模型参数哈希映射可通过该级存储子模块或该模型参数的上一级存储子模块相应的指向下一级哈希映射的指针链接。
可选地,恢复装置可被配置为:针对每个第一级存储子模块执行以下操作:通过上一级存储子模块相应的指向下一级哈希映射的指针搜索下一级哈希映射,直到搜索到模型参数哈希映射;基于模型参数哈希映射,恢复模型参数。
可选地,在模型参数被划分为一级存储子模块的情况下:每个第一级存储子模块哈希映射信息可包括该第一级存储子模块下的模型参数哈希映射,其中,第一级存储子模块头信息中的指向下一级哈希映射的指针为指向模型参数哈希映射的指针;其中,恢复装置可被配置为:通过第一级存储子模块头信息中的指向模型参数哈希映射的指针,搜索模型参数哈希映射。
可选地,在模型参数被划分为两级存储子模块的情况下:每个第一级存储子模块哈希映射信息可包括第一级存储子模块下的各个第二级存储子模块的哈希映射以及该第一级存储子模块下的各个第二级存储子模块的模型参数哈希映射,其中,第一级存储子模块头信息中的指向下一级哈希映射的指针可为指向第二级存储子模块的哈希映射的指针,每个第二级存储子模块的哈希映射的键可为该第二级存储子模块ID,值可为指向该第二级存储子模块下的模型参数哈希映射的指针;其中,恢复装置可被配置为:通过第一级存储子模块头信息中的指向第二级存储子模块哈希映射的指针,搜索第二级存储子模块的哈希映射;通过第二级存储子模块的哈希映射中的指向模型参数哈希映射的指针,搜索模型参数哈希映射。
可选地,恢复装置还可被配置为:在所述第一级存储子模块头信息中的模型参数版本信息与存储在所述参数服务器集群的元数据节点上的模型参数版本信息一致的情况下,执行所述恢复的步骤;在所述第一级存储子模块头信息中的模型参数版本信息与存储在所述参数服务器集群的元数据节点上的模型参数版本信息不一致的情况下,不执行所述恢复的步骤,而从后端存储系统中拉取最新版本的模型参数,并插入所述参数服务器节点;其中,所述参数服务器集群的元数据节点存储模型参数的最新版本号,所述后端存储系统存储最新版本的模型参数。
可选地,所述非易失性内存可包括STT-RAM、PCM、ReRAM和3DxPoint中的至少一个。
根据本公开的另一方面,提供一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行根据本公开的参数服务器节点的恢复方法。
根据本公开的另一方面,提供一种包括至少一个计算装置和至少一个存储指令的存储装置的系统,其中,所述指令在被所述至少一个计算装置运行时,促使所述至少一个计算装置执行根据本公开的参数服务器节点的恢复方法。
根据本公开的参数服务器节点的恢复方法和系统,将模型参数存储在基于非易失性内存的参数服务器上,来代替基于DRAM的参数服务器,大大降低了硬件成本。此外,针对基于非易失性内存的参数服务器,设计了模型参数逻辑存储结构和数据物理存储结构,将模型参数在逻辑上分级存储,在非易失性内存上将数据分为两层存储,满足参数服务器的高并发、高可用需求。并且设计重启后的快速恢复流程,根据两层存储的数据结构,可轻松快速地查询并恢复参数服务器节点上存储的所有参数,实现毫秒级恢复的效果。
附图说明
通过结合附图,从实施例的下面描述中,本公开这些和/或其它方面及优点将会变得清楚,并且更易于理解,其中:
图1是示出现有的参数服务器集群架构的示意图。
图2是示出现有的参数服务器集群的节点故障的示意图。
图3是示出根据本公开的示例性实施例的模型参数的存储方法的流程图。
图4是示出根据本公开的示例性实施例的模型参数逻辑存储结构的示意图。
图5是示出根据本公开的示例性实施例的参数服务器节点的数据物理存储结构的示意图。
图6是示出根据本公开的另一示例性实施例的参数服务器节点的数据物理存储结构的示意图。
图7是示出根据本公开的另一示例性实施例的参数服务器节点的数据物理存储结构的示意图。
图8是示出根据本公开的示例性实施例的参数服务器节点的恢复方法的流程图。
图9是示出根据本公开的示例性实施例的参数服务器节点的恢复方法的流程图。
图10是示出根据本公开的示例性实施例的模型参数的存储系统的框图。
图11是示出根据本公开的示例性实施例的参数服务器节点的恢复系统的框图。
具体实施方式
提供参照附图的以下描述以帮助对由权利要求及其等同物限定的本公开的实施例的全面理解。包括各种特定细节以帮助理解,但这些细节仅被视为是示例性的。因此,本领域的普通技术人员将认识到在不脱离本公开的范围和精神的情况下,可对描述于此的实施例进行各种改变和修改。此外,为了清楚和简洁,省略对公知的功能和结构的描述。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
大数据和AI时代给很多应用比如推荐系统、信用卡反欺诈等带来的空前的挑战和机遇。这一类AI应用有两个特点。第一个特点是模型超高维度。模型的每一个维度对应一个参数,一个能处理海量数据的模型,维度可以达到上亿维甚至十亿维级别。这也意味着我们需要为每个模型存储上亿甚至十亿个参数。所以我们需要用线上参数服务器去存储这些参数。第二个特点是实时性。以反欺诈为例,从用户刷卡行为产生,到最后的模型给出预测结果往往需要在几个毫秒内完成。高实时性的要求也注定了我们需要把海量的模型参数存储在高速的DRAM内存当中。此外,由于参数服务器集群中的单台机器有可能存在单点故障,而线上服务要求7*24小时不中断,所以同一份数据,我们需要做多副本的数据冗余来保证数据安全性。图1是示出现有的参数服务器集群架构的示意图,如图1所示,模型1(Model 1)的存储子模块Storage3,相同的内容可准备三个副本分别存储在三台服务器节点(PS Node1、PS Node 2、PS Node 3)上,这可以保证某一台或者某两台服务器故障下线后,线上服务依然可以进行。多副本另外一个好处是多个线上副本可以分摊访问压力,从而提高整体参数服务器的访问带宽。
然而,传统的基于DRAM的参数服务器在部署过程中有两个痛点。第一是巨大的内存消耗带来的整体硬件成本的提升。现在单根DRAM的容量有限,一般16G,或32G,这也就造成参数服务器因为满足内存需求需要多台机器的集群去存储模型的参数。与此同时,前面提到的多副本机制更加重了内存的开销和成本。第二个痛点也是所有基于DRAM内存系统的痛点,当参数服务器集群中任意节点故障下线后,需要重启节点,并从HDFS(Hadoop分布式文件系统)中提取参数数据并重新存储到新节点的DRAM中。这个恢复过程非常耗时。具体地说,传统的基于DRAM的参数服务器,所有参数都存储在DRAM中,并在后端慢存储系统(如HDFS)中备份数据。当基于DRAM的参数服务器宕机重启后,DRAM中所有的数据都会丢失。基于DRAM的参数服务器节点恢复需要:1、从慢存储HDFS的磁盘里读出所有参数,2、把这些参数通过网络传输到重启的参数服务器节点,3、把所有的参数在DRAM中重新建立数据结构,并把这些参数插入DRAM中的HashMap(哈希映射)数据结构中。特别是当参数维度上亿维甚至万亿维,上面的每一步都非常费时间。然而,长恢复时间对于参数服务器集群有很明显的一个缺点。图2是示出现有的参数服务器集群的节点故障的示意图。如图2所示,参数服务器用多副本分摊系统的访问压力。这也意味着当有节点(PS Node 2)下线恢复时,系统的整体吞吐也会随之下降,而系统恢复的时间越长也就意味着系统整体吞吐下降的时间越长。
为了解决上述现有参数服务器集群存在的问题,本公开提出了一种新颖的模型参数存储方法和一种颖性的参数服务器节点的恢复方法。具体地说,本公开提出可使用非易失性内存(Non-volatile Memory,NVM)来代替DRAM,实现在基于非易失性内存的参数服务器节点上存储模型参数的方法,并且非易失性给参数服务器节点的快速恢复带来了可能性。这是因为,基于非易失性内存的参数服务器节点,重启后所有参数不会丢失,仍然保存在非易失性内存中,因此,上述的3步恢复流程都可省去。此外,基于非易失性内存的数据写入时使用CPU指令保证参数一定在非易失性内存上不会丢失,因此,在恢复过程中,只需要在非易失性内存上做简单的数据结构检查和/或版本检查,就可马上恢复并上线提供服务。这里,NVM泛指可在断电情况下存储数据的内存,可使用新一代NVM(例如,STT-RAM、PCM、ReRAM、3D xPoint等),新一代NVM与第一代NVM(例如,Flash Memory)相比的优点在于:(1)性能大幅提升,更接近用于计算机主存的DRAM;(2)摆脱访问时由于物理特性限制必须要以一个固定大小字节数的倍数(如Flash通常为4KB(4*1024字节)寻址,可按单字节寻址(Byte-addressable)。例如,持久化内存设备(Persistent Memory,PMEM)是一种3D xPoint产品,与传统的DRAM相比,PMEM具有更大的容量和更低价格成本,正好可满足参数服务器集群的高内存使用的需求。因此,一种实现方式可以是将模型参数分布式地存储到由基于PMEM的参数服务器节点构成的参数服务器集群中。
为了实现上述方法,本公开提出了一种在基于非易失性内存的参数服务器节点中的非易失性内存中,模型参数的存储结构。具体地说,可将每个参数服务器节点上存储的每个模型对应的模型参数在逻辑上划分为至少一级存储子模块。当模型参数在逻辑上划分为两级或两级以上的存储子模块时,相邻的上一级存储子模块包括至少一个下一级存储子模块。对模型参数进行分级存储,有利于模型参数的管理和查询,满足高并发访问等需求,更有利于参数服务器节点恢复时对模型参数的遍历查询。此外,本公开还提出一种全新的数据组织形式,具体地说,在基于非易失性内存的参数服务器节点中的非易失性内存中,将数据分为两层存储,第一层数据可记录单个参数服务器节点的ID信息以及该参数服务器节点上所有的第一级存储子模块的ID信息。第二层数据可针对每个第一级存储子模块分别用哈希映射(HashMap)去存储具体的模型参数。此外,第二层数据还包括了第一级存储子模块头信息用于快速恢复时查询使用。此外,本公开还提出一种全新的恢复流程,当参数服务器节点重启时,可根据存储在非易失性内存中的第一层数据和第二层数据,能够快速遍历参数服务器节点中存储的各级存储子模块,从而快速恢复参数服务器节点中存储的所有模型参数,能够实现基于非易失性内存的参数服务器节点的毫秒级恢复。下面将参照图3至图11来具体描述根据本公开的模型参数存储方法和系统以及参数服务器节点的恢复方法和系统。
图3是示出根据本公开的示例性实施例的模型参数的存储方法的流程图。
参照图3,在步骤301,可获取至少一个模型的模型参数。模型可以是具有高维度的AI模型,例如,推荐模型、信用卡反欺诈模型等。可将海量的历史数据放入离线训练系统中,对AI模型进行训练,并将训练好的AI模型部署到线上推理系统中进行使用。AI模型的每一个维度对应一个参数,一个能处理海量数据的AI模型,维度可以达到上亿维甚至十亿维级别,因此每个模型可能存储上亿甚至十亿个参数。这里的模型参数可以是指训练前或训练过程中的参数,还可以是指训练完成后的参数。
在步骤302,可将所述至少一个模型的模型参数存储到参数服务器集群中,其中,所述参数服务器集群包括多个基于非易失性内存的参数服务器节点。这里,参数服务器集群可以是用于训练的离线参数服务器集群,也可以是用于推理的线上参数服务器集群。
根据本公开的示例性实施例,可将所述至少一个模型中的每个模型的模型参数均分布式地存储到所述多个基于非易失性内存的参数服务器节点的非易失性内存中;针对每个基于非易失性内存的参数服务器节点,将该参数服务器节点上存储的每个模型对应的模型参数在逻辑上划分为至少一级存储子模块以进行存储。例如,可将所述至少一个模型中的每个模型的模型参数在逻辑上划分成多个存储模块(例如,下述的第一级存储子模块),将划分出的存储模块分布式地存储到所述多个基于非易失性内存的参数服务器节点的非易失性内存中。此外,在每个基于非易失性内存的参数服务器节点的非易失性内存中,还可将各个存储模块进一步划分成至少一级的存储子模块(例如,下述的第二级存储子模块、第三级存储子模块等)。
图4是示出根据本公开的示例性实施例的模型参数逻辑存储结构的示意图。如图4所示,仅示例性地示出参数服务器集群中的一个参数服务器节点(即,PS Node X)上的模型参数存储结构,其它参数服务器节点可以以相同或相似的方式来存储模型参数。每个模型逻辑上可被分成多个存储子模块(例如,Storage),这些存储子模块可被哈希分配到多个参数服务器节点上。一个参数服务器节点存储的多个存储子模块可属于不同模型,例如,图4中的Storage 1和Storage 3属于模型1(Model 1),Storage 24属于模型2(Model 2)。对于一个Storage存储子模块,还可划分为多个下一级存储子模块(例如,Shard),每个Shard负责存储具体的模型参数,模型参数会以“参数名”+“参数值”的键值对存在Shard中,而每个Shard只会存储模型的一部分参数以分担负载。图4仅示出模型参数在逻辑上被划分为两级存储子模块(Storage和Shard)进行存储,但本公开不限于此,根据本公开,模型参数在逻辑上被划分为任何级的存储子模块。例如,模型参数在逻辑上可仅被划分为一级存储子模块(例如Storage),在每个Storage下存储具体模型参数,或者,模型参数在逻辑上可被划分为三级存储子模块,即,在Storage和Shard之后,在每个Shard中还可划分为多个第三级存储子模块,在每个第三级存储子模块中存储具体的模型参数,以此类推。
返回参照图3,根据本公开的示例性实施例,可在每个基于非易失性内存的参数服务器节点的非易性内存中,存储第一层数据和第二层数据。
例如,图5是示出根据本公开的示例性实施例的参数服务器节点的数据物理存储结构的示意图。参照图5,在参数服务器节点的非易失性内存上,会分两层数据存储,如图5所示的第一层和第二层)。对于一个参数服务器节点来说,在第一层数据中可具有一个存储,用于存储当前节点的信息,在第二层数据中可具有M个存储,分别用于存储M个第一级存储子模块的具体信息。下面将详细描述根据本公开的示例性实施例的第一层数据和第二层数据。
根据本公开的示例性实施例,在第一层数据中,可存储参数服务器节点头信息,用于查询该参数服务器节点的节点信息和第一级存储子模块信息。
节点信息可以是参数服务器节点的ID信息(Node ID),参数服务器集群内部会给每一个参数服务器分配一个ID,且ID是唯一的。因此,获取参数服务器节点的ID信息就可确定其是参数服务器集群中的哪个参数服务器节点。
此外,第一级存储子模块信息可以是参数服务器节点上存储的所有第一级存储子模块(Storage)的ID信息列表(Storage ID List)。根据本公开的示例性实施例,存储子模块的ID(例如,Storage ID,Shard ID)是针对每个模型编号的,例如,对于模型1会有模型1的S1R1(Storage 1,Shard 1)、S1R2、S2R1、S2R2…,对于模型2也会有模型2的S1R1、S1R2、S2R1、S2R2…。因此,为了区分模型之间的存储子模块,第一级存储子模块ID列表中包括的第一级存储子模块ID可由模型ID和对应模型中的第一级存储子模块ID组成,例如,第一级存储子模块ID列表可包括Model 1Storage 0、Model 1Storage 3、Model 2Storage 1…。此外,第一级存储子模块ID列表可在第一层数据中以持久化列表(persistent list)的形式存储,这样可保证模型参数都可插入到非易失性内存中。
根据本公开的示例性实施例,第一层数据(即,参数服务器节点头信息)作为整个基于非易性内存的参数服务器节点的存储的根,可存储在参数服务器节点的非易失性内存中的固定位置,以方便参数服务器节点执行快速恢复时查询。
根据本公开的示例性实施例,在第二层数据中,可存储M个第一级存储子模块头信息和M个第一级存储子模块哈希映射(HashMap)信息。第二层数据可用于查询该参数服务器节点的各个第一级存储子模块中存储的模型参数。例如,对于每个第一级存储子模块,可在第二层数据存储中新创建对应的非易失性内存的存储池进行单独存储。
根据本公开的示例性实施例,第一级存储子模块头信息(Storage Head)可分配三个空间,分别用于存放该第一级存储子模块ID(Storage ID)、该第一级存储子模块存储的模型参数的版本信息(Version)、该第一级存储子模块的指向下一级哈希映射的指针(Shard HashMap Pointer)。如图5所示,第一级存储子模块(Storage)的下一级是第二级存储子模块(Shard),因此,第一级存储子模块头信息中的指向下一级哈希映射的指针可以是Shard HashMap Pointer,但本公开不限于此。例如,当第一级存储子模块(Storage)的下一级是模型参数本身时,第一级存储子模块头信息中的指向下一级哈希映射的指针可以是指向模型参数哈希映射的指针(例如,Para HashMap Point)。
根据本公开的示例性实施例,第一级存储子模块哈希映射信息可包括该第一级存储子模块下的各个从第二级至第N级存储子模块中每一级存储子模块的哈希映射、以及该第一级存储子模块下的各个第N级存储子模块下的模型参数哈希映射,其中,N为模型参数被划分的存储子模块的级数。其中,每一级存储子模块的哈希映射的键为该级存储子模块的ID,值为指向下一级哈希映射的指针,模型参数哈希映射的键为参数名,值为参数值,每一级存储子模块的哈希映射和模型参数哈希映射通过该级存储子模块或该模型参数的上一级存储子模块相应的指向下一级哈希映射的指针链接。
如图5所示,模型参数被划分为二级存储子模块(Storage和Shard)进行存储。因此,第一级存储子模块哈希映射信息可包括第二级存储子模块的哈希映射(ShardHashMap)和各个第二级存储子模块下的模型参数哈希映射(Para HashMap)。在第二级存储子模块的哈希映射(Shard HashMap)中,键为第二级存储子模块ID(Shard ID),值为指向模型参数的哈希映射的指针(Para HashMap Point)。在模型参数的哈希映射(Para HashMap)中,键为参数名(Para ID),值为参数值(Value)。在第一级存储子模块头信息、二级存储子模块的哈希映射和模型参数的哈希映射之间,每一级都是通过其上一级的指向下一级哈希映射的指针链接起来的,即,第一级存储子模块头信息中的指向下一级哈希映射的指针指向第二级存储子模块哈希映射,第二级存储子模块哈希映射中的指向下一级哈希映射的指针指向模型参数的哈希映射。另外,图5仅示例性地示出一个第二级存储子模块(Shard 0)下的模型参数哈希映射,但其它第二级存储子模块下也同样具有模型参数哈希映射。当然,本公开不限于图5所示的例示。
例如,图6是示出根据本公开的另一示例性实施例的参数服务器节点的数据物理存储结构的示意图。如图6所示,当模型参数被划分为一级存储子模块(Storage)时,每个第一级存储子模块哈希映射信息包括该第一级存储子模块下的模型参数哈希映射(ParaHashMap),第一级存储子模块头信息中的指向下一级哈希映射的指针为指向模型参数哈希映射的指针(Para HashMap Point)。在第一级存储子模块头信息和模型参数哈希映射之间,是通过指向模型参数哈希映射的指针链接起来的。
又例如,图7是示出根据本公开的另一示例性实施例的参数服务器节点的数据物理存储结构的示意图。如图7所示,当模型参数被划分为三级存储子模块(Storage、Shard、Slice)时,每个第一级存储子模块哈希映射信息包括该第一级存储子模块下的各个第二级存储子模块的哈希映射(Shard HashMap)、各个第二级存储子模块下的各个第三级存储子模块的哈希映射(Slice HashMap)、以及各个第三级存储子模块下的模型参数哈希映射(Para HashMap)。第一级存储子模块头信息中的指向下一级哈希映射的指针为指向第二级存储子模块哈希映射的指针(Shard HashMap Point),第二级存储子模块哈希映射中的指向下一级哈希映射的指针为指向第三级存储子模块哈希映射的指针(Slice HashMapPoint),第三级存储子模块哈希映射中的指向下一级哈希映射的指针为指向模型参数哈希映射的指针(Para HashMap Point)。在第一级存储子模块头信息、第二级存储子模块哈希映射、第三级存储子模块哈希映射和模型参数哈希映射之间,每一级都是通过其上一级的指向下一级哈希映射的指针链接起来的,即,第一级存储子模块头信息中的指向下一级哈希映射的指针指向第二级存储子模块哈希映射,第二级存储子模块哈希映射中的指向下一级哈希映射的指针指向第三级存储子模块哈希映射,第三级存储子模块哈希映射中的指向下一级哈希映射的指针指向模型参数的哈希映射。另外,图7仅示例性地示出一个第二级存储子模块(Shard 0)下的第三级存储子模块的哈希映射和一个第三级存储子模块(Slice0)下的模型参数的哈希映射,但其它第二级存储子模块下也同样具有第三级存储子模块的哈希映射,其它第三级存储子模块下也同样具有模型参数的哈希映射。
当然,本公开不限于上述示例,模型参数可被划分为任何级的存储子模块,在模型参数被划分为任何级的存储子模块的情况下,根据上述示例的逻辑,类推地存储和构造第一层数据和第二层数据。
根据本公开的示例性实施例,可从基于非易失性内存的参数服务器集群查询所述至少一个模型中的指定模型的参数,并基于查询到的指定模型的参数提供相应的模型预估服务。可根据指定模型的参数的参数名,确定参数存储的参数服务器节点ID以及各级存储子模块ID,并根据确定的参数服务器节点ID找到参数服务器节点,并根据各级存储子模块ID,基于找到的参数服务器节点上的第二级数据,找到与参数名对应的参数值。
例如,当查询模型X下的参数时,参数查询的过程是用户提供参数名(比如,最后一层的Para0),参数服务器节点会返回Para0对应value的过程。具体地说,首先可根据参数的名称(Para0)计算哈希得到这个参数所在的Storage ID和Shard ID。例如,假设Para0=‘12345’,模型X一共有5个Storage,每个Storage有8个Shard,Para0对应的Storage ID=0(12345mod 5),Shard ID=1(12345mod 8)。当算出Storage ID后,可利用Storage ID与当前的参数服务器集群总共的参数服务器节点的数量相除取余数,得到Storage ID所在的node ID(比如服务器一共3台,Para0对应的Storage ID是0,那Storage0存储在Node 0上(0mod 3=0))。至此,通过用户提供的参数名Para0,通过三次计算得到了这个参数存储的Node ID、Storage ID和Shard ID,随后,可根据Node ID找到相应的参数据服务器节点,随后根据Storage ID找到对应的第二层数据中的对应的存储,根据该对应存储中的第一级存储子模块头信号中的指向Shard哈希映射的指针找到对应的Shard哈希映射,在对应的Shard哈希映射中,根据Shard ID找到对应的指向模型参数哈希映射的指针,根据指向模型参数哈希映射的指针找到对应的模型参数哈希映射,在模型参数哈希映射中,根据参数名Para0找到对应的参数值value。
根据本公开的示例性实施例,写参数只有在新模型上线的时候会发生。写参数的流程和查询参数的流程类似,唯一的不同有两点。第一:为了保证在上传新模型参数的过程中,老的模型参数依然可以被访问,所有新的模型参数都会插入全新的存储池中。比如,图5中的第二层存储会重新创建一个空的模型1,Storage 0new,当写新的Para0的value的时候,Para0的参数会被插入到新的Storage 0new下Shard 1下的HashMap中。当新模式所有参数都上传到参数服务器集群后,参数查询服务才会被切换到新的参数上,于此同时,后端线程开始慢慢回收旧模型参数的空间。第二点是,当新的Para0写入Storage 0new下的HashMap时,可使用CPU指令(如clflushopt+mfence)保证每次写入的参数数据都写入NVM而不是在易失性的CPU高速缓存里。
图8是示出根据本公开的示例性实施例的参数服务器节点的恢复方法的流程图。根据本公开的示例性实施例的参数服务器节点的恢复方法适应于上述参照图3所述的参数服务器节点在由于故障等原因而需要重启的情况。
参照图8,在步骤801,在参数服务器节点重启后,可从参数服务器节点的非易失性内存中获取所存储的第一层数据。如上所述,第一层数据可参数服务器节点头信息,用于查询参数服务器节点的节点信息和第一级存储子模块信息。参数服务器节点头信息可包括参数服务器节点ID和第一级存储子模块ID列表。因此,可根据参数服务器节点头中的参数服务器节点ID确定重启的参数服务器节点是参数服务器集群中的哪个参数服务器节点,并可根据参数服务器节点头中的第一级存储子模块ID列表确定重启的参数服务器节点中包括的所有第一级存储子模块。
根据本公开的示例性实施例,第一层数据可被存储在所述参数服务器节点的非易失性内存中的固定位置处。因此,可从参数服务器节点的非易失性内存中的固定位置处读取第一层数据。这样有利于在参数服务器节点重启后,能快速从参数服务器节点中查询该参数服务器节点的存储信息。
根据本公开的示例性实施例,第一级存储子模块ID列表中包括的第一级存储子模块ID可由模型ID和对应模型中的第一级存储子模块ID组成。
在步骤802,可基于第一层数据,从参数服务器节点的非易失性内存中获取所存储的第二层数据中的每个第一级存储子模块头信息。如上所述,第二层数据可M个第一级存储子模块头信息和M个第一级存储子模块哈希映射信息,第二层数据用于查询该参数服务器节点的各个第一级存储子模块中存储的模型参数,其中,M为该参数服务器节点上存储的第一级存储子模块的数量。
根据本公开的示例性实施例,第一级存储子模块头信息可包括该第一级存储子模块ID、该第一级存储子模块存储的模型参数的版本信息、以及该第一级存储子模块的指向下一级哈希映射的指针。因此,在获取第一数据后,可基于第一级存储子模块ID列表,确定参数服务器节点的所有第一级存储子模块ID,随后基于参数服务器节点的所有第一级存储子模块ID中的每个第一级存储子模块ID,获取具有相应第一级存储子模块ID的第一级存储子模块头信息。因此,可获得参数服务器节点上存储的所有(M个)第一级存储子模块的各自的第一级存储子模块头信息。
根据本公开的示例性实施例,所有(M个)第一级存储子模块也具有各自的第一级存储子模块哈希映射信息。每个第一级存储子模块可基于其第一级存储子模块头信息中的指向下一级哈希映射的指针与其第一级存储子模块哈希映射信息相关联。每个第一级存储子模块哈希映射信息可包括该第一级存储子模块下的各个从第二级至第N级存储子模块中每一级存储子模块的哈希映射、以及该第一级存储子模块下的各个第N级存储子模块下的模型参数哈希映射,其中,N为模型参数被划分的存储子模块的级数。每一级存储子模块的哈希映射的键为该级存储子模块的ID,值为指向下一级哈希映射的指针。模型参数哈希映射的键为参数名,值为参数值。每一级存储子模块的哈希映射和模型参数哈希映射通过该级存储子模块或该模型参数的上一级存储子模块相应的指向下一级哈希映射的指针链接,例如,如图5至图7所示。
在步骤803,可基于每个第一级存储子模块头信息,遍历第二层数据中的每个第一级存储子模块哈希映射信息,以恢复参数服务器节点上存储的模型参数。
根据本公开的示例性实施例,可针对每个第一级存储子模块执行以下操作:通过上一级存储子模块相应的指向下一级哈希映射的指针搜索下一级哈希映射,直到搜索到模型参数哈希映射;基于模型参数哈希映射,恢复模型参数。
例如,如图5所示,在模型参数被划分为两级存储子模块的情况下,每个第一级存储子模块哈希映射信息包括第一级存储子模块下的各个第二级存储子模块的哈希映射(Shard HashMap)以及该第一级存储子模块下的各个第二级存储子模块的模型参数哈希映射(Para HashMap),其中,第一级存储子模块头信息中的指向下一级哈希映射的指针为指向第二级存储子模块的哈希映射的指针(Shard HashMap Point),每个第二级存储子模块的哈希映射的键为该第二级存储子模块ID(Shard ID),值为指向该第二级存储子模块下的模型参数哈希映射的指针(Para HashMap Point)。当执行恢复时,针对每个第一级存储子模块,可通过第一级存储子模块头信息中的指向指向第二级存储子模块哈希映射的指针(Shard HashMap Point),搜索第二级存储子模块的哈希映射(Shard HashMap)。对此,可检查第二级存储子模块的哈希映射数据是否完整,并恢复第二级存储子模块的哈希映射的所有数据。随后,可根据第二级存储子模块的哈希映射的所有第二级存储子模块的指向模型参数哈希映射的指针,搜索所有第二级存储子模块下的模型参数哈希映射,从而恢复所有第二级存储子模块下的模型参数。
又例如,如图6所示,在模型参数被划分为一级存储子模块的情况下,每个第一级存储子模块哈希映射信息包括该第一级存储子模块下的模型参数哈希映射(ParaHashMap),其中,第一级存储子模块头信息中的指向下一级哈希映射的指针为指向模型参数哈希映射的指针(Para HashMap Point)。当执行恢复时,针对每个第一级存储子模块,可通过第一级存储子模块头信息中的指向模型参数哈希映射的指针(Para HashMap Point),搜索模型参数哈希映射(Para HashMap),从而恢复每个第一级存储子模块下的模型参数。
又例如,图7所示,在模型参数被划分为三级存储子模块的情况下,每个第一级存储子模块哈希映射信息包括该第一级存储子模块下的各个第二级存储子模块的哈希映射(Shard HashMap)、各个第二级存储子模块下的各个第三级存储子模块的哈希映射(SliceHashMap)、以及各个第三级存储子模块下的模型参数哈希映射(Para HashMap)。第一级存储子模块头信息中的指向下一级哈希映射的指针为指向第二级存储子模块哈希映射的指针(Shard HashMap Point),第二级存储子模块哈希映射中的指向下一级哈希映射的指针为指向第三级存储子模块哈希映射的指针(Slice HashMap Point),第三级存储子模块哈希映射中的指向下一级哈希映射的指针为指向模型参数哈希映射的指针(Para HashMapPoint)。在执行恢复时,针对每个第一级存储子模块,可通过第一级存储子模块头信息中的指向第二级存储子模块哈希映射的指针(Shard HashMap Point),搜索第二级存储子模块的哈希映射(Shard HashMap)。对此,可检查第二级存储子模块的哈希映射数据是否完整,并恢复第二级存储子模块的哈希映射的所有数据。随后,可根据第二级存储子模块的哈希映射的所有第二级存储子模块的指向第三级存储子模块哈希映射的指针(Slice HashMapPoint),搜索所有第二级存储子模块下的各个第三级存储子模块的哈希映射。对此,可检查所有第三级存储子模块的哈希映射数据是否完整,并恢复所有第三级存储子模块的哈希映射的所有数据。随后,可根据每个第三级存储子模块的哈希映射中的指向模型参数哈希映射的指针,搜索模型参数哈希映射,从而恢复所有第三级存储子模块下的模型参数。
当然,本公开不限于上述示例,模型参数可被划分为任何级的存储子模块,在模型参数被划分为任何级的存储子模块的情况下,恢复流程可根据上述示例的逻辑,类推地执行模型参数的恢复。
此外,根据本公开的另一示例性实施例,当参数服务器节点损坏严重,修复时间较长时,在参数服务器节点重启后,存在参数服务器节点中存储的模型参数已过时情况。因此,当获取到第二层数据中的第一级存储子模块头信息中的模型参数版本信息时,可基于模型参数版本信息确定在参数服务器节点中存储的模型参数是否是最新版本,根据确定的结果再决定是否执行恢复。
例如,图9是示出根据本公开的示例性实施例的参数服务器节点的恢复方法的流程图。
参照图9,图9中的步骤901和902与图8中的801和802执行相同的操作,因此在此不再赘述。
在步骤902获取到第二层数据中的每个第一级存储子模块头信息之后,可根据第一级存储子模块头信息中的版本信息与存储在参数服务器集群元数据节点上的第一级存储子模块最新的版本信息进行比对。这里,参数服务器集群元数据节点是存储参数服务器集群的一个全局元数据信息的服务器,比如zoomkeeper。在参数服务器集群中,可将每个模型所有第一级存储子模块对应最新的版本号记录在元数据节点中。当第一级存储子模块的模型参数被更新,该第一级存储子模块的版本会在元数据节点上加1。每次有参数服务器节点重启后,都可以去检查当前第一级存储子模块最新的版本。当元数据节点上存储的版本号比重启的参数服务器节点上的版本号更新,说明重启的参数服务器节点上的模型参数已过时,没有恢复的必要。当元数据节点上存储的版本号与重启的参数服务器节点上的版本号一致,说明重启的参数服务器节点上的模型参数是当前最新版本,可执行恢复。
因此,在步骤903,在第一级存储子模块头信息中的模型参数版本信息与存储在参数服务器集群的元数据节点上的模型参数版本信息一致的情况下,执行恢复,即,可参照图8描述的步骤803,在此不再赘述。
在步骤904,在第一级存储子模块头信息中的模型参数版本信息与存储在参数服务器集群的元数据节点上的模型参数版本信息不一致的情况下,不执行恢复,而从后端存储系统(例如,HDFS)中拉取最新版本的模型参数,并插入参数服务器节点。这里,后端存储系统可存储最新版本的模型参数。
图10是示出根据本公开的示例性实施例的模型参数的存储系统的框图。
参照图10,根据本公开的示例性实施例的模型参数的存储系统1000包括获取装置1001和存储装置1002。
获取装置1001可获取至少一个模型的模型参数。模型可以是具有高维度的AI模型,例如,推荐模型、信用卡反欺诈模型等。可将海量的历史数据放入离线训练系统中,对AI模型进行训练,并将训练好的AI模型部署到线上推理系统中进行使用。AI模型的每一个维度对应一个参数,一个能处理海量数据的AI模型,维度可以达到上亿维甚至十亿维级别,因此每个模型可能存储上亿甚至十亿个参数。这里的模型参数可以是指训练前或训练过程中的参数,还可以是指训练完成后的参数。
存储装置1002可将所述至少一个模型的模型参数存储到参数服务器集群中,其中,所述参数服务器集群包括多个基于非易失性内存的参数服务器节点。这里,参数服务器集群可以是用于训练的离线参数服务器集群,也可以是用于推理的线上参数服务器集群。
根据本公开的示例性实施例,存储装置1002可将所述至少一个模型中的每个模型的模型参数均分布式地存储到所述多个基于非易失性内存的参数服务器节点的非易失性内存中;针对每个基于非易失性内存的参数服务器节点,将该参数服务器节点上存储的每个模型对应的模型参数在逻辑上划分为至少一级存储子模块以进行存储。例如,存储装置1002可将所述至少一个模型中的每个模型的模型参数在逻辑上划分成多个存储模块(例如,下述的第一级存储子模块),将划分出的存储模块分布式地存储到所述多个基于非易失性内存的参数服务器节点的非易失性内存中。此外,在每个基于非易失性内存的参数服务器节点的非易失性内存中,还可将各个存储模块进一步划分成至少一级的存储子模块(例如,下述的第二级存储子模块、第三级存储子模块等)。
根据本公开的示例性实施例,存储装置1002可在每个基于非易失性内存的参数服务器节点的非易性内存中,存储第一层数据和第二层数据。在参数服务器节点的非易失性内存上,会分两层数据存储,如图5所示的第一层和第二层)。对于一个参数服务器节点来说,在第一层数据中可具有一个存储,用于存储当前节点的信息,在第二层数据中可具有M个存储,分别用于存储M个第一级存储子模块的具体信息。下面将详细描述根据本公开的示例性实施例的第一层数据和第二层数据。
根据本公开的示例性实施例,在第一层数据中,可存储参数服务器节点头信息,用于查询该参数服务器节点的节点信息和第一级存储子模块信息。
节点信息可以是参数服务器节点的ID信息,参数服务器集群内部会给每一个参数服务器分配一个ID,且ID是唯一的。因此,获取参数服务器节点的ID信息就可确定其是参数服务器集群中的哪个参数服务器节点。
此外,第一级存储子模块信息可以是参数服务器节点上存储的所有第一级存储子模块的ID信息列表。根据本公开的示例性实施例,存储子模块的ID(例如,Storage ID,Shard ID)是针对每个模型编号的,例如,对于模型1会有模型1的S1R1(Storage 1,Shard1)、S1R2、S2R1、S2R2…,对于模型2也会有模型2的S1R1、S1R2、S2R1、S2R2…。因此,为了区分模型之间的存储子模块,第一级存储子模块ID列表中包括的第一级存储子模块ID可由模型ID和对应模型中的第一级存储子模块ID组成,例如,第一级存储子模块ID列表可包括Model1Storage 0、Model 1Storage 3、Model 2Storage 1…。此外,第一级存储子模块ID列表可在第一层数据中以持久化列表(persistent list)的形式存储,这样可保证模型参数都可插入到非易失性内存中。
根据本公开的示例性实施例,第一层数据(即,参数服务器节点头信息)作为整个基于非易性内存的参数服务器节点的存储的根,存储装置1002可将第一层数据存储在参数服务器节点的非易失性内存中的固定位置,以方便参数服务器节点执行快速恢复时查询。
根据本公开的示例性实施例,在第二层数据中,可存储M个第一级存储子模块头信息和M个第一级存储子模块哈希映射(HashMap)信息。第二层数据可用于查询该参数服务器节点的各个第一级存储子模块中存储的模型参数。例如,对于每个第一级存储子模块,存储装置1002可在第二层数据存储中新创建对应的非易失性内存的存储池进行单独存储。
根据本公开的示例性实施例,如图5所示,第一级存储子模块头信息(StorageHead)可分配三个空间,分别用于存放该第一级存储子模块ID(Storage ID)、该第一级存储子模块存储的模型参数的版本信息(Version)、该第一级存储子模块的指向下一级哈希映射的指针(Shard HashMap Pointer)。第一级存储子模块(Storage)的下一级是第二级存储子模块(Shard),因此,第一级存储子模块头信息中的指向下一级哈希映射的指针可以是Shard HashMap Pointer,但本公开不限于此。例如,当第一级存储子模块(Storage)的下一级是模型参数本身时,第一级存储子模块头信息中的指向下一级哈希映射的指针可以是指向模型参数哈希映射的指针(例如,Para HashMap Point)。
根据本公开的示例性实施例,第一级存储子模块哈希映射信息可包括该第一级存储子模块下的各个从第二级至第N级存储子模块中每一级存储子模块的哈希映射、以及该第一级存储子模块下的各个第N级存储子模块下的模型参数哈希映射,其中,N为模型参数被划分的存储子模块的级数。其中,每一级存储子模块的哈希映射的键为该级存储子模块的ID,值为指向下一级哈希映射的指针,模型参数哈希映射的键为参数名,值为参数值,每一级存储子模块的哈希映射和模型参数哈希映射通过该级存储子模块或该模型参数的上一级存储子模块相应的指向下一级哈希映射的指针链接。
根据本公开的示例性实施例,存储系统1000还可包括服务装置(未示出),服务装置可从基于非易失性内存的参数服务器集群查询所述至少一个模型中的指定模型的参数,并基于查询到的指定模型的参数提供相应的模型预估服务。例如,服务装置可根据指定模型的参数的参数名,确定参数存储的参数服务器节点ID以及各级存储子模块ID,并根据确定的参数服务器节点ID找到参数服务器节点,并根据各级存储子模块ID,基于找到的参数服务器节点上的第二级数据,找到与参数名对应的参数值。
根据本公开的示例性实施例,写参数只有在新模型上线的时候会发生。写参数的流程和查询参数的流程类似,唯一的不同有两点。第一:为了保证在上传新模型参数的过程中,老的模型参数依然可以被访问,存储装置1002可将所有新的模型参数插入全新的存储池中。当新模式所有参数都上传到参数服务器集群后,参数查询服务才会被切换到新的参数上,于此同时,后端线程开始慢慢回收旧模型参数的空间。第二点是,当新的Para0写入Storage 0new下的HashMap时,存储装置1002可使用CPU指令(如clflushopt+mfence)保证每次写入的参数数据都写入NVM而不是在易失性的CPU高速缓存里。
图11是示出根据本公开的示例性实施例的参数服务器节点的恢复系统的框图。根据本公开的示例性实施例的参数服务器节点的恢复系统适应于上述参照图3所述的参数服务器节点在由于故障等原因而需要重启的情况。
参照图11,根据本公开的示例性实施例的参数服务器节点的恢复系统1100可包括第一获取装置1101、第二获取装置1102和恢复装置1103。
第一获取装置1101在参数服务器节点重启后,可从参数服务器节点的非易失性内存中获取所存储的第一层数据。如上所述,第一层数据可参数服务器节点头信息,用于查询参数服务器节点的节点信息和第一级存储子模块信息。参数服务器节点头信息可包括参数服务器节点ID和第一级存储子模块ID列表。因此,第一获取装置1101可根据参数服务器节点头中的参数服务器节点ID确定重启的参数服务器节点是参数服务器集群中的哪个参数服务器节点,并可根据参数服务器节点头中的第一级存储子模块ID列表确定重启的参数服务器节点中包括的所有第一级存储子模块。
根据本公开的示例性实施例,第一层数据可被存储在所述参数服务器节点的非易失性内存中的固定位置处。因此,第一获取装置1101可从参数服务器节点的非易失性内存中的固定位置处读取第一层数据。这样有利于在参数服务器节点重启后,能快速从参数服务器节点中查询该参数服务器节点的存储信息。
根据本公开的示例性实施例,第一级存储子模块ID列表中包括的第一级存储子模块ID可由模型ID和对应模型中的第一级存储子模块ID组成。
第二获取装置1102可基于第一层数据,从参数服务器节点的非易失性内存中获取所存储的第二层数据中的每个第一级存储子模块头信息。如上所述,第二层数据可M个第一级存储子模块头信息和M个第一级存储子模块哈希映射信息,第二层数据用于查询该参数服务器节点的各个第一级存储子模块中存储的模型参数,其中,M为该参数服务器节点上存储的第一级存储子模块的数量。
根据本公开的示例性实施例,第一级存储子模块头信息可包括该第一级存储子模块ID、该第一级存储子模块存储的模型参数的版本信息、以及该第一级存储子模块的指向下一级哈希映射的指针。因此,在获取第一数据后,第二获取装置1102可基于第一级存储子模块ID列表,确定参数服务器节点的所有第一级存储子模块ID,随后基于参数服务器节点的所有第一级存储子模块ID中的每个第一级存储子模块ID,获取具有相应第一级存储子模块ID的第一级存储子模块头信息。因此,第二获取装置1102可获得参数服务器节点上存储的所有(M个)第一级存储子模块的各自的第一级存储子模块头信息。
根据本公开的示例性实施例,所有(M个)第一级存储子模块也具有各自的第一级存储子模块哈希映射信息。每个第一级存储子模块可基于其第一级存储子模块头信息中的指向下一级哈希映射的指针与其第一级存储子模块哈希映射信息相关联。每个第一级存储子模块哈希映射信息可包括该第一级存储子模块下的各个从第二级至第N级存储子模块中每一级存储子模块的哈希映射、以及该第一级存储子模块下的各个第N级存储子模块下的模型参数哈希映射,其中,N为模型参数被划分的存储子模块的级数。每一级存储子模块的哈希映射的键为该级存储子模块的ID,值为指向下一级哈希映射的指针。模型参数哈希映射的键为参数名,值为参数值。每一级存储子模块的哈希映射和模型参数哈希映射通过该级存储子模块或该模型参数的上一级存储子模块相应的指向下一级哈希映射的指针链接,例如,如图5至图7所示。
恢复装置1103可基于每个第一级存储子模块头信息,遍历第二层数据中的每个第一级存储子模块哈希映射信息,以恢复参数服务器节点上存储的模型参数。
根据本公开的示例性实施例,恢复装置1103可针对每个第一级存储子模块执行以下操作:通过上一级存储子模块相应的指向下一级哈希映射的指针搜索下一级哈希映射,直到搜索到模型参数哈希映射;基于模型参数哈希映射,恢复模型参数。
例如,如图5所示,在模型参数被划分为两级存储子模块的情况下,每个第一级存储子模块哈希映射信息包括第一级存储子模块下的各个第二级存储子模块的哈希映射(Shard HashMap)以及该第一级存储子模块下的各个第二级存储子模块的模型参数哈希映射(Para HashMap),其中,第一级存储子模块头信息中的指向下一级哈希映射的指针为指向第二级存储子模块的哈希映射的指针(Shard HashMap Point),每个第二级存储子模块的哈希映射的键为该第二级存储子模块ID(Shard ID),值为指向该第二级存储子模块下的模型参数哈希映射的指针(Para HashMap Point)。当恢复装置1103执行恢复时,针对每个第一级存储子模块,可通过第一级存储子模块头信息中的指向第二级存储子模块哈希映射的指针(Shard HashMap Point),搜索第二级存储子模块的哈希映射(Shard HashMap)。对此,恢复装置1103可检查第二级存储子模块的哈希映射数据是否完整,并恢复第二级存储子模块的哈希映射的所有数据。随后,恢复装置1103可根据第二级存储子模块的哈希映射的所有第二级存储子模块的指向模型参数哈希映射的指针,搜索所有第二级存储子模块下的模型参数哈希映射,从而恢复所有第二级存储子模块下的模型参数。
又例如,如图6所示,在模型参数被划分为一级存储子模块的情况下,每个第一级存储子模块哈希映射信息包括该第一级存储子模块下的模型参数哈希映射(ParaHashMap),其中,第一级存储子模块头信息中的指向下一级哈希映射的指针为指向模型参数哈希映射的指针(Para HashMap Point)。当恢复装置1103执行恢复时,针对每个第一级存储子模块,可通过第一级存储子模块头信息中的指向模型参数哈希映射的指针(ParaHashMap Point),搜索模型参数哈希映射(Para HashMap),从而恢复每个第一级存储子模块下的模型参数。
又例如,图7所示,在模型参数被划分为三级存储子模块的情况下,每个第一级存储子模块哈希映射信息包括该第一级存储子模块下的各个第二级存储子模块的哈希映射(Shard HashMap)、各个第二级存储子模块下的各个第三级存储子模块的哈希映射(SliceHashMap)、以及各个第三级存储子模块下的模型参数哈希映射(Para HashMap)。第一级存储子模块头信息中的指向下一级哈希映射的指针为指向第二级存储子模块哈希映射的指针(Shard HashMap Point),第二级存储子模块哈希映射中的指向下一级哈希映射的指针为指向第三级存储子模块哈希映射的指针(Slice HashMap Point),第三级存储子模块哈希映射中的指向下一级哈希映射的指针为指向模型参数哈希映射的指针(Para HashMapPoint)。在恢复装置1103执行恢复时,针对每个第一级存储子模块,可通过第一级存储子模块头信息中的指向第二级存储子模块哈希映射的指针(Shard HashMap Point),搜索第二级存储子模块的哈希映射(Shard HashMap)。对此,恢复装置1103可检查第二级存储子模块的哈希映射数据是否完整,并恢复第二级存储子模块的哈希映射的所有数据。随后,恢复装置1103可根据第二级存储子模块的哈希映射的所有第二级存储子模块的指向第三级存储子模块哈希映射的指针(Slice HashMap Point),搜索所有第二级存储子模块下的各个第三级存储子模块的哈希映射。对此,恢复装置1103可检查所有第三级存储子模块的哈希映射数据是否完整,并恢复所有第三级存储子模块的哈希映射的所有数据。随后,恢复装置1103可根据每个第三级存储子模块的哈希映射中的指向模型参数哈希映射的指针,搜索模型参数哈希映射,从而恢复所有第三级存储子模块下的模型参数。
当然,本公开不限于上述示例,模型参数可被划分为任何级的存储子模块,在模型参数被划分为任何级的存储子模块的情况下,恢复流程可根据上述示例的逻辑,类推地执行模型参数的恢复。
此外,根据本公开的另一示例性实施例,当参数服务器节点损坏严重,修复时间较长时,在参数服务器节点重启后,存在参数服务器节点中存储的模型参数已过时情况。因此,当第二获取装置1102获取到第二层数据中的第一级存储子模块头信息中的模型参数版本信息时,恢复装置1103可基于模型参数版本信息确定在参数服务器节点中存储的模型参数是否是最新版本,根据确定的结果再决定是否执行恢复。
例如,在第二获取装置1102获取到第二层数据中的每个第一级存储子模块头信息之后,恢复装置1103可根据第一级存储子模块头信息中的版本信息与存储在参数服务器集群元数据节点上的第一级存储子模块最新的版本信息进行比对。这里,参数服务器集群元数据节点是存储参数服务器集群的一个全局元数据信息的服务器,比如zoomkeeper。在参数服务器集群中,可将每个模型所有第一级存储子模块对应最新的版本号记录在元数据节点中。当第一级存储子模块的模型参数被更新,该第一级存储子模块的版本会在元数据节点上加1。每次有参数服务器节点重启后,都可以去检查当前第一级存储子模块最新的版本。当元数据节点上存储的版本号比重启的参数服务器节点上的版本号更新,说明重启的参数服务器节点上的模型参数已过时,没有恢复的必要。当元数据节点上存储的版本号与重启的参数服务器节点上的版本号一致,说明重启的参数服务器节点上的模型参数是当前最新版本,可执行恢复。
在第一级存储子模块头信息中的模型参数版本信息与存储在参数服务器集群的元数据节点上的模型参数版本信息一致的情况下,恢复装置1103可执行恢复。
在第一级存储子模块头信息中的模型参数版本信息与存储在参数服务器集群的元数据节点上的模型参数版本信息不一致的情况下,恢复装置1103不执行恢复,而从后端存储系统(例如,HDFS)中拉取最新版本的模型参数,并插入参数服务器节点。这里,后端存储系统可存储最新版本的模型参数。
根据本公开的示例性实施例,提供了一种参数服务器集群,该参数服务器集群包括多个基于非易失性内存的参数服务器节点,该参数服务器集群用于分布式地存储至少一个模型的模型参数。所述参数服务器集群中包括的每个基于非易失性内存的参数服务器节点可具有以上参照图4所描述的模型参数逻辑存储结构,并可具有以上参照图5-7所描述的或其类似的数据物理存储结构。此外,所述参数服务器集群中包括的每个基于非易失性内存的参数服务器节点可在重启时按照如图8或图9所述描述的恢复方法进行恢复。
根据本公开的示例性实施例,非易失性内存可包括STT-RAM、PCM、ReRAM和3DxPoint中的至少一个。其中,可使用PMEM(3DxPoint产品)实现基于PMEM的参数服务器节点。
根据本公开的模型参数的存储方法和系统、参数服务器节点的恢复方法和系统、参数服务器集群,将模型参数存储在基于非易失性内存的参数服务器上,来代替基于DRAM的参数服务器,大大降低了硬件成本。此外,针对基于非易失性内存的参数服务器,设计了模型参数逻辑存储结构和数据物理存储结构,将模型参数在逻辑上分级存储,在非易失性内存上将数据分为两层存储,满足参数服务器的高并发、高可用需求。并且设计重启后的快速恢复流程,根据两层存储的数据结构,可轻松快速地查询并恢复参数服务器节点上存储的所有参数,实现毫秒级恢复的效果。
以上已参照图3至图11描述了根据本公开示例性实施例的模型参数的存储方法和系统、参数服务器节点的恢复方法和系统、参数服务器集群。
图10所示出的模型参数的存储系统和图11所示出的参数服务器节点的恢复系统中的各个装置可被配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,各个装置可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。此外,各个装置所实现的一个或多个功能也可由物理实体设备(例如,处理器、客户端或服务器等)中的组件来统一执行。
此外,参照图3所描述的模型参数的存储方法和参照图8和9描述的参数服务器节点的恢复方法可通过记录在计算机可读存储介质上的程序(或指令)来实现。例如,根据本公开的示例性实施例,可提供存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行根据本公开的模型参数的存储方法或参数服务器节点的恢复方法。
上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,应注意,计算机程序还可用于执行除了上述步骤以外的附加步骤或者在执行上述步骤时执行更为具体的处理,这些附加步骤和进一步处理的内容已经在参照图3、8、9进行相关方法的描述过程中提及,因此这里为了避免重复将不再进行赘述。
应注意,根据本公开示例性实施例的模型参数的存储系统和参数服务器节点的恢复系统中的各个装置可完全依赖计算机程序的运行来实现相应的功能,即,各个装置中的计算机程序的功能架构中与各步骤相应,使得整个系统通过专门的软件包(例如,lib库)而被调用,以实现相应的功能。
另一方面,图10和图11中的各个装置也可以通过硬件、软件、固件、中间件、微代码或其任意组合来实现。当以软件、固件、中间件或微代码实现时,用于执行相应操作的程序代码或者代码段可以存储在诸如存储介质的计算机可读介质中,使得处理器可通过读取并运行相应的程序代码或者代码段来执行相应的操作。
例如,本公开的示例性实施例还可以实现为计算装置,该计算装置包括存储部件和处理器,存储部件中存储有计算机可执行指令集合,当计算机可执行指令集合被处理器执行时,执行根据本公开的示例性实施例的模型参数的存储方法或参数服务器节点的恢复方法。
具体说来,计算装置可以部署在服务器或客户端中,也可以部署在分布式网络环境中的节点装置上。此外,计算装置可以是PC计算机、平板装置、个人数字助理、智能手机、web应用或其他能够执行上述指令集合的装置。
这里,计算装置并非必须是单个的计算装置,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。计算装置还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子装置。
在计算装置中,处理器可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
根据本公开示例性实施例的模型参数的存储方法或参数服务器节点的恢复方法中所描述的某些操作可通过软件方式来实现,某些操作可通过硬件方式来实现,此外,还可通过软硬件结合的方式来实现这些操作。
处理器可运行存储在存储部件之一中的指令或代码,其中,存储部件还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储部件可与处理器集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储部件可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储部件和处理器可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器能够读取存储在存储部件中的文件。
此外,计算装置还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。计算装置的所有组件可经由总线和/或网络而彼此连接。
根据本公开示例性实施例的模型参数的存储方法或参数服务器节点的恢复方法可被描述为各种互联或耦合的功能块或功能示图。然而,这些功能块或功能示图可被均等地集成为单个的逻辑装置或按照非确切的边界进行操作。
因此,参照图3所描述的模型参数的存储方法或参照图8或9描述的参数服务器节点的恢复方法可通过包括至少一个计算装置和至少一个存储指令的存储装置的系统来实现。
根据本公开的示例性实施例,至少一个计算装置是根据本公开示例性实施例的用于执行模型参数的存储方法或参数服务器节点的恢复方法的计算装置,存储装置中存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个计算装置执行时,执行根据本公开的模型参数的存储方法或参数服务器节点的恢复方法。
以上描述了本公开的各示例性实施例,应理解,上述描述仅是示例性的,并非穷尽性的,本公开不限于所披露的各示例性实施例。在不偏离本公开的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。因此,本公开的保护范围应该以权利要求的范围为准。
Claims (10)
1.一种参数服务器节点的恢复方法,其中,所述参数服务器节点是参数服务器集群中的一个节点,且所述参数服务器节点是基于非易失性内存的参数服务器节点,所述参数服务器节点的非易失性内存中存储的每个模型的模型参数在逻辑上被划分为至少一级存储子模块,所述恢复方法包括:
在所述参数服务器节点重启后,从所述参数服务器节点的非易失性内存中获取所存储的第一层数据,其中,第一层数据包括参数服务器节点头信息,用于查询所述参数服务器节点的节点信息和第一级存储子模块信息;
基于所述第一层数据,从所述参数服务器节点的非易失性内存中获取所存储的第二层数据中的每个第一级存储子模块头信息,其中,所述第二层数据包括M个第一级存储子模块头信息和M个第一级存储子模块哈希映射信息,所述第二层数据用于查询该参数服务器节点的各个第一级存储子模块中存储的模型参数,其中,M为该参数服务器节点上存储的第一级存储子模块的数量;
基于每个第一级存储子模块头信息,遍历所述第二层数据中的每个第一级存储子模块哈希映射信息,以恢复所述参数服务器节点上存储的模型参数。
2.如权利要求1所述的恢复方法,其中,所述第一层数据被存储在所述参数服务器节点的非易失性内存中的固定位置处;
其中,从所述参数服务器节点的非易失性内存中获取所存储的第一层数据,包括:
从所述参数服务器节点的非易失性内存中的固定位置处读取所述第一层数据。
3.如权利要求1所述的恢复方法,其中,所述参数服务器节点头信息包括参数服务器节点ID和第一级存储子模块ID列表;
所述第一级存储子模块头信息包括该第一级存储子模块ID、该第一级存储子模块存储的模型参数的版本信息、以及该第一级存储子模块的指向下一级哈希映射的指针。
4.如权利要求3所述的恢复方法,其中,第一级存储子模块ID列表中包括的第一级存储子模块ID由模型ID和对应模型中的第一级存储子模块ID组成。
5.如权利要求3所述的恢复方法,其中,基于所述第一层数据,从所述参数服务器节点的非易失性内存中获取所存储的第二层数据中的每个第一级存储子模块头信息,包括:
基于第一级存储子模块ID列表,确定所述参数服务器节点的所有第一级存储子模块ID;
基于所述参数服务器节点的所有第一级存储子模块ID中的每个第一级存储子模块ID,获取具有相应第一级存储子模块ID的第一级存储子模块头信息。
6.如权利要求3所述的恢复方法,其中,所述第一级存储子模块哈希映射信息包括该第一级存储子模块下的各个从第二级至第N级存储子模块中每一级存储子模块的哈希映射、以及该第一级存储子模块下的各个第N级存储子模块下的模型参数哈希映射,其中,N为模型参数被划分的存储子模块的级数;
其中,每一级存储子模块的哈希映射的键为该级存储子模块的ID,值为指向下一级哈希映射的指针,
模型参数哈希映射的键为参数名,值为参数值,
每一级存储子模块的哈希映射和模型参数哈希映射通过该级存储子模块或该模型参数的上一级存储子模块相应的指向下一级哈希映射的指针链接。
7.如权利要求6所述的恢复方法,其中,所述基于每个第一级存储子模块头信息,遍历所述第二层数据中的每个第一级存储子模块哈希映射信息,以恢复所述参数服务器节点上存储的模型参数,包括:
针对每个第一级存储子模块执行以下操作:
通过上一级存储子模块相应的指向下一级哈希映射的指针搜索下一级哈希映射,直到搜索到模型参数哈希映射;
基于模型参数哈希映射,恢复模型参数。
8.一种参数服务器节点的恢复系统,其中,所述参数服务器节点是参数服务器集群中的一个节点,且所述参数服务器节点是基于非易失性内存的参数服务器节点,所述参数服务器节点的非易失性内存中存储的每个模型的模型参数在逻辑上被划分为至少一级存储子模块,所述恢复装置包括:
第一获取装置,被配置为:在所述参数服务器节点重启后,从所述参数服务器节点的非易失性内存中获取所存储的第一层数据,其中,第一层数据包括参数服务器节点头信息,用于查询所述参数服务器节点的节点信息和第一级存储子模块信息;
第二获取装置,被配置为:基于所述第一层数据,从所述参数服务器节点的非易失性内存中获取所存储的第二层数据中的每个第一级存储子模块头信息,其中,所述第二层数据包括M个第一级存储子模块头信息和M个第一级存储子模块哈希映射信息,所述第二层数据用于查询该参数服务器节点的各个第一级存储子模块中存储的模型参数,其中,M为该参数服务器节点上存储的第一级存储子模块的数量;
恢复装置,被配置为:基于每个第一级存储子模块头信息,遍历所述第二层数据中的每个第一级存储子模块哈希映射信息,以恢复所述参数服务器节点上存储的模型参数。
9.一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求1至7中的任一权利要求所述的参数服务器节点的恢复方法。
10.一种包括至少一个计算装置和至少一个存储指令的存储装置的系统,其中,所述指令在被所述至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求1至7中的任一权利要求所述的参数服务器节点的恢复方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187099.2A CN112181732B (zh) | 2020-10-29 | 2020-10-29 | 参数服务器节点的恢复方法和恢复系统 |
PCT/CN2021/127609 WO2022089607A1 (zh) | 2020-10-29 | 2021-10-29 | 参数服务器节点的恢复方法和恢复系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187099.2A CN112181732B (zh) | 2020-10-29 | 2020-10-29 | 参数服务器节点的恢复方法和恢复系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112181732A true CN112181732A (zh) | 2021-01-05 |
CN112181732B CN112181732B (zh) | 2024-09-10 |
Family
ID=73916216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011187099.2A Active CN112181732B (zh) | 2020-10-29 | 2020-10-29 | 参数服务器节点的恢复方法和恢复系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112181732B (zh) |
WO (1) | WO2022089607A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022089607A1 (zh) * | 2020-10-29 | 2022-05-05 | 第四范式(北京)技术有限公司 | 参数服务器节点的恢复方法和恢复系统 |
WO2022089560A1 (zh) * | 2020-10-29 | 2022-05-05 | 第四范式(北京)技术有限公司 | 一种模型参数的存储方法和系统以及一种参数服务器集群 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779097A (zh) * | 2011-05-13 | 2012-11-14 | 上海振华重工(集团)股份有限公司 | 流程数据的内存存取方法 |
CN103456360A (zh) * | 2013-09-13 | 2013-12-18 | 北京昆腾微电子有限公司 | 非易失性存储器的管理方法和装置 |
CN105608224A (zh) * | 2016-01-13 | 2016-05-25 | 广西师范大学 | 一种提高海量数据查询性能的正交多哈希映射索引方法 |
CN110134618A (zh) * | 2018-02-02 | 2019-08-16 | 富士通株式会社 | 存储控制装置、存储控制方法和记录介质 |
CN110751275A (zh) * | 2019-08-03 | 2020-02-04 | 北京达佳互联信息技术有限公司 | 图训练系统、数据访问方法及装置、电子设备、存储介质 |
CN110968530A (zh) * | 2019-11-19 | 2020-04-07 | 华中科技大学 | 一种基于非易失性内存的键值存储系统和内存访问方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930320B2 (en) * | 2011-09-30 | 2015-01-06 | Accenture Global Services Limited | Distributed computing backup and recovery system |
CN103905540A (zh) * | 2014-03-25 | 2014-07-02 | 浪潮电子信息产业股份有限公司 | 基于两级哈希的对象存储数据分布机制 |
CN107888657B (zh) * | 2017-10-11 | 2020-11-06 | 上海交通大学 | 低延迟分布式存储系统 |
CN107862064B (zh) * | 2017-11-16 | 2021-09-10 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件系统 |
US11461203B2 (en) * | 2018-07-10 | 2022-10-04 | Here Data Technology | Systems and methods of handling node failure in a distributed data storage using multi-layer consistent hashing |
CN111641716B (zh) * | 2020-06-01 | 2023-05-02 | 第四范式(北京)技术有限公司 | 参数服务器的自愈方法、参数服务器及参数服务系统 |
CN112306682B (zh) * | 2020-10-29 | 2022-08-16 | 第四范式(北京)技术有限公司 | 一种模型参数的存储方法和系统以及一种参数服务器集群 |
CN112181732B (zh) * | 2020-10-29 | 2024-09-10 | 第四范式(北京)技术有限公司 | 参数服务器节点的恢复方法和恢复系统 |
-
2020
- 2020-10-29 CN CN202011187099.2A patent/CN112181732B/zh active Active
-
2021
- 2021-10-29 WO PCT/CN2021/127609 patent/WO2022089607A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779097A (zh) * | 2011-05-13 | 2012-11-14 | 上海振华重工(集团)股份有限公司 | 流程数据的内存存取方法 |
CN103456360A (zh) * | 2013-09-13 | 2013-12-18 | 北京昆腾微电子有限公司 | 非易失性存储器的管理方法和装置 |
CN105608224A (zh) * | 2016-01-13 | 2016-05-25 | 广西师范大学 | 一种提高海量数据查询性能的正交多哈希映射索引方法 |
CN110134618A (zh) * | 2018-02-02 | 2019-08-16 | 富士通株式会社 | 存储控制装置、存储控制方法和记录介质 |
CN110751275A (zh) * | 2019-08-03 | 2020-02-04 | 北京达佳互联信息技术有限公司 | 图训练系统、数据访问方法及装置、电子设备、存储介质 |
CN110968530A (zh) * | 2019-11-19 | 2020-04-07 | 华中科技大学 | 一种基于非易失性内存的键值存储系统和内存访问方法 |
Non-Patent Citations (1)
Title |
---|
王涛等: "基于NVM的无日志哈希表", 《计算机科学》, vol. 46, no. 9, pages 66 - 72 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022089607A1 (zh) * | 2020-10-29 | 2022-05-05 | 第四范式(北京)技术有限公司 | 参数服务器节点的恢复方法和恢复系统 |
WO2022089560A1 (zh) * | 2020-10-29 | 2022-05-05 | 第四范式(北京)技术有限公司 | 一种模型参数的存储方法和系统以及一种参数服务器集群 |
Also Published As
Publication number | Publication date |
---|---|
CN112181732B (zh) | 2024-09-10 |
WO2022089607A1 (zh) | 2022-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112306682B (zh) | 一种模型参数的存储方法和系统以及一种参数服务器集群 | |
US20220244864A1 (en) | Data management system | |
JP5539683B2 (ja) | 拡張可能な2次ストレージシステムと方法 | |
US10031675B1 (en) | Method and system for tiering data | |
CN105843551B (zh) | 高性能和大容量储存重复删除中的数据完整性和损耗电阻 | |
US11947814B2 (en) | Optimizing resiliency group formation stability | |
US12050622B2 (en) | Replicating big data | |
US10664397B2 (en) | Cache recovery method in a distributed storage system | |
CN111176584B (zh) | 一种基于混合内存的数据处理方法及装置 | |
CN112181732B (zh) | 参数服务器节点的恢复方法和恢复系统 | |
WO2019171296A1 (en) | Resilient, durable, scalable, and consistent distributed timeline data store | |
WO2015015339A1 (en) | A method for a logging process in a data storage system | |
US11194666B2 (en) | Time addressable storage in a content addressable storage system | |
CN110413694A (zh) | 元数据管理方法及相关装置 | |
CN114860745B (zh) | 基于人工智能的数据库扩展方法及相关设备 | |
US11593332B1 (en) | Destination file copying and error handling | |
CN115237336B (zh) | 用于去重系统的方法、物品和计算设备 | |
EP3264254B1 (en) | System and method for a simulation of a block storage system on an object storage system | |
US20190050455A1 (en) | Adaptive page rendering for a data management system | |
CN114896250B (zh) | 一种键值分离的键值存储引擎索引优化方法及装置 | |
US10073874B1 (en) | Updating inverted indices | |
US11593218B1 (en) | Source file copying and error handling | |
US12050549B2 (en) | Client support of multiple fingerprint formats for data file segments | |
Jamil et al. | DENKV: Addressing Design Trade-offs of Key-value Stores for Scientific Applications | |
Khan et al. | DenKv: Addressing Design Trade-offs of Key-value Stores for Scientific Applications |
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 |