用于图像处理服务器端的性能优化及装置的制作方法

文档序号:16134165发布日期:2018-12-01 00:43阅读:202来源:国知局

本申请涉及计算机视觉技术领域,具体而言,涉及一种用于图像处理服务器端的性能优化及装置。

背景技术

深度学习的发展和深层次网络的出现大大增加了计算机视觉领域的图片分类和物体识别的准确率,并加速了计算机视觉领域的发展。

应用到现实场景中时,不管是服务器端还是移动端,在准确率达到一定标准的同时,模型的处理效率和资源利用率也是一个同样重要的标准。

针对相关技术中服务器端的性能较差的问题,目前尚未提出有效的解决方案。



技术实现要素:

本申请的主要目的在于提供一种用于图像处理服务器端的性能优化方法,以解决服务器端的性能较差的问题。

为了实现上述目的,根据本申请的一个方面,提供了一种用于图像处理服务器端的性能优化方法。

根据本申请的用于图像处理服务器端的性能优化方法包括:接收图像处理请求;以及通过预设应用程序编程接口在深度学习推理框架中分配多个图形处理器的负载均衡。

进一步地,方法还包括:通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器。

进一步地,通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器包括:通过深度学习推理框架在可用的多个所述图形处理器中加载统一的深度学习网络模型。

进一步地,通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器之后还包括:建立服务器端的网络接口,并将通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器的功能加入到所述网络接口。

进一步地,接收图像处理请求包括:在服务器中接收用户请求并通过运行深度学习网络模型处理所述用户请求,所述深度学习网络模型包括:caffe的模型或者tensorflow的模型。

进一步地,接收图像处理请求中至少包括:图像的统一资源定位符。

进一步地,通过预设应用程序编程接口在深度学习推理框架中分配多个图形处理器的负载均衡包括:在多个可用图形处理器中,根据图形处理器预设分配策略选择图形处理器。

为了实现上述目的,根据本申请的另一方面,提供了一种用于图像处理服务器端的性能优化装置。

根据本申请的用于图像处理服务器端的性能优化装置包括:接收模块,用于接收图像处理请求;以及第一执行处理模块,用于通过预设应用程序编程接口在深度学习推理框架中分配多个图形处理器的负载均衡。

进一步地,装置还包括:第二执行处理模块,

所述第二执行处理模块,用于通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器。

进一步地,装置还包括网络接口模块,用于在服务器端网络接口加入通过深度学习推理框架在可用的多个所述图形处理器中加载统一的深度学习网络模型的功能。

在本申请实施例中,采用接收图像处理请求的方式,通过通过预设应用程序编程接口在深度学习推理框架中分配多个图形处理器的负载均衡,达到了图形处理器资源优化配置的目的,从而实现了服务器性能优化的技术效果,进而解决了服务器端的性能较差的技术问题。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请第一实施例的用于图像处理服务器端的性能优化方法示意图;

图2是根据本申请第二实施例的用于图像处理服务器端的性能优化方法示意图;

图3是根据本申请第三实施例的用于图像处理服务器端的性能优化方法示意图

图4是根据本申请第四实施例的用于图像处理服务器端的性能优化方法示意图

图5是根据本申请第五实施例的用于图像处理服务器端的性能优化方法示意图;

图6是根据本申请第一实施例的用于图像处理服务器端的性能优化装置示意图;

图7是根据本申请第二实施例的用于图像处理服务器端的性能优化装置示意图;以及

图8是根据本申请第三实施例的用于图像处理服务器端的性能优化装置示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。

并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。

此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。

本申请中的性能优化方法,通过预设应用程序编程接口在深度学习推理框架中分配多个图形处理器的负载均衡,具体提出的深度学习推理框架多gpu分配策略和功能可以提高用户请求的处理效率到原来单个gpu效率的n倍,n为gpu的个数,解决了服务器端应用大型深度学习网络模型处理用户请求效率慢的问题,同时更大限度上利用了所有可分配的gpu资源。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

如图1所示,该方法包括如下的步骤s102至步骤s104:

步骤s102,接收图像处理请求;以及

步骤s104,通过预设应用程序编程接口在深度学习推理框架中分配多个图形处理器的负载均衡。

