CN111061511A - 一种服务处理方法、装置及存储介质和服务器 - Google Patents
一种服务处理方法、装置及存储介质和服务器 Download PDFInfo
- Publication number
- CN111061511A CN111061511A CN201911155170.6A CN201911155170A CN111061511A CN 111061511 A CN111061511 A CN 111061511A CN 201911155170 A CN201911155170 A CN 201911155170A CN 111061511 A CN111061511 A CN 111061511A
- Authority
- CN
- China
- Prior art keywords
- service
- processing
- service processing
- processes
- container
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 47
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 317
- 238000000034 method Methods 0.000 claims abstract description 237
- 230000008569 process Effects 0.000 claims abstract description 199
- 238000004364 calculation method Methods 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 20
- 238000013473 artificial intelligence Methods 0.000 abstract description 12
- 230000010365 information processing Effects 0.000 abstract description 2
- 238000013136 deep learning model Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 6
- 241000282414 Homo sapiens Species 0.000 description 3
- 238000010923 batch production Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Abstract
本发明实施例公开了一种服务处理方法、装置及存储介质和服务器,应用于基于人工智能的信息处理技术领域。服务处理装置在接收到多个服务请求后,会将多个服务请求分别转发给当前已启动的多个服务进程,每个服务进程对应至少一个服务请求,且都会加载一次服务处理模型,这样,多个服务进程可以分别并行地处理多个服务请求得到相应的处理结果。使得不需要将服务处理装置在处理多个服务请求过程中的中央处理器的操作与图形处理器的操作拆分开;由于各个服务进程在处理服务请求时,都会将服务处理模型加载到服务处理装置中图形处理器显存的相应存储空间,使得各个服务进程在处理处理请求时是相互独立的,高度利用服务处理装置中图形处理器的显存。
Description
技术领域
本发明涉及人工智能的信息处理领域,特别涉及一种服务处理方法、装置及存储介质和服务器。
背景技术
在人工智能领域,开发人员在开发某一服务时,可以将具有某些功能的深度学习框架部署在服务端以提供服务,比如基于Python的科学计算工具包(Pytorch),或张量流服务(TensorFlowServing)等深度学习框架,这样便于开发人员将训练好的深度学习模型直接上线,以提供自动化服务。
当在服务端部署了深度学习模型后,用户可以通过服务终端发起服务请求,则服务端会加载深度学习模型,并通过深度学习模型处理服务请求,并将对处理服务请求的处理结果返回给服务终端。当服务端同时接收到多个用户的服务终端发起的服务请求时,现有的处理方式是:将这多个服务请求放入服务队列中,先处理完一个服务请求后再处理另一个服务请求,直到服务队列中的服务请求都处理完。
其中,服务端在处理一个服务请求时,需要服务端中的中央处理器(CentralProcessing Unit/Processor,CPU)和图形处理器(Graphics Processing Unit,GPU)配合来完成对服务请求的处理,这样,在处理多个服务请求时,服务端的CPU操作与GPU操作会拆分开进行操作,比如由CPU对多个服务请求进行批量化,然后GPU批量处理服务请求,CPU再拆分批量得到的处理结果并返回;且GPU在处理大量串行服务请求时容易造成利用率达到100%,会导致GPU的假死情况,从而使得服务端无法响应后续的任何服务请求。
发明内容
本发明实施例提供一种服务处理方法、装置及存储介质和服务器,实现了对服务请求的批量处理。
本发明实施例一方面提供一种服务处理方法,包括:
接收多个服务请求;
将所述多个服务请求分别转发给当前已启动的多个服务进程,一个服务进程对应至少一个服务请求;
所述多个服务进程中的任一服务进程在接收到相应的服务请求后,当所述服务进程已将服务处理模型加载到服务处理装置中,且加载到图形处理器显存的相应存储空间时,根据所述服务处理模型对所述服务请求进行处理,得到处理结果;
将所述多个服务进程中各个服务进程得到的处理结果返回。
本发明实施例另一方面提供一种服务处理装置,包括:
接收单元,用于接收多个服务请求;
转发单元,用于将所述多个服务请求分别转发给当前已启动的多个服务进程,一个服务进程对应至少一个服务请求;
服务处理单元,用于由所述多个服务进程中的任一服务进程在接收到相应的服务请求后,当所述服务进程已将服务处理模型加载到服务处理装置中,且加载到图形处理器显存的相应存储空间时,根据所述服务处理模型对所述服务请求进行处理,得到处理结果;
返回单元,用于将所述多个服务进程中各个服务进程得到的处理结果返回。
本发明实施例另一方面提供一种存储介质,所述存储介质储存多条指令,所述指令适于由处理器加载并执行本发明实施例所述的服务处理方法。
本发明实施例另一方面提供一种服务器,包括处理器和存储介质;
所述存储介质用于储存多条指令,所述指令用于由处理器加载并执行本发明实施例所述的服务处理方法,所述处理器,用于实现所述多条指令中的各条指令。
可见,在本实施例的方法中,服务处理装置在接收到多个服务请求后,会将多个服务请求分别转发给当前已启动的多个服务进程,每个服务进程对应至少一个服务请求,且都会加载一次服务处理模型,这样,多个服务进程可以分别并行地处理多个服务请求得到相应的处理结果。由于多个服务进程分别加载一次服务处理模型来处理服务请求,不需要将服务处理装置在处理多个服务请求过程中的中央处理器的操作与图形处理器的操作拆分开,也不需要服务处理装置中图形处理器对多个服务请求进行批量化;进一步地,各个服务进程在处理服务请求时,都会将服务处理模型加载到服务处理装置中图形处理器显存的相应存储空间,使得各个服务进程在处理处理请求时是相互独立的,且可以高度利用服务处理装置中图形处理器的显存,不会出现服务处理装置在批量处理服务请求时的假死情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种服务处理方法的示意图;
图2是本发明一个实施例提供的一种服务处理方法的流程图;
图3是本发明一个实施例中部署服务处理装置的方法流程图;
图4是本发明应用实施例提供的一种部署服务端的示意图;
图5是本发明应用实施例中服务端的逻辑结构示意图;
图6是本发明实施例提供的一种服务处理装置的结构示意图;
图7是本发明实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排它的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供一种服务处理方法,主要是由服务处理装置对服务请求进行批量处理的方法,具体可以应用于如图1所示的场景中,在该场景下包括多个(以m个为例说明)服务终端,及服务端,各个服务终端用于向服务端发起服务请求;服务端具体为上述的服务处理装置,且在服务端部署了服务处理模型,用于对服务请求进行处理后得到处理结果,该服务处理模型是一种机器学习模型,属于人工智能领域。
其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
其中,机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习等技术。
具体地,服务处理装置可以按照如下方法进行服务处理,包括:
接收多个服务请求;将所述多个服务请求分别转发给当前已启动的多个服务进程(图中以m个服务请求和n个服务进程为例说明),一个服务进程对应至少一个服务请求;所述多个服务进程中的任一服务进程在接收到相应的服务请求后,当所述服务进程已将服务处理模型加载到服务处理装置中,且加载到图形处理器显存的相应存储空间时,根据所述服务处理模型对所述服务请求进行处理,得到处理结果;将所述多个服务进程中各个服务进程得到的处理结果返回。
这样,由于多个服务进程分别加载一次服务处理模型来处理服务请求,不需要将服务处理装置在处理多个服务请求过程中的中央处理器的操作与图形处理器的操作拆分开,也不需要服务处理装置中图形处理器对多个服务请求进行批量化;进一步地,各个服务进程在处理服务请求时,都会将服务处理模型加载到服务处理装置中图形处理器显存的相应存储空间,使得各个服务进程在处理处理请求时是相互独立的,且可以高度利用服务处理装置中图形处理器的显存,不会出现服务处理装置在批量处理服务请求时的假死情况。
本发明实施例提供一种服务处理方法,主要是上述服务处理装置所执行的方法,流程图如图2所示,包括:
步骤101,接收多个服务请求。
可以理解,为了实现本实施例中的服务处理,开发人员会事先在服务处理装置部署服务处理模型,且设置服务处理装置对服务终端发起的服务请求进行批量处理的方式,这样,用户可以通过服务终端发起服务请求,当服务处理装置接收到多个服务请求,可以发起本实施例中对服务请求的批量处理流程。
这里服务处理装置在接收到服务请求后,会判断当前是否已启动了服务进程,如果已启动多个服务进程,且已启动的多个服务进程的数量等于预置的服务进程的最小限数n,则直接继续执行步骤102;如果已启动多个服务进程,但是已启动的的多个服务进程的数量小于预置的服务进程的最小限数n,服务处理装置还可以启动至少一个服务进程,并继续执行如下步骤102;如果未启动任何服务进程,则可以先启动多个服务进程,并继续执行如下步骤102。需要说的是,服务处理装置在确定是否需要启动新的服务进程时,还可以考虑其它因素,比如,接收的服务请求的数量等。
其中,服务进程的最大限数n是由开发人员在部署服务处理装置的过程中来决定的,该最大限数n与服务处理装置中服务处理模型运行过程中涉及到的GPU显存的大小有关,且还与服务处理装置的CPU的核数有关等。
步骤102,将多个服务请求分别转发给当前已启动的多个服务进程,一个服务进程对应至少一个服务请求。
具体地,当服务处理装置接收的服务请求的数量与当前已启动的多个服务进程的数量相同时,每个服务进程分别都可以接收到一个服务请求;当服务处理装置接收的服务请求的数量小于当前已启动的服务进程的数量时,只有部分服务进程会接收到服务请求;当服务处理装置接收的服务请求的数量大于当前已启动的服务进程的数量时,可以先处理部分服务请求,使得每个服务进程都会接收到一个服务请求,然后再处理多个服务请求中的其它服务请求。
且服务处理装置在转发服务请求时,可以按照一定的分配策略,比如随机分配等方式,将任一服务请求转发给某一服务进程。
步骤103,多个服务进程中的任一服务进程在接收到服务请求后,当该服务进程已将服务处理模型加载到服务处理装置中,且加载到图形处理器显存的相应存储空间时,不需要再次加载服务处理模型,而是根据已经加载的服务处理模型对服务请求进行处理,得到处理结果。即通过单实例的方式来实现对服务请求的处理。
这里服务处理模型是具有一定处理功能的机器学习模型,其具体功能可以由实际应用来决定,可以是预置在服务处理装置中的,且可以通过一定的训练方法训练得到,并将其运行逻辑设置在服务处理装置。该服务处理模型可以采用任意的深度学习模型框架,比如Café,Theano,Keras,Tensorflow,Pytorch,PaddlePaddle,MXNet等。
其中,深度学习模型框架现被应用于计算机视觉、语音识别、自然语言处理与生物信息学等领域,并获取了极好的效果。Theano于2008年被开发,是第一个有较大影响力的基于Python的深度学习模型框架,为深度学习研究人员的早期拓荒提供了极大的帮助,同时也为之后深度学习模型框架的开发奠定了基本设计方向,即以计算图为框架的核心,采用GPU加速计算;Keras是一个高层神经网络应用程序接口(Application ProgrammingInterface,API),为支持快速实验而生,使用TensorFlow、Theano及智能工具包(Computational Network Toolkit,CNTK)作为后端;MXNet是一个深度学习库,支持C++、Python、R、Scala、Julia、MATLAB及JavaScript等语言,可以运行在CPU、GPU、集群、服务器、台式机或者移动设备上。
进一步地,任一服务进程接收到服务请求后,当服务进程还未加载服务处理模型,则会先将预置的服务处理模型加载到服务处理装置中图形处理器显存的相应存储空间中,并根据服务处理模型对服务请求进行处理,得到处理结果。
需要说明的是,任一服务进程中的服务处理模型只会加载一次,直到服务进程关闭,才会释放加载的服务处理模型。
步骤104,将多个服务进程中各个服务进程得到的处理结果返回。
可见,在本实施例的方法中,服务处理装置在接收到多个服务请求后,会将多个服务请求分别转发给当前已启动的多个服务进程,每个服务进程对应至少一个服务请求,且都会加载一次服务处理模型,这样,多个服务进程可以分别并行地处理多个服务请求得到相应的处理结果。由于多个服务进程分别加载一次服务处理模型来处理服务请求,不需要将服务处理装置在处理多个服务请求过程中的中央处理器的操作与图形处理器的操作拆分开,也不需要服务处理装置中图形处理器对多个服务请求进行批量化;进一步地,各个服务进程在处理服务请求时,都会将服务处理模型加载到服务处理装置中图形处理器显存的相应存储空间,使得各个服务进程在处理处理请求时是相互独立的,且可以高度利用服务处理装置中图形处理器的显存,不会出现服务处理装置在批量处理服务请求时的假死情况。
需要说明的是,上述步骤101到104是当服务处理装置在部署好之后,服务处理装置所执行的服务处理方法,为了实现上述方法,开发人员需要采用一定的方法部署服务处理装置,具体地可以包括如下步骤实现服务处理装置的部署,流程图如图3所示,包括:
步骤201,确定服务处理模型的空间占用大小及容器中图形处理器的显存大小。
本实施例中,在部署上述服务处理装置时,可以将服务处理装置的服务处理的代码文件部署到容器中来形成上述服务处理装置。具体地,服务处理装置会先确定代码文件中的各个参数,比如服务处理模型的空间占用大小和容器中图形处理器的显存大小,还可以确定容器中中央处理器的核数等。
其中,容器是伴随着瘦客户端系统的发展而诞生的,在开发瘦客户端系统时,开发人员要花费大量的精力去关注线程安全、事务、网络、资源等等细节,从而降低了开发效率,由于这些对这些细节的解决方法一般是固定不变,或者只有参数改变的,所以从代码重用和设计模式的角度出发,开发人员将这些底层细节提取出来,做成平台,并提供一定的接口。容器是完全使用沙箱机制,相互之间不会有任何接口,可以将容器理解为云上独立服务器。
步骤202,根据服务处理模型的空间占用大小,容器中图形处理器的显存大小,及预置的计算函数确定上述服务进程的最大限数n。
如果上述步骤201确定的参数只包括服务处理模型的空间占用大小和容器中图形处理器的显存大小,则预置的计算函数可以包括:服务进程的最大限数n包括容器中图形处理器的显存大小与服务处理模型的空间占用大小的比值。如果上述步骤201确定的参数包括服务处理模型的空间占用大小、容器中图形处理器的显存大小和容器中中央处理器的核数,则预置的计算函数可以包括:服务进程的最大限数n包括:容器中图形处理器的显存大小与服务处理模型的空间占用大小的比值,与容器中中央处理器的核数的最小值。其中,预置的计算函数还可以其它计算函数,在这里不进行赘述。
步骤203,根据确定的n生成服务处理的代码文件,服务处理的代码文件用于表示执行上述步骤101到104中启动服务进程、转发服务进程、对服务请求进行处理及返回处理结果步骤的逻辑文件,具体可以包括确定的n。
具体地,用户可以通过一定的编译方法对服务处理的代码文件进行编译,得到服务处理装置可以识别的代码文件。
步骤204,将服务处理的代码文件部署到容器中形成服务处理装置。
可见,本实施例中开发人员在部署服务处理装置时,可以根据实际容器中图形处理器的显存大小及服务处理模型的空间占用大小,确定服务处理装置可以承载的服务进程的最大限数n,进而实现服务处理装置的部署,使得部署好的服务处理装置中图像处理器的利用率较大。
以下一个具体的应用实例来说明本发明的服务处理方法,本实施例的方法具体可以应用于如图1所示的场景中,服务处理装置具体为服务端,本实施例的方法具体可以包括如下两个部分:
(1)参考图4所示,可以如下步骤实现服务端的部署:
步骤301,获取服务处理模型。
具体地,开发人员可以选取没有自带服务方案的深度学习模型框架,比如Pytorch等,作为服务处理模型的框架,并按照一定的训练方法训练得到具有一定服务功能的服务处理模型。
其中,没有自带服务方案是指在深度学习模型框架中只包括了对服务请求进行处理的结构,并没有包括与服务终端之间进行通信的结构。
步骤302,确定服务方案,具体地,选取网页服务框架(Web service framework)作为服务方案,也可以选取其它任一服务框架作为服务方案。
具体地,由于上述步骤301获取的服务处理模型没有自带服务方案,因此,需要确定一种服务方案。
这里Web服务框架在典型情况下,服务提供者(Service provider)提供可通过网络访问的软件模块(Web Service的一个实现),供服务请求者(Service requester)调用,且服务提供者定义Web Service的服务描述,并把它发布到服务请求者或服务注册中心;服务请求者调用相应的Web Service实现,同它交互。其中,服务提供者和服务请求者角色是逻辑结构,常用的可供服务提供者搭建服务的框架有Tornado,gRPC,Django,Flask等等,轻重量级类型不尽相同。其中,Web服务框架Tornado是轻量级非阻塞式服务器,而且速度相当快,它每秒可以处理数以千计的连接,是实时Web服务的一个理想框架,因此,本实施例中的可以选取Tornado作为服务方案。
Web服务框架的服务方式具体为监听端口的方式,通过监听端口接收从特定端口访问的服务请求,经过计算判断流程(各开发者按需处理),返回该服务请求的处理结果,以完成访问过程。
步骤303,确定服务端对服务请求进行批量处理过程中的参数,即服务进程的最大限数n。
由于在一般情况下,服务端对一个服务请求进行处理的过程中,需要服务端的GPU和CPU进行配合来实现,而GPU负责处理服务请求过程中的计算,具体地,可以将服务处理模型加载到GPU的显存中进行计算。
常用GPU的显存较大(大于或等于8G),而一个服务处理模型的空间占用大小相对于显存的容量要小很多,则可以在服务端部署同时加载多个服务处理模型,这多个服务处理模型之间需要相互独立,彼此之间不需要交叉。
而计算机启动的各个进程之间的资源独立不共享,可以应用到部署多个服务处理模型的场景下,进而能得到在服务端通过启动多个服务进程的方式,来分别加载一个服务处理模型,且这些服务进程可以分别独立地占用服务端中GPU显存的部分空间,从而实现了同时加载多个服务处理模型。
进一步地,服务端可以启动的服务进程的最大限数n可以根据上述服务处理模型的空间占用大小Procmemory、容器(服务端需要部署在容器上)中图形处理器的显存大小GPUmemory及容器中CPU的核数CPUcores来确定,具体地,可以通过如下公式1来表示,其中表示向下取整:
需要说明的是,一般情况下,容器中CPU的核数是足够的,不会成为容器制约因素,则服务端可以启动的服务进程的最大限数n可以通过如下公式2来表示:
例如,如果在容器上部署服务端,该容器搭载的GPU中的显卡为Nvidia TeslaP4卡,该显卡的显存为8G,可用显存为7.6G,而服务处理模型的空间占用大小约为2.5G,则可以算出最大服务进程数量为3,而在容器配了8个CPU核,则CPU的核数并不是制约因素,可以不用考虑,另一方面从节省资源角度考虑,可以将容器的CPU核数修改为4,减少无用占用,优化资源利用。
可见,通过上述公式1,有助于开发人员确定具有高配置显卡的容器的CPU核数,例如容器的CPU核数为8核,配置的GPU显卡为NvidiaTeslaV100,该显卡的显存为32G,而服务处理模型的空间占用大小约为2.5G,则可以得知,如果想要尽量占满显存,需要的最大服务进程数为12,则该容器应该配备的最少CPU核数应该为13,当前8个CPU核数,无法发挥出该高级显卡显存的优势。
步骤304,根据上述获取的服务处理模型,确定的服务方案及确定的服务进程的最大限数n,生成服务处理的代码文件。
可以知道的是,在上述步骤302中确定的服务方案,比如Tornado中,开发人员可以通过参数控制的方式很方便地指定启用的服务进程的最大限数n;由于服务处理模型的加载耗时长,在每个服务进程在创建时只加载一次服务处理模型;开发人员无法指定接收的服务请求被转发到哪个服务进程中;一旦有服务请求被转发到某个服务进程上,该服务进程执行计算过程,返回请求结果,然后继续等待下一个服务请求;服务进程一旦被启动,资源已被配置,除非发生特殊意外导致服务进程挂掉,否则服务进程不会无故终止。
由此,生成的服务处理的代码文件中包括对服务请求进行批量处理的服务方案的逻辑文件,具体可以包括:在服务端的监听接口接收到多个服务请求后,将服务请求分别转发给当前已启动的多个服务进程,且一个服务进程对应至少一个服务请求;而服务进程会检查是否已加载了服务处理模型,如果已加载了,则直接对服务请求进行处理,得到处理结果,如果还未加载,则需要先将服务处理模型加载到服务端中GPU的显存中,然后再对服务请求进行处理,得到处理结果;最后服务端再将各个服务进程的处理结果返回。
步骤305,将上述步骤304生成的服务处理的代码文件部署到容器中形成服务端。
将服务端部署在云上的容器中,可以实现开发人员对服务端的服务的定制,便于修改扩展。通过将上述生成的服务处理的代码文件部署到容器中,可以实现容器的最大资源利用(节省多容器成本)以及高性能高并发吞吐访问。
(2)在部署了服务端后,服务端对服务请求的批量处理包括:
在服务端接收到多个服务请求后,将服务请求分别转发给当前已启动的多个服务进程,且一个服务进程对应至少一个服务请求;而各个服务进程会检查是否已加载了服务处理模型,如果已加载了,则直接对服务请求进行处理,得到处理结果,如果还未加载,则需要先将服务处理模型加载到服务端中GPU的显存中,然后再对服务请求进行处理,得到处理结果;最后服务端再将各个服务进程的处理结果返回。
如图5所示,形成的服务端的结构可以包括:CPU及其内存,及GPU及其显存,及永久性存储器(比如硬盘),在硬盘中储存着服务处理的代码文件及服务处理模型等。在服务端运行的过程中,会将服务处理的代码文件加载到CPU的内存中,由CPU执行内存中服务处理的代码文件;当CPU需要调用GPU中的服务进程,则启动GPU的多个服务进程后,每个服务进程会分别将服务处理模型加载到GPU显存的相应空间,由GPU的各个服务进程执行各个显存空间中加载的服务处理模型,以得到处理结果,并向CPU返回处理结果;最后再由CPU执行返回处理结果的操作。
在对上述方法实验的过程中:
如果采用容器的配置为8核CPU,内存10G,GPU显卡为NvidiaTeslaP4(显存8G,7.6G可用),服务进程的数量为3,每个服务进程加载一个服务处理模型,则GPU显存的占用率为98%。
进一步地,对部署的服务端(单容器、单显卡)进行极限压测,当服务端的每秒查询率(Query Per Second,QPS)为65时,GPU显存的利用率为88%-92%左右,此时服务端无压力;当QPS为69-70时,GPU显存的利用率持续100%,GPU显卡的计算能力达到最大程度利用,对服务端来说,有过载的风险,若服务终端的QPS压力再增大,则需要进行扩容。
此外,需要特别强调的是,采用不同的GPU显卡,最终所实现的性能(比如利用率)也有差异,比如采用NvidiaTeslaP40显卡实现的性能,约是采用P4显卡所实现性能的2.5倍,而采用NvidiaTeslaV100显卡所实现的性能则是采用P4所实现性能的N(N大于6)倍。
可见,通过上述方法可以实现如下技术效果:
(1)不需要将服务端处理服务请求过程中的CPU操作和GPU操作进行拆分。
(2)不需要为了提高服务端GPU的利用率而将服务请求分批(batch)化,在实际调用场景下,batch化操作不稳定,batch数不恒定(除了调用数外,还取决于batch化时间),在表观上是使得GPU利用率上下波动较大,而本实施例中不需要对服务请求进行分批化。
(3)缓解单服务进程在并发调用下服务端的CPU单核满载瓶颈问题。
(4)有效利用服务端中GPU显存(比如NvidiaTeslaV100显卡,32G显存;NvidiaTeslaP4显卡,8G显存)。
(5)在超高并发调用场景下,理论上可以通过最大化显存占用(需要将服务端的CPU核数配比合适,如果核数过少但GPU的显卡显存过大,可能会由于CPU核数不足而形成性能制约),持续打满服务端的GPU利用率,达到部署减少服务端占用显卡数的目的,节省资源。
本发明实施例还提供一种服务处理装置,比如上述的服务端,其结构示意图如图6所示,具体可以包括:
接收单元10,用于接收多个服务请求。
该接收单元10,还用于如果所述已启动的多个服务进程的数量小于预置的应用进程的最大限数n,启动至少一个服务进程。
转发单元11,用于将所述接收单元10接收的多个服务请求分别转发给当前已启动的多个服务进程,且一个服务进程对应至少一个服务请求。
服务处理单元12,用于由所述当前已启动的多个服务进程中的任一服务进程在接收到所述转发单元11转发的相应的服务请求后,当所述服务进程已将服务处理模型加载到服务处理装置中,且加载到图形处理器显存的相应存储空间时,根据所述服务处理模型对所述服务请求进行处理,得到处理结果。
该服务处理单元12,还用于由所述任一服务进程在接收到所述服务请求后,当所述服务进程还未加载服务处理模型,则将预置的服务处理模型加载到服务处理装置中图形处理器显存的相应存储空间中,根据所述服务处理模型对所述服务请求进行处理,得到处理结果。
返回单元13,用于将所述服务处理单元12中多个服务进程中各个服务进程得到的处理结果返回。
进一步地,本实施例中的服务处理装置还可以包括:
部署单元14,用于确定所述服务处理模型的空间占用大小及容器中图形处理器的显存大小;根据所述服务处理模型的空间占用大小,容器中图形处理器的显存大小,及预置的计算函数确定所述服务进程的最大限数n;根据所述确定的n生成服务处理的代码文件,所述服务处理的代码文件用于表示执行所述启动服务进程、转发服务进程、对服务请求进行处理及返回处理结果步骤的逻辑文件,包括所述确定的n;将所述服务处理的代码文件部署到容器中形成所述服务处理装置。则上述接收单元10会根据部署单元14确定的服务进程的最大限数n来决定是否要启动服务进程。
其中,预置的计算函数包括:所述服务进程的最大限数n包括所述容器中图形处理器的显存大小与服务处理模型的空间占用大小的比值。
如果部署单元14在确定参数时,不仅确定服务处理模型的空间占用大小及容器中图形处理器的显存大小,还确定了容器中中央处理器的核数,则部署单元14在确定服务进程的最大限数n时,根据所述服务处理模型的空间占用大小,容器中图形处理器的显存大小,所述容器中中央处理器的核数,及预置的计算函数确定所述n。其中,预置的计算函数包括:所述服务进程的最大限数n包括:所述容器中图形处理器的显存大小与服务处理模型的空间占用大小的比值,与容器中中央处理器的核数的最小值。
可见,在本实施例的装置中,接收单元10在接收到多个服务请求,会将多个服务请求分别转发给当前已启动的多个服务进程,每个服务进程对应至少一个服务请求,且都会加载一次服务处理模型,这样,通过服务处理单元12中的多个服务进程可以分别并行地处理多个服务请求得到相应的处理结果。由于多个服务进程分别加载一次服务处理模型来处理服务请求,不需要将服务处理装置在处理多个服务请求过程中的中央处理器的操作与图形处理器的操作拆分开,也不需要服务处理装置中图形处理器对多个服务请求进行批量化;进一步地,各个服务进程在处理服务请求时,都会将服务处理模型加载到服务处理装置中图形处理器显存的相应存储空间,使得各个服务进程在处理处理请求时是相互独立的,且可以高度利用服务处理装置中图形处理器的显存,不会出现服务处理装置在批量处理服务请求时的假死情况。
本发明实施例还提供一种服务器,其结构示意图如图7所示,该终端设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessing units,CPU)20(例如,一个或一个以上处理器)和存储器21,一个或一个以上存储应用程序221或数据222的存储介质22(例如一个或一个以上海量存储设备)。其中,存储器21和存储介质22可以是短暂存储或持久存储。存储在存储介质22的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器20可以设置为与存储介质22通信,在服务器上执行存储介质22中的一系列指令操作。
具体地,在存储介质22中储存的应用程序221包括服务处理的应用程序,且该程序可以包括上述服务处理装置中的接收单元10,转发单元11,服务处理单元12,返回单元13和部署单元14,在此不进行赘述。更进一步地,中央处理器20可以设置为与存储介质22通信,在服务器上执行存储介质22中储存的服务处理的应用程序对应的一系列操作。
服务器还可以包括一个或一个以上电源23,一个或一个以上有线或无线网络接口24,和/或,一个或一个以上操作系统223,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述方法实施例中所述的由服务处理装置所执行的步骤可以基于该图7所示的服务器的结构。
本发明实施例还提供一种存储介质,所述存储介质储存多条指令,所述指令适于由处理器加载并执行如上述服务处理装置所执行的服务处理方法。
本发明实施例还提供一种服务器,包括处理器和存储介质;
所述存储介质用于储存多条指令,所述指令用于由处理器加载并执行如上述服务处理装置所执行的服务处理方法,所述处理器,用于实现所述多条指令中的各条指令。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器RAM)、磁盘或光盘等。
以上对本发明实施例所提供的服务处理方法、装置及存储介质和服务器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种服务处理方法,其特征在于,包括:
接收多个服务请求;
将所述多个服务请求分别转发给当前已启动的多个服务进程,一个服务进程对应至少一个服务请求;
所述多个服务进程中的任一服务进程在接收到相应的服务请求后,当所述服务进程已将服务处理模型加载到服务处理装置中,且加载到图形处理器显存的相应存储空间时,根据所述服务处理模型对所述服务请求进行处理,得到处理结果;
将所述多个服务进程中各个服务进程得到的处理结果返回。
2.如权利要求1所述的方法,其特征在于,所述接收多个服务请求后,所述方法还包括:
如果所述已启动的多个服务进程的数量小于预置的应用进程的最大限数n,启动至少一个服务进程。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述任一服务进程在接收到所述服务请求后,当所述服务进程还未加载服务处理模型,则将预置的服务处理模型加载到服务处理装置中图形处理器显存的相应存储空间中,根据所述服务处理模型对所述服务请求进行处理,得到处理结果。
4.如权利要求1至任一项所述的方法,其特征在于,所述接收多个服务请求之前,所述方法还包括:
确定所述服务处理模型的空间占用大小及容器中图形处理器的显存大小;
根据所述服务处理模型的空间占用大小,容器中图形处理器的显存大小,及预置的计算函数确定所述服务进程的最大限数n;
根据所述确定的n生成服务处理的代码文件,所述服务处理的代码文件用于表示执行所述启动服务进程、转发服务进程、对服务请求进行处理及返回处理结果步骤的逻辑文件,包括所述确定的n;
将所述服务处理的代码文件部署到容器中形成所述服务处理装置。
5.如权利要求4所述的方法,其特征在于,所述预置的计算函数包括:
所述服务进程的最大限数n包括所述容器中图形处理器的显存大小与服务处理模型的空间占用大小的比值。
6.如权利要求4所述的方法,其特征在于,所述根据所述服务处理模型的空间占用大小,容器中图形处理器的显存大小,及预置的计算函数确定所述服务进程的最大限数n,具体包括:
根据所述服务处理模型的空间占用大小,容器中图形处理器的显存大小,所述容器中中央处理器的核数,及预置的计算函数确定所述n。
7.如权利要求6所述的方法,其特征在于,所述预置的计算函数包括:
所述服务进程的最大限数n包括:所述容器中图形处理器的显存大小与服务处理模型的空间占用大小的比值,与容器中中央处理器的核数的最小值。
8.一种服务处理装置,其特征在于,包括:
接收单元,用于接收多个服务请求;
转发单元,用于将所述多个服务请求分别转发给当前已启动的多个服务进程,一个服务进程对应至少一个服务请求;
服务处理单元,用于由所述多个服务进程中的任一服务进程在接收到相应的服务请求后,当所述服务进程已将服务处理模型加载到服务处理装置中,且加载到图形处理器显存的相应存储空间时,根据所述服务处理模型对所述服务请求进行处理,得到处理结果;
返回单元,用于将所述多个服务进程中各个服务进程得到的处理结果返回。
9.如权利要求8所述的装置,其特征在于,还包括:
部署单元,用于确定所述服务处理模型的空间占用大小及容器中图形处理器的显存大小;根据所述服务处理模型的空间占用大小,容器中图形处理器的显存大小,及预置的计算函数确定所述服务进程的最大限数n;根据所述确定的n生成服务处理的代码文件,所述服务处理的代码文件用于表示执行所述启动服务进程、转发服务进程、对服务请求进行处理及返回处理结果步骤的逻辑文件,包括所述确定的n;将所述服务处理的代码文件部署到容器中形成所述服务处理装置。
10.一种存储介质,其特征在于,所述存储介质储存多条指令,所述指令适于由处理器加载并执行如权利要求1至7任一项所述的服务处理方法。
11.一种服务器,其特征在于,包括处理器和存储介质;
所述存储介质用于储存多条指令,所述指令用于由处理器加载并执行如权利要求1至7任一项所述的服务处理方法,所述处理器,用于实现所述多条指令中的各条指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911155170.6A CN111061511A (zh) | 2019-11-22 | 2019-11-22 | 一种服务处理方法、装置及存储介质和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911155170.6A CN111061511A (zh) | 2019-11-22 | 2019-11-22 | 一种服务处理方法、装置及存储介质和服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111061511A true CN111061511A (zh) | 2020-04-24 |
Family
ID=70298050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911155170.6A Pending CN111061511A (zh) | 2019-11-22 | 2019-11-22 | 一种服务处理方法、装置及存储介质和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111061511A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835887A (zh) * | 2021-09-17 | 2021-12-24 | 北京百度网讯科技有限公司 | 显存的分配方法、装置、电子设备及可读存储介质 |
CN114268661A (zh) * | 2021-11-19 | 2022-04-01 | 科大讯飞股份有限公司 | 一种业务方案部署方法、装置、系统及设备 |
CN114363579A (zh) * | 2022-01-21 | 2022-04-15 | 中国铁塔股份有限公司 | 一种监控视频的共享方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030140179A1 (en) * | 2002-01-04 | 2003-07-24 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
WO2017073988A1 (ko) * | 2015-10-26 | 2017-05-04 | 동국대학교산학협력단 | Gpu를 이용한 파일의 분산 저장 시스템 및 방법 |
CN109933429A (zh) * | 2019-03-05 | 2019-06-25 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
-
2019
- 2019-11-22 CN CN201911155170.6A patent/CN111061511A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030140179A1 (en) * | 2002-01-04 | 2003-07-24 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
WO2017073988A1 (ko) * | 2015-10-26 | 2017-05-04 | 동국대학교산학협력단 | Gpu를 이용한 파일의 분산 저장 시스템 및 방법 |
CN109933429A (zh) * | 2019-03-05 | 2019-06-25 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
李逸龙;张凯;何震瀛;王晓阳;: "基于GPU数据库系统的并发查询性能优化", 计算机应用与软件, no. 08, 12 August 2018 (2018-08-12) * |
杨延青;任应超;: "可伸缩的异步网络空间信息处理集群服务", 中国科学院大学学报, no. 01, 15 January 2015 (2015-01-15) * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835887A (zh) * | 2021-09-17 | 2021-12-24 | 北京百度网讯科技有限公司 | 显存的分配方法、装置、电子设备及可读存储介质 |
CN114268661A (zh) * | 2021-11-19 | 2022-04-01 | 科大讯飞股份有限公司 | 一种业务方案部署方法、装置、系统及设备 |
CN114268661B (zh) * | 2021-11-19 | 2024-04-30 | 科大讯飞股份有限公司 | 一种业务方案部署方法、装置、系统及设备 |
CN114363579A (zh) * | 2022-01-21 | 2022-04-15 | 中国铁塔股份有限公司 | 一种监控视频的共享方法、装置及电子设备 |
CN114363579B (zh) * | 2022-01-21 | 2024-03-19 | 中国铁塔股份有限公司 | 一种监控视频的共享方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111061511A (zh) | 一种服务处理方法、装置及存储介质和服务器 | |
US20190324805A1 (en) | Method, apparatus and computer program product for resource scheduling | |
CN109559734B (zh) | 声学模型训练的加速方法和装置 | |
CN111506434B (zh) | 一种任务处理方法、装置及计算机可读存储介质 | |
CN112363821A (zh) | 一种计算资源调度方法、装置及计算机设备 | |
CN109727376B (zh) | 生成配置文件的方法、装置及售货设备 | |
CN107341761A (zh) | 一种深度神经网络的计算执行方法和系统 | |
CN107832143A (zh) | 一种物理机资源的处理方法和装置 | |
CN113570033B (zh) | 神经网络处理单元、神经网络的处理方法及其装置 | |
Zatsarinny et al. | Approaches to the organization of the computing process of a hybrid high-performance computing cluster in the digital platform environment | |
US20210158131A1 (en) | Hierarchical partitioning of operators | |
CN115686805A (zh) | Gpu资源共享的方法和装置、调度gpu资源共享的方法和装置 | |
CN111857949A (zh) | 模型发布方法、装置、设备及存储介质 | |
Nguyen et al. | A software-based dynamic-warp scheduling approach for load-balancing the Viola–Jones face detection algorithm on GPUs | |
WO2020263418A1 (en) | Managing workloads of a deep neural network processor | |
CN109542596B (zh) | 一种基于OpenCL内核任务的调度方法 | |
CN112965788B (zh) | 一种混合虚拟化方式的任务执行方法、系统及设备 | |
CN112860396A (zh) | 一种基于分布式深度学习的gpu调度方法及系统 | |
CN108829516B (zh) | 一种图形处理器资源虚拟化调度方法 | |
US11669369B2 (en) | Cluster resource management using adaptive memory demand | |
CN115309539A (zh) | 显存分配方法、系统及非暂时性存储介质 | |
CN114610485A (zh) | 资源处理系统以及方法 | |
KR20210103367A (ko) | 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치 | |
US20240037930A1 (en) | Online knowledge distillation for multi-task learning system, method, device, and program | |
US20240037386A1 (en) | Online knowledge distillation for multi-task learning system, method, device, and program |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40022551 Country of ref document: HK |