一种数据存储方法、装置、存储介质及电子装置转让专利

申请号 : CN202111297326.1

文献号 : CN113742290B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 彭垚李朝光侯俊杰

申请人 : 上海闪马智能科技有限公司

摘要 :

本发明实施例提供了一种数据存储方法、装置、存储介质及电子装置,涉及数据缓存的技术领域。其装置包括:一级缓存模块,用于接收来自外部存储系统的目标数据以及对所述目标数据进行存储;二级缓存模块,用于存储来自所述一级缓存模块的所述目标数据以及所述目标访问文件;旁路系统,用于在接收到调取指令的情况下,对存储在所述二级缓存模块中的所述目标数据以及所述目标访问文件进行目标处理,以得到目标迭代数据以及目标迭代文件;系统挂载模块,用于根据所述调取指令,将存储在所述二级缓存模块的所述目标数据以及所述目标访问文件挂载到目标容器中。通过本发明,解决了数据调取效率低的问题,进而达到了提高数据调取效率的效果。

权利要求 :

1.一种数据存储装置,其特征在于,包括:一级缓存模块,用于接收来自外部存储系统的目标数据以及对所述目标数据进行存储,并在存储所述目标数据之后将所述目标数据转换为目标访问文件;

二级缓存模块,用于存储来自所述一级缓存模块的所述目标数据以及所述目标访问文件;

旁路系统,用于在接收到调取指令的情况下,对存储在所述二级缓存模块中的所述目标数据以及所述目标访问文件进行目标处理,以得到目标迭代数据以及目标迭代文件,其中,所述目标数据包括所述目标迭代数据,所述目标访问文件包括所述目标迭代文件;

系统挂载模块,用于根据所述调取指令,将存储在所述二级缓存模块的所述目标数据以及所述目标访问文件挂载到目标容器中,以在所述目标容器中执行训练处理。

2.根据权利要求1所述的装置,其特征在于,还包括:本地存储模块,用于接收目标数据以及存储所述目标数据,并根据传输指令,将所述目标数据传输至所述二级缓存模块。

3.根据权利要求1所述的装置,其特征在于,所述二级缓存模块还包括:本地缓存介质,用于存储所述二级缓存模块中的所述目标数据以及所述目标访问文件。

4.根据权利要求1所述的装置,其特征在于,还包括:访问监控模块,用于获取目标路径的受访问数据,并将所述受访问数据发送至所述旁路系统,以指示所述旁路系统基于所述受访问数据对存储在所述二级缓存模块中的所述目标数据以及所述目标访问文件进行所述目标处理。

5.根据权利要求1所述的装置,其特征在于,还包括:目标训练模块,用于根据所述调取指令,通过所述目标容器获取所述目标数据,并对所述目标数据执行训练处理,其中,所述目标训练模块位于所述目标容器中。

6.一种数据存储方法,其特征在于,包括:旁路系统获取调取指令,其中,所述调取指令用于指示调取目标数据;

所述旁路系统根据所述调取指令,对二级缓存模块执行第一调取处理,以获取所述目标数据;

在确定所述二级缓存模块不包含所述目标数据的情况下,对一级缓存模块执行第二调取处理,以将所述目标数据从所述一级缓存模块中缓存至所述二级缓存模块,其中,所述二级缓存用于存储来自一级缓存模块的所述目标数据以及目标访问文件,所述一级缓存模块用于接收来自外部存储系统的所述目标数据以及对所述目标数据进行存储,并在存储所述目标数据之后将所述目标数据转换为所述目标访问文件;

其中,在所述获取调取指令之后,所述方法还包括:系统挂载模块根据所述调取指令,将存储在所述二级缓存模块的所述目标数据以及所述目标访问文件挂载到目标容器中,以在所述目标容器中执行训练处理。

7.根据权利要求6所述的方法,其特征在于,所述旁路系统在确定所述二级缓存模块不包含所述目标数据的情况下,对一级缓存模块执行第二调取处理,以获取所述目标数据还包括:访问监控模块获取一级缓存模块的受访问数据,并将所述受访问数据发送至旁路系统;