需要注意的是,深度学习推理框架本身目前只支持在单个gpu上运行网络模型,并不支持多gpu上同时运行同一个网络模型比如gpu集群。故,因此当服务器有多个gpu时,深度学习推理框架并不能将全部gpu资源都利用到,资源利用比例较低。但通过服务器通过预设应用程序编程接口在深度学习推理框架中使用多个所述图形处理器时执行负载均衡操作,能够提高gpu的资源利用率。进一步可实现gpu上同时运行同一个网络模型。

作为本实施例中的优选,所述预设应用程序编程接口包括:pycuda。pycuda为提供了使用nvidiacuda并行计算的接口即应用程序编程接口api。需要注意的是,本领域技术人员能够根据需要对应用程序编程接口api进行调用。

作为本实施例中的优选,所述深度学习推理框架包括:tensorrt。通过pycuda在深度学习推理框架中使用多个所述图形处理器时执行负载均衡操作。

还需要注意的是,现有的在服务器端接收请求时,tensorrt只能使用到默认的gpu0用来处理请求,通过本申请实施例中的图像信息处理方法通过新增的tensorrt指定gpu和使用多个gpu的功能,tensorrt既可以同时使用多个gpu增加请求处理效率,又可以通过gpu分配策略实现gpu的负载均衡,使gpu智能的被分配。

从以上的描述中,可以看出,本申请实现了如下技术效果:

在本申请实施例中,采用接收图像处理请求的方式,通过通过预设应用程序编程接口在深度学习推理框架中分配多个图形处理器的负载均衡,达到了图形处理器资源优化配置的目的,从而实现了服务器性能优化的技术效果,进而解决了服务器端的性能较差的技术问题。

优选地,本申请实施例中提出的tensorrt多gpu分配策略和功能可以提高用户请求的处理效率到原来单个gpu效率的n倍,n为gpu的个数,解决了服务器端应用大型深度学习网络模型处理用户请求效率慢的问题,同时更大限度上利用了所有可分配的gpu资源。

根据本申请实施例,优选地,如图2所示,该方法包括:

步骤s102,接收图像处理请求;

步骤s104,通过预设应用程序编程接口在深度学习推理框架中分配多个图形处理器的负载均衡;

步骤s202,通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器。

在tensorrt现有的功能之上,拓展了tensorrt从可用的多gpu上选择指定的gpu加载深度学习网络模型的功能。

根据本申请实施例,优选地,如图3所示,该方法包括:通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器包括:

步骤s102,接收图像处理请求;

步骤s104,通过预设应用程序编程接口在深度学习推理框架中分配多个图形处理器的负载均衡;

步骤s202,通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器,

步骤s2021,通过深度学习推理框架在可用的多个所述图形处理器中加载统一的深度学习网络模型;

通过深度学习推理框架在可用的多个所述图形处理器中加载统一的深度学习网络模型,增加了在多个gpu上一起加载同一模型的功能。

根据本申请实施例,优选地,如图4所示,该方法包括:通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器之后还包括:

步骤s2022,建立服务器端的网络接口,并将通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器的功能加入到所述网络接口。

优选地,所述图形处理器用于在服务器中接收用户请求至少包括:网络接口调用请求。通过结合使用比如webservice包和tensorrt,可以实现在服务器端起一个网络函数接口。本申请的实施例的方法,将多gpu同时运行tensorrt功能加入到服务器端的网络接口中。这样,在服务器端当接收用户请求和在服务器端运行深度学习网络模型来处理请求时,实现网络接口的调用。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

根据本申请实施例,还提供了一种用于实施上述用于图像处理服务器端的性能优化方法的装置,如图6所示,该装置包括:接收模块100,用于接收图像处理请求;以及第一执行处理模块200,用于通过预设应用程序编程接口在深度学习推理框架中分配多个图形处理器的负载均衡。

