适用于边缘AI场景的镜像延迟加载方法及系统技术方案

技术编号:34630005 阅读:15 留言:0更新日期:2022-08-20 09:42
本发明专利技术公开了适用于边缘AI场景的镜像延迟加载方法及系统,属于计算机技术领域,包括以下步骤:S1:镜像构建;S2:镜像上传;S3:镜像拉取;S4:文件加载。本发明专利技术有效降低了中心镜像仓库的负载,充分利用了边缘节点的带宽,减少了镜像中无用文件的下载频率,提高了系统的稳定性,有效减少边缘AI任务镜像拉取和服务启动的时间,缩短了边缘AI任务的升级时间;采用Stargz支持gzip流索引的格式,边缘侧不需要将完整的镜像层下载到本地然后进行解压,而是通过远程文件挂载的方式,边缘侧直接拉取该文件对应的存储在服务器端的gzip分片,然后采用unpigz工具进行并行解压,充分利用边缘侧多核CPU,加速解压过程。加速解压过程。加速解压过程。

【技术实现步骤摘要】
适用于边缘AI场景的镜像延迟加载方法及系统


[0001]本专利技术涉及计算机
,具体涉及适用于边缘AI场景的镜像延迟加载方法及系统。

技术介绍

[0002]Docker(开源应用容器引擎,Docker API和Docker CLI)镜像目前主要采用的是Overlay文件系统(联合文件系统),该文件系统是一种堆叠文件系统,一个镜像文件由若干个不同的层组成,其中镜像层在Lower Dir中,容器层在Upper Dir中。当读取的文件不在容器层时则从镜像层进行读取;当读取的文件在容器层和镜像层时会读取容器层的文件,因为容器层隐藏了镜像层的同名文件;当写入的文件在镜像层时,Docker会采用copy_on_write机制将文件拷贝到容器层,然后将内容写入容器层新拷贝的文件;当删除镜像层文件时,会在容器层创建一个writeout文件来隐藏该文件。所以如果不重新构建,Docker镜像文件体积只会一直增大。据统计,拉取镜像占据了76%的容器拉起时间,但是镜像内只有6.4%的内容被读取,在AI训练场景下更是存在大量的镜像文件被拉取下来却不会被读取到。Docker镜像文件目前采用的压缩方式都是首先将镜像的每一层打包成Tar包,然后再用Gzip压缩,该格式是乱序且不可被索引的。
[0003]Docker镜像仓库现在的方式是采用一个中心化的镜像仓库,边缘侧和云侧所有的镜像都会从中心镜像仓库进行拉取,当存在大量边缘节点进行镜像拉取时,中心镜像仓库有可能会支撑不住而出现超时甚至停止响应的问题。
[0004]在AI场景下,镜像文件体积较大,每次运行需要将镜像文件全部拉取到本地,然后启动容器,而在容器运行中,绝大多数的文件是用不到的,即使要读取的文件仅有1KB,依然需要将整个镜像完整的拉取下来,而通过优化构建Docker镜像的Dockerfile文件来减小镜像的体积在多数情况下是比较复杂的,AI相关的镜像依赖的文件较多,盲目的删减容易导致容器启动错误,采用预加载和镜像缓存的方案会占用宿主机大量的磁盘空间,还需要考虑缓存命中的问题。为此,提出适用于边缘AI场景的镜像延迟加载方法及系统。

技术实现思路

