一种基于Kubernetes的加速文件读取的方法、系统、设备和介质与流程

文档序号:32797729发布日期:2023-01-03 22:48阅读:23来源:国知局
一种基于Kubernetes的加速文件读取的方法、系统、设备和介质与流程
一种基于kubernetes的加速文件读取的方法、系统、设备和介质
技术领域
1.本发明属于人工智能技术领域,具体涉及一种基于kubernetes的加速文件读取的方法、系统、设备和介质。


背景技术:

2.随着智能设备的普及,海量数据的产生和采集为人工智能和机器学习的不断进步提供了基础。海量数据的存储是一大挑战,存储成本和读取效率是一大矛盾点,高速率的存储设备往往存储空间有限,相对低速率的设备空间相对较大,但存取效率往往又很难满足用户的期望。基于有限的高速存储空间来满足模型训练过程中对数据读取效率的要求是主要要解决的问题。
3.目前现有技术主要工作步骤是将训练任务选择的数据集从低速存储设备复制到高速率的训练节点的存储设备上用以加速任务训练。训练任务结束之后,数据集不会立即从训练节点存储删除,在下一个预设时间段如果该数据集没有被再次使用则会从训练节点的存储清理。如果数据集的数据量大小超过了训练节点的物理限制,则会采用分布式文件系统,通过kubernetes中volume的方式挂载到训练节点,供训练使用。同时在下一个预设周期内若该数据集没有被再次使用,会被从分布式文件系统清除。所造成的主要问题是训练节点的数据清除是以数据集为单位,并且在下一周期内未被使用就会被清除,这样带来一个较大的问题是数据集存在频繁复制和清除的情况,影响训练效率的提升。同时存在根据数据集大小和训练节点剩余存储空间大小在训练节点存储和分布式文件系统间进行切换的问题,逻辑相对复杂。


技术实现要素:

4.鉴于以上所述现有技术的缺点,本发明提供一种基于kubernetes的加速文件读取的方法、系统、设备和介质,以解决上述技术问题。
5.本发明提供的一种基于kubernetes的加速文件读取的方法,包括:获取训练任务;将所述训练任务的数据集添加至所述高速缓存文件系统;增加所述高速缓存文件系统的所述数据集中的文件的引用次数,并更新最新的时间动态;将所述高速缓存文件系统挂载至pod容器中,通过在所述pod容器中建立脚本读取所述数据集,并对读取的数据集进行任务训练;对训练完成的所述数据集中的文件减少引用次数;判断训练完成的所述数据集中的文件的引用次数,并在所述引用次数低于预设次数阈值或者闲置时间大于预设时间阈值时清理对应的文件。
6.根据本发明一具体实施例,所述将所述训练任务的数据集添加至所述高速缓存文件系统的步骤包括:通过布隆过滤器检测高速缓存文件系统是否缓存有所述训练任务的数据集:若高速缓存文件系统未缓存所述训练任务的数据集,则将所述数据集从低速存储文件系统复制至所述高速缓存文件系统。
7.根据本发明一具体实施例,所述若高速缓存文件系统未缓存所述训练任务的数据集,则将所述数据集从低速存储文件系统复制至所述高速缓存文件系统的步骤包括:检测所述高速缓存文件系统的空间剩余量:若所述空间剩余量小于所述数据集的空间大小,则对所述高速缓存文件系统的空间进行清理,直至所述高速缓存文件系统的空间剩余量大于等于所述数据集的空间大小;若清理后的空间剩余量仍不满足所述数据集的占用大小,则将所述训练任务转至等待序列,直至所述高速缓存文件系统的空间剩余量满足所述数据集的占用大小;若所述空间剩余量大于等于所述数据集的空间大小,则将所述数据集从低速存储文件系统复制至所述高速缓存文件系统。
8.根据本发明一具体实施例,所述若所述空间剩余量大于等于所述数据集的空间大小,则将所述数据集从低速存储文件系统复制至所述高速缓存文件系统的步骤包括:根据所述数据集的文件遍历所述高速缓存文件系统中的文件,以检测所述高速缓存文件系统未缓存的所述数据集的差异文件;将所述数据集的差异文件复制至所述高速缓存文件系统,以组成所述高速缓存文件系统中的所述数据集。
9.根据本发明一具体实施例,所述若所述空间剩余量小于所述数据集的空间大小,则对所述高速缓存文件系统的空间进行清理的步骤包括:遍历所述高速缓存文件系统中的所有文件的引用次数和闲置时间;筛选引用次数低于预设次数阈值或者闲置时间大于预设时间阈值的文件,并予以清理。
10.根据本发明一具体实施例,所述若所述空间剩余量小于所述数据集的空间大小,则对所述高速缓存文件系统的空间进行清理,直至所述高速缓存文件系统的空间剩余量大于等于所述数据集的空间大小的步骤包括:当在预设时间内,所述高速缓存文件系统的空间剩余量仍然小于所述数据集的空间大小,则挂起所述训练任务至所述等待序列;按照所述等待序列和所述空间剩余量,判断是否继续进行任务训练。
11.根据本发明一具体实施例,所述将所述高速缓存文件系统挂载至pod容器中,通过在所述pod容器中建立脚本读取所述数据集,并对读取的数据集进行任务训练的步骤包括:通过s3fs-fuse驱动将所述高速缓存文件系统挂载至指定训练目录上;创建pod容器,并通过hostpath或pvc的方式将所述指定训练目录挂载至pod容器中;根据所述数据集的逻辑结构在所述pod容器中创建软链接,以读取所述数据集,且训练完成后销毁所述软链接;其中,所述脚本即为软链接。
12.一种基于kubernetes的加速文件读取的系统,包括:信息采集模块,用于获取训练任务;信息检测模块,用于将所述训练任务的数据集添加至所述高速缓存文件系统;第一信息处理模块,用于增加所述高速缓存文件系统的所述数据集中的文件的引用次数,并更新最新的时间动态;信息训练模块,用于将所述高速缓存文件系统挂载至pod容器中,通过在所述pod容器中建立脚本读取所述数据集,并对读取的数据集进行任务训练;第二信息处理模块,用于对训练完成的所述数据集中的文件减少引用次数;第三信息处理模块,用于判断训练完成的所述数据集中的文件的引用次数,并在所述引用次数低于预设次数阈值或者闲置时间大于预设时间阈值时清理对应的文件。
13.一种基于kubernetes的加速文件读取的设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
14.一种计算机可读介质,其上存储有指令,所述指令由处理器加载并执行如上述任一项所述的方法。
15.本发明的技术效果在于,通过基于文件维度的清理策略,实现了更细粒度的文件缓存策略,避免的以数据集为单位的文件反复清除和复制,提高了效率。同时对象存储bucket的挂载和创建软链接的方式,提高了文件的使用效率,降低了系统的复杂度。
16.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
17.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
18.图1是本发明所提供的一具体实施例一种基于kubernetes的加速文件读取的方法的流程示意图;
19.图2是本发明所提供的一具体实施例一种基于kubernetes的加速文件读取的方法的结构框图;
20.图3是本发明所提供的一具体实施例一种基于kubernetes的加速文件读取的系统的流程示意图;
21.图4是本发明所提供的一具体实施例一种基于kubernetes的加速文件读取的设备的结构框图。
具体实施方式
22.以下将参照附图和优选实施例来说明本发明的实施方式,本领域技术人员可由本说明书中所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。
23.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
24.在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
25.首先,需要说明的是本技术通过kubernetes搭建pod容器,以微服务的方式开发训练任务以及调度系统模块运作,利用restful接口和消息队列进行系统各个模块之间的通信。采用固态存储和对象存储搭建高速缓存文件系统,采用hdfs、nas、glusterfs、fastdfs
等分布式文件系统组成低速存储文件系统,通过采用infiniband协议提高文件传输速度。
26.高速缓存文件系统(cache file system,cachefs)是一种普通的非易失性高速缓存机制。cachefs利用小而快速的本地磁盘提高了某些文件系统的性能。例如,可以使用cachefs改进nfs环境的性能。
27.cachefs是一种普通的非易失性高速缓存机制。针对nfs(network file system)和afs(andrew file system)这种网络文件系统而言,因为受网络的影响,使得对数据访问和存储的实时性就有了一定的挑战,特别是在早期100mb/s的网络环境下。为了解决响应实效的问题,一种被称为cachefs的本地缓存方案被开发出来,用来提供分布式文件系统的本地缓存。
28.作为linux内核2.6.30的一部分,cachefs开始对nfs、afs以及其它一些文件系统进行支持。cachefs作为fs-cache的缓存后端,进行实际的数据存储和检索处理,并使用块设备的分区。但是,cachefs并不能用在任何文件系统上,文件系统必须能被fs-cache写入。
29.在使用cachefs改进nfs环境性能的时候,cachefs在不同版本的nfs上的工作方式不同。例如,如果客户机和后台文件系统运行的是nfs版本2或版本3,则文件将在前台文件系统中进行高速缓存以便客户机访问。但是,如果客户机和服务器运行的都是nfs版本4,则其功能如下:当客户机最初请求访问cachefs文件系统的文件时,请求将绕过前台的(即高速缓存的)文件系统,并直接访问后台文件系统。使用nfs版本4后,文件将不再在前台文件系统中进行高速缓存。后台文件系统将提供所有文件访问权。另外,由于前台文件系统中没有高速缓存任何文件,因此特定于cachefs的挂载选项(这些选项旨在影响前台文件系统)会被忽略。特定于cachefs的挂载选项不适用于后台文件系统。
30.kubernetes,简称k8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效(powerful),kubernetes提供了应用部署,规划,更新,维护的一种机制。
31.传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
32.新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
33.容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。
34.pod是kubernetes中最小的资源管理组件,pod也是最小化运行容器化应用的资源对象。一个pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着
pod来进行支撑和扩展pod功能的。
35.pod容器包括两类,自主式pod:这种pod本身是不能自我修复的,当pod被创建后(不论是由你直接创建还是被其他controller),都会被kuberentes调度到集群的node上。直到pod的进程终止、被删掉、因为缺少资源而被驱逐、或者node故障之前这个pod都会一直保持在那个node上。pod不会自愈。如果pod运行的node故障,或者是调度器本身故障,这个pod就会被删除。同样的,如果pod所在node缺少资源或者pod处于维护状态,pod也会被驱逐。
36.控制管理的pod:kubernetes使用更高级的称为controller的抽象层,来管理pod实例。controller可以创建和管理多个pod,提供副本管理、滚动升级和集群级别的自愈能力。例如,如果一个node故障,controller就能自动将该节点上的pod调度到其他健康的node上。虽然可以直接使用pod,但是在kubernetes中通常是使用controller来管理pod的。
37.实施例1
38.请参见图1-2所示,一种基于kubernetes的加速文件读取的方法,包括:
39.步骤s10,获取训练任务;
40.步骤s20,将所述训练任务的数据集添加至所述高速缓存文件系统,具体步骤包括:
41.步骤s21,通过布隆过滤器检测高速缓存文件系统是否缓存有所述训练任务的数据集,其中布隆过滤器依据所述数据集中的文件为唯一id生成。
42.布隆过滤器(bloom filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多。
43.优选的,本技术实施例采取布隆过滤器对所述高速缓存文件系统进行检测。
44.步骤s22,若高速缓存文件系统未缓存所述训练任务的数据集,则将所述数据集从低速存储文件系统复制至所述高速缓存文件系统。
45.其中,将所述数据集复制至所述高速缓存文件系统之前,会对高速缓存文件系统的空间剩余量进行检测,具体步骤如下:
46.步骤s221,检测所述高速缓存文件系统的空间剩余量;
47.步骤s222,若所述空间剩余量小于所述数据集的空间大小,则对所述高速缓存文件系统的空间进行清理,直至所述高速缓存文件系统的空间剩余量大于等于所述数据集的空间大小。
48.其中,具体的所述高速缓存文件系统空间清理步骤如下:
49.步骤s2221,遍历所述高速缓存文件系统中的所有文件的引用次数和闲置时间;
50.步骤s2222,筛选引用次数低于预设次数阈值或者闲置时间大于预设时间阈值的文件,并予以清理。
51.步骤s223,若清理后的空间剩余量仍不满足所述数据集的占用大小,则将所述训练任务转至等待序列,直至所述高速缓存文件系统的空间剩余量满足所述数据集的占用大小。
52.其中,若在预设时间内,所述高速缓存文件系统的空间剩余量仍然小于所述数据集的空间大小,则挂起所述训练任务至所述等待序列;按照所述等待序列和所述空间剩余
量,判断是否继续进行任务训练,若预设时间内所述高速缓存文件系统不能清理足够的空间供复制所述数据集,则中断本次训练任务,并发送报警信号以提醒工作人员手动清理高速缓存文件系统。
53.步骤s224,若所述空间剩余量大于等于所述数据集的空间大小,则将所述数据集从低速存储文件系统复制至所述高速缓存文件系统。
54.其中,具体的复制步骤如下:
55.步骤s2241,根据所述数据集的文件遍历所述高速缓存文件系统中的文件,以检测所述高速缓存文件系统未缓存的所述数据集的差异文件;
56.步骤s2242,将所述数据集的差异文件复制至所述高速缓存文件系统,以组成所述高速缓存文件系统中的所述数据集。
57.需要说明的是,在本技术中,清理策略采用最近最少使用原则和是否闲置为文件的淘汰标准。复制机制以单个的文件为单位,相比于现有技术中基于数据集为单位,能够实现更细粒度的文件缓存策略,最大化的减少复制消耗。
58.步骤s30,增加所述高速缓存文件系统的所述数据集中的文件的引用次数,并更新最新的时间动态,从而避免了被清理策略将其删除导致训练任务崩溃中断。
59.步骤s40,将所述高速缓存文件系统挂载至pod容器中,通过在所述pod容器中建立脚本读取所述数据集,并对读取的数据集进行任务训练。
60.其中,具体步骤如下:
61.步骤s41,当所述数据集复制至高速缓存文件系统之后,通过s3fs-fuse驱动将所述高速缓存文件系统挂载至指定训练目录上;
62.s3fs是google开发的一款支持将对象存储中的bucket以文件形式导出的文件系统接口,是基于fuse开发文件系统,允许linux挂载s3的存储桶在本地文件系统,s3fs能够保持对象原来的格式。
63.步骤s42,创建pod容器,并通过hostpath或pvc的方式将所述指定训练目录挂载至pod容器中;
64.hostpath就是将node主机中一个实际目录挂在到pod中,以供容器使用,这样的设计就可以保证pod销毁了,但是数据依据可以存在于node主机上。
65.步骤s43,根据所述数据集的逻辑结构在所述pod容器中创建软链接,以读取所述数据集,且训练完成后销毁所述软链接。
66.通过在pod容器中生成软链接直接读取高速缓存文件系统中的数据集,从而避免将数据集中的文件复制至pod容器中。所述软链接目录位于pod的emptydir类型的目录中,当pod容器销毁时,如软链接也会随之销毁,不会影响到高速缓存文件系统中的数据集文件。
67.当所述训练任务的数据集复制至高速缓存文件系统后,通过kubernetes创建训练使用的pod容器,将gpu、cpu、内存等资源挂载到容器pod中,并配置预设的环境变量。当训练结束后,pod容器会被销毁,cpu、gpu、内存等资源会被释放用以其他训练任务。其中,训练输出的结果会在预设的输出目录下统一管理,同时训练过程中的相关指标会被采集,例如:训练时长、数据大小、时钟频率、显存大小等,用以监控和衡量训练任务的效率和结果。对象存储bucket的挂载和创建软链接的方式,提高了文件的使用效率,降低了系统的复杂度。
68.步骤s50,对训练完成的所述数据集中的文件减少引用次数。
69.步骤s60,判断训练完成的所述数据集中的文件的引用次数,并在所述引用次数低于预设次数阈值或者闲置时间大于预设时间阈值时清理对应的文件。
70.当所述训练任务训练完成,及时对高速缓存文件系统中对应的数据集清理,以避免占用堆积高速缓存文件系统空间。同时高速缓存文件系统会根据文件的引用次数以及闲置时间定时清理文件。
71.需要说明的是,上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
72.实施例2
73.请参见图3所示,本技术的实施例还提供一种基于kubernetes的加速文件读取的系统,包括:
74.信息采集模块,用于获取训练任务;
75.信息检测模块,用于将所述训练任务的数据集添加至所述高速缓存文件系统;
76.第一信息处理模块,用于增加所述高速缓存文件系统的所述数据集中的文件的引用次数,并更新最新的时间动态;
77.信息训练模块,用于将所述高速缓存文件系统挂载至pod容器中,通过在所述pod容器中建立脚本读取所述数据集,并对读取的数据集进行任务训练;
78.第二信息处理模块,用于对训练完成的所述数据集中的文件减少引用次数;
79.第三信息处理模块,用于判断训练完成的所述数据集中的文件的引用次数,并在所述引用次数低于预设次数阈值或者闲置时间大于预设时间阈值时清理对应的文件。
80.需要说明的是,上述实施例2所提供的基于kubernetes的加速文件读取的系统与上述实施例1所提供的基于kubernetes的加速文件读取的方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。上述实施例所提供的基于kubernetes的加速文件读取的系统在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,以完成以上描述的全部或者部分功能,本处也不对此进行限制。
81.实施例3
82.请参见图4所示,本技术的实施例还提供了一种基于kubernetes的加速文件读取的设备,包括存储器2、处理器1及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
83.其中,存储器至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。存储器在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,存储器还可以既包括电子设备的内部存储单元也包括外部存储设备。存储器不仅可以用于存储安装于电子设备的应用软件及各类数据,还可以用于暂
时地存储已经输出或者将要输出的数据。
84.处理器在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(central processing unit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器是所述电子设备的控制核心(control unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器内的程序或者模块,以及调用存储在所述存储器内的数据,以执行电子设备的各种功能和处理数据。
85.所述处理器执行所述电子设备的操作系统以及安装的各类应用程序。所述处理器执行所述应用程序以实现上述各个锂动力电池虚焊检测方法实施例中的步骤。
86.示例性的,所述计算机程序可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述电子设备中的执行过程。
87.上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、计算机设备,或者网络设备等)或处理器(processor)执行本发明各个实施例锂电池虚焊检测方法的部分功能。
88.综上所述,本发明的技术效果在于,通过基于文件维度的清理策略,实现了更细粒度的文件缓存策略,避免的以数据集为单位的文件反复清除和复制,提高了效率。同时对象存储bucket的挂载和创建软链接的方式,提高了文件的使用效率,降低了系统的复杂度。
89.上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1