需要注意的是,深度学习推理框架本身目前只支持在单个gpu上运行网络模型,并不支持多gpu上同时运行同一个网络模型比如gpu集群。故,因此当服务器有多个gpu时,深度学习推理框架并不能将全部gpu资源都利用到,资源利用比例较低。但通过服务器通过预设应用程序编程接口在深度学习推理框架中使用多个所述图形处理器时执行负载均衡操作,能够提高gpu的资源利用率。进一步可实现gpu上同时运行同一个网络模型。

作为本实施例中的优选,所述预设应用程序编程接口包括:pycuda。pycuda为提供了使用nvidiacuda并行计算的接口即应用程序编程接口api。需要注意的是,本领域技术人员能够根据需要对应用程序编程接口api进行调用。

作为本实施例中的优选,所述深度学习推理框架包括:tensorrt。通过pycuda在深度学习推理框架中使用多个所述图形处理器时执行负载均衡操作。

还需要注意的是,现有的在服务器端接收请求时,tensorrt只能使用到默认的gpu0用来处理请求,通过本申请实施例中的图像信息处理方法通过新增的tensorrt指定gpu和使用多个gpu的功能,tensorrt既可以同时使用多个gpu增加请求处理效率,又可以通过gpu分配策略实现gpu的负载均衡,使gpu智能的被分配。

根据本申请实施例,优选地,如图7所示,装置还包括:第二执行处理模块,所述第二执行处理模块,用于通过预设应用程序编程接口在深度学习推理框架中同时使用多个图形处理器。

在tensorrt现有的功能之上,拓展了tensorrt从可用的多gpu上选择指定的gpu加载深度学习网络模型的功能。

根据本申请实施例,优选地,如图8所示,装置还包括网络接口模块,用于在服务器端网络接口加入通过深度学习推理框架在可用的多个所述图形处理器中加载统一的深度学习网络模型的功能。

通过深度学习推理框架在可用的多个所述图形处理器中加载统一的深度学习网络模型,增加了在多个gpu上一起加载同一模型的功能。

具体地,本申请的实现原理如下:

以预设应用程序编程接口pycuda和深度学习推理框架tensorrt为例进行解释说明。

步骤一,通过使用pycuda实现tensorrt在指定的一个gpu上加载来自其他框架已经训练好的深度学习网络模型(caffe的模型或者tensorflow的模型)并运行加载好的模型,比如有gpu0,gpu1,gpu2,gpu3,指定tensorrt在gpu2上加载和运行caffe的resnet分类模型。

步骤二,在第一个功能的基础上,使用pycuda实现tensorrt在指定的多个gpu上同时加载同一个深度学习网络模型,比如让tensorrt在gpu0,gpu1,gpu2上加载同一个caffe的resnet分类模型。

步骤三,通过结合使用webservice包和tensorrt,实现在服务器端起一个网络函数接口,可以用来接收用户传送的图片url并通过图片链接下载用户想要分析的图片,并输入给加载到tensorrt里(此时使用的是tensorrt默认的gpu0)已经训练好的深度学习网络模型里,运行tensorrt来分析和提取图片信息,将网络模型的输出结果可以使图片分类的类别,也可以是图片中物体的类别和位置信息返回给用户。

需要注意的是,第三步骤中的webservice包是个统称,用来实现网络接口服务。本领域技术人员能够明了,也可以使用包括flask。

步骤四,结合第二步和第三步的功能,将多gpu同时运行tensorrt功能加入到服务器端的网络接口中。

需要注意的是,第四步骤的gpu智能分配策略可以替换成为其它分配方式,比如按顺序分配:a,b,c之后继续a,b,c。记录gpu分配到的请求个数的方式也可以变成选择使用全局变量计数而不是本地数据库。

步骤五,通过使用数据库记录每一个gpu已经被分配到的请求个数实现智能选择gpu运行tensorrt的策略.假设有a,b,c三个gpu,最开始接收到的请求个数都为0,这时随机从三个中分配一个处理请求,当a的请求个数为1,b和c都为0时,随机从b和c中分配一个gpu来处理请求,也就是说总是要让请求个数少的gpu上的tensorrt模型优先被分配。

步骤六,通过上述策略实现服务器端接收请求时,多gpu上的tensorrt并行计算,还有gpu的负载均衡。增加了服务器上的所有gpu资源使用率,提高了用户请求的处理效率。

显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1