CN114048040B - 基于内存与图像分类模型时延关系的任务调度方法 - Google Patents

基于内存与图像分类模型时延关系的任务调度方法 Download PDF

Info

Publication number
CN114048040B
CN114048040B CN202111431501.1A CN202111431501A CN114048040B CN 114048040 B CN114048040 B CN 114048040B CN 202111431501 A CN202111431501 A CN 202111431501A CN 114048040 B CN114048040 B CN 114048040B
Authority
CN
China
Prior art keywords
image classification
time delay
memory
csv
task
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.)
Active
Application number
CN202111431501.1A
Other languages
English (en)
Other versions
CN114048040A (zh
Inventor
张永敏
姚清
黄鹏宇
吕丰
张尧学
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Central South University
Original Assignee
Central South University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Central South University filed Critical Central South University
Priority to CN202111431501.1A priority Critical patent/CN114048040B/zh
Publication of CN114048040A publication Critical patent/CN114048040A/zh
Application granted granted Critical
Publication of CN114048040B publication Critical patent/CN114048040B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Image Analysis (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种基于内存与图像分类模型时延关系的任务调度方法,目的是解决用户图像分类任务时延要求,并使得内存资源负载均衡。技术方案是构建由环境部署模块、测试模块、拟合模块以及任务调度模块四个模块组成的内存与图像分类模型时延关系的任务调度系统;测试模块测出不同内存下各预训练好的图像分类模型的时延结果;拟合模块根据时延结果拟合出内存与图像分类模型时延的函数关系。任务调度模块根据该函数关系及用户时延要求算出图像分类任务内存需求量,再根据虚拟机的剩余内存资源设定优先级,基于优先级将任务调度至优先级最高的虚拟机上运行,使在满足用户图像分类任务时延要求的同时,数据中心的内存资源整体达到负载均衡。

Description

基于内存与图像分类模型时延关系的任务调度方法
技术领域
本发明涉及云计算任务调度领域,特别涉及一种基于内存与图像分类模型时延关系的任务调度方法。
背景技术
随着人工智能(ArtificialIntelligence,AI)技术的发展和云计算的兴起,人工智能应用在语音、计算机视觉以及自然语言处理等领域都取得了突破性的进展。百度、谷歌、亚马逊等各大互联网企业都推出了自家的人工智能服务云平台,部署了包括图像分类、目标检测、自然语言处理等多种人工智能算法用以提供服务。云任务调度是在以分布式数据中心为基础架构的云平台上,将用户提交的AI任务以作业队列的方式提交给任务调度中心,等待分配运行所需的计算资源,然后数据中心将大量服务器硬件通过虚拟化的技术划分为若干大小、若干模块的虚拟资源,并将它们结合成虚拟机,最后将任务调度到虚拟机上运行,并返回结果给用户。随着越来越多的服务迁移至云平台,导致用户提交的AI任务数量和资源需求不断增多,因此研究云任务调度对于云提供商和用户来说都具有实际意义。
目前云计算环境下存在许多任务调度算法,传统的任务调度算法有先来先服务算法,短作业优先算法等,先来先服务算法根据用户任务到达时间的先后顺序进行任务调度,实现简单,然而该算法既不考虑虚拟机的资源剩余量也不对用户的任务进行区分,很难保证整体的负载均衡。还有现在提出的智能算法,包括粒子群算法、模拟退火算法等,它们通过仿生学的思想来寻找全局最优解,但是它们存在实现过程复杂、容易陷入局部最优解等缺陷。大多数任务调度算法都仅仅局限于单一的优化目标,采用贪心策略或启发式算法以实现降低数据中心的能耗、使数据中心整体达到负载均衡或者提高用户的服务质量等目标。这些算法在单一情形下能取得较好的效果,但是在相对复杂多变的实际生产环境中可能并不能取得较好的收益,具有较大的局限性。
Docker是一个开源的应用容器引擎,它通过将应用程序和依赖文件一起打包进容器,可以实现运行在任何Linux或Windows操作系统的机器上。Docker主要包含镜像、容器和仓库。其中Docker镜像是一个只读模板,包含创建Docker容器的指令;Docker容器是镜像的运行实例;而仓库是一个代码控制中心,用来保存镜像。同时Docker采用完全沙箱机制,能够保证运行在容器的应用能够与系统隔离开来,不受其影响。最重要的是,Docker能够方便地限制容器内资源的使用情况。
图像分类是计算机视觉的重要领域,它的目标是将图像分类到预定义的标签。图像分类模型是对图像进行分类的一类神经网络模型。图像分类任务是图像数据集的一张张图片,通过调用图像分类模型划分到不同的图像类别的过程。对于图像分类这类AI任务,内存资源是影响任务处理时延的一个重要因素。每个任务都会占据一定的内存资源,当内存资源不够时,无法加载任务数据,造成处理时延的增加。因此,同时考虑云提供商和用户的利益,研究一种既能满足用户的图像分类任务时延要求,又能使数据中心的内存资源整体达到负载均衡的任务调度方法,具有重要的理论和实际意义。
发明内容
本发明要解决的技术问题是对图像分类任务提供一种基于测试内存与图像分类模型时延(图像分类模型处理图像分类任务所产生的时间花销)关系的任务调度方法,以在满足用户图像分类任务时延要求的同时,使数据中心整体达到内存资源的负载均衡。
技术方案是先测出内存资源量与图像分类模型时延之间的函数关系。然后通过函数关系,以及给定的用户时延要求算出每个图像分类任务的内存需求量,再根据虚拟机的剩余内存资源设定虚拟机的优先级,基于优先级用贪心策略将任务调度至优先级最高的虚拟机上运行,使数据中心的内存资源整体达到负载均衡。
为了解决此问题,本发明包含如下步骤:
第一步,构建内存与图像分类模型时延关系的任务调度系统。内存与图像分类模型时延关系的任务调度系统由测试系统和任务调度模块组成。其中测试系统由环境部署模块、测试模块和拟合模块组成。
环境部署模块与测试模块相连,由Docker镜像和测试数据集组成。Docker镜像提供测试时的运行环境,而测试数据集可以作为图像分类任务供图像分类模型执行。
测试模块与环境部署模块、拟合模块相连,由shell测试脚本、docker容器、模型时延测试模块组成,shell测试脚本从环境部署模块接收测试数据集,运行docker容器后调用模型时延测试模块对图像分类模型(可从https://www.paddlepaddle.org.cn/modelbase下载)进行测试,得到测试结果;模型时延测试模块是处理图像分类任务的python程序。
拟合模块与测试模块相连,由内存与图像分类任务时延的函数组成,对从测试模块接收的测试结果进行处理并拟合,得到内存资源量与预训练好的图像分类模型时延之间的函数关系。
任务调度模块根据内存资源量与预训练好的图像分类模型时延之间的函数关系进行图像分类任务的调度。
第二步,环境部署模块部署测试时环境和准备测试数据集,具体是:
步骤2.1,构建Docker镜像。创建一个用于构建Docker镜像的dockerfile文本文件,在dockerfile文件中写入与测试环境有关的如下指令:
步骤2.1.1拉取基础镜像python,python要求版本号3.7及以上;
步骤2.1.2设置后续指令运行的工作目录;
步骤2.1.3将paddlehub库(从https://www.paddlepaddle.org.cn/hub下载)中N个预训练好的图像分类模型拷贝至基础镜像python内;
步骤2.1.4安装提供调用的图像分类pythonAPI,即用Python包管理工具pip安装paddlepaddle库和paddlehub库;
步骤2.2,用docker build命令(是docker容器中指令,用于根据给定的Dockerfile和上下文构建Docker镜像https://docs.docker.com/engine/reference/commandline/build/)执行dockerfile文件中的指令,构建一个用于测试的镜像,将N个预训练好的图像分类模型拷贝至基础镜像python内。N为正整数,一般N≥10。
步骤2.3,制作测试数据集。选取公开数据集ImageNet2012(https://image-net.org/download-images.php)的图片作为测试数据集,从ImageNet2012中随机选取一千张图片分为十组,每组为一百张图片,作为单位任务量。
第三步,测试模块运行shell测试脚本进行时延测试,得到不同内存下N个预训练好的图像分类模型的时延结果。方法是:
步骤3.1,固定与CPU有关的设置,保证内存独立变化。利用linux中提供的cpufreq工具设定cpu主频为3.0GHz。
步骤3.2,循环运行docker容器,测试出N个预训练好的图像分类模型在内存区间[L,R](单位MB)的时延结果(其中L是设定的内存测试区间的起始值,R是设定的内存测试区间的终点值),为了减少实验偶然性,每次测试进行J次(J≥10)。方法是:
步骤3.2.1,令图像分类模型的序号n=1,令内存资源大小的限定值i=L,令测试的轮数j=1。
步骤3.2.2,shell测试脚本读取第n个预训练好的图像分类模型名称。
步骤3.2.3,运行docker容器,用docker–m命令来指定容器运行期间所能占用内存资源大小的限定值,即为i。用docker-v命令设置容器与宿主机的挂载路径。同时,用docker-rm命令设定容器运行结束后自动销毁。
步骤3.2.4,在docker容器中运行模型时延测试模块,模型时延测试模块读取测试数据集中的图像,调用百度paddlehub中模型的classification接口对测试数据集中的图像进行图像分类。
步骤3.2.5,获取调用classification接口前后的时间戳之差作为第j轮处理第n个图像分类任务的时延Tj(单位为秒(s)),并将时延结果Tj记录到第n个时延测试结果csv文件中,令该csv文件命名为csvn
步骤3.2.6,第n个预训练好的图像分类模型的图像分类任务测试结束后,容器自动销毁,通过挂载路径得到时延测试结果文件csvn。令j=j+1,若j≤J,转至步骤3.2.2;若j>J,说明csvn中记录了T1,…,Tj,…,TJ,转至步骤3.2.7。
步骤3.2.7,令i=i+10,即内存资源大小的限定值变化10MB,若i≤R,转至步骤3.2.2,若i>R,转至步骤3.2.8。
步骤3.2.8令n=n+1,即切换至下一个图像分类模型,若n≤N,转至步骤3.2.2,;若n>N,表示N个预训练好的图像分类模型全部测试完成,得到csv1,…,csvn,…,csvN转第四步。
第四步,拟合模块根据csv1,…,csvn,…,csvN记录的时延结果,拟合内存与图像分类模型时延的函数关系。方法是:
步骤4.1,令n=1;
步骤4.2,处理csvn文件中的时延测试结果,剔除csvn文件中的异常值。
方法是:
4.2.1计算csvn中的J次时延数据的平均值μn
4.2.2计算csvn中的J次时延数据的标准差σn
4.2.3将T1,…,Tj,…,TJ中大于μn+3σn或小于μn-3σn的数据作为异常时延测试结果从csvn中剔除,得到剔除了异常时延测试结果的csvn,令为s-csvn。令csvn中剩余的时延测试结果还有J1个,J1<J。
步骤4.3,对s-csvn中J1个数据取平均值,作为第n个预训练好的图像分类模型的测试时延为yn,yn单位为秒(s)。
步骤4.4,采用非线性最小二乘法,拟合出第n个预训练好的图像分类模型时延与内存资源的函数关系,方法是:
设内存资源为x,单位为MB,在测试过程中发现了x和yn之间的基本关系:(1)内存资源完全能够满足图像分类任务的内存占用时,图像分类任务时延不会再有下降趋势,时延趋近于常数,这时内存资源已经不是制约图像分类任务的效率的关键因素。(2)当提供的内存资源小于图像分类任务的内存占用时,图像分类任务运行时间很长甚至被杀死。通过观察内存与图像分类模型时延的图像,得到y=1/x的函数形式。进而利用scipy库(https://www.scipy.org/)的函数拟合工具curve_fit拟合出第n个预训练好的图像分类模型时延yn与内存资源x满足的函数关系如公式(一):
Figure GDA0003582272360000051
其中参数an,bn,cn是需要确定的参数,由函数拟合工具curve_fit得到,因图像分类模型而异。公式(一)揭示了内存资源x与图像分类任务时延yn成反比关系。
步骤4.5,令n=n+1,若n≤N,转至步骤4.2;若n>N,表示N个预训练好的图像分类模型时延与内存资源的函数关系拟合完毕,得到了y1,…,yn,…,yN与内存资源x的函数关系,转第五步。
第五步,根据用户提交任务的时延要求,通过内存资源与图像分类任务时延的函数关系(即公式(一)),任务调度模块进行图像分类任务的调度。
方法是:
步骤5.1,令M个图像分类任务分别为TT1,...,TTm,...,TTM,m=1,2,...,M。用TTn,m表示需要调用虚拟机中第n个图像分类模型的第m个图像分类任务,用
Figure GDA0003582272360000061
表示TTn,m的任务量,用t表示单位任务量,即为图片数目;有K个虚拟机V1,...,Vk,...,VK,k=1,2,...,K,用
Figure GDA0003582272360000062
表示第k个虚拟机的内存,虚拟机中包含所有的N个预训练好的图像分类模型;同时,令TTn,m的时延上界为
Figure GDA0003582272360000063
图像分类任务的时延与任务量成正比,于是根据公式(一)可以得到TTn,m至少需要的内存资源为
Figure GDA0003582272360000064
步骤5.2,令m=1。
步骤5.3,根据K个虚拟机各自的内存剩余量设定K个虚拟机的优先级,优先级顺序正比于虚拟机剩余内存量,内存剩余量越多,优先级越高。
步骤5.4,判断K个虚拟机中有无同时满足以下两个条件的虚拟机:1.内存剩余量大于等于TTn,m的内存需求量;2.满足条件1的虚拟机中优先级最高的虚拟机。若有,将TTn,m放置在满足以上两个条件的虚拟机(令为Vk)中执行,此时的调度策略用(TTn,m,Vk)表示,表示将TTn,m放置Vk中执行,转步骤5.5;如果K个虚拟机中没有一个满足以上两个条件,则说明当前所有虚拟机内存资源都不够运行TTn,m,重新开一个虚拟机,令K=K+1;转步骤5.3。
步骤5.5令m=m+1,若m≤M,转至步骤5.3。若m>M,说明M个任务均已调度,转至步骤5.6。
步骤5.6,得到任务调度结果(TTn,m,Vk),即为满足任务时延要求的任务调度策略。
本发明提供一种基于内存资源与图像分类模型时延关系的任务调度方法。采用本发明能够取得下列有益效果:
1.本发明提供一种基于内存资源与图像分类模型时延关系的任务调度方法。本发明第一步至第四步测出内存资源量与图像分类模型时延之间的函数关系,第五步通过该函数关系,以及给定的用户时延要求算出每个图像分类任务的内存需求量,再根据虚拟机的剩余内存资源设定优先级,基于优先级将任务调度至虚拟机上运行。使得在满足用户图像分类任务时延要求的同时,使数据中心整体达到内存资源的负载均衡;
2.本发明不仅适用于此类图像分类任务,对于其它类型的任务也同样适用。
3.本发明第一步至第三步基于容器技术,具有部署方便、能过跨机器进行迁移和扩展。
附图说明
图1为本发明的总体流程图;
图2为本发明第一步构建的内存与图像分类模型时延关系的任务调度系统的逻辑结构图;
图3为本发明一个实施例第四步得到的内存与图像分类模型时延函数关系拟合结果图。
图4为本发明的任务调度方法与经典的任务调度方法的负载均衡度进行对比的结果图。
具体实施方式
以下结合附图对本发明技术方案结合具体实施例作进一步的描述,但本发明并不限于这些实施例。还应该理解,此处所描述的具体实施例仅仅用于理解本发明,并不用于限定本发明。
本发明提出了一种基于内存与图像分类模型时延关系的任务调度方法。总体流程图如图1所示,具体步骤如下:
第一步,构建如图2所示的内存与图像分类模型时延关系的任务调度系统。内存与图像分类模型时延关系的任务调度系统由测试系统和任务调度模块组成,其中测试系统由环境部署模块、测试模块和拟合模块组成;
环境部署模块与测试模块相连,由Docker镜像和测试数据集组成。Docker镜像提供测试时的运行环境,而测试数据集可以作为图像分类任务供图像分类模型执行。
测试模块与环境部署模块、拟合模块相连,由shell测试脚本、docker容器、模型时延测试模块组成,shell测试脚本从环境部署模块接收测试数据集,运行docker容器后调用模型时延测试模块对图像分类模型(可从https://www.paddlepaddle.org.cn/modelbase下载)进行测试,得到测试结果;模型时延测试模块是处理图像分类任务的python程序。
拟合模块与测试模块相连,由内存与图像分类任务时延的函数组成,对从测试模块接收的测试结果进行处理并拟合,得到内存资源量与预训练好的图像分类模型时延之间的函数关系。
任务调度模块根据内存资源量与预训练好的图像分类模型时延之间的函数关系进行图像分类任务的调度。
第二步,环境部署模块部署测试时环境和准备测试数据集,具体是:
步骤2.1,构建Docker镜像。创建一个用于构建Docker镜像的dockerfile文本文件,在dockerfile文件中写入与测试环境有关的如下指令:
步骤2.1.1拉取基础镜像python,python要求版本号3.7及以上;
步骤2.1.2设置后续指令运行的工作目录;
步骤2.1.3将paddlehub库(从https://www.paddlepaddle.org.cn/hub下载)中N个预训练好的图像分类模型拷贝至基础镜像python内;
步骤2.1.4安装提供调用的图像分类pythonAPI,即用Python包管理工具pip安装paddlepaddle库和paddlehub库;
步骤2.2,用docker build命令(是docker容器中指令,用于根据给定的Dockerfile和上下文构建Docker镜像https://docs.docker.com/engine/reference/commandline/build/)执行dockerfile文件中的指令,构建一个用于测试的镜像,将N个预训练好的图像分类模型拷贝至基础镜像python内。
步骤2.3,制作测试数据集。选取公开数据集ImageNet2012(https://image-net.org/download-images.php)的图片作为测试数据集,从ImageNet2012中随机选取一千张图片分为十组,每组为一百张图片,作为单位任务量。
第三步,测试模块运行shell测试脚本进行时延测试,得到不同内存下N个预训练好的图像分类模型的时延结果。方法是:
步骤3.1,固定与CPU有关的设置,保证内存独立变化。利用linux中提供的cpufreq工具设定cpu主频为3.0GHz。
步骤3.2,循环运行docker容器,测试出N个预训练好的图像分类模型在内存区间[L,R](单位MB)的时延结果(其中L是设定的内存测试区间的起始值,R是设定的内存测试区间的终点值),为了减少实验偶然性,每次测试进行J次(J≥10)。方法是:
步骤3.2.1,令图像分类模型的序号n=1,令内存资源大小的限定值i=L,令测试的轮数j=1。
步骤3.2.2,shell测试脚本读取第n个预训练好的图像分类模型名称。
步骤3.2.3,运行docker容器,用docker–m命令来指定容器运行期间所能占用内存资源大小的限定值,即为i。用docker-v命令设置容器与宿主机的挂载路径。同时,用docker-rm命令设定容器运行结束后自动销毁。
步骤3.2.4,在docker容器中运行模型时延测试模块,模型时延测试模块读取测试数据集中的图像,调用百度paddlehub中模型的classification接口对测试数据集中的图像进行图像分类。
步骤3.2.5,获取调用classification接口前后的时间戳之差作为第j轮处理第n个图像分类任务的时延Tj(单位为秒(s)),并将时延结果Tj记录到第n个时延测试结果csv文件中,令该csv文件命名为csvn
步骤3.2.6,第n个预训练好的图像分类模型的图像分类任务测试结束后,容器自动销毁,通过挂载路径得到时延测试结果文件csvn。令j=j+1,若j≤J,转至步骤3.2.2;若j>J,说明csvn中记录了T1,…,Tj,…,TJ,转至步骤3.2.7。
步骤3.2.7,令i=i+10,即内存资源大小的限定值变化10MB,若i≤R,转至步骤3.2.2,若i>R,转至步骤3.2.8。
步骤3.2.8令n=n+1,即切换至下一个图像分类模型,若n≤N,转至步骤3.2.2,;若n>N,表示N个预训练好的图像分类模型全部测试完成,得到csv1,…,csvn,…,csvN转第四步。
第四步,拟合模块根据csv1,…,csvn,…,csvN记录的时延结果,拟合内存与图像分类模型时延的函数关系。方法是:
步骤4.1,令n=1;
步骤4.2,处理csvn文件中的时延测试结果,剔除csvn文件中的异常值。
方法是:
4.2.1计算csvn中的J次时延数据的平均值μn
4.2.2计算csvn中的J次时延数据的标准差σn
4.2.3将T1,…,Tj,…,TJ中大于μn+3σn或小于μn-3σn的数据作为异常时延测试结果从csvn中剔除,得到剔除了异常时延测试结果的csvn,令为s-csvn。令csvn中剩余的时延测试结果还有J1个,J1<J。
步骤4.3,对s-csvn中J1个数据取平均值,作为第n个预训练好的图像分类模型的测试时延为yn,yn单位为秒(s)。
步骤4.4,采用非线性最小二乘法,拟合出第n个预训练好的图像分类模型时延与内存资源的函数关系,图3为选取的inceptionv4_imagenet模型的函数关系拟合结果图,方法是:
设内存资源为x,单位为MB,在测试过程中发现x和yn之间的基本关系:(1)内存资源完全能够满足图像分类任务的内存占用时,图像分类任务时延不会再有下降趋势,时延趋近于常数,这时内存资源已经不是制约图像分类任务的效率的关键因素。(2)当提供的内存资源小于图像分类任务的内存占用时,图像分类任务运行时间很长甚至被杀死。通过观察内存与图像分类模型时延的图像,得到y=1/x的函数形式。进而利用scipy库(https://www.scipy.org/)的函数拟合工具curve_fit拟合出第n个预训练好的图像分类模型时延yn与内存资源x满足的函数关系如公式(一):
Figure GDA0003582272360000101
其中参数an,bn,cn是需要确定的参数,由函数拟合工具curve_fit得到,因图像分类模型而异。对于inceptionv4_imagenet模型,首先绘出内存与图像分类模型时延结果的图像,然后确定如公式一所示的函数形式,经过拟合确定的参数a=5183,b=203,c=11.9。公式一揭示了内存资源x与图像分类任务时延yn成反比关系。
步骤4.5,令n=n+1,若n≤N,转至步骤4.2;若n>N,表示N个预训练好的图像分类模型时延与内存资源的函数关系拟合完毕,得到了y1,…,yn,…,yN与内存资源x的函数关系,转第五步。
第五步,根据用户提交任务的时延要求,通过公式(一),任务调度模块进行图像分类任务的调度。方法是:
步骤5.1,令M个图像分类任务分别为TT1,...,TTm,...,TTM,m=1,2,...,M。用TTn,m表示需要调用虚拟机中第n个图像分类模型的第m个图像分类任务,用
Figure GDA0003582272360000111
表示TTn,m的任务量,用t表示单位任务量,即为图片数目;有K个虚拟机V1,...,Vk,...,VK,k=1,2,...,K,用
Figure GDA0003582272360000112
表示第k个虚拟机的内存,虚拟机中包含所有的N个预训练好的图像分类模型;同时,令TTn,m的时延上界为
Figure GDA0003582272360000113
图像分类任务的时延与任务量成正比,于是根据公式(一)可以得到TTn,m至少需要的内存资源为
Figure GDA0003582272360000114
此处给出了实例来帮助更好地理解本发明的调度策略,这里有两台虚拟机V1,V2剩余内存分别为1GB和500MB,任务到达的顺序为T1,1,T2,1,T3,2,表示第一个和第二个图像分类任务请求在第一个图像分类模型上执行,而第三个图像分类任务请求在第二个图像分类模型上执行。计算每个任务需要的内存资源量的各参数如下表所示。
Figure GDA0003582272360000115
步骤5.2,令m=1。
步骤5.3,根据K个虚拟机各自的内存剩余量设定K个虚拟机的优先级,优先级顺序正比于虚拟机剩余内存量,内存剩余量越多,优先级越高。
步骤5.4,判断K个虚拟机中有无同时满足以下两个条件的虚拟机:1.内存剩余量大于等于TTn,m的内存需求量;2.满足条件1的虚拟机中优先级最高的虚拟机。若有,将TTn,m放置在满足以上两个条件的虚拟机(令为Vk)中执行,此时的调度策略用(TTn,m,Vk)表示,表示将TTn,m放置Vk中执行,转步骤5.5;如果K个虚拟机中没有一个满足以上两个条件,则说明当前所有虚拟机内存资源都不够运行TTn,m,重新开一个虚拟机,令K=K+1;转步骤5.3。在本实例中根据优先级首先将任务T1,1调度至V1,之后T2,1到达时虚拟机V1的内存剩余量最多,因此优先级最高,将任务T2,1调度至V1,最后一个任务T3,2到达时,虚拟机V2的内存剩余量高于虚拟机V1,因此将T3,2调度至V2
步骤5.5令m=m+1,若m≤M,转至步骤5.3。若m>M,说明M个任务均已调度,转至步骤5.6。
步骤5.6,得到任务调度结果(T1,1,V1),(T2,1,V1),(T3,2,V2),即为满足任务时延要求的任务调度策略。
为了验证本发明中的任务调度方法的有效性,通过仿真实验将本发明提出的任务调度方法与其他经典任务调度方法进行对比,说明本发明中的任务调度方法在内存资源的负载均衡方面具有明显优势,具体为:
用标准差σ来衡量内存资源的负载均衡度,
Figure GDA0003582272360000121
其中
Figure GDA0003582272360000122
xk为虚拟机内存资源的负载值,μ为K个虚拟机内存资源的负载平均值,σ为所有虚拟机内存资源负载值的标准差,σ越小,表示所有虚拟机的内存负载越均衡。
以下是用于与本发明对比的较为有效的任务调度方法:
第一种,先来先服务(FCFS)方法:任务的调度顺序根据任务达到的时间先后顺序来确定;
第二种,随机(Random)方法:将任务随机调度至虚拟机执行。
在相同的硬件环境下对三种调度方法进行仿真实验,计算虚拟机的内存资源负载均衡度σ。仿真实验的硬件环境为window10 64位操作系统,处理器为Intel Core i7-9700,内存16GB。
图4为任务数从20变化到100的本发明的任务调度方法与上述任务调度方法的负载均衡度比较图。其中横坐标表示任务数目,纵坐标表示每种调度方法的负载均衡度。从图4中可以看到本发明的负载均衡度明显低于其他两种调度方法,说明本发明的任务调度方法使得内存资源的负载更加均衡。由于本发明是在满足任务时延要求的情况下,优先选择将任务调度至内存资源剩余尽可能多的虚拟机上执行,不会出现个别虚拟机任务负载过多,而其他虚拟机无任务需要处理的情况,从而达到虚拟机内存负载的均衡。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (9)

1.一种基于内存与图像分类模型时延关系的任务调度方法,其特征在于包括以下步骤:
第一步,构建内存与图像分类模型时延关系的任务调度系统,内存与图像分类模型时延关系的任务调度系统由测试系统和任务调度模块组成,其中测试系统由环境部署模块、测试模块和拟合模块组成;
环境部署模块与测试模块相连,由Docker镜像和测试数据集组成;Docker镜像提供测试时的运行环境,测试数据集作为图像分类任务供图像分类模型执行;
测试模块与环境部署模块、拟合模块相连,由shell测试脚本、docker容器、模型时延测试模块组成,shell测试脚本从环境部署模块接收测试数据集,运行docker容器后调用模型时延测试模块对图像分类模型进行测试,得到测试结果;模型时延测试模块是处理图像分类任务的程序;
拟合模块与测试模块相连,由内存与图像分类任务时延的函数组成,对从测试模块接收的测试结果进行处理并拟合,得到内存资源量与预训练好的图像分类模型时延之间的函数关系;
任务调度模块根据内存资源量与预训练好的图像分类模型时延之间的函数关系进行图像分类任务的调度;
第二步,环境部署模块部署测试时环境和准备测试数据集,方法是:
步骤2.1,构建Docker镜像;创建一个用于构建Docker镜像的dockerfile文本文件,在dockerfile文件中写入与测试环境有关的如下指令:步骤2.1.1拉取基础镜像python,python要求版本号3.7及以上;
步骤2.1.2设置后续指令运行的工作目录;
步骤2.1.3将paddlehub库中N个预训练好的图像分类模型拷贝至基础镜像python内;
步骤2.1.4安装提供调用的图像分类pythonAPI,即用Python包管理工具pip安装paddlepaddle库和paddlehub库;
步骤2.2,用docker build命令执行dockerfile文件中的指令,构建一个用于测试的镜像,将N个预训练好的图像分类模型拷贝至基础镜像python内,N为正整数;
步骤2.3,制作测试数据集;
第三步,测试模块运行shell测试脚本进行时延测试,得到不同内存下N个预训练好的图像分类模型的时延结果,方法是:
步骤3.1,固定与CPU有关的设置,保证内存独立变化;设定cpu主频;
步骤3.2,循环运行docker容器,测试出N个预训练好的图像分类模型在内存区间[L,R]的时延结果,其中L是设定的内存测试区间的起始值,R是设定的内存测试区间的终点值,每次测试进行J次,J为正整数,得到csv1,…,csvn,…,csvN,csvn是第n个时延结果csv文件,记录了T1,…,Tj,…,TJ;Tj是第j轮处理第n个图像分类任务的时延测试结果,其值等于调用classification接口对测试数据集中的图像进行图像分类前后的时间戳之差;
第四步,拟合模块根据csv1,…,csvn,…,csvN记录的时延结果,拟合内存与图像分类模型时延的函数关系;方法是:
步骤4.1,令n=1;
步骤4.2,剔除csvn文件中的时延测试结果中的异常值,得到剔除了异常时延测试结果的csvn,令为s-csvn,令csvn中剩余的时延测试结果还有J1个,J1<J;
步骤4.3,对s-csvn中J1个数据取平均值,作为第n个预训练好的图像分类模型时延yn
步骤4.4,采用非线性最小二乘法,拟合出第n个图像分类模型时延与内存资源为x满足的函数关系如公式(一):
Figure FDA0003582272350000021
其中参数an,bn,cn因图像分类模型而异,由函数拟合工具curve_fit得到;
步骤4.5,令n=n+1,若n≤N,转至步骤4.2;若n>N,表示N个预训练好的图像分类模型时延与内存资源的函数关系拟合完毕,得到了y1,…,yn,…,yN与内存资源x的函数关系,转第五步;
第五步,任务调度模块根据用户提交任务的时延要求,根据图像分类模型时延与内存资源的函数关系即公式(一),进行图像分类任务的调度,方法是:
步骤5.1,令M个图像分类任务分别为TT1,...,TTm,...,TTM,m=1,2,...,M;用TTn,m表示需要调用虚拟机中第n个图像分类模型的第m个图像分类任务,用
Figure FDA0003582272350000031
表示TTn,m的任务量,用t表示单位任务量,即为图片数目;有K个虚拟机V1,...,Vk,...,VK,k=1,2,...,K,用
Figure FDA0003582272350000032
表示第k个虚拟机的内存,虚拟机中包含所有的N个预训练好的图像分类模型;同时,令TTn,m的时延上界为
Figure FDA0003582272350000033
得到TTn,m需要的内存资源为
Figure FDA0003582272350000034
步骤5.2,令m=1;
步骤5.3,根据K个虚拟机各自的内存剩余量设定K个虚拟机的优先级,优先级顺序正比于虚拟机剩余内存量,内存剩余量越多,优先级越高;
步骤5.4,判断K个虚拟机中有无同时满足以下两个条件的虚拟机:1.内存剩余量大于等于Tn,m的内存需求量;2.满足条件1的虚拟机中优先级最高的虚拟机;若有,将Tn,m放置在满足以上两个条件的虚拟机Vk中执行,调度策略用(TTn,m,Vk)表示,表示将TTn,m放置Vk中执行,转步骤5.5;如果K个虚拟机中没有一个同时满足以上两个条件,则说明当前所有虚拟机内存资源都不够运行TTn,m,重新开一个虚拟机,令K=K+1,转步骤5.3;
步骤5.5,令m=m+1,若m≤M,转至步骤5.3;若m>M,说明M个任务均已调度,转至步骤5.6;
步骤5.6,得到任务调度结果(TTn,m,Vk),即为满足任务时延要求的任务调度策略。
2.如权利要求1所述的基于内存与图像分类模型时延关系的任务调度方法,其特征在于所述模型时延测试模块是python程序。
3.如权利要求1所述的基于内存与图像分类模型时延关系的任务调度方法,其特征在于步骤2.3所述制作测试数据集的方法是:选取公开数据集ImageNet2012的图片作为测试数据集,从ImageNet2012中随机选取一千张图片分为十组,每组为一百张图片,作为单位任务量。
4.如权利要求1所述的基于内存与图像分类模型时延关系的任务调度方法,其特征在于步骤3.1所述设定cpu主频的方法是:利用linux中提供的cpufreq工具设定cpu主频为3.0GHz。
5.如权利要求1所述的基于内存与图像分类模型时延关系的任务调度方法,其特征在于步骤3.2所述测试N个预训练好的图像分类模型在内存区间[L,R]的时延结果的方法是:
步骤3.2.1,令图像分类模型的序号n=1,令内存资源大小的限定值i=L,令测试的轮数j=1;
步骤3.2.2,shell测试脚本读取第n个预训练好的图像分类模型名称;
步骤3.2.3,运行docker容器,用docker–m命令来指定容器运行期间所能占用内存资源大小的限定值,即为i;用docker-v命令设置容器与宿主机的挂载路径;同时,用docker-rm命令设定容器运行结束后自动销毁;
步骤3.2.4,在docker容器中运行模型时延测试模块,模型时延测试模块读取测试数据集中的图像,调用百度paddlehub中模型的classification接口对测试数据集中的图像进行图像分类;
步骤3.2.5,获取调用classification接口前后的时间戳之差作为第j轮处理第n个图像分类任务的时延Tj,并将时延结果Tj记录到第n个时延测试结果csv文件中,令该csv文件命名为csvn
步骤3.2.6,第n个预训练好的图像分类模型的图像分类任务测试结束后,容器自动销毁,通过挂载路径得到时延测试结果文件csvn;令j=j+1,若j≤J,转至步骤3.2.2;若j>J,说明csvn中记录了T1,…,Tj,…,TJ,转至步骤3.2.7;
步骤3.2.7,令i=i+10,即内存资源大小的限定值变化10MB,若i≤R,转至步骤3.2.2,若i>R,转至步骤3.2.8;
步骤3.2.8令n=n+1,即切换至下一个图像分类模型,若n≤N,转至步骤3.2.2;若n>N,表示N个预训练好的图像分类模型全部测试完成,得到csv1,…,csvn,…,csvN,结束。
6.如权利要求1所述的基于内存与图像分类模型时延关系的任务调度方法,其特征在于步骤4.2所述剔除csvn中的异常值的方法是:
4.2.1计算csvn中的J次时延数据的平均值μn
4.2.2计算csvn中的J次时延数据的标准差σn
4.2.3将T1,…,Tj,…,TJ中大于μn+3σn或小于μn-3σn的数据作为异常数据从csvn中剔除,得到剔除了异常数据的csvn,令为s-csvn
7.如权利要求1所述的基于内存与图像分类模型时延关系的任务调度方法,其特征在于步骤4.4所述拟合第n个图像分类模型时延 与内存资源为x满足的函数关系即公式(一)时利用scipy库的函数拟合工具curve_fit,所述公式(一)中的参数an,bn,cn也由函数拟合工具curve_fit得到。
8.如权利要求1所述的基于内存与图像分类模型时延关系的任务调度方法,其特征在于所述内存的单位为MB,所述时延的单位为秒。
9.如权利要求1所述的基于内存与图像分类模型时延关系的任务调度方法,其特征在于所述N≥10,所述J≥10。
CN202111431501.1A 2021-11-29 2021-11-29 基于内存与图像分类模型时延关系的任务调度方法 Active CN114048040B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111431501.1A CN114048040B (zh) 2021-11-29 2021-11-29 基于内存与图像分类模型时延关系的任务调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111431501.1A CN114048040B (zh) 2021-11-29 2021-11-29 基于内存与图像分类模型时延关系的任务调度方法

Publications (2)

Publication Number Publication Date
CN114048040A CN114048040A (zh) 2022-02-15
CN114048040B true CN114048040B (zh) 2022-05-13

Family

ID=80211474

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111431501.1A Active CN114048040B (zh) 2021-11-29 2021-11-29 基于内存与图像分类模型时延关系的任务调度方法

Country Status (1)

Country Link
CN (1) CN114048040B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115442274B (zh) * 2022-08-31 2023-05-12 重庆长安汽车股份有限公司 一种汽车数据上传云端延迟时间的测试方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021042373A1 (zh) * 2019-09-06 2021-03-11 阿里巴巴集团控股有限公司 数据处理与任务调度方法、设备、系统及存储介质
CN112653500A (zh) * 2020-12-16 2021-04-13 桂林电子科技大学 基于蚁群算法的面向低轨道卫星边缘计算任务调度方法
CN113032120A (zh) * 2021-03-26 2021-06-25 重庆大学 一种基于边缘计算的工业现场大数据任务协调度方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9766996B1 (en) * 2013-11-26 2017-09-19 EMC IP Holding Company LLC Learning-based data processing job performance modeling and prediction
CN105700946B (zh) * 2016-01-15 2019-03-05 华中科技大学 一种numa架构下平衡多线程间访存延迟的调度系统及方法
US11429895B2 (en) * 2019-04-15 2022-08-30 Oracle International Corporation Predicting machine learning or deep learning model training time
CN112231097B (zh) * 2020-09-27 2024-05-24 沈阳中科博微科技股份有限公司 电容型压力变送器边缘计算工作系统和工作方法
CN112783567B (zh) * 2021-01-05 2022-06-14 中国科学院计算技术研究所 一种基于全局信息的dnn任务卸载决策方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021042373A1 (zh) * 2019-09-06 2021-03-11 阿里巴巴集团控股有限公司 数据处理与任务调度方法、设备、系统及存储介质
CN112653500A (zh) * 2020-12-16 2021-04-13 桂林电子科技大学 基于蚁群算法的面向低轨道卫星边缘计算任务调度方法
CN113032120A (zh) * 2021-03-26 2021-06-25 重庆大学 一种基于边缘计算的工业现场大数据任务协调度方法

Also Published As

Publication number Publication date
CN114048040A (zh) 2022-02-15

Similar Documents

Publication Publication Date Title
WO2022262167A1 (zh) 集群资源调度方法及装置、电子设备和存储介质
WO2020211205A1 (zh) 一种数据处理方法及相关产品
CN110008024B (zh) 一种多维约束下基于延迟决策的容器调度方法以及装置
JP2020507135A (ja) 専属エージェントプール配分方法、電子装置及びコンピューター読取可能な記憶媒体
WO2016040699A1 (en) Computing instance launch time
US20230206132A1 (en) Method and Apparatus for Training AI Model, Computing Device, and Storage Medium
WO2021126272A1 (en) Machine learning workload orchestration in heterogeneous clusters
WO2021130596A1 (en) Elastic execution of machine learning workloads using application based profiling
CN113553140B (zh) 资源调度方法、设备及系统
CN110661842A (zh) 一种资源的调度管理方法、电子设备和存储介质
CN108427602B (zh) 一种分布式计算任务的协同调度方法及装置
CN114048040B (zh) 基于内存与图像分类模型时延关系的任务调度方法
CN115134371A (zh) 包含边缘网络算力资源的调度方法、系统、设备及介质
CN114625500A (zh) 云环境下拓扑感知的微服务应用调度的方法及应用
Turin et al. A formal model of the kubernetes container framework
CN115391023A (zh) 多任务容器集群的计算资源优化方法及装置
CN110034963B (zh) 一种应用集群自适应的弹性配置方法
Raman et al. Computation of workflow scheduling using backpropagation neural network in cloud computing: a virtual machine placement approach
CN114911613A (zh) 一种云际计算环境中跨集群资源高可用调度方法及系统
CN109582461A (zh) 一种针对Linux容器的资源部署方法及系统
CN117056018A (zh) 资源调度方法、装置、设备、程序产品和存储介质
CN116302448B (zh) 任务调度方法和系统
CN115061811A (zh) 一种资源调度方法、装置、设备及存储介质
CN112948087A (zh) 一种基于拓扑排序的任务调度方法及系统
Loukopoulos et al. Improved genetic algorithms and list scheduling techniques for independent task scheduling in distributed systems

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
GR01 Patent grant