所述旁路系统根据所述受访问数据,将所述目标数据传输至所述二级缓存模块。

8.根据权利要求7所述的方法,其特征在于,所述旁路系统根据所述受访问数据,将所述目标数据传输至所述二级缓存模块包括:获取所述二级缓存模块的剩余空间量;

在确定所述二级缓存模块的剩余空间量小于预设值的情况下,删除所述二级缓存模块中缓存的冷数据,其中,所述冷数据用于指示所述二级缓存模块中缓存的受访问次数小于阈值的数据

根据所述受访问数据,将所述目标数据传输至所述二级缓存模块。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为被处理器 运行时执行所述权利要求6至8任一项中所述的方法。

10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求6至8任一项中所述的方法。

说明书 :

一种数据存储方法、装置、存储介质及电子装置

技术领域

[0001] 本发明实施例涉及通信领域,具体而言,涉及一种数据存储方法、装置、存储介质及电子装置。

背景技术

[0002] 公有云和深度学习都是2000年后非常火热的两个技术。其中,公有云以所见即所得的方式提供了海量的计算、存储、应用资源,使得用户在初期以非常低的成本即可使用最
新的技术成果。
[0003] 深度学习技术则是由于GPU算力的迅速增长,把卷积网络的特性发挥到极致,在图像、语音识别等领域得到广泛的应用。
[0004] 得益于这两项技术,现在很多深度学习训练都部署在公有云上,且由于深度学习数据量大,管理成本高,大部分数据都存放在对象存储中。
[0005] 但是,如何在公有云环境中管理深度学习所需求的海量的训练数据(一般为PB级别的数据量),并且高效方便的给深度学习训练程序使用一直是困扰工作人员的问题。
[0006] 而当前针对上述问题并未提出有效的解决办法。

发明内容

[0007] 本发明实施例提供了一种数据存储方法、装置、存储介质及电子装置,以至少解决相关技术中数据调取效率低的问题。
[0008] 根据本发明的一个实施例,提供了一种数据存储装置,包括:
[0009] 一级缓存模块,用于接收来自外部存储系统的目标数据以及对所述目标数据进行存储,并在存储所述目标数据之后将所述目标数据转换为目标访问文件;
[0010] 二级缓存模块,用于存储来自所述一级缓存模块的所述目标数据以及所述目标访问文件;
[0011] 旁路系统,用于在接收到调取指令的情况下,对存储在所述二级缓存模块中的所述目标数据以及所述目标访问文件进行目标处理,以得到目标迭代数据以及目标迭代文
件,其中,所述目标数据包括所述目标迭代数据,所述目标访问文件包括所述目标迭代文
件;
[0012] 系统挂载模块,用于根据所述调取指令,将存储在所述二级缓存模块的所述目标数据以及所述目标访问文件挂载到目标容器中,以在所述目标容器中执行训练处理。
[0013] 在一个示例性实施例中,还包括:
[0014] 本地存储模块,用于接收目标数据以及存储所述目标数据,并根据传输指令,将所述目标数据传输至所述二级缓存模块。
[0015] 在一个示例性实施例中,所述二级缓存模块还包括:
[0016] 本地缓存介质,用于存储所述二级缓存模块中的所述目标数据以及所述目标访问文件。
[0017] 在一个示例性实施例中,还包括:
[0018] 访问监控模块,用于获取目标路径的受访问数据,并将所述受访问数据发送至所述旁路系统,以指示所述旁路系统对存储在所述二级缓存模块中的所述目标数据以及所述
目标访问文件进行目标处理。
[0019] 在一个示例性实施例中,还包括:
[0020] 目标训练模块,用于根据所述调取指令,通过所述目标容器获取所述目标数据,并对所述目标数据执行所述训练处理,其中,所述目标训练模块位于所述目标容器中。
[0021] 根据本发明的另一个实施例,提供了一种数据存储方法,包括:
[0022] 获取调取指令,其中,所述调取指令用于指示调取目标数据;
[0023] 根据所述调取指令,对二级缓存模块执行第一调取处理,以获取所述目标数据;
[0024] 在确定所述二级缓存模块不包含所述目标数据的情况下,对一级缓存模块执行第二调取处理,以将所述目标数据从所述一级缓存模块中缓存至所述二级缓存模块。
[0025] 在一个示例性实施例中,所述在确定所述二级缓存模块不包含所述目标数据的情况下,对一级缓存模块执行第二调取处理,以获取所述目标数据还包括:
[0026] 访问监控模块获取一级缓存模块的受访问数据,并将所述受访问数据发送至旁路系统;
[0027] 所述旁路系统根据所述受访问数据,将所述目标数据传输至所述二级缓存模块。
[0028] 在一个示例性实施例中,所述旁路系统根据所述受访问数据,将所述目标数据传输至所述二级缓存模块包括:
[0029] 获取所述二级缓存模块的剩余空间量;
[0030] 在确定所述二级缓存模块的剩余空间量小于预设值的情况下,删除所述二级缓存模块中缓存的冷数据,其中,所述冷数据用于指示所述二级缓存模块中缓存的受访问次数
小于阈值的数据;
[0031] 根据所述受访问数据,将所述目标数据传输至所述二级缓存模块。
[0032] 根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项
方法实施例中的步骤。
[0033] 根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项
方法实施例中的步骤。
[0034] 通过本发明,由于将目标数据以及目标访问文件存储在二级缓存模块中,使得需要使用目标数据时,可以直接从二级缓存模块中以目标访问文件的形式对目标数据进行调
用,提高了数据调用效率;另外,当数据发生变化时,可以通过旁路系统对二级缓存模块中
的数据进行目标处理,从而实现二级缓存模块中的数据迭代,从而可以保证数据调用的准
确性,因此,可以解决数据调取效率低的问题,达到提高数据调取效率的效果。