[0005]本专利技术所要解决的技术问题在于:如何解决解决在边缘AI场景下,镜像拉取缓慢,并减少镜像中未使用到的文件的拉取,缓解中心镜像仓库压力大的问题,提供了适用于边缘AI场景的镜像延迟加载方法。
[0006]本专利技术是通过以下技术方案解决上述技术问题的,本专利技术包括以下步骤:步骤S1:镜像构建构建边缘侧推理所需要的镜像;步骤S2:镜像上传将步骤S1中镜像转换成Estargz格式(即有索引的压缩文件格式)的镜像,并上传到中心镜像仓库;
步骤S3:镜像拉取边缘侧启动服务时,从中心镜像仓库拉取镜像,即下载镜像中程序运行依赖的文件,程序运行中未访问的文件将会通过元数据进行远程挂载;步骤S4:文件加载镜像中程序运行依赖的文件下载并解压完成之后,基于堆叠文件系统(即Overlay文件系统)进行联合挂载,再加载本地文件,直到程序运行所依赖的文件均加载完成。
[0007]更进一步地,在所述步骤S1中,具体过程为:按照边缘服务运行所需要的运行时环境编写镜像构建脚本文件即Dockerfile文件,并将所需的代码文件添加到镜像层,通过镜像构建工具构建镜像。
[0008]更进一步地,在所述步骤S2中,将步骤S1中镜像转换成Estargz格式的镜像的过程具体如下:S21:通过优化工具获得Estargz镜像;S22:步骤S21运行结束后会生成Estargz格式的镜像,将镜像上传到中心镜像仓库即可供服务使用。
[0009]更进一步地,所述步骤S3中,具体包括以下步骤:S31:延迟下载配置;S32:镜像拉取。
[0010]更进一步地,所述步骤S31包括以下步骤:S311:先获取镜像的元数据,从元数据中解析出镜像所有的层,并获取所有数据层的digest信息;S312:获取到的镜像层digest信息(即元数据信息摘要)后,通过中心镜像仓库API分片下载该镜像层的元数据,通过解析该镜像层的元数据,创建对应的目录,并基于Linux提供的用户空间文件系统(即Fuse)实现远程挂载;S313:镜像中所有的层都挂载完成之后,在通过Overlay文件系统将所有层合并到一个目录,实现镜像的延迟下载。
[0011]更进一步地,在所述步骤S312,从镜像层获取到元数据信息后,基于Fuse API实现文件的挂载,并实现文件查询和读取的操作。
[0012]更进一步地,所述步骤S32包括以下步骤:S321:当镜像中程序运行时,从镜像中查找依赖的文件并进行加载,当检测本地缓存中存在时则直接加载本地文件,当不存在时,通过镜像元数据文件,查询到所依赖文件所属的镜像层以及通过索引文件获取该文件在该镜像层对应的索引位置和大小,然后通过中心镜像仓库的API进行指定分片大小的数据下载,再压到本地目录;S322:在中心镜像仓库下载指定分片大小的数据时,通过P2P(Peer to Peer)分发工具查询该分片是否在其它节点存在,存在则会去其它节点进行拉取。
[0013]更进一步地,在所述步骤S322中,P2P分发工具采用镜像文件P2P分发方案实现,在镜像文件P2P分发方案中存在一个中心节点,中心节点用于记录所有的Client节点信息,同时中心节点还记录每个Client节点上存在的文件分块信息;Client节点启动时向中心节点上报本机的基本信息,当进行镜像文件的下载时,Client节点先向中心节点查询目前正在下载该分片和已下载完该分片的所有节点,中心节点会返回正在下载的机器列表,然后从
返回的机器列表中随机选择一个节点进行下载,如果不存在,中心节点则进行回源下载,从中心镜像仓库按分片拉取文件,并成为最初的Peer节点,然后再提供给Client下载节点;当Client节点在下载完一个分片后,向中心节点上报已下载完该分片,与此同时Client节点就成为此分片的Peer节点,来提供给其它Client节点进行下载。
[0014]更进一步地,Client节点信息包括IP地址、操作系统、核心数和内存信息。
[0015]本专利技术还提供了适用于边缘AI场景的镜像延迟加载系统,采用上述的方法实现Docker镜像的延迟加载,包括:镜像构建模块,用于构建边缘侧推理所需要的镜像;镜像上传模块,用于将镜像转换成Estargz格式的镜像,并上传到中心镜像仓库;镜像拉取模块,用于在边缘侧启动推理服务时,从中心镜像仓库拉取镜像,即下载镜像中程序运行依赖的文件;文件加载模块,用于在镜像中程序运行依赖的文件下载并解压完成之后,基于Overlay文件系统挂载到本地,再加载本地文件,直到程序运行所依赖的文件均加载完成;中央处理模块,用于向其他模块发出指令,完成相关动作;所述镜像构建模块、镜像上传模块、镜像拉取模块、文件加载模块均与中央处理模块通信连接。
[0016]本专利技术相比现有技术具有以下优点:该适用于边缘AI场景的镜像延迟加载方法及系统,有效降低了中心镜像仓库的负载,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.适用于边缘AI场景的镜像延迟加载方法,其特征在于,包括以下步骤:步骤S1:镜像构建构建边缘侧推理所需要的镜像;步骤S2:镜像上传将步骤S1中镜像转换成有索引的压缩文件格式的镜像,即Estargz格式的镜像,并上传到中心镜像仓库;步骤S3:镜像拉取边缘侧启动服务时,从中心镜像仓库拉取镜像,即下载镜像中程序运行依赖的文件,程序运行中未访问的文件将会通过元数据进行远程挂载;步骤S4:文件加载镜像中程序运行依赖的文件下载并解压完成之后,基于Overlay文件系统挂载到本地,再加载本地文件,直到程序运行所依赖的文件均加载完成。2.根据权利要求1所述的适用于边缘AI场景的镜像延迟加载方法,其特征在于:在所述步骤S1中,具体过程为:按照边缘服务运行所需要的运行时环境编写镜像构建脚本文件,即Dockerfile文件,并将所需的代码文件添加到镜像层,通过镜像构建工具构建镜像。3.根据权利要求2所述的适用于边缘AI场景的镜像延迟加载方法,其特征在于:在所述步骤S2中,将步骤S1中镜像转换成Estargz格式的镜像的过程具体如下:步骤S21:通过优化工具获得Estargz镜像;步骤S22:步骤S21运行结束后会生成Estargz格式的镜像,将镜像上传到中心镜像仓库即可供服务使用。4.根据权利要求3所述的适用于边缘AI场景的镜像延迟加载方法,其特征在于:所述步骤S3包括以下步骤:步骤S31:延迟下载配置;步骤S32:镜像拉取。5.根据权利要求4所述的适用于边缘AI场景的镜像延迟加载方法,其特征在于:所述步骤S31包括以下步骤:步骤S311:先获取镜像的元数据,从元数据中解析出镜像所有的层,并获取所有数据层的digest信息,即元数据信息摘要;步骤S312:获取到的镜像层digest信息后,通过中心镜像仓库API分片下载该镜像层的元数据,通过解析该镜像层的元数据,创建对应的目录,并基于Linux提供的用户空间文件系统Fuse实现远程挂载;步骤S313:镜像中所有的层都挂载完成之后,再通过Overlay文件系统将所有层合并到一个目录,实现镜像的延迟下载。6.根据权利要求5所述的适用于边缘AI场景的镜像延迟加载方法,其特征在于:在所述步骤S312,从镜像层获取到元数据信息后,基于Fuse API实现文件的挂载,并实现文件查询和读取的操作。7.根据权利要求5所述的适用于边缘AI场景的镜像延迟加载方法,其特征在于:所述步骤S32包括以下步骤:步骤S321:当镜像中...

【专利技术属性】
技术研发人员:王景祥常峰朱建李国玉肖玉刘海峰王子磊
申请(专利权)人:合肥中科类脑智能技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1