一种GPU资源调度方法及系统与流程
未命名
07-13
阅读:80
评论:0

一种gpu资源调度方法及系统
技术领域
1.本发明涉及工业质检领域及计算机领域,尤其涉及一种gpu资源调度方法及系统。
背景技术:
2.目前,工厂中部署的缺陷检测模型在进行推理时,由于机器发送的图片来自不同的光学面,图像的尺寸不固定,使得为其提供推理服务的深度学习模型系统必须能接受动态的图片尺寸,目前常规的深度学习批处理无法应对这种情况;同时,不同光学面的图片需要被不同的模型组合进行处理,而gpu对于模型的加载和资源释放都需要时间成本,而推理服务对于推理速度的要求是必要且苛刻的,如果推理服务启动时有大量的资源未被利用,在生产中会大大降低生产速度。
3.在现有技术实际的推理场景下,同一个显卡的计算资源允许多个模型的线程同时访问,但需要根据显卡的显存来设置每个模型在该显卡上推理时所允许的最大线程数。如果线程数过大,同时推理时模型所占用的显存资源超过显卡的实际显存,则无法推理。计算资源配置相同的机器可以使用同一个配置文件进行推理,因此以字典形式存储模型和显卡的最优配置非常适合工厂中批量质检的场景,只要在一台机器上实验出效率最高的模型、显卡、最大线程数,就可以将同样的参数批量配置在拥有同样硬件配置的机器上。
4.且在现有技术的生产方式中,现场的工程师在部署时需要配置多个文件,因为过去的配置文件仅仅包含了模型文件的权重路径,但一个方案常常有多个模型,每个模型都有一个权重。在这样的方式下,从模型训练到现场部署,中间需要交互的除了一个配置文件,还需要若干模型文件,造成了文件管理问题,也时常因模型版本问题引发训练和部署不一致的现象。
5.现有技术专利号cn202210061674.7公开了一种基于gpu设备的模型推理加速方法及系统,该专利技术方案中,虽然有通过将模型转为onnx的推理加速服务方法,但实际应用中,深度学习模型的不少算子会在转为onnx模型的过程中发生错误,导致推理结果和原模型不一致的情况,为生产的稳定性带来了一些隐患;同时由于固定的推理逻辑,onnx模型在现有的生产环境下调度gpu资源也缺乏灵活性。
6.针对现有技术中所存在的问题,提供一种gpu资源调度方法及系统具有重要意义。
技术实现要素:
7.为解决上述问题,本发明提供一种gpu资源调度方法及系统。
8.为实现上述目的,本发明的gpu资源调度方法,具体包括以下步骤:生成配置文件,所述配置文件包括参数配置及模型权重系数;根据所述配置文件进行初始化;采集图片及其现场设定的光学面信息;对所述图片及所述光学面信息进行推理;
9.进一步地,对所述图片及所述光学面信息进行推理具体包括以下子步骤:根据所述光学面信息,调取所述配置文件中相对应的所述参数配置及所述模型权重系数,并根据所述参数配置及所述模型权重系数进行实例化;调用检测模型对所述图片进行推理,得到
图片中缺陷的检测框信息,并于检测框位置以固定尺寸裁剪,生成缺陷图像;调用分类模型对所述缺陷图像进行判断是否属于某类缺陷,并返回推理结果;
10.进一步地,所述调用检测模型对所述图片进行推理具体为:根据检测模型自身属性的模型名,调取模型对应的线程队列;若所述队列中有元素,则获取队首的元素,并根据所述元素中提供的索引信息调取所述模型权重系数进行推理,并在推理结束后释放资源,将所述元素放回所述队列的队尾;若队列中没有元素,则阻塞所述推理线程,直至所述推理线程队列不为空;
11.进一步地,根据所述配置文件进行初始化具体包括以下子步骤:对所述配置文件中的信息进行初始化得到模型池对象;根据所述配置文件中的信息得到所述参数配置对应的字典;用所述模型池对象及所述字典初始化inference类型对象;
12.进一步地,采集图片及其现场设定的光学面信息具体为:采集图片及其现场设定的光学面信息,并通过grpc协议,以多线程的方式发送。
13.本发明还包括一种gpu资源调度系统,包括服务器端,客户端,gpu,数据采集模块及线程模块;所述gpu及线程模块设置在所述服务器端中,所述数据采集模块设置在所述客户端中;所述客户端能够通过所述数据采集模块采集图片及其现场设定的光学面信息,并发送至所述服务器端;所述服务器端能够生成配置文件,并根据所述配置文件进行初始化;并通过所述gpu及所述线程模块对所述图片及所述光学面信息进行推理;
14.进一步地,还包括检测模型模块及分类模型模块,所述检测模型模块及分类模型模块分别设置在所述gpu中,所述服务器端能够根据所述光学面信息,调取所述配置文件中相对应的所述参数配置及所述模型权重系数,并根据所述参数配置及所述模型权重系数进行实例化;所述服务器端还能够通过所述线程模块调用所述检测模型模块对所述图片进行推理,得到图片中缺陷的检测框信息,并于检测框位置以固定尺寸裁剪,生成缺陷图像;通过所述线程模块调用所述分类模型模块对所述缺陷图像进行判断是否属于某类缺陷,并输出推理结果;
15.进一步地,所述客户端具体能够在采集图片及其现场设定的光学面信息后,通过grpc协议,以多线程的方式将所述图片及所述光学面信息发送至所述服务端;
16.进一步地,所述服务器端具体能够对所述配置文件中的信息进行初始化得到模型池对象,并根据所述配置文件中的信息得到所述参数配置对应的字典,用所述模型池对象及所述字典初始化inference类型对象。
17.本发明的gpu资源调度方法及系统,采用文件合并的方式,利用模型对应的权重载入函数,将模型的权重系数加入到配置文件所包含的字典中,和其他配置信息一起形成一个字典的数据形式,并以pickle的文件格式进行保存,以此形式,基于本方案,在训练结束时,只需输出一个文件,而现场的工程师也只需要一个文件即可完成部署,避免了文件管理带来的效率问题。同时,本发明的技术方案为了避免模型的重复加载和冗余加载,整个推理服务共享一个模型池,推理时,其他进行推理服务的线程将实时向模型池申请模型,模型池为推理线程提供所需的模型,并分配gpu资源,大大提高了gpu资源调度的运行效率。
附图说明
18.图1为本发明所述gpu资源调度方法的第一流程示意图;
19.图2为本发明所述gpu资源调度方法的第二流程示意图;
20.图3为本发明所述gpu资源调度方法的结构示意图。
具体实施方式
21.下面,结合附图,对本发明的结构以及工作原理等作进一步的说明。
22.如图1所示,图1为本发明所述gpu资源调度方法的第一流程示意图,所述方法具体包括以下步骤:
23.s1生成配置文件,所述配置文件包括参数配置及模型权重系数;在本发明优选的实施例中,所述参数配置具体为效率最高的模型、显卡、最大线程数并以字典形式存储,并采用文件合并的方式,利用模型对应的权重载入函数attempt_load()、torch.load()等,将模型的权重系数加入到所述配置文件所存储的字典中。
24.s2根据所述配置文件进行初始化;
25.s3采集图片及其现场设定的光学面信息;在本发明优选的实施例中,具体为采集图片及其现场设定的光学面信息,并通过grpc协议,以多线程的方式发送;
26.s4对所述图片及所述光学面信息进行推理;
27.s4.1根据所述光学面信息,调取所述配置文件中相对应的所述参数配置及所述模型权重系数,并根据所述参数配置及所述模型权重系数进行实例化;在本发明优选的实施例中,具体为对图片和其对应的光学面信息进行反序列化,并开始调用inference类的对象进行推理;具体地,所述inference类用于多线程方式接收要推理的图片,并根据图片的光学面id信息,实例化对应的pipeline对象,并用pipeline对象对图像进行推理,返回该图片的推理结果。
28.s4.2调用检测模型对所述图片进行推理,得到图片中缺陷的检测框信息,并于检测框位置以固定尺寸裁剪,生成缺陷图像;在本发明优选的实施例中,调用自身的成员函数infer(),依次遍历对应的det_models(检测模型)和cls_models(分类模型)对图片进行推理,detect()根据det_model(检测模型)自身属性的模型名,去模型池中找到该模型对应的线程队列,如果队列有元素,就从队首中获取元素,根据队首元素中提供的索引信息,去模型池对象model_pool中获取该模型的权重,该模型推理结束后释放资源,将元素放回线程队列的队尾;如果队列为空,该推理线程阻塞,直到线程队列不为空;
29.s4.3调用分类模型对所述缺陷图像进行判断是否属于某类缺陷,并返回推理结果;在本发明优选的实施例中,具体为det_model(检测模型)在得到所述缺陷图像后,detect()又会以检测框位置附近以固定尺寸裁剪小图,并调用pipeline的成员函数post_cls(),用后处理二分类模型对小图进行判断是否属于某类缺陷,返回判断结果,同时在detect()得到单个模型对该图片的推理结果后,放入结果列表中,并继续下一个模型对该图片的推理,inference()会将该图片的所有检测框坐标信息和框对应的缺陷类别作为结果,通过grpc协议发送至客户端,至此,一张图片的推理结束。
30.如图2所示,图2为本发明所述gpu资源调度方法的第二流程示意图,所述配置文件进行初始化具体包括以下子步骤:
31.s2.1对所述配置文件中的信息进行初始化得到模型池对象;
32.s2.2根据所述配置文件中的信息得到所述参数配置对应的字典;
33.s2.3用所述模型池对象及所述字典初始化inference类型对象。在本发明优选的实施例中,具体为modelpool类根据配置文件中的信息进行初始化得到模型池对象model_pool,同时根据配置文件中的信息得到光学面id和模型组合对应的字典pip_index,利用model_pool和pip_index初始化inference类型的对象。
34.如图3所示,图3为本发明所述gpu资源调度方法的结构示意图,具体包括服务器端2,客户端1,gpu22,数据采集模块11、线程模块21、检测模型模块211及分类模型模块212;
35.所述gpu22及线程模块21设置在所述服务器端中,所述检测模型模块211及分类模型模块212分别设置在所述gpu22中;所述数据采集模块11设置在所述客户端1中;
36.所述客户端1能够通过所述数据采集模块11采集图片及其现场设定的光学面信息,并发送至所述服务器端2;
37.所述服务器端2能够生成配置文件,并根据所述配置文件进行初始化;具体为能够对所述配置文件中的信息进行初始化得到模型池对象,并根据所述配置文件中的信息得到所述参数配置对应的字典,用所述模型池对象及所述字典初始化inference类型对象;并通过所述gpu22及所述线程模块21对所述图片及所述光学面信息进行推理。在本发明优选的实施例中,所述模型池对象moolpool共有三个成员变量:模型列表model_list用于以去重的方式存储模型的权重,其中的每个元素是一个长度为二的列表,保存了模型和该模型分配的显卡id信息;模型池model_pool为字典类型,字典的key为模型名,value为其对应的线程队列;指针变量pointer(int类型)用于构造模型的线程队列,指明模型对应的权重在model_list中的索引,作为线程队列的元素进行存储。并且包含有四个成员函数,分别为init_det_pool()、warmup_det()、init_cls_pool()、warmup_cls(),用于将检测模型模块和分类模型模块加载进模型池中。检测模型的加载具体为,参与的函数为init_det_pool()和warmup_det(),其中warmup_det()的入参为从配置文件config中读取的单个检测模型的配置信息(字典结构),返回值为该模型的线程队列变量thread_queue(队列结构);thread_queue队列中的元素即为模型在成员变量model_list(列表)中存储的索引。
38.所述服务器端2还能够根据所述光学面信息,调取所述配置文件中相对应的所述参数配置及所述模型权重系数,并根据所述参数配置及所述模型权重系数进行实例化;所述服务器端2还能够通过所述线程模块21调用所述检测模型模块211对所述图片进行推理,得到图片中缺陷的检测框信息,并于检测框位置以固定尺寸裁剪,生成缺陷图像;通过所述线程模块21调用所述分类模型模块212对所述缺陷图像进行判断是否属于某类缺陷,并输出推理结果。在本发明具体的实施例中,在服务器端2具体需要调用所述检测模型模块211及调用所述分类模型模块212时,在moolpool类的实例化过程中,init_det_pool()首先被调用,遍历配置文件中所有的键值对,warmup_det()用于处理每一个键值对:1)向moolpool类的成员变量model_list中添加元素,其元素是由显卡id和模型权重信息组成的列表,同时用变量pointer记录存储的索引信息;2)构造模型的线程队列:根据配置中的最大线程数,将模型在model_list中的索引信息放入线程队列的队尾,线程队列的长度等于配置的最大线程数,这样在推理时,其他线程申请计算资源时,会先看模型的线程队列中是否有元素,如果有,则从线程队列的队首取走一个元素,根据该元素所提供的索引信息,在model_list中获取模型的权重和分配的显卡进行推理,推理完成后将该元素再放回队列,释放计算资源;如果该模型对应的线程队列中没有元素,则阻塞,直到线程队列不再为空,
来确保推理时的线程安全。
39.所述客户端1具体能够在采集图片及其现场设定的光学面信息后,通过grpc协议,以多线程的方式将所述图片及所述光学面信息发送至所述服务器端2。
40.在本发明一种优选的实施例中,以一种笔记本零件质检项目为例,该项目中使用了2个yolov5模型作为一阶段质检的检测模型,并使用了3个mobilenet模型作为后处理的分类模型,每个模型保存在一个pt文件中。在质检机器上,可能会存在多张显卡,由于显卡的状况不同,同样的模型可能会以拷贝的形式分配在不同显卡上进行推理,根据显卡的状况设置不同的最大线程数,面对这种复杂的场景,模型池对于不同显卡的不同模型只保留一份,减少冗余拷贝。同时,模型在显卡的分布,是在模型启动的配置文件中以多级字典的数据格式来体现,如模型1:{显卡1:最大线程数2},表示模型1要使用显卡1进行推理,其部署在显卡1上时,最多允许2个利用模型1的线程同时在显卡1上进行推理;模型1:{显卡2:最大线程数4},表示使用到模型1在显卡2上进行推理的线程最多只能有4个;模型2:{显卡1:最大线程数5},表示使用到模型2在显卡1上进行推理的线程最多只能有5个。
41.在本发明另一种优选的实施例中,当在该质检项目中,图片会自不同的光学面,不同的光学面可能会用不同的模型组合来进行分析,而同一个光学面可能会被多个线程模块pipleline处理。为了应对本实施例中的场景,灵活使用不同的模型组合,本发明实施例中的模型组合用一个线程模块pipeline类来进行图像不同处理方法组合的封装。
42.该类一共有四个成员变量:对应的模型池model_pool:将线程模块pipeline类对象的模型池属性指向模型池类的对象moolpool,在整个推理程序中所实例化的线程模块pipeline类对象,其模型池属性指向的模型池类的对象是同一个(moolpool类在设计时也采用单例设计模式,只会有一个实例化的对象),这样便达到了所有线程模块pipeline类对象共享同一个模型池资源,最大限度提高显存的利用率。2)检测模型属性det_models(basemodel类对象组成的列表结构):线程模块pipeline类对象的检测模型属性指向的是列表类型的数据结构,列表中的每个元素都是通过basemodel和对应的模型信息实例化的检测模型对象,如yolo模型,根据配置文件中字典的模型权重、对应要处理的光学面id、是否要进行后处理等信息实例化的basemodel对象;3)分类模型属性cls_models(列表结构):线程模块pipeline类对象的分类模型属性指向的也是列表类型的数据结构,和检测模型一样,列表中的每个元素都是通过basemodel和对应的模型信息实例化的分类模型对象;4)后处理分类模型属性(列表结构):线程模块pipeline类对象的后处理分类模型属性指向的也是列表类型的数据结构,后处理分类模型实例化的basemodel对象,会增加要判断的缺陷种类属性,后处理二分类模型会根据前一阶段检测模型检测出的缺陷类来匹配需要处理的数据,而不是像前一阶段的检测模型根据光学面id来匹配自己需要处理的数据。
43.该类共有四个成员函数:推理函数infer()的入参为接收的图像和光学面id信息,并以列表形式返回该图片被推理的结果,对传参的图像,当该函数被调用时,该线程模块pipeline对象会分别遍历其列表类型的成员变量det_models和cls_models中的模型进行推理,在遍历中调用2)中的detect进行推理;2)detect()成员函数的入参为basemodel类型的检测模型det_model、图像和图像对应的光学面id信息,返回值为该模型推理的检测框坐标信息,当该函数被调用时,此推理线程会根据det_model(basemodel类型)中的模型名属性找到该模型对应的线程队列,判断此时线程队列中是否为空:i)不为空,则从队首取出
一个元素,根据该元素提供的索引信息,去model_pool指向的模型池中拷贝模型权重,得到检测框信息后,将模型放回队尾,释放计算资源,ii)队列为空,则线程阻塞,直到队列不为空,得到检测框后,一阶段推理结束,detect()会将检测框进行随机裁剪得到缺陷附近的小尺寸图,多线程调用3)中的post_cls()进行二阶段的推理;3)post_cls()成员函数的入参为detect()中裁剪的小尺寸图,返回值为该小尺寸图是否属于缺陷的判断,当post_cls()被调用时,会遍历此线程模块pipeline对象的post_cls_models属性(列表类型),列表中的每个后处理二分类模型是专门由其对应缺陷的数据训练而成,可以有效判断要处理的图像是否有某类缺陷。4)classify()成员函数只用于一阶段推理的分类,其逻辑和2)中的detect()一致,入参为单个分类模型cls_model,但不调用后处理二分类模型,仅返回图片被该cls_model推理后的分类判断结果。构造函数线程模块pipeline类的对象在实例化的过程中调用构造函数,主要完成以下操作:i)将该对象的model_pool属性指a中的模型池对象;ii)根据配置文件中的字典,基于循环遍历,依次将成员变量det_models、cls_models、post_cls_models初始化;线程模块pipepline类对象实例化后就会参与到d的推理服务中对目标图像的推理。
44.在本发明另一种优选的实施例中,所述inference类一共包含三个成员变量:1,光学面id和数据处理组合pipeline的匹配关系pip_index;2,配置文件中存储的字典信息configs;3,指向modelpool类实例化的模型池对象的modelpool。所述inference类包含一个成员函数inference(),其入参为接收到的图片和其对应的光学面信息,返回值为推理结果。当该函数被调用时,会根据该inference类对象中的pip_index和图片的光学面信息作为入参去实例化一个pipeline类对象,确定pipeline类对象的det_models、cls_models、post_cls_models,即处理该光学面id的图像需要用哪种检测模型、分类模型和后处理模型的组合,推理结束后返回推理结果。当所述inference类被实例化发生在推理服务启动时,此时会基于配置文件去实例化inference类,利用配置文件中的字典实例化inference类的三个成员函数:pip_index、configs、modelpool。推理服务在运行过程中,如果接收到图片,inference类的对象就会调用自身的成员函数inference()对接收的图片进行推理。
45.以上,仅为本发明的示意性描述,本领域技术人员应该知道,在不偏离本发明的工作原理的基础上,可以对本发明作出多种改进,这均属于本发明的保护范围。
技术特征:
1.一种gpu资源调度方法,其特征在于,所述方法具体包括以下步骤:生成配置文件,所述配置文件包括参数配置及模型权重系数;根据所述配置文件进行初始化;采集图片及其现场设定的光学面信息;对所述图片及所述光学面信息进行推理。2.如权利要求1所述的gpu资源调度方法,其特征在于,对所述图片及所述光学面信息进行推理具体包括以下子步骤:根据所述光学面信息,调取所述配置文件中相对应的所述参数配置及所述模型权重系数,并根据所述参数配置及所述模型权重系数进行实例化;调用检测模型对所述图片进行推理,得到图片中缺陷的检测框信息,并于检测框位置以固定尺寸裁剪,生成缺陷图像;调用分类模型对所述缺陷图像进行判断是否属于某类缺陷,并返回推理结果。3.如权利要求2所述的gpu资源调度方法,其特征在于,所述调用检测模型对所述图片进行推理具体为:根据检测模型自身属性的模型名,调取模型对应的线程队列;若所述队列中有元素,则获取队首的元素,并根据所述元素中提供的索引信息调取所述模型权重系数进行推理,并在推理结束后释放资源,将所述元素放回所述队列的队尾;若队列中没有元素,则阻塞所述推理线程,直至所述推理线程队列不为空。4.如权利要求1所述的gpu资源调度方法,其特征在于,根据所述配置文件进行初始化具体包括以下子步骤:对所述配置文件中的信息进行初始化得到模型池对象;根据所述配置文件中的信息得到所述参数配置对应的字典;用所述模型池对象及所述字典初始化inference类型对象。5.如权利要求1所述的gpu资源调度方法,其特征在于,采集图片及其现场设定的光学面信息具体为:采集图片及其现场设定的光学面信息,并通过grpc协议,以多线程的方式发送。6.一种gpu资源调度系统,其特征在于,包括服务器端,客户端,gpu,数据采集模块及线程模块;所述gpu及线程模块设置在所述服务器端中,所述数据采集模块设置在所述客户端中;所述客户端能够通过所述数据采集模块采集图片及其现场设定的光学面信息,并发送至所述服务器端;所述服务器端能够生成配置文件,并根据所述配置文件进行初始化;并通过所述gpu及所述线程模块对所述图片及所述光学面信息进行推理。7.如权利要求6所述的gpu资源调度系统,其特征在于,还包括检测模型模块及分类模型模块,所述检测模型模块及分类模型模块分别设置在所述gpu中,所述服务器端能够根据所述光学面信息,调取所述配置文件中相对应的所述参数配置及所述模型权重系数,并根据所述参数配置及所述模型权重系数进行实例化;所述服务器端还能够通过所述线程模块调用所述检测模型模块对所述图片进行推理,得到图片中缺陷的检测框信息,并于检测框位置以固定尺寸裁剪,生成缺陷图像;通过所述线程模块调用所述分类模型模块对所述缺陷图像进行判断是否属于某类缺陷,并输出推理
结果。8.如权利要求6所述的gpu资源调度系统,其特征在于,所述客户端具体能够在采集图片及其现场设定的光学面信息后,通过grpc协议,以多线程的方式将所述图片及所述光学面信息发送至所述服务端。9.如权利要求6所述的gpu资源调度系统,其特征在于,所述服务器端具体能够对所述配置文件中的信息进行初始化得到模型池对象,并根据所述配置文件中的信息得到所述参数配置对应的字典,用所述模型池对象及所述字典初始化inference类型对象。
技术总结
本发明公开了一种GPU资源调度方法及系统。包括步骤:生成配置文件,所述配置文件包括参数配置及模型权重系数;根据所述配置文件进行初始化;采集图片及其现场设定的光学面信息;对所述图片及所述光学面信息进行推理。采用本发明的GPU资源调度方法及系统,采用文件合并的方式,利用模型对应的权重载入函数,将模型的权重系数加入到配置文件所包含的字典中,和其他配置信息一起形成一个字典的数据形式,并以pickle的文件格式进行保存,以此形式,基于本方案,在训练结束时,只需输出一个文件,而现场的工程师也只需要一个文件即可完成部署,避免了文件管理带来的效率问题。避免了文件管理带来的效率问题。避免了文件管理带来的效率问题。
技术研发人员:戴猛 马元巍 潘正颐 侯大为 童竹勍
受保护的技术使用者:常州微亿智造科技有限公司
技术研发日:2023.02.09
技术公布日:2023/7/12
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种艾条自动化包装机的制作方法 下一篇:压载水处理高压脉冲用电介质材料及其制备方法