一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种镜像的拉取方法、系统、计算机设备及可读存储介质与流程

2021-10-29 23:00:00 来源:中国专利 TAG:人工智能 镜像 可读 计算机 方法


1.本发明涉及人工智能技术领域,尤其涉及一种镜像的拉取方法、系统、计算机设备及可读存储介质。


背景技术:

2.本发明主要应用于使用镜像进行训练的ai(artificial intelligence,人工智能)集群。现阶段ai训练都是基于镜像,在容器中进行模型训练。如果是分布式任务,需要多个容器同时进行训练,这些容器可能在一台或者多台服务器上。同时,ai集群基本都是微服务,支持容器化部署,并且支持kubernetes的调度和管理。kubernetes也被称为k8s,是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。k8s具备容错能力,如果服务的镜像和镜像仓库出现问题,运行各个服务的容器,都可能受到影响,导致ai集群的功能出现问题,所以,对ai集群的镜像、以及镜像仓库的管理和维护至关重要。
3.现阶段,进行模型训练,需要安装不同深度学习框架的镜像,大型的ai集群可能拥有几十到上百个不同类型的镜像,镜像的大小可能是几十mb,也可能是几十gb。如果对于大型的集群,同时,高并发或者有大量用户进行模型训练,每个训练任务都需要拉取自己的框架镜像到本地,才能启动容器进行模型训练,这个高并发或高频率拉取镜像,不仅需要花费大量时间,同时,也会增加集群的负载,占用集群的网络带宽等各类资源,影响集群的性能。


技术实现要素:

4.有鉴于此,本发明提出了一种镜像的拉取方法、系统、计算机设备及可读存储介质,优化了ai训练任务的镜像拉取环节,提高了镜像拉取效率与ai集群的资源利用率。
5.基于上述目的,本发明实施例的一方面提供了一种镜像的拉取方法,具体包括如下步骤:响应于在ai集群部署镜像p2p服务,获取基于ansible编写的镜像p2p服务组件包以及所述ai集群的配置信息,并基于所述配置信息修改所述镜像p2p服务组件包中的部署配置文件,其中,所述镜像p2p服务组件包还包括镜像p2p服务组件;基于所述部署配置文件将镜像p2p服务组件的镜像和对应的镜像文件分发到ai集群中的各个节点,并将各个所述节点所服务的镜像推送到harbor仓库;编写yaml文件,并基于k8s以及所述yaml文件将各个所述节点分别部署到控制节点或工作节点,并将各个所述节点挂载存储系统路径;响应于ai集群接收到ai任务,基于所述控制节点将所述ai任务调度到工作节点,使所述工作节点从所述harbor仓库或提供p2p服务的节点拉取镜像。
6.在一些实施方式中,获取所述ai集群的配置信息,并基于所述配置信息修改所述部署配置文件包括:获取所述ai集群中各个所述节点的网络带宽、磁盘空间、镜像使用场景;基于所述网络带宽确定镜像p2p服务的带宽限制,并基于所述磁盘空间确定磁盘
清理策略,并基于所述镜像使用场景确定镜像p2p服务策略;基于确定的镜像p2p服务的带宽限制、磁盘清理策略和镜像p2p服务策略修改所述部署配置文件。
7.在一些实施方式中,所述镜像p2p服务策略包括:镜像不频繁使用场景的镜像p2p服务策略、镜像频繁使用非高并发场景的镜像p2p服务策略、高并发使用不同镜像场景的镜像p2p服务策略、镜像高并发频繁使用场景的镜像p2p服务策略;基于所述镜像使用场景确定镜像p2p服务策略包括:基于所述镜像使用场景从所述镜像p2p服务策略中选取对应场景的镜像p2p服务策略。
8.在一些实施方式中,基于所述部署配置文件将镜像p2p服务组件的镜像和对应的镜像文件分发到ai集群中的各个节点,包括:基于所述部署配置文件将镜像p2p服务组件的超级节点镜像和对应的镜像文件分发到所述ai集群中的指定节点以使所述指定节点提供镜像p2p服务,并将镜像p2p服务组件的客户端镜像和对应的客户端文件分发到ai集群中的其余节点以使其余所述节点提供镜像p2p服务。
9.在一些实施方式中,在将所述节点所服务的镜像推送到harbor仓库之后,方法进一步包括:为所述节点配置拦截策略;并且使所述工作节点从所述harbor仓库或提供p2p服务的节点拉取镜像包括:使所述工作节点基于所述拦截策略从所述harbor仓库或提供p2p服务的节点拉取镜像。
10.在一些实施方式中,方法进一步包括:基于心跳检测各个节点的镜像p2p服务是否正常,若是所述节点的镜像p2p服务不正常,则重启所述节点的镜像p2p服务以恢复所述节点的镜像p2p服务。
11.在一些实施方式中,方法进一步包括:响应于所述镜像有更新,将更新后的镜像推送到harbor仓库,基于k8s操作所述控制节点从所述harbor仓库拉取更新后的镜像。
12.本发明实施例的另一方面,还提供了一种镜像的拉取系统,拉取系统包括:获取模块,所述获取模块配置为响应于在ai集群部署镜像p2p服务,获取基于ansible编写的镜像p2p服务组件包以及所述ai集群的配置信息,并基于所述配置信息修改所述镜像p2p服务组件包中的部署配置文件,其中,所述镜像p2p服务组件包还包括镜像p2p服务组件;分发模块,所述分发模块配置为基于所述部署配置文件将镜像p2p服务组件的镜像和对应的镜像文件分发到ai集群中的各个节点,并将各个所述节点所服务的镜像推送到harbor仓库;部署模块,所述部署模块配置为编写yaml文件,并基于k8s以及所述yaml文件将各个所述节点分别部署到控制节点或工作节点,并将各个所述节点挂载存储系统路径;拉取模块,所述拉取模块配置为响应于ai集群接收到ai任务,基于所述控制节点将所述ai任务调度到工作节点,使所述工作节点从所述harbor仓库或提供p2p服务的节点
拉取镜像。
13.本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述计算机程序由所述处理器执行时实现如上方法的步骤。
14.本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
15.本发明至少具有以下有益技术效果:通过本发明的方案,优化了ai训练任务的镜像拉取环节,通过k8s实现平台镜像p2p服务的一键容器化部署,并且可以对接nfs、beegfs等存储系统以存储缓存的镜像和信息,提高了镜像拉取效率,并通过k8s管理镜像的p2p服务,提高服务的容错能力和稳定性。
附图说明
16.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
17.图1为本发明提供的镜像的拉取方法的一实施例的框图;图2为本发明提供的镜像的拉取系统的一实施例的示意图;图3为本发明提供的计算机设备的一实施例的结构示意图;图4为本发明提供的计算机可读存储介质的一实施例的结构示意图。
具体实施方式
18.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
19.为了更好的理解本发明实施例,首先对本发明实施例中所涉及的相关技术术语进行说明。
20.ansible:一种自动化运维工具,基于python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,能够实现批量系统配置、批量程序部署、批量运行命令等功能。
21.p2p:peer

to

