CN114721842A - 服务调用方法、装置及电子设备 - Google Patents
服务调用方法、装置及电子设备 Download PDFInfo
- Publication number
- CN114721842A CN114721842A CN202110005294.7A CN202110005294A CN114721842A CN 114721842 A CN114721842 A CN 114721842A CN 202110005294 A CN202110005294 A CN 202110005294A CN 114721842 A CN114721842 A CN 114721842A
- Authority
- CN
- China
- Prior art keywords
- service
- inference
- request
- programming language
- micro
- 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
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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/046—Forward inferencing; Production systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种服务调用方法、装置及电子设备,涉及人工智能技术领域,其中,服务调用方法包括:接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;将所述推理服务调用请求中的接收方地址修改为基于第二编程语言封装生成的推理服务模块对应的地址;向所述推理服务模块发送修改后的推理服务调用请求;接收所述推理服务模块发送的对所述修改后的推理服务调用请求的推理结果;向所述微服务网关发送所述推理结果。本发明实施例中通过在第一编程语言体系的微服务架构下采用代理服务模块代理第二编程语言封装生成的推理服务模块的推理服务,能够在JAVA体系的微服务架构下,实现Python语言封装的推理模型对应的推理服务。
Description
技术领域
本发明涉及人工智能技术领域,尤其涉及一种服务调用方法、装置及电子设备。
背景技术
微服务架构是当前常用的服务架构。微服务架构是一项在云中部署应用和服务的新技术。目前,JAVA体系的微服务架构较为成熟,有较多的开源组件可以使用。然而,推理模型,例如,TensorFlow模型通常采用Python语言封装,因此,在JAVA体系的微服务架构下,无法实现推理模型对应的推理服务。
发明内容
本发明实施例提供一种服务调用方法、装置及电子设备,以解决在JAVA体系的微服务架构下,无法实现推理模型对应的推理服务的问题。
为解决上述技术问题,本发明是这样实现的:
第一方面,本发明实施例提供了一种服务调用方法,所述方法包括:
接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;
将所述推理服务调用请求中的接收方地址修改为基于第二编程语言封装生成的推理服务模块对应的地址;
向所述推理服务模块发送修改后的推理服务调用请求;
接收所述推理服务模块发送的对所述修改后的推理服务调用请求的推理结果;
向所述微服务网关发送所述推理结果。
可选的,所述接收微服务网关发送的基于第一编程语言封装的推理服务调用请求,包括:
从第一端口接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;
所述向所述推理服务模块发送修改后的推理服务调用请求,包括:
向所述推理服务模块的第二端口发送修改后的推理服务调用请求。
可选的,所述方法还包括:
向微服务注册中心发送注册请求,所述注册请求中包括服务地址和服务名称;
接收所述微服务注册中心对所述注册请求的注册响应。
可选的,所述方法还包括:
按照预设时间间隔请求所述推理服务模块进行服务状态检测,并获取服务状态检测结果;
向所述微服务注册中心发送所述服务状态检测结果。
第二方面,本发明实施例提供了一种服务调用方法,所述方法包括:
接收基于第一编程语言封装生成的代理服务模块发送的推理服务调用请求;
基于所述推理服务调用请求调用基于第二编程语言封装的推理模型进行推理,将推理结果发送至所述代理服务模块。
可选的,所述基于所述推理服务调用请求调用基于第二编程语言封装的推理模型进行推理,包括:
基于所述推理服务调用请求从显卡上启动的N个推理进程中确定目标推理进程,并基于所述目标推理进程调用基于第二编程语言封装的推理模型进行推理,N为大于1的整数。
可选的,所述推理模型在所述显卡上以预设显存加载,所述N基于显存占用量与显存总量的比值确定,所述显存占用量为一个所述推理模型在所述显卡上采用显存占用自增长模式进行加载时占用的显存,所述显存总量为所述显卡的显存总量。
第三方面,本发明实施例提供了一种服务调用装置,所述服务调用装置包括:
第一接收单元,用于接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;
修改单元,用于将所述推理服务调用请求中的接收方地址修改为基于第二编程语言封装生成的推理服务模块对应的地址;
第一发送单元,用于向所述推理服务模块发送修改后的推理服务调用请求;
第二接收单元,用于接收所述推理服务模块发送的对所述修改后的推理服务调用请求的推理结果;
第二发送单元,用于向所述微服务网关发送所述推理结果。
可选的,所述第一接收单元具体用于:
从第一端口接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;
所述第一发送单元具体用于:
向所述推理服务模块的第二端口发送修改后的推理服务调用请求。
可选的,所述服务调用装置还包括:
第三发送单元,用于向微服务注册中心发送注册请求,所述注册请求中包括服务地址和服务名称;
第三接收单元,用于接收所述微服务注册中心对所述注册请求的注册响应。
可选的,所述服务调用装置还包括:
获取单元,用于按照预设时间间隔请求所述推理服务模块进行服务状态检测,并获取服务状态检测结果;
第四发送单元,用于向所述微服务注册中心发送所述服务状态检测结果。
第四方面,本发明实施例提供了一种服务调用装置,所述服务调用装置包括:
接收单元,用于接收基于第一编程语言封装生成的代理服务模块发送的推理服务调用请求;
推理单元,用于基于所述推理服务调用请求调用基于第二编程语言封装的推理模型进行推理,将推理结果发送至所述代理服务模块。
可选的,所述推理单元具体用于:
基于所述推理服务调用请求从显卡上启动的N个推理进程中确定目标推理进程,并基于所述目标推理进程调用基于第二编程语言封装的推理模型进行推理,将推理结果发送至所述代理服务模块,N为大于1的整数。
可选的,所述推理模型在所述显卡上以预设显存加载,所述N基于显存占用量与显存总量的比值确定,所述显存占用量为一个所述推理模型在所述显卡上采用显存占用自增长模式进行加载时占用的显存,所述显存总量为所述显卡的显存总量。
第五方面,本发明实施例提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如第一方面所述的服务调用方法的步骤,或者,所述程序被所述处理器执行时实现如第二方面所述的服务调用方法的步骤。
本发明实施例中,接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;将所述推理服务调用请求中的接收方地址修改为基于第二编程语言封装生成的推理服务模块对应的地址;向所述推理服务模块发送修改后的推理服务调用请求;接收所述推理服务模块发送的对所述修改后的推理服务调用请求的推理结果;向所述微服务网关发送所述推理结果。这样,通过在第一编程语言体系的微服务架构下采用代理服务模块代理第二编程语言封装生成的推理服务模块的推理服务,能够在JAVA体系的微服务架构下,实现Python语言封装的推理模型对应的推理服务。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种服务调用方法的流程图;
图2是本发明实施例提供的一种电子设备的结构示意图;
图3是本发明实施例提供的另一种服务调用方法的流程图;
图4是本发明实施例提供的一种服务调用装置的结构示意图;
图5是本发明实施例提供的另一种服务调用装置的结构示意图;
图6是本发明实施例提供的另一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种服务调用方法、装置及电子设备,以解决在JAVA体系的微服务架构下,无法实现推理模型对应的推理服务的问题。
参见图1,图1是本发明实施例提供的一种服务调用方法的流程图,如图1所示,所述方法包括以下步骤:
步骤101、接收微服务网关发送的基于第一编程语言封装的推理服务调用请求。
其中,所述服务调用方法可以由代理服务模块执行,实现代理推理服务。微服务网关可以接收客户端发送的推理服务调用请求,并将接收到的推理服务调用请求转发至代理服务模块。
另外,客户端可以发起推理服务调用请求,具体的,客户端可以在微服务注册中心查找到推理服务的服务地址,在微服务注册中心上的推理服务的服务地址为代理服务模块的网络地址和第一端口。客户端基于代理服务模块的网络地址和第一端口通过微服务网关向代理服务模块发送推理服务调用请求。
步骤102、将所述推理服务调用请求中的接收方地址修改为基于第二编程语言封装生成的推理服务模块对应的地址。
其中,第一编程语言和第二编程语言为不同的编程语言。示例地,所述第一编程语言可以为java,所述第二编程语言可以为Python。代理服务模块可以为用于执行java代理服务的模块。推理服务模块可以为用于执行推理服务的模块。java代理服务可以占用第一端口,在java代理服务的配置参数中,可以配置有该java代理服务代理的推理服务占用的第二端口及推理服务的服务状态检测接口地址。java代理服务在从第一接口接收到推理服务调用请求后,可以向第二端口转发该推理服务调用请求。推理服务调用请求的请求内容基于推理模型确定,以推理模型为识别图片上的文字的模型为例,推理服务调用请求可以为http post请求,该http post请求中的body(躯干)内容为图片。
另外,推理服务模块对外可以实现推理接口调用以及服务状态检测接口调用。推理服务模块可以通过采用Python语言封装的gunicorn服务在第二端口对外接收这两类接口的调用请求消息。推理接口的功能基于推理模型确定,以推理模型为识别图片上的文字的模型为例,则在调用推理接口时可以向推理接口传递带文字的图片作为输入,在调用推理接口后,可以得到的输出为图片上的文字。
步骤103、向所述推理服务模块发送修改后的推理服务调用请求。
其中,代理服务模块可以向所述推理服务模块发送修改后的推理服务调用请求,具体的,java代理服务从第一接口接收到推理服务调用请求后,将所述推理服务调用请求中的接收方地址修改为推理服务模块对应的地址,并将推理服务调用请求转发至gunicorn服务的第二端口。
步骤104、接收所述推理服务模块发送的对所述修改后的推理服务调用请求的推理结果。
其中,推理服务模块可以接收基于第一编程语言封装生成的代理服务模块发送的推理服务调用请求;推理服务模块可以基于所述推理服务调用请求调用基于第二编程语言封装的推理模型进行推理,将推理结果发送至所述代理服务模块。
另外,所述推理模型可以为采用Python语言封装的TensorFlow模型。gunicorn服务在接收到java代理服务发送的推理服务调用请求后,可以从空闲的Python推理进程中随机选择一个推理进程,基于推理进程处理推理服务调用请求。以推理服务调用请求用于请求识别图片上的文字为例,推理服务调用请求携带有带文字的图片,推理进程将服务调用请求中的带文字的图片输入到TensorFlow模型,调用TensorFlow模型进行推理处理,将TensorFlow模型的输出结果,也就是图片上的文字,返回给java代理服务。
步骤105、向所述微服务网关发送所述推理结果。
其中,java代理服务在接收到推理结果后,可以将所述推理结果返回给微服务网关,可以将推理结果以json格式返回给微服务网关,微服务网关将推送结果返回给客户端。
作为一种具体的实施方式,电子设备可以包括显卡,该显卡可以仅设置有一个GPU,如图2所示,该显卡上启动有java代理服务、gunicorn服务以及多个Python推理进程,每个Python推理进程对应一个TensorFlow模型,Python推理进程可以调用TensorFlow模型进行推理。客户端可以通过微服务网关向java代理服务发送推理服务调用请求,java代理服务将从第一端口接收到的推理服务调用请求发送至gunicorn服务的第二端口,gunicorn服务在接收到java代理服务发送的推理服务调用请求后,可以从空闲的Python推理进程中随机选择一个推理进程,基于选择的推理进程调用推理模型进行推理。
需要说明的是,现有技术中用于推理的TensorFlow模型通常采用Python语言封装,因此,在JAVA体系的微服务架构下,无法实现TensorFlow模型对应的推理服务。本实施例中,可以通过JAVA代理服务转发推理服务调用请求,实现将TensorFlow框架训练出来的TensorFlow模型,封装成可在线调用的推理服务,注册到Spring Cloud微服务框架中。可以实现Python语言开发的推理服务集成到JAVA体系的微服务架构中。
本发明实施例中,接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;将所述推理服务调用请求中的接收方地址修改为基于第二编程语言封装生成的推理服务模块对应的地址;向所述推理服务模块发送修改后的推理服务调用请求;接收所述推理服务模块发送的对所述修改后的推理服务调用请求的推理结果;向所述微服务网关发送所述推理结果。这样,通过在第一编程语言体系的微服务架构下采用代理服务模块代理第二编程语言封装生成的推理服务模块的推理服务,能够在JAVA体系的微服务架构下,实现Python语言封装的推理模型对应的推理服务。
可选的,所述接收微服务网关发送的基于第一编程语言封装的推理服务调用请求,包括:
从第一端口接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;
所述向所述推理服务模块发送修改后的推理服务调用请求,包括:
向所述推理服务模块的第二端口发送修改后的推理服务调用请求。
其中,推理服务调用请求可以为HTTP协议封装的服务调用请求。代理服务模块可以支持get和post两种形式的HTTP推理服务调用请求的转发。基于HTTP协议封装的推理服务调用请求可以为HTTP推理服务调用请求。对于get形式的HTTP推理服务调用请求的转发,代理服务模块可以构建新的get形式的HTTP推理服务调用请求,将构建的get形式的HTTP推理服务调用请求发送至推理服务模块对应的地址。代理服务模块可以对接收的HTTP推理服务调用请求中的所有参数和header进行遍历并存储。构建新的get形式的HTTP推理服务调用请求时,构建的get形式的HTTP推理服务调用请求的接收方地址可以包括gunicorn服务的网络地址和第二端口,构建的get形式的HTTP推理服务调用请求的参数和header是存储的参数和header。对于post形式的HTTP推理服务调用请求的转发,在构建新的post形式的HTTP推理服务调用请求时,代理服务模块在遍历并存储接收的HTTP推理服务调用请求中的所有参数和header之外,还需要构建一个form表单,将接收到的HTTP推理服务调用请求的form表单的所有内容填充到构建的form表单中。
该实施方式中,代理服务模块占用第一端口,将客户端发送的推理服务调用请求更改接收方地址后,转发至第二端口,实现代理服务模块代理推理服务模块的第二端口上的推理服务。
可选的,所述方法还包括:
向微服务注册中心发送注册请求,所述注册请求中包括服务地址和服务名称;
接收所述微服务注册中心对所述注册请求的注册响应。
其中,所述服务地址和服务名称可以为代理服务模块的服务地址和服务名称。
其中,在java代理服务的配置参数中可以配置有微服务注册中心的网络地址。代理服务模块可以从配置参数中读取微服务注册中心的网络地址,并向微服务注册中心的网络地址发送注册请求。微服务注册中心接收到代理服务模块发送的注册请求后,可以存储代理服务模块的服务地址和服务名称,从而客户端能够通过微服务注册中心查找到代理服务模块。通过代理服务模块的服务地址可以向代理服务模块发送消息,代理服务模块的服务名称可以用于标识代理服务模块。在注册成功的情况下,所述注册响应可以为用于表征注册成功的响应消息;在注册失败的情况下,所述注册响应可以为用于表征注册失败的响应消息。
该实施方式中,由代理服务模块在微服务注册中心进行服务地址和服务名称的注册,从而客户端能够通过微服务注册中心查找到代理服务模块,进而能够通过代理服务模块调用推理服务模块的推理服务。
可选的,所述方法还包括:
按照预设时间间隔请求所述推理服务模块进行服务状态检测,并获取服务状态检测结果;
向所述微服务注册中心发送所述服务状态检测结果。
其中,所述预设时间间隔可以为30s,或者5min,或者1h,可以按照实际需要设置,本实施例对此不进行限定。代理服务模块可以调用推理服务模块的服务状态检测接口进行服务状态检测,获取服务状态检测结果。服务状态检测结果可以用于指示推理服务模块的推理服务是否正常。示例地,服务状态检测结果可以包括服务正常和服务异常两种状态。在服务状态检测结果为服务异常时,推理服务模块的推理服务无法被调用。代理服务模块可以将推理服务模块的服务状态检测结果作为自身的服务状态检测结果,上报至微服务注册中心。
另外,所述代理服务模块向所述微服务注册中心发送的服务状态检测结果的表征形式以符合微服务注册中心对格式的要求进行表征。以eureka微服务注册中心为例,服务状态检测接口可以符合restful规范,返回固定内容的json串。
该实施方式中,代理服务模块定期请求推理服务模块进行服务状态检测,并获取推理服务模块的服务状态检测结果,向微服务注册中心发送所述服务状态检测结果,从而微服务注册中心能够实时监测推理服务的服务状态。
参见图3,图3是本发明实施例提供的一种服务调用方法的流程图,如图3所示,所述方法包括以下步骤:
步骤201、接收基于第一编程语言封装生成的代理服务模块发送的推理服务调用请求;
步骤202、基于所述推理服务调用请求调用基于第二编程语言封装的推理模型进行推理,将推理结果发送至所述代理服务模块。
其中,所述服务调用方法可以应用于推理服务模块,用于实现推理服务。
需要说明的是,本实施例作为与图1所示的实施例中对应的推理服务模块的实施方式,其具体的实施方式可以参见图1所示的实施例的相关说明,为了避免重复说明,本实施例不再赘述,且还可以达到相同有益效果。
可选的,所述基于所述推理服务调用请求调用基于第二编程语言封装的推理模型进行推理,包括:
基于所述推理服务调用请求从显卡上启动的N个推理进程中确定目标推理进程,并基于所述目标推理进程调用基于第二编程语言封装的推理模型进行推理,N为大于1的整数。
其中,目标推理进程可以是所述N个推理进程中的处于空闲状态的进程,示例地,目标推理进程可以是从所述处于空闲状态的进程中随机选择的推理进程。推理服务模块可以在启动有N个推理进程时,对外仅暴露第二端口。
需要说明的是,显卡的GPU资源较为重要,目前采用Python语言封装的TensorFlow模型进行推理服务时用的是单进程的方案,无法较好地利用GPU资源。
该实施方式中,推理服务模块在显卡上启动有N个推理进程,多个推理进程共享显卡的显存,相对于显卡上仅启动有一个推理进程,能够提高显卡的GPU利用率。
可选的,所述推理模型在所述显卡上以预设显存加载,所述N基于显存占用量与显存总量的比值确定,所述显存占用量为一个所述推理模型在所述显卡上采用显存占用自增长模式进行加载时占用的显存,所述显存总量为所述显卡的显存总量。
其中,N可以为1/(n1/n2),n1可以为显存占用量,n2可以为显存总量。若1/(n1/n2)不是整数,则可以对1/(n1/n2)取整,得到N,示例地,可以采用四舍五入的方式进行取整。所述预设显存可以基于显存占用量n1确定,预设显存可以为显存占用量n1与预设系数的乘积,预设系数可以小于或等于1。示例地,所述预设显存可以为显存占用量n1。
另外,可以在推理服务启动前,读取显卡在空闲状态下的显存总量以及一个所述推理模型在所述显卡上采用显存占用自增长模式进行加载时占用的显存。示例地,可以在一块空闲显卡上,启动一个python推理服务,python推理服务启动时先读取未加载任何模型时显卡的显存总量n2,然后采用显存占用自增长模式,也就是在代码中限定allowGrouth=True,加载TensorFlow模型,并执行一次推理调用确保TensorFlow模型正常加载完成,读取加载完TensorFlow模型时显卡的显存占用量n1。
进一步的,可以在配置文件中设置TensorFlow模型以预设显存加载,示例地,可以在配置文件中设置TensorFlow模型加载的显存占用比例。在实际应用中,可以计算出TensorFlow模型的显存占用比例n1/n2和最多可以同时加载的TensorFlow模型的数量N。将显存占用比例n1/n2以及数量N设置在配置文件中,从而在启动推理服务时,读取配置文件中的显存占用比例n1/n2以及可加载的TensorFlow模型的数量N,以显存占用比例n1/n2加载TensorFlow模型,并且启动N个python推理进程。
需要说明的是,在启动推理服务时,可以在空闲的显卡上,启动gunicorn服务,gunicorn服务占用第二端口,可以读取配置文件中的可加载的TensorFlow模型的数量N,启动N个python推理进程。每个python推理进程对应一个TensorFlow模型,按配置文件中的显存占用比例n1/n2加载TensorFlow模型。
该实施方式中,在显卡上加载推理模型时限定推理模型占用的显存,便于N个推理进程共享显存。
参见图4,图4是本发明实施例提供的一种服务调用装置的结构示意图,如图4所示,服务调用装置300包括:
第一接收单元301,用于接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;
修改单元302,用于将所述推理服务调用请求中的接收方地址修改为基于第二编程语言封装生成的推理服务模块对应的地址;
第一发送单元303,用于向所述推理服务模块发送修改后的推理服务调用请求;
第二接收单元304,用于接收所述推理服务模块发送的对所述修改后的推理服务调用请求的推理结果;
第二发送单元305,用于向所述微服务网关发送所述推理结果。
可选的,所述第一接收单元301具体用于:
从第一端口接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;
所述第一发送单元303具体用于:
向所述推理服务模块的第二端口发送修改后的推理服务调用请求。
可选的,所述服务调用装置300还包括:
第三发送单元,用于向微服务注册中心发送注册请求,所述注册请求中包括服务地址和服务名称;
第三接收单元,用于接收所述微服务注册中心对所述注册请求的注册响应。
可选的,所述服务调用装置300还包括:
获取单元,用于按照预设时间间隔请求所述推理服务模块进行服务状态检测,并获取服务状态检测结果;
第四发送单元,用于向所述微服务注册中心发送所述服务状态检测结果。
参见图5,图5是本发明实施例提供的另一种服务调用装置的结构示意图,如图5所示,服务调用装置400包括:
接收单元401,用于接收基于第一编程语言封装生成的代理服务模块发送的推理服务调用请求;
推理单元402,用于基于所述推理服务调用请求调用基于第二编程语言封装的推理模型进行推理,将推理结果发送至所述代理服务模块。
可选的,所述推理单元402具体用于:
基于所述推理服务调用请求从显卡上启动的N个推理进程中确定目标推理进程,并基于所述目标推理进程调用基于第二编程语言封装的推理模型进行推理,将推理结果发送至所述代理服务模块,N为大于1的整数。
可选的,所述推理模型在所述显卡上以预设显存加载,所述N基于显存占用量与显存总量的比值确定,所述显存占用量为一个所述推理模型在所述显卡上采用显存占用自增长模式进行加载时占用的显存,所述显存总量为所述显卡的显存总量。
需要说明的是,本发明实施例中的服务调用装置可以用于执行上述实施例所述的服务调用方法,且能达到相同的技术效果,为避免重复,这里不再赘述。
参见图6,图6是本发明实施例提供的一种电子设备的结构示意图,如图6所示,电子设备500包括:存储器502、处理器501及存储在所述存储器502上并可在所述处理器501上运行的程序,所述程序被所述处理器501执行时实现上述服务调用方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述服务调用方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (10)
1.一种服务调用方法,其特征在于,所述方法包括:
接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;
将所述推理服务调用请求中的接收方地址修改为基于第二编程语言封装生成的推理服务模块对应的地址;
向所述推理服务模块发送修改后的推理服务调用请求;
接收所述推理服务模块发送的对所述修改后的推理服务调用请求的推理结果;
向所述微服务网关发送所述推理结果。
2.根据权利要求1所述的方法,其特征在于,所述接收微服务网关发送的基于第一编程语言封装的推理服务调用请求,包括:
从第一端口接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;
所述向所述推理服务模块发送修改后的推理服务调用请求,包括:
向所述推理服务模块的第二端口发送修改后的推理服务调用请求。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
向微服务注册中心发送注册请求,所述注册请求中包括服务地址和服务名称;
接收所述微服务注册中心对所述注册请求的注册响应。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
按照预设时间间隔请求所述推理服务模块进行服务状态检测,并获取服务状态检测结果;
向所述微服务注册中心发送所述服务状态检测结果。
5.一种服务调用方法,其特征在于,所述方法包括:
接收基于第一编程语言封装生成的代理服务模块发送的推理服务调用请求;
基于所述推理服务调用请求调用基于第二编程语言封装的推理模型进行推理,将推理结果发送至所述代理服务模块。
6.根据权利要求5所述的方法,其特征在于,所述基于所述推理服务调用请求调用基于第二编程语言封装的推理模型进行推理,包括:
基于所述推理服务调用请求从显卡上启动的N个推理进程中确定目标推理进程,并基于所述目标推理进程调用基于第二编程语言封装的推理模型进行推理,N为大于1的整数。
7.根据权利要求6所述的方法,其特征在于,所述推理模型在所述显卡上以预设显存加载,所述N基于显存占用量与显存总量的比值确定,所述显存占用量为一个所述推理模型在所述显卡上采用显存占用自增长模式进行加载时占用的显存,所述显存总量为所述显卡的显存总量。
8.一种服务调用装置,其特征在于,所述服务调用装置包括:
第一接收单元,用于接收微服务网关发送的基于第一编程语言封装的推理服务调用请求;
修改单元,用于将所述推理服务调用请求中的接收方地址修改为基于第二编程语言封装生成的推理服务模块对应的地址;
第一发送单元,用于向所述推理服务模块发送修改后的推理服务调用请求;
第二接收单元,用于接收所述推理服务模块发送的对所述修改后的推理服务调用请求的推理结果;
第二发送单元,用于向所述微服务网关发送所述推理结果。
9.一种服务调用装置,其特征在于,所述服务调用装置包括:
接收单元,用于接收基于第一编程语言封装生成的代理服务模块发送的推理服务调用请求;
推理单元,用于基于所述推理服务调用请求调用基于第二编程语言封装的推理模型进行推理,将推理结果发送至所述代理服务模块。
10.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1至4中任一项所述的服务调用方法的步骤,或者,所述程序被所述处理器执行时实现如权利要求5至7中任一项所述的服务调用方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110005294.7A CN114721842A (zh) | 2021-01-05 | 2021-01-05 | 服务调用方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110005294.7A CN114721842A (zh) | 2021-01-05 | 2021-01-05 | 服务调用方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114721842A true CN114721842A (zh) | 2022-07-08 |
Family
ID=82234957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110005294.7A Pending CN114721842A (zh) | 2021-01-05 | 2021-01-05 | 服务调用方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114721842A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242866A (zh) * | 2022-07-28 | 2022-10-25 | 度小满科技(北京)有限公司 | 微服务调用方法、装置、电子设备及存储介质 |
CN115589426A (zh) * | 2022-09-08 | 2023-01-10 | 中冶赛迪信息技术(重庆)有限公司 | 一种网络服务调用方法及系统 |
-
2021
- 2021-01-05 CN CN202110005294.7A patent/CN114721842A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242866A (zh) * | 2022-07-28 | 2022-10-25 | 度小满科技(北京)有限公司 | 微服务调用方法、装置、电子设备及存储介质 |
CN115589426A (zh) * | 2022-09-08 | 2023-01-10 | 中冶赛迪信息技术(重庆)有限公司 | 一种网络服务调用方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815025B (zh) | 一种业务模型调用方法、装置及存储介质 | |
CN114721842A (zh) | 服务调用方法、装置及电子设备 | |
CN111818158B (zh) | 网关控制方法、装置、电子设备及存储介质 | |
CN110753129A (zh) | 消息传输方法、系统、装置、设备及计算机可读存储介质 | |
CN107332857B (zh) | 一种网络数据传输方法、装置、系统和存储介质 | |
KR20220167388A (ko) | 데이터 처리 방법, 장치, 컴퓨터 디바이스, 및 저장 매체 | |
CN112954717A (zh) | 基于h5页面的家电配网方法和装置 | |
CN106357654B (zh) | 远程过程调用方法、装置及通信系统 | |
CN109725887B (zh) | 基于消息研发框架的数据交互方法、装置及终端设备 | |
CN110324722B (zh) | 直播间中数据的获取方法、装置、设备和存储介质 | |
CN110851261A (zh) | 任务处理方法、系统、装置、设备及计算机可读存储介质 | |
CN112579212A (zh) | 跨语言调用的方法、调用方装置及被调用方装置 | |
CN111447262A (zh) | 请求发送方法及客户端、存储介质 | |
CN107391630B (zh) | 处理并行网络请求的方法、装置及终端设备 | |
CN112631638B (zh) | 终端应用更新方法、装置、存储介质及电子设备 | |
CN109582481B (zh) | 调用结果的传输方法、装置、设备及存储介质 | |
CN113918245A (zh) | 一种数据调用方法、装置、设备及计算机可读存储介质 | |
CN114168315A (zh) | 基于多核的报文处理方法、装置、电子设备及存储介质 | |
CN116208654A (zh) | 一种信息调用方法、装置、设备及存储介质、程序产品 | |
CN114039963A (zh) | 数据传输方法、装置、电子装置和存储介质 | |
CN110008033B (zh) | 一种和客户端进行通信的方法及电子设备 | |
CN110008032B (zh) | 一种通信方式的实现方法及电子设备 | |
CN112667359A (zh) | 数据透传方法、电子设备及存储介质 | |
CN113132472B (zh) | 车载T-Box的RESTful Web动态服务注册方法 | |
CN113608900B (zh) | 一种算法模型的调用方法、装置、设备及介质 |
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 |