附图说明

[0035] 图1是根据本发明实施例的一种数据存储装置的结构框图;
[0036] 图2是本发明实施例的一种数据存储方法的移动终端的硬件结构框图;
[0037] 图3是根据本发明实施例的一种数据存储方法的流程图;
[0038] 图4是根据本发明具体实施例的一种数据存储装置的结构示意图;
[0039] 图5是根据本发明具体实施例的现有技术的局部结构示意图;
[0040] 图6是根据本发明具体实施例的局部结构示意图;
[0041] 图7是根据本发明具体实施例的流程示意图。

具体实施方式

[0042] 下文中将参考附图并结合实施例来详细说明本发明的实施例。
[0043] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
[0044] 在本实施例中还提供了一种数据存储装置,如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,
但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0045] 图1是根据本发明实施例的一种数据存储装置的结构框图,如图1所示,该装置包括:
[0046] 一级缓存模块11,用于接收来自外部存储系统的目标数据以及对目标数据进行存储,并在存储目标数据之后将目标数据转换为目标访问文件;
[0047] 在本实施例中,通过一级缓存模块11与外部存储系统进行数据传输是为了方便与外部存储系统进行对接,而将外部存储系统的目标数据存储在一级缓存模块中,是为了对
目标数据进行调用和后续处理,从而提高对目标数据的调用效率。
[0048] 其中,外部存储系统可以(但不限于)是公有云对象存储子系统,也可以是其它具有容量大,成本低,容易扩展等优点的对象存储;需要说明的是,本发明不限制公有云供应
商,任何主流供应商,只要实现了对象存储或标准S3接口,都可以存放海量的深度学习数据
并接入本装置中。
[0049] 目标访问文件可以是标准的POSIX文件,也可以是其它格式的文件,只要能够方便被调取识别即可。
[0050] 一级缓存模块11可以(但不限于)是虚拟文件系统,且一级缓存模块可以单独部署一个集群,也可以被管理系统所管理。
[0051] 例如,一级缓存模块11可以被Kubernetes所管理,且适配标注S3接口,并通过Kubernetes的CSI Plugin方式挂载到目标容器内,并提供类POSIX的访问接口;在本实施例
中,一级缓存模块11有三个作用:一是把对象存储访问转换维标准的POSIX文件系统访问,
这样,无需修改深度学习训练任何代码可直接使用云端对象存储数据。二是把云端数据缓
存在本地分布式集群中,后续数据访问可以直接在本地访问,加快访问速度。三是规避远端
服务器的访问控制,比如QPS(Query Per Second,每秒请求数),MPS(Master Production 
Schedule,主生产计划)等,这是因为在执行系统的深度学习过程中,需要的文件访问QPS远
超云端对象存储所能提供的范围,而本地系统的QPS远高于远端服务器系统,此时通过规避
远端服务器的访问控制,能够减少因远程访问所造成的能量消耗。
[0052] 例如,可以采用本地分布式集群支撑一级缓存,以用来缓存云端对象存储数据,从而使得本地一级缓存性能相对云端对象存储有100倍以上提升。
[0053] 目标数据可以是用于进行深度学习训练的训练数据,例如图像数据、流量数据、音频数据等,也可以是其它数据。
[0054] 需要说明的是,目标数据从海量、慢速的公有云对象存储缓存进入一级缓存系统时,数据缓存触发有两种方式:一是按需触发,即,当训练读取数据发现不在目标缓存模块
中时,由一级缓存系统主动拉取数据;二是提前触发,即一级缓存提供批量提前装载
(preload)接口,随后训练程序在启动前或启动时通过该接口批量加载训练数据到一级缓
存模块11。
[0055] 二级缓存模块12,用于存储来自一级缓存模块的目标数据以及目标访问文件;
[0056] 在本实施例中,将目标数据以及目标访问文件存储在二级缓存模块中,无需对目标数据进行格式的转换,因而能够方便对目标数据进行调取,提高了数据的调取效率;同
时,由于二级缓存模块无需对接外部存储系统,因而减少了数据转换造成的能量消耗,以及
资源消耗,提高了数据调取效率。
[0057] 其中,二级缓存模块12可以是一个本地文件系统加SSD快速介质形式的本地缓存,从而可以直接缓存云端对象存储数据,或者缓存本地一级缓存模块(本地分布式集群)数
据,并可根据资源和负载情况自由切换、组合,并根据负载和介质不同,本地二级缓存比本
地集群缓存性能可提升2‑5倍;二级缓存模块12也可以是其它类型的缓存模块;需要说明的
是,一级缓存模块和二级缓存模块可以单独配置,不互相影响,也可以联合配置,且二级缓
存模块不与其他深度学习训练共享数据,从而规避了数据访问冲突和元数据管理冲突,提
供最优的性能。
[0058] 旁路系统13,用于将存储在一级缓存模块11的目标数据以及目标访问文件传输至二级缓存模块12,并在接收到调取指令的情况下,对存储在二级缓存模块12中的目标数据
以及目标访问文件进行目标处理,以得到目标迭代数据以及目标迭代文件,其中,目标数据
包括目标迭代数据,目标访问文件包括目标迭代文件;
[0059] 在本实施例中,通过旁路系统13对目标数据和目标访问文件进行迭代,能够使二级缓存模块12中的数据被迭代成适应需求的数据,从而方便数据被快速调取,从而提高数
据的调取效率和调取精度。
[0060] 其中,旁路系统13可以(但不限于)是二级缓存中一个组件,负责简单的两项工作:搬运热数据(即被调取和被访问的次数较高的数据)和剔除冷数据(即被调取和被访问的次
数较低的数据)。它可以运行在单独容器中,通过共享内存和深度学习训练程序通信。当收
到训练程序搬运命令时,把数据从对象存储或一级存储模块传输到二级存储模块12。需要
说明的是,旁路系统13可动态加载,不影响训练使用。
[0061] 系统挂载模块14,用于根据调取指令,将存储在二级缓存模块12的目标数据以及目标访问文件挂载到目标容器中,以在目标容器中执行训练处理。
[0062] 在本实施例中,在实际使用时,再通过系统挂载模块14将目标数据以及目标放文件挂载到不同类型的目标容器中,从而能够适应不同的环境需求。
[0063] 例如,将本实施例应用到Kubernetes时,可以支持Kubernetes编排系统和主流的深度训练学习框架,从而可以把对象存储数据挂载到Kubernetes容器中供深度学习使用,
且当用于训练的目标数据被缓存后,可达到本地集群的性能。
[0064] 通过上述装置,由于将目标数据以及目标访问文件存储在二级缓存模块12中,使得需要使用目标数据时,可以直接从二级缓存模块12中以目标访问文件的形式对目标数据
进行调用,提高了数据调用效率;另外,当数据发生变化时,可以通过旁路系统13对二级缓
存模块12中的数据进行目标处理,从而实现二级缓存模块12中的数据迭代,从而可以保证
数据调用的准确性,解决了数据调取效率低,提高了数据调取效率。
[0065] 在一个可选的实施例中,该装置还包括:
[0066] 本地存储模块15,用于接收目标数据以及存储目标数据,并根据传输指令,将目标数据传输至二级缓存模块。
[0067] 在本实施例中,本地存储模块15可以(但不限于)是SATA盘(Serial Advanced Technology Attachment,串口硬盘)或者本地分布式块存储等,也可以是本地慢速介质;本
地存储模块15是用于与一级存储模块11共同对目标数据进行存储的模块,从而扩大一级存
储模块11的存储能力。
[0068] 例如,当训练数据不在公有云对象存储,而存在本地慢速介质时,用于数据训练的程序或系统把本地慢速系统等同于一级缓存模块,以相同的接口从本地存储模块15中读取
目标数据以进行训练,或者将目标数据传输至二级缓存模块12中。
[0069] 在一个可选的实施例中,二级缓存模块12还包括:
[0070] 本地缓存介质16,用于存储二级缓存模块12中的目标数据以及目标访问文件。
[0071] 在本实施例中,通过本地缓存介质16对目标数据进行存储,可以方便对目标数据进行访问和调取;其中,本地缓存介质16可以(但不限于)是本地高速缓存介质。
[0072] 例如,二级缓存模块12将目标数据存放在本地高速缓存介质上,使得调取过程无需通过网络访问,而是SSD介质来实现,并且,还可以通过POSIX标准本地文件系统来组织对
缓存的目标数据进行管理和访问。
[0073] 在一个可选的实施例中,该装置还包括:
[0074] 访问监控模块17,用于获取目标路径的受访问数据,并将受访问数据发送至旁路系统13,以指示旁路系统13基于受访问数据对存储在二级缓存模块中12的目标数据以及目
标访问文件进行目标处理。
[0075] 在本实施例中,访问监控模块17对数据的受访问情况进行监控,从而能够根据受访问情况对目标数据进行处理。
[0076] 其中,访问监控模块17可以是stub系统(存根系统),也可以是其它类型的监控模块;目标处理可以是对数据进行调取,也可以是对数据进行删除,还可以是其它类型的操
作。
[0077] 例如,访问监控模块17是从系统层面透明植入到深度学习训练的一个小系统stub,该系统深度学习训练不会访问该stub系统。而通过stub系统监控其它对指定路径的
数据访问情况,并把访问信息单向发送到旁路系统13,以指示旁路系统13执行相关操作。
stub的设计采用最简原则,资源消耗十分少,只负责检测和往共享内存发送文件访问信息。
而通过单项的信息发送,能够进一步减少能量的消耗;其中,不论是信息发送还是数据调
取,都是单向的。
[0078] 在一个可选的实施例中,该装置还包括:
[0079] 目标训练模块18,用于根据调取指令,通过目标容器获取目标数据,并对目标数据执行训练处理,其中,目标训练模块位于目标容器中。
[0080] 在本实施例中,目标训练模块18可以是位于目标容器中的训练程序,也可以是其它模块。
[0081] 需要说明的是,在将本实施例用于kubernetes系统环境中时,旁路系统和目标训练模块处于不同的container(容器或模块),互相通过共享内存访问,又互相隔离不可见,
在目标训练模块18是一个训练程序的情况下,该训练程序一般单独运行在一个容器中。训
练程序不被旁路系统所访问,但会访问缓存系统。每次训练可读取T级别的训练数据,如果
这些数据大部分落在缓存模块中,则可以使得训练速度得到明显提升。
[0082] 需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意
组合的形式分别位于不同的处理器中。
[0083] 本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图2是本发明实施例的一种数据存储方法的移动
终端的硬件结构框图。如图2所示,移动终端可以包括一个或多个(图2中仅示出一个)处理
器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和
用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106
以及输入输出设备108。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对
上述移动终端的结构造成限定。例如,移动终端还可包括比图2中所示更多或者更少的组
件,或者具有与图2所示不同的配置。
[0084] 存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据存储方法对应的计算机程序,处理器102通过运行存储在存储器104内的
计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括
高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其
他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设
置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限
于互联网、企业内部网、局域网、移动通信网及其组合。
[0085] 传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器
(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可
与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)
模块,其用于通过无线方式与互联网进行通讯。
[0086] 在本实施例中提供了一种数据存储方法,图3是根据本发明实施例的的流程图,如图3所示,该流程包括如下步骤:
[0087] 步骤S302,获取调取指令,其中,调取指令用于指示调取目标数据;
[0088] 步骤S304,根据调取指令,对二级缓存模块12执行第一调取处理,以获取目标数据;
[0089] 步骤S306,在确定二级缓存模块12不包含目标数据的情况下,对一级缓存模块11执行第二调取处理,以将目标数据从一级缓存模块11中缓存至二级缓存模块12。
[0090] 在本实施例中,在实际调取目标数据时,直接从二级缓存模块12中进行调取,而不是从与外部系统直接对接的一级缓存模块11中进行调取,能够减少因对目标数据进行转换
所增加的能耗;同时,将第一缓存模块11与第二缓存模块12分别独立设置能够加速数据的
调取效率,避免单个缓存模块执行多线程命令导致的错误,降低数据调取难度。
[0091] 其中,上述步骤的执行主体可以为基站、终端等,但不限于此。
[0092] 在一个可选的实施例中,在确定二级缓存模块12不包含目标数据的情况下,对一级缓存模块11执行第二调取处理,以获取目标数据还包括:
[0093] 步骤S3062,访问监控模块17获取一级缓存模块11的受访问数据,并将受访问数据发送至旁路系统13;
[0094] 步骤S3064,旁路系统13根据受访问数据,将目标数据传输至二级缓存模块12。
[0095] 在本实施例中,访问监控系统17对数据访问情况进行监控,使得旁路系统13能够根据数据的访问情况对目标数据进行目标处理,从而保证数据的调取的精确度和有效性。
[0096] 在一个可选的实施例中,旁路系统13根据受访问数据,将目标数据传输至二级缓存模块12包括:
[0097] 步骤S30642,获取二级缓存模块12的剩余空间量;
[0098] 步骤S30644,在确定二级缓存模块12的剩余空间量小于预设值的情况下,删除二级缓存模块12中缓存的冷数据,其中,冷数据用于指示二级缓存模块12中缓存的受访问次
数小于阈值的数据;
[0099] 步骤S30646,旁路系统13根据受访问数据,将目标数据传输至二级缓存模块12。
[0100] 在本实施例中,删除冷数据是为了保证目标数据能够被准确缓存至二级缓存模块12,从而使得后续调用目标数据时能够被准确调用。
[0101] 在一个可选的实施例中,在获取调取指令之前,该方法还包括:
[0102] 步骤S3002,将目标数据执行预加载操作,以将目标数据存储至一级缓存模块中。
[0103] 在本实施例中,通过将目标数据从外部系统中预先存储至一级缓存模块11中,从而能够将目标数据从一级缓存模块11中缓存至二级缓存模块12中。
[0104] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多
情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有
技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储
介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算
机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0105] 下面通过具体实施例对本发明进行说明。
[0106] 如图4所示,为本发明的具体存储装置结构,在本实施例中:
[0107] 该装置包含如下子模块如下:
[0108] 公有云对象存储子系统1,在本实施例中,只要实现了对象存储或标准S3接口,都可以存放海量的深度学习数据并接入本装置。该存储子系统的具有容量大,成本低,容易扩
展等优点。
[0109] 一级缓存系统2,这是个虚拟文件系统,有三个作用:一是把对象存储访问转换维标准的POSIX文件系统访问,这样,无需修改深度学习训练任何代码可直接使用云端对象存
储数据。二是把云端数据缓存在本地分布式集群中,后续数据访问可以直接在本地访问,加
快访问速度。三是规避远端服务器的访问控制,比如QPS,MPS等,这是因为深度学习需要的
文件访问QPS远超云端对象存储所能提供的范围,而本地系统的QPS远高于远端服务器系
统。
[0110] 本地慢速数据存储系统3,如果训练数据不在公有云对象存储,而是存储在本地慢速介质比如SATA盘,本地分布式块存储,则训练程序把本地慢速系统等同于一级缓存系统,
并以相同的接口从里面读取数据训练和promote进入二级缓存系统。
[0111] 旁路系统4,旁路系统是二级缓存中一个组件,负责简单的两项工作:搬运热数据和剔除冷数据。它运行在单独容器中,通过共享内存和深度学习训练程序通信。当收到训练
程序搬运命令时,把数据从对象存储或一级存储系统搬运到二级存储系统,其中,旁路系统
可动态加载,不影响训练。
[0112] 深度学习训练程序5,一般单独运行在一个容器中。训练程序不感知旁路系统,但感知缓存系统。每次训练可读取T级别的训练数据,如果数据大部分落在缓存中,则训练速
度可明显提升。
[0113] stub系统6,stub是在系统层面透明植入到深度学习训练的一个小系统,深度学习训练对此毫无感知。通过监控对指定路径的数据访问,stub把访问信息单向发送到旁路系
统4。stub的设计采用最简原则,资源消耗十分少,只负责检测和往共享内存发送文件访问
信息。
[0114] 本地高速缓存介质7,二级缓存数据存放在本地高速缓存介质7上,一般无需通过网络访问,是SSD介质。并且,以非常成熟的POSIX标准本地文件系统来组织对缓存数据的管
理和访问。
[0115] Kubernetes系统8,Kubernetes系统8包含了docker容器,该系统和容器均是实现训练编排和虚拟化的技术。一级缓存系统和二级缓存系统可以单独部署,也可以部署在虚
拟化容器中。深度学习训练运行在docker容器中,对缓存的使用也是在容器中进行
[0116] 对应的,上述模块之间的交互方向如下:
[0117] S41,表示数据从海量、慢速的公有云对象存储缓存进入一级缓存系统。数据缓存触发有两种方式:一是按需触发,即,当训练读取数据发现不在缓存中时,有一级缓存系统
主动拉取数据;二是提前触发。一级缓存提供批量提前装载(preload)接口。训练在启动前
或启动时通过该接口批量加载训练数据到一级缓存。
[0118] S42,表示深度学习训练从一级缓存系统读取数据。数据以卷方式挂载到Kubernetes的容器内,并提供POSIX标准访问接口。对训练来说就是一个高速的本地文件系
统。
[0119] S43,数据从本地慢速存储系统,比如本地SATA盘,本地慢速分布式块系统等读取数据。在没有配置对象存储和虚拟文件系统充当一级缓存情况下,训练可以从本地集群或
本地文件系统读取训练数据。使用方式对训练透明。
[0120] S44,表示旁路系统把数据从一级缓存或公有云对象存储promote到二级缓存。这是个单向的操作。旁路系统只会写入二级缓存或删除冷数据,不会读取二级缓存的数据。
[0121] S45,表示旁路系统从慢速本地系统读取数据promote到二级存储。
[0122] S46,表示信息单向从深度训练任务流向到旁路系统。这是本发明和其他缓存系统不一样的地方。该单向信息只包含控制信息,即哪些数据需要部署到二级缓存系统。由于数
据量巨大,旁路系统只设计了一个非常简单的LRU缓存系统,通过接收训练送过来的信息,
把数据从一级缓存甚至从公有云直接拷贝进二级缓存系统。
[0123] S47,表示旁路系统从一级缓存或本地慢速系统拷贝数据到二级缓存。
[0124] S48,表示训练程序从二级缓存读取训练数据。
[0125] 需要说明的是,如图5及图6所示,在图5所示的只有一级缓存系统的存储装置中,一级缓存单独部署一个集群,可以被Kubernetes管理,也可以是单一集群。它适配标注S3接
口,并通过Kubernetes的CSI Plugin方式挂载到容器内,提供类POSIX的访问接口;而在图6
的包括一级缓存系统及二级缓存系统的存储装置中,二级缓存是一个本地缓存,直接通过
Kubernetes的Volume或CSI机制挂载到容器内部,供深度学习训练使用。这部分缓存不与其
他深度学习训练共享数据,从而规避了数据访问冲突和元数据管理冲突,提供最优的性能。
[0126] 进一步的,上述具体步骤如图7所示:
[0127] 步骤S701,启动时,可指定是否预加载。如是,异步从对象存储读取数据到一级缓存系统(对应图7中的步骤S71、S72以及S721以及前述步骤S3002)。
[0128] 步骤S702,训练访问二级缓存系统(对应图7中的步骤S74,以及前述步骤S304);
[0129] 步骤S703,如果没命中,直接读写一级缓存;同时,把训练访问数据信息同步到旁路系统,由旁路系统异步promote数据到二级缓存(对应图7中的步骤S76、S77,以及前述步
骤S306)。
[0130] 步骤S704,如果二级缓存超过水位(配置容量的百分比),由旁路系统直接删除缓冲中的冷数据(不经常访问的数据),实现异步淘汰(对应图7中的步骤S75、S781、S782、
S783、S784,以及前述步骤S3062、S3064以及步骤S30642、S30644)。
[0131] 步骤S704,如果二级缓存选项没打开,则训练直接读取一级缓存(对应图7中的步骤S785,以及前述步骤S3062、S3064以及步骤S30642、S30644)。
[0132] 其中,二级缓存没预读取功能。首次访问数据可能不会命中,由于深度学习需要实现多次迭代,因而在多次迭代后,后续再次访问命中概率非常大;一级缓存水位单独管理,
独立于二级缓存;如果一级缓存是本地慢速系统,则没有和对象存储对接部分,一级缓存退
化成一个本地文件系统或慢速本地分布式文件系统。
[0133] 综上所述,本发明具备如下几个优点:
[0134] 1、根据深度学习数据量巨大的特点,利用公有云对象存储存放海量的训练数据,达到低成本,管理简单,扩展性强的目的。这是通过公有云对象存储子系统提供的。本发明
提供无缝对接多家公有云对象子系统的能力。
[0135] 2、本发明设计的系统不受数据供应商的约束,只要供应商提供事实标准的S3接口,则对象存储子系统可做到无缝对接。
[0136] 3、本发明把一级和二级缓存系统和深度学习框架紧密结合,通过把训练数据集挂载到Kubernetes容器中,像访问本地文件系统一样使用云端训练数据。
[0137] 4、本发明设计了一套多层的缓存系统,无缝集成和对接公有云,本地分布式数据集群和本地文件系统,深度学习训练对此无感知。
[0138] 5、一级和二级缓存系统模块可疑单独配置,不互相影响。同时配置后效果更优。
[0139] 6、本发明创造遵循最简原则,使用成熟的中间件技术和最简单的缓存算法,特别适用于海量训练数据的场景,同时规避了海量场景下元数据管理复杂的问题。
[0140] 7、用于一级缓存的分布式虚拟文件系统不是本发明的内容。它原本主要用于对接云端对象存储和大数据访问。本发明把这项技术和系统集成到一级缓存系统中,使得基于
云端海量数据的深度学习训练成为可能。
[0141] 8、动态植入到训练程序的stub体积小,占资源少,与旁路系统通过共享内存通信开销小。把stub,旁路系统和共享存通讯应用到深度学习缓存是本发明的特色。
[0142] 本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步
骤。
[0143] 在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read‑Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为
RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0144] 本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步
骤。
[0145] 在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0146] 本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
[0147] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成
的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装
置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述
的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作
成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0148] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等
同替换、改进等,均应包含在本发明的保护范围之内。