peer点对点,指数据的传输不再通过服务器,而是各网络节点之间传递数据。
22.peer:p2p网络中,peer既是资源的提供者,也是资源的消费者。
23.piece:piece是将要被拉取镜像的一部分,也可以视为镜像分片,镜像p2p服务下载镜像时,不是传输整个镜像,而是将镜像分片下载。
24.daemonset :在 kubernetes里运行一个 daemon pod,默认运行在 kubernetes 所管理的集群的每一个节点上。
25.yaml :一种专门用来写配置文件的语言。
26.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”、“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
27.基于上述目的,本发明实施例的第一个方面,提出了一种镜像的拉取方法的实施例。如图1所示,其包括如下步骤:s101、响应于在ai集群部署镜像p2p服务,获取基于ansible编写的镜像p2p服务组件包以及所述ai集群的配置信息,并基于所述配置信息修改所述镜像p2p服务组件包中的部署配置文件,其中,所述镜像p2p服务组件包还包括镜像p2p服务组件;s103、基于所述部署配置文件将镜像p2p服务组件的镜像和对应的镜像文件分发到ai集群中的各个节点,并将各个所述节点所服务的镜像推送到harbor仓库;s105、编写yaml文件,并基于k8s以及所述yaml文件将各个所述节点分别部署到控制节点或工作节点,并将各个所述节点挂载存储系统路径;s107、响应于ai集群接收到ai任务,基于所述控制节点将所述ai任务调度到工作节点,使所述工作节点从所述harbor仓库或提供p2p服务的节点拉取镜像。
28.具体的,预先使用ansible编写好镜像p2p服务组件包,镜像p2p服务组件包包括镜像p2p服务组件、以及部署配置文件,部署配置文件包括分发以及部署镜像p2p服务组件的步骤及相关的配置文件,基于k8s将镜像p2p服务组件容器化部署到ai集群中。
29.当ai集群部署镜像p2p服务时,获取镜像p2p服务组件包以及ai集群的配置信息,并基于配置信息修改所述镜像p2p服务组件包中的部署配置文件;基于部署配置文件将镜像p2p服务组件的镜像和对应的镜像文件分发到ai集群中的各个节点;镜像包括超级节点镜像和客户端镜像,将超级节点镜像及其镜像配置文件分发到指定节点使指定节点用于提供超级节点服务,将客户端镜像及其客户端镜像配置文件分发到集群中除了指定节点以外的其余节点使其余节点用于提供客户端服务,并将各个节点服务的镜像推送到harbor仓库;k8s属于主从分布式架构,由master node和worker node组成。master node是控制节点,负责对集群进行调度管理;worker node是工作节点,负责运行业务应用的容器。
30.根据镜像使用场景编写k8s的deamonset应用的yaml文件,基于k8s的yaml文件将各个分发到镜像的节点分别部署到控制节点或工作节点,即,将超级节点服务和客户端服务分别部署到控制节点或工作节点。超级节点服务和客户端服务可以同时部署在同一台服务器,也可以分别部署在不同的服务器,在大集群环境中(集群中节点数量较多的环境),为了提高超级节点服务的性能和效率,一般将超级节点服务和客户端服务分开部署。优选的,将超级节点服务部署到工作节点,将客户端服务部署到控制节点。将集群中的节点挂载存储系统路径,挂载的存储系统用于存放镜像缓存数据和信息,存储系统可以为nfs、beegfs等存储系统。
31.ai集群接收到ai任务时,ai任务会先下发到控制节点,再由控制节点将ai任务调度到相应的工作节点。工作节点接收到各自的ai任务后,从所述harbor仓库或从提供p2p服务的节点拉取镜像。
32.通过本发明的实施例,优化了ai训练任务的镜像拉取环节,通过k8s实现平台镜像p2p服务的一键容器化部署,并且可以对接nfs、beegfs等存储系统以存储缓存的镜像和信息,提高了镜像拉取效率,并通过k8s管理镜像的p2p服务,提高服务的容错能力和稳定性。
33.在一些实施方式中,获取所述ai集群的配置信息,并基于所述配置信息修改所述部署配置文件包括:
获取所述ai集群中各个节点的网络带宽、磁盘空间、镜像使用场景;基于所述网络带宽确定镜像p2p服务的带宽限制,并基于所述磁盘空间确定磁盘清理策略,并基于所述镜像使用场景确定镜像p2p服务策略;基于确定的镜像p2p服务的带宽限制、磁盘清理策略和镜像p2p服务策略修改所述部署配置文件。
34.在一些实施方式中,所述镜像p2p服务策略包括:镜像不频繁使用场景的镜像p2p服务策略、镜像频繁使用非高并发场景的镜像p2p服务策略、高并发使用不同镜像场景的镜像p2p服务策略、镜像高并发频繁使用场景的镜像p2p服务策略;基于所述镜像使用场景确定镜像p2p服务策略包括:基于所述镜像使用场景从所述镜像p2p服务策略中选取对应场景的镜像p2p服务策略。
35.具体的,当ai集群部署镜像p2p服务时,确定集群的网络带宽、磁盘空间、镜像使用场景。
36.基于网络带宽确定镜像p2p服务的带宽限制,例如,集群客户端在通过p2p拉取镜像时,会根据部署时镜像p2p服务配置的带宽来拉取镜像,集群支持的带宽越高,拉取镜像的速度越快,带宽设置越低,拉取镜像时间越长,配置的镜像p2p服务的带宽一般不超过集群的网络带宽的最大值。一般,带宽充足时,拉取几十gb的大镜像各层,耗时特别短。但是整个镜像的拉取成功,不光是拉取镜像层,还需要抽取每层镜像到本地,带宽充足时,抽取镜像层花费的时间比下载镜层花费的时间更长。优选的,为了提高ai集群镜像的拉取速度和效率,缩短镜像拉取时间,可以使用dockerfile制作镜像,并优化dockerfile文件中镜像的每一层操作。
37.基于磁盘空间确定磁盘清理策略,在使用镜像p2p服务过程中,如果镜像p2p缓存的镜像临时文件超过设置的阈值,会触发清理任务,清理时,根据缓存文件日期和使用时间,先清理最早缓存和未被使用的镜像临时文件,释放磁盘文件。
38.根据集群使用镜像业务的不同场景配置不同的镜像p2p服务策略。
39.首先对集群使用镜像业务的场景进行划分,分别为:镜像不频繁使用场景、镜像频繁使用非高并发场景、高并发使用不同镜像场景、镜像高并发频繁使用场景,基于各个镜像使用场景制定的镜像p2p服务策略如下:1)镜像不频繁使用场景的镜像p2p服务策略:如果规定时间之内没有相同镜像被使用,说明该镜像不是被频繁使用的镜像,无需一直开启节点peer的下载服务,以及对应的任务task进程。如果节点peer的下载服务被关闭,后面继续使用该镜像,则会直接从超级节点的缓存源拉取该镜像,同时,该镜像被其它peer拉取后,其它peer又可以提供规定时间内的下载服务,像这种使用后即被开启,不使用被回收的配置策略,可以提高ai集群的资源利用效率;2)镜像频繁使用非高并发场景的镜像p2p服务策略:如果该镜像被频繁使用,但不是高并发使用,则各缓存过的peer提供p2p下载功能,可以根据需要调整服务时间。因为每回使用,都会有新的节点提供规定时间内的下载服务,最早开启下载服务的peer即使被回收,也不影响后续的peer提供p2p服务,同时也能回收资源,提高ai集群的整体资源利用效
率;3)高并发使用不同镜像场景的镜像p2p服务策略:高并发同时拉取不同镜像,在规定时间内,如果存在该镜像的peer,则继续提供p2p服务,如果不存在peer,则从超级节点拉取。压力最大的场景是既没有peer提供p2p下载服务,超级节点也未缓存该镜像,则高并发时,超级节点边缓存,边提供镜像的piece分片下载服务,所有的并发压力通过超级节点减轻集群的harbor仓库的压力,同时,拉取过程中,各peer会开启各自镜像的p2p下载服务。在新环境下都会遇到此类问题,环境使用时间越长,镜像使用越频繁,镜像p2p服务的优势越明显。
40.4)镜像高并发频繁使用场景的镜像p2p服务策略:如果是高并发使用该镜像,则能够充分发挥各peer的p2p功能,大集群拉取过该镜像的节点peer,会继续开启下载服务,最早开启下载服务的peer, 规定时间一到,就会被回收。如果遇到所有peer都被回收,但是出现高并发场景的情况,则同时下载该镜像的peer会相互之间提供p2p服务,边拉取镜像分片piece,边提供下载服务,不影响镜像p2p功能。
41.通过本发明的实施例,为不同的使用镜像p2p服务的场景提供不同的镜像p2p服务策略,保证了镜像可以高效且稳定的下载到本地,提高了集群的资源利率了和镜像的下载效率。
42.在一些实施方式中,基于所述部署配置文件将镜像p2p服务组件的镜像和对应的镜像文件分发到ai集群中的各个节点包括:基于所述部署配置文件将镜像p2p服务组件的超级节点镜像和对应的镜像文件分发到所述ai集群中的指定节点以使所述指定节点提供镜像p2p服务,并将镜像p2p服务组件的客户端镜像和对应的客户端文件分发到ai集群中的其余节点以使其余所述节点提供镜像p2p服务。
43.在一些实施方式中,在将所述节点所服务的镜像推送到harbor仓库之后,方法进一步包括:为所述节点配置拦截策略;并且使所述工作节点从所述harbor仓库或提供p2p服务的节点拉取镜像包括:使所述工作节点基于所述拦截策略从所述harbor仓库或提供p2p服务的节点拉取镜像。
44.具体的,为了实现harbor和镜像p2p服务的vip高可用,为节点配置拦截策略,让镜像p2p服务只拦截指定的harbor仓库,其它未指定的镜像仓库不进行拦截。更进一步的,将镜像p2p客户端所在节点的拦截策略配置为不拦截harbor仓库的镜像,例如,当工作节点接收到ai任务后,会开始拉取镜像,该节点的镜像p2p客户端会拦截拉取的镜像,让其从镜像p2p网络中拉取该镜像,不再从harbor仓库直接拉取镜像。
45.在一些实施方式中,方法进一步包括:基于心跳检测各个节点的镜像p2p服务是否正常,若是所述节点的镜像p2p服务不正常,则重启所述节点的镜像p2p服务以恢复所述节点的镜像p2p服务。
46.在一些实施方式中,方法进一步包括:响应于所述镜像有更新,将更新后的镜像推送到harbor仓库,基于k8s操作所述控制节点从所述harbor仓库拉取更新后的镜像。
47.具体的,如果镜像p2p服务的功能被修改,只需要修改p2p镜像,将修改后的镜像推
送到harbor仓库,然后基于k8s的yaml文件操作集群节点的控制节点,让控制节点从harbor仓库拉取修改后的镜像,通过k8s逐步操作超级节点和客户端的pod,让超级节点和客户端的pod从harbor仓库重新拉取p2p镜像,并使用新镜像进行容器化部署服务。
48.基于同一发明构思,根据本发明的另一个方面,如图2所示,本发明的实施例还提供了一种镜像的拉取系统,拉取系统包括:获取模块110,所述获取模块110配置为响应于在ai集群部署镜像p2p服务,获取基于ansible编写的镜像p2p服务组件包以及所述ai集群的配置信息,并基于所述配置信息修改所述镜像p2p服务组件包中的部署配置文件,其中,所述镜像p2p服务组件包还包括镜像p2p服务组件;分发模块120,所述分发模块120配置为基于所述部署配置文件将镜像p2p服务组件的镜像和对应的镜像文件分发到ai集群中的各个节点,并将各个所述节点所服务的镜像推送到harbor仓库;部署模块130,所述部署模块130配置为编写yaml文件,并基于k8s以及所述yaml文件将各个所述节点分别部署到控制节点或工作节点,并将各个所述节点挂载存储系统路径;拉取模块140,所述拉取模块140配置为响应于ai集群接收到ai任务,基于所述控制节点将所述ai任务调度到工作节点,使所述工作节点从所述harbor仓库或提供p2p服务的节点拉取镜像。
49.基于同一发明构思,根据本发明的另一个方面,如图3所示,本发明的实施例还提供了一种计算机设备20,在该计算机设备20中包括处理器210以及存储器220,存储器220存储有可在处理器上运行的计算机程序221,处理器210执行程序时执行如上的方法的步骤。
50.基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机可读存储介质30,计算机可读存储介质30存储有被处理器执行时执行如上方法的计算机程序310。
51.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
52.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
53.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
54.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
55.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
56.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
57.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