CN115390944A - 一种算法服务调用方法、装置、电子设备及存储介质 - Google Patents
一种算法服务调用方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115390944A CN115390944A CN202211035715.1A CN202211035715A CN115390944A CN 115390944 A CN115390944 A CN 115390944A CN 202211035715 A CN202211035715 A CN 202211035715A CN 115390944 A CN115390944 A CN 115390944A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- plug
- service unit
- calling
- algorithm service
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种算法服务调用方法、装置、电子设备及存储介质,该方法包括:接收第一设备发送的调用请求,调用请求包括:算法服务标识和调用参数;查找算法服务标识对应的算法服务单元,并通过算法服务单元对调用参数进行计算处理,获得调用结果,算法服务单元是对算法插件进行动态编译后获得的;向第一设备发送调用结果。通过事先对算法插件进行动态编译后获得算法服务单元,然后查找所述算法服务标识对应的算法服务单元,并通过所述算法服务单元对所述调用参数进行计算处理,避免了开发调试、依赖分析、介质打包、介质比对、动态编译和算法调用等实时地手动操作,从而有效地提高了对算法插件进行调用的效率。
Description
技术领域
本申请涉及机器学习算法服务和深度学习算法服务的技术领域,具体而言,涉及一种算法服务调用方法、装置、电子设备及存储介质。
背景技术
目前,当运维人员需要调用某个特定算法插件时,需要开发人员手动进行大量的环境配置、开发调试、依赖分析、介质打包、介质比对、动态编译和算法调用等实时操作来调用具体的算法服务。在具体的算法服务调用的过程中,不仅流程繁琐,而且出错概率较大,因此,目前对算法插件进行调用的效率较低。
发明内容
本申请实施例的目的在于提供一种算法服务调用方法、装置、电子设备及存储介质,用于改善对算法插件进行调用的效率较低的问题。
本申请实施例提供了一种算法服务调用方法,包括:接收第一设备发送的调用请求,调用请求包括:算法服务标识和调用参数;查找算法服务标识对应的算法服务单元,并通过算法服务单元对调用参数进行计算处理,获得调用结果,算法服务单元是对算法插件进行动态编译后获得的;向第一设备发送调用结果。在上述方案的实现过程中,通过事先对算法插件进行动态编译后获得算法服务单元,然后查找算法服务标识对应的算法服务单元,并通过算法服务单元对调用参数进行计算处理,避免了开发调试、依赖分析、介质打包、介质比对、动态编译和算法调用等实时地手动操作,从而有效地提高了对算法插件进行调用的效率。
可选地,在本申请实施例中,查找算法服务标识对应的算法服务单元,包括:在算法映射表中查找算法服务标识对应的算法服务单元,算法映射表中存储有算法服务标识与算法服务单元之间的映射对应关系。在上述方案的实现过程中,通过在算法映射表中查找算法服务标识对应的算法服务单元,并通过算法服务单元对调用参数进行计算处理,避免了开发调试、依赖分析、介质打包、介质比对、动态编译和算法调用等实时地手动操作,从而有效地提高了对算法插件进行调用的效率。
可选地,在本申请实施例中,在查找算法服务标识对应的算法服务单元之前,还包括:获取算法插件,对算法插件进行动态编译,获得算法服务标识对应的算法服务单元。在上述方案的实现过程中,通过获取算法插件,对算法插件进行动态编译,获得算法服务标识对应的算法服务单元,从而避免了开发调试、依赖分析、介质打包、介质比对、动态编译和算法调用等实时地手动操作,有效地提高了对算法插件进行调用的效率。
可选地,在本申请实施例中,获取算法插件,包括:接收第二设备发送的算法插件,或者,扫描预设目录下存储的算法插件。在上述方案的实现过程中,通过接收第二设备发送的算法插件,或者,扫描预设目录下存储的算法插件,避免了开发调试、依赖分析、介质打包等实时地手动操作方式来获得算法插件,从而有效地提高了对算法插件进行调用的效率。
可选地,在本申请实施例中,获取算法插件,包括:接收第三设备发送的插件封装请求,插件封装请求包括:机器学习模型和机器学习模型运行所依赖的环境信息;从环境信息解析出前置逻辑脚本文件和后置逻辑脚本文件;对机器学习模型、前置逻辑脚本文件和后置逻辑脚本文件进行封装,获得机器学习模型对应的算法模块;获取通用适配接口,并在机器学习模型对应的算法模块上增加通用适配接口,获得算法插件。在上述方案的实现过程中,通过从环境信息解析出前置逻辑脚本文件和后置逻辑脚本文件;对机器学习模型、前置逻辑脚本文件和后置逻辑脚本文件进行封装,以及增加通用适配接口,获得算法插件,避免了开发调试、依赖分析、介质打包等实时地手动操作方式来获得算法插件,从而有效地提高了对算法插件进行调用的效率。
可选地,在本申请实施例中,对算法插件进行动态编译,包括:判断算法插件的名字与已存储插件名字是否相同;若否,则对算法插件进行动态编译。在上述方案的实现过程中,通过在算法插件的名字与已存储插件名字不相同的情况下,才对算法插件进行动态编译,避免了已经存在的算法插件被重复编译导致计算资源浪费的问题,从而有效地提高了对算法插件进行调用的效率。
可选地,在本申请实施例中,在判断算法插件的名字是否与已存储插件名字相同之后,还包括:若算法插件的名字与已存储插件名字相同,则在确认算法插件的哈希值与已存储插件的哈希值不同之后,对算法插件进行动态编译。在上述方案的实现过程中,通过在确认算法插件的名字与已存储插件名字相同,且确认算法插件的哈希值与已存储插件的哈希值不同之后,才对算法插件进行动态编译,避免了已经存在且版本相同的算法插件被重复编译导致计算资源浪费的问题,从而有效地提高了对算法插件进行调用的效率。
本申请实施例还提供了一种算法服务调用装置,包括:调用请求接收模块,用于接收第一设备发送的调用请求,调用请求包括:算法服务标识和调用参数;服务单元查找模块,用于查找算法服务标识对应的算法服务单元,并通过算法服务单元对调用参数进行计算处理,获得调用结果,算法服务单元是对算法插件进行动态编译后获得的;调用结果发送模块,用于向第一设备发送调用结果。
可选地,在本申请实施例中,服务单元查找模块,包括:服务单元映射子模块,用于在算法映射表中查找算法服务标识对应的算法服务单元,算法映射表中存储有算法服务标识与算法服务单元之间的映射对应关系。
可选地,在本申请实施例中,算法服务调用装置,包括:插件动态编译模块,用于获取算法插件,对算法插件进行动态编译,获得算法服务标识对应的算法服务单元。
可选地,在本申请实施例中,插件动态编译模块,包括:插件接收扫描子模块,用于接收第二设备发送的算法插件,或者,扫描预设目录下存储的算法插件。
可选地,在本申请实施例中,插件动态编译模块,包括:封装请求接收子模块,用于接收第三设备发送的插件封装请求,插件封装请求包括:机器学习模型和机器学习模型运行所依赖的环境信息;环境信息解析子模块,用于从环境信息解析出前置逻辑脚本文件和后置逻辑脚本文件;算法插件封装子模块,用于对机器学习模型、前置逻辑脚本文件和后置逻辑脚本文件进行封装,获得机器学习模型对应的算法模块,并获取通用适配接口,并在机器学习模型对应的算法模块上增加通用适配接口,获得算法插件。
可选地,在本申请实施例中,插件动态编译模块,包括:插件名字判断子模块,用于判断算法插件的名字与已存储插件名字是否相同;第一动态编译子模块,用于若算法插件的名字与已存储插件名字不相同,则对算法插件进行动态编译。
可选地,在本申请实施例中,插件动态编译模块,还包括:第二动态编译子模块,用于若算法插件的名字与已存储插件名字相同,则在确认算法插件的哈希值与已存储插件的哈希值不同之后,对算法插件进行动态编译。
本申请实施例还提供了一种电子设备,包括:处理器和存储器,存储器存储有处理器可执行的机器可读指令,机器可读指令被处理器执行时执行如上面描述的方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上面描述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请实施例中的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出的本申请实施例提供的算法服务调用方法的流程示意图;
图2示出的本申请实施例提供的查找算法服务单元的示意图;
图3示出的本申请实施例提供的算法插件的获取和动态编译过程的示意图;
图4示出的本申请实施例提供的算法服务调用装置的结构示意图;
图5示出的本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请实施例中的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请实施例的详细描述并非旨在限制要求保护的本申请实施例的范围,而是仅仅表示本申请实施例中的选定实施例。基于本申请实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
可以理解的是,本申请实施例中的“第一”、“第二”用于区别类似的对象。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在介绍本申请实施例提供的算法服务调用方法之前,先介绍本申请实施例中所涉及的一些概念:
算法模型(Algorithm Model),是指一种数据格式和对应参数的组织形式,具体可以是机器学习模型或神经网络模型,机器学习模型例如:决策树(Decision Tree)、回归树(Regression Decision Tree)和支持向量机(Support Vector Machine,SVM)等等,神经网络模型例如:卷积神经网络(Convolutional Neural Networks,CNN)模型和循环神经网络(Recurrent Neural Network,RNN)模型等等。在理论上,可以将算法模型理解为机器人的行为逻辑集合,即不具备特定功能的组织形式集合。
算法模块(Algorithm Module),是指一种算法模式定义的固定格式,也是构成系统、实现系统功能的基本单位。由于算法模型不具备特定功能,因此为了让算法实现特定功能,还需要进一步封装,具体例如:将算法模型、该算法模型的前置逻辑脚本文件和后置逻辑脚本文件,以及该算法模型依赖的其它环境信息封装在一个算法模块中,该算法模块是具有特定功能且不依赖于外部环境的模块。
算法插件(Algorithm Plug-In),是指为了算法模块适用于目标系统而增加的适配接口(Interface)获得的插件,此处的接口可以是应用程序接口(ApplicationProgramming Interface,API),使得该算法插件像通用串行总线(Universal Serial Bus,USB)接口的优盘一样能够即插即用。
需要说明的是,本申请实施例提供的算法服务调用方法可以被电子设备执行,这里的电子设备是指具有执行计算机程序功能的设备终端或者服务器,设备终端例如:智能手机、个人电脑、平板电脑、个人数字助理或者移动上网设备等。服务器是指通过网络提供计算服务的设备,服务器例如:x86服务器以及非x86服务器,非x86服务器包括:大型机、小型机和UNIX服务器。
下面介绍该算法服务调用方法适用的应用场景,这里的应用场景包括但不限于:可以使用该算法服务调用方法实现算法插件的轻量化部署更新,例如在异地开发了一些算法插件,需要异地部署在其它服务器中的算法服务单元中时,可以有效避免大量的环境配置和适配调试等工作,从而满足算法插件的轻量化部署更新和即插即用(又称热插拔)的需求。
请参见图1示出的本申请实施例提供的算法服务调用方法的流程示意图;该算法服务调用方法的主要思路是,通过事先对算法插件进行动态编译后获得算法服务单元,然后查找算法服务标识对应的算法服务单元,并通过算法服务单元对调用参数进行计算处理,有效避免大量的环境配置和适配调试等工作,从而满足算法插件的轻量化部署更新和即插即用(又称热插拔)的需求。上述算法服务调用方法的实施方式可以包括:
步骤S110:接收第一设备发送的调用请求,调用请求包括:算法服务标识和调用参数。
上述步骤S110的实施方式例如:电子设备通过传输控制协议(TransmissionControl Protocol,TCP)或者用户数据报协议(User Datagram Protocol,UDP)接收第一设备发送的调用请求,其中,调用请求是指需要调用算法服务单元的具体请求,该调用请求可以包括:算法服务标识和调用参数;算法服务标识是指需要调用的算法服务单元的标识信息,在调用算法服务单元的同时,需要传入该算法服务单元所需要的参数信息(即上述的调用参数)。
步骤S120:查找算法服务标识对应的算法服务单元,并通过算法服务单元对调用参数进行计算处理,获得调用结果,算法服务单元是对算法插件进行动态编译后获得的。
步骤S130:向第一设备发送调用结果。
上述步骤S130的实施方式例如:电子设备通过TCP协议或者UDP协议向第一设备发送调用结果,其中,具体可以通过TCP协议的上层协议(即应用层协议)来向第一设备发送调用结果,具体可以采用超文本传输协议(Hyper Text Transfer Protocol,HTTP)或者超文本传输安全协议(Hyper Text Transfer Protocol Secure,HTTPS)向第一设备发送调用结果。
在上述的实现过程中,通过事先对算法插件进行动态编译后获得算法服务单元,然后查找算法服务标识对应的算法服务单元,并通过算法服务单元对调用参数进行计算处理,避免了开发调试、依赖分析、介质打包、介质比对、动态编译和算法调用等实时地手动操作,从而有效地提高了对算法插件进行调用的效率。
请参见图2示出的本申请实施例提供的查找算法服务单元的示意图;在图2的算法映射表中可以包括两个算法服务单元:第一算法服务单元和第二算法服务单元;其中,第一算法服务单元的算法服务标识是1,且第一算法服务单元的名称是文本分类,第二算法服务单元的算法服务标识是2,且第二算法服务单元的名称是中文分词。可以理解的是,由于第一算法服务单元和第二算法服务单元都是针对文本进行处理的,因此,第一算法服务单元的调用参数和第二算法服务单元的调用参数均是文本内容。作为上述步骤S120的一种可选实施方式,可以在算法映射表中查找算法服务单元,该实施方式可以包括:
步骤S121:在算法映射表中查找算法服务标识对应的算法服务单元,算法映射表中存储有算法服务标识与算法服务单元之间的映射对应关系。
算法映射表(Algorithm Mapping Table),是指存放算法服务标识与算法服务单元之间的映射对应关系的映射表,算法映射表可以存放如图2中的1与文本分类的对应关系,还可以存放2与中文分词的映射关系等等。
步骤S122:通过算法服务单元对调用参数进行计算处理,获得调用结果。
上述步骤S121至步骤S122的实施方式例如:假设调用请求中的算法服务标识是1,且调用请求中的调用参数是“我喜欢研究生物学”,那么电子设备可以在算法映射表中查找到算法服务标识为1的算法服务单元是名称为文本分类的第一算法服务单元,然后,将“我喜欢研究生物学”的调用参数输入第一算法服务单元,获得的调用结果为该文本是正面情感的概率是0.9,且该文本是负面情感的概率是0.1。
同理地,假设调用请求中的算法服务标识是2,且调用请求中的调用参数是“我喜欢研究生物学”,那么电子设备可以在算法映射表中查找到算法服务标识为2的算法服务单元是名称为中文分词的第二算法服务单元,然后,将“我喜欢研究生物学”的调用参数输入第二算法服务单元,获得的调用结果为["我","喜欢","研究","生物学"]。
请参见图3示出的本申请实施例提供的算法插件的获取和动态编译过程的示意图;作为上述步骤S120的一种可选实施方式,在查找算法服务标识对应的算法服务单元之前,还可以通过动态编译来获取算法模块,并为该算法模块增加通用适配接口,从而获得算法插件,该实施方式可以包括:
步骤S123:获取算法插件,对算法插件进行动态编译,获得算法服务标识对应的算法服务单元。
可以理解的是,上述的算法插件可以是由开发者将机器学习模型、该机器学习模型的前置逻辑脚本文件和后置逻辑脚本文件封装成一个独立的算法模块(该算法模块是与机器学习模型对应的),并为该算法模块加上通用适配接口,从而上传给电子设备之后获得算法插件。当然该算法插件也可以是电子设备扫描预设目录下存储的算法插件后获得的,该算法插件也可以是接收算法模型、前置逻辑脚本文件和后置逻辑脚本文件,并对算法模型、前置逻辑脚本文件和后置逻辑脚本文件进行封装,获得机器学习模型对应的算法模块;然后,获取通用适配接口,并在机器学习模型对应的算法模块上增加通用适配接口之后获得的。在具体实践过程中,算法插件中可以包括算法模型(例如机器学习模型),也可以不包括算法模型(例如机器学习模型),可以根据具体情况设置,算法插件中可以包括所依赖的具体环境信息、分析逻辑信息(例如类信息以及类的接口函数信息等等)、输入参数和输出参数等等。
可以理解的是,上述的算法服务标识可以是操作系统随机分配的,上述的算法服务单元可以理解为一种在操作系统中运行起来的进程,那么算法服务标识就可以理解为操作系统随机分配的进程标识,因此,当算法插件作为静态程序动态编译运行时,获得的算法服务单元就是操作系统中运行起来的进程,操作系统可以为该进程(即算法服务单元)随机分配一个不重复的进程标识(即算法服务标识),然后,将算法服务标识和算法服务单元之间的对应关系存储在算法映射表中,该算法映射表用于查找算法服务标识对应的算法服务单元。
上述步骤S123中的获取算法插件的第一种可选实施方式,通过接收其它设备发送的算法插件来获取,该实施方式可以包括:
步骤S123a:电子设备接收第二设备发送的算法插件。
上述步骤S123a的实施方式例如:电子设备接收第二设备发送的算法插件,并将该算法插件存储在预设目录下,该预设目录可以根据具体情况设置,具体例如:如果操作系统是Linux系统,那么可以将预设目录设置为/opt/dev目录。可以理解的是,第二设备除了可以上传该算法插件之外,还可以对该算法插件进行管理操作,例如:对该算法插件进行修改、更新、删除和查询等等管理操作。
上述步骤S123中的获取算法插件的第二种可选实施方式,该实施方式可以包括:
步骤S123b:电子设备扫描预设目录下存储的算法插件。
预设目录,是指在操作系统中预先定义的用于存放算法插件的存放路径,当预设目录下的算法插件被扫描时,可以获得算法插件的存储位置、插件名称和插件整体哈希值(例如MD5值)等等。
上述步骤S123b的实施方式例如:如果操作系统是Linux系统,电子设备可以扫描预设目录(例如/opt/dev目录)下存储的算法插件,从而获得算法插件的存储位置、插件名称和插件整体哈希值(例如MD5值)等等信息。在具体实践过程中,可以将/opt/dev设置为预设目录,也可以将其它目录设置为预设目录,可以根据具体情况设置预设目录。
上述步骤S123中的获取算法插件的第三种可选实施方式,该实施方式可以包括:
步骤S123c:电子设备接收第三设备发送的插件封装请求,插件封装请求包括:机器学习模型和机器学习模型运行所依赖的环境信息。
上述步骤S123c的实施方式例如:开发人员可以通过第三设备(例如个人电脑)在电子设备提供的算法插件的上传页面中上传算法插件,即第三设备通过HTTP协议或者HTTPS协议向电子设备发送算法插件。电子设备通过HTTP协议或者HTTPS协议接收第三设备发送的插件封装请求,该插件封装请求中可以包括:机器学习模型和该机器学习模型运行所依赖的环境信息;其中,此处的环境信息是在算法服务单元的运行空间中会维护多套较通用的依赖环境。
步骤S123d:电子设备从环境信息解析出前置逻辑脚本文件和后置逻辑脚本文件。
上述步骤S123d的实施方式例如:电子设备可以从环境信息解析出前置逻辑脚本文件和后置逻辑脚本文件,还可以从环境信息中解析出算法插件所需的元信息,该元信息例如:分析逻辑信息(例如类信息以及类的接口函数信息等等)、输入参数和输出参数等等。在具体的实施过程中,上述的环境信息还可以包括编译环境,第三设备在上传封装请求中的环境信息时,第三设备的操作人员(例如开发人员)还可以根据环境信息选择动态编译所需的编译环境(当然该编译环境也可以是不用选择的,例如直接使用默认的编译环境)。
步骤S123e:电子设备对机器学习模型、前置逻辑脚本文件和后置逻辑脚本文件进行封装,获得机器学习模型对应的算法模块。
步骤S123f:获取通用适配接口,并在机器学习模型对应的算法模块上增加通用适配接口,获得算法插件。
上述步骤S123e至步骤S123f的实施方式例如:电子设备对机器学习模型、前置逻辑脚本文件和后置逻辑脚本文件进行封装打包,获得机器学习模型对应的算法模块;然后,从电子设备上存储的适配接口库中获取通用适配接口,并在机器学习模型对应的算法模块上增加通用适配接口,获得算法插件;其中,此处的前置逻辑脚本文件是指机器学习模型在训练过程中需要前置处理操作所执行的脚本,此处的前置处理操作所执行的脚本例如预处理操作等等,此处的后置逻辑脚本文件是指机器学习模型在训练过程中需要后置处理操作所执行的脚本。
上述步骤S123中的对算法插件进行动态编译的一种可选实施方式,可以理解的是,在获得算法插件之后,算法插件是算法运行所需的所有静态数据和静态介质,如果需要在工业化场景中使用,还需要对算法插件进行动态编译,将静态的算法插件转换为动态的算法服务单元,具体可以根据插件名字确定是否动态编译,动态编译的实施方式可以包括:
步骤S123f:判断算法插件的名字与已存储插件名字是否相同。
可以理解的是,在具体的实践过程中,算法插件的名字的确定方式有很多种,包括但不限于如下几种:
第一种算法插件的名字确定方式,可以直接采用机器学习模型的模型文件名作为算法插件的名字,即在上述步骤S123c中的接收到第三设备发送的插件封装请求之后,从插件封装请求中解析出机器学习模型以及该机器学习模型的模型文件名,并将该模型名字确定为算法插件的名字。其中,上述机器学习模型的模型文件名可以根据具体情况进行设置,包括但不限于:机器学习模型的模型名字、模型版本号和/或模型更新日期等等。
第二算法插件的名字确定方式,上述的插件封装请求可以还包括:算法插件的名字;具体例如:在上述步骤S123c中的接收到第三设备发送的插件封装请求之后,从插件封装请求中解析出算法插件的名字,该算法插件的名字可以是用户通过第三设备中自定义设置的,即该算法插件的名字是可以根据具体情况进行设置,该算法插件的名字可以包括:插件标识、插件类型、插件版本号和/或插件更新日期等等。
步骤S123g:若算法插件的名字与已存储插件名字不相同,则对算法插件进行动态编译,获得算法服务标识对应的算法服务单元。
上述步骤S123f的实施方式例如:使用预设编程语言编译或者解释的可执行程序判断算法插件的名字与已存储插件名字是否相同,可以使用的编程语言例如:C、C++、Java、BASIC、JavaScript、LISP、Shell、Perl、Ruby、Python和PHP等等。若算法插件的名字与已存储插件名字不相同,则在环境信息中对应的编译环境(预先选择的编译环境或者默认的编译环境)中对算法插件进行动态编译,获得算法服务标识对应的算法服务单元(例如第三算法服务单元)。
可以理解的是,在获得第三算法服务单元之后,若该第三算法服务单元在算法映射表中没查找到(例如是上传的算法插件动态编译获得的),那么还可以将第三算法服务单元注册在算法映射表中。如果第三算法服务单元已经注册在算法映射表中,那么第一设备就可以在算法服务单元的调用列表中看到第三算法服务单元,具体例如:第一设备向电子设备发送算法服务单元的列表请求;电子设备在接收到第一设备发送的列表请求之后,解析出列表请求中的条件信息,并在算法映射表中查询到满足该条件信息的所有算法服务单元,并向第一设备发送满足该条件信息的所有算法服务单元。
上述步骤S123中的对算法插件进行动态编译的一种可选实施方式,可以根据插件名字和哈希值确定是否动态编译,该动态编译的实施方式包括:
步骤S123h:若算法插件的名字与已存储插件名字相同,则在确认算法插件的哈希值与已存储插件的哈希值不同之后,对算法插件进行动态编译,获得算法服务标识对应的算法服务单元。
上述步骤S123h的实施方式例如:若确认算法插件的名字与已存储插件名字相同,那么还可以判断算法插件的哈希值与已存储插件的哈希值是否都相同,如果确认算法插件的哈希值与已存储插件的哈希值不同之后,那么可以直接对算法插件进行动态编译,从而获得算法服务标识对应的算法服务单元。可以理解的是,算法插件的哈希值是对整个算法插件的内容进行哈希计算获得的,且已存储插件的哈希值也是对整个已存储插件的内容进行哈希计算获得的,此处的哈希计算可以选择MD5、SHA-256/224、SHA-512/384和WHIRLPOOL等算法。如果确认算法插件的哈希值与已存储插件的哈希值相同,那么说明当前(上传或扫描获得)的算法插件与已存储插件的内容是相同的,就可以不做任何操作。
请参见图4示出的本申请实施例提供的算法服务调用装置的结构示意图;本申请实施例提供了一种算法服务调用装置200,包括:
调用请求接收模块210,用于接收第一设备发送的调用请求,调用请求包括:算法服务标识和调用参数。
服务单元查找模块220,用于查找算法服务标识对应的算法服务单元,并通过算法服务单元对调用参数进行计算处理,获得调用结果,算法服务单元是对算法插件进行动态编译后获得的。
调用结果发送模块230,用于向第一设备发送调用结果。
可选地,在本申请实施例中,服务单元查找模块,包括:
服务单元映射子模块,用于在算法映射表中查找算法服务标识对应的算法服务单元,算法映射表中存储有算法服务标识与算法服务单元之间的映射对应关系。
可选地,在本申请实施例中,算法服务调用装置,包括:
插件动态编译模块,用于获取算法插件,对算法插件进行动态编译,获得算法服务标识对应的算法服务单元。
可选地,在本申请实施例中,插件动态编译模块,包括:
插件接收扫描子模块,用于接收第二设备发送的算法插件,或者,扫描预设目录下存储的算法插件。
可选地,在本申请实施例中,插件动态编译模块,包括:
封装请求接收子模块,用于接收第三设备发送的插件封装请求,插件封装请求包括:机器学习模型和机器学习模型运行所依赖的环境信息。
环境信息解析子模块,用于从环境信息解析出前置逻辑脚本文件和后置逻辑脚本文件。
算法插件封装子模块,用于对机器学习模型、前置逻辑脚本文件和后置逻辑脚本文件进行封装,获得机器学习模型对应的算法模块,并获取通用适配接口,并在机器学习模型对应的算法模块上增加通用适配接口,获得算法插件。
可选地,在本申请实施例中,插件动态编译模块,包括:
插件名字判断子模块,用于判断算法插件的名字与已存储插件名字是否相同。
第一动态编译子模块,用于若算法插件的名字与已存储插件名字不相同,则对算法插件进行动态编译。
可选地,在本申请实施例中,插件动态编译模块,还包括:
第二动态编译子模块,用于若算法插件的名字与已存储插件名字相同,则在确认算法插件的哈希值与已存储插件的哈希值不同之后,对算法插件进行动态编译。
应理解的是,该装置与上述的算法服务调用方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在装置的操作系统(operating system,OS)中的软件功能模块。
请参见图5示出的本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备300,包括:处理器310和存储器320,存储器320存储有处理器310可执行的机器可读指令,机器可读指令被处理器310执行时执行如上的方法。
本申请实施例还提供了一种计算机可读存储介质330,该计算机可读存储介质330上存储有计算机程序,该计算机程序被处理器310运行时执行如上的方法。
其中,计算机可读存储介质330可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以和附图中所标注的发生顺序不同。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这主要根据所涉及的功能而定。
另外,在本申请实施例中的各个实施例的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。此外,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。
Claims (10)
1.一种算法服务调用方法,其特征在于,包括:
接收第一设备发送的调用请求,所述调用请求包括:算法服务标识和调用参数;
查找所述算法服务标识对应的算法服务单元,并通过所述算法服务单元对所述调用参数进行计算处理,获得调用结果,所述算法服务单元是对算法插件进行动态编译后获得的;
向所述第一设备发送所述调用结果。
2.根据权利要求1所述的方法,其特征在于,所述查找所述算法服务标识对应的算法服务单元,包括:
在算法映射表中查找所述算法服务标识对应的算法服务单元,所述算法映射表中存储有算法服务标识与算法服务单元之间的映射对应关系。
3.根据权利要求1所述的方法,其特征在于,在所述查找所述算法服务标识对应的算法服务单元之前,还包括:
获取算法插件,对所述算法插件进行动态编译,获得所述算法服务标识对应的算法服务单元。
4.根据权利要求3所述的方法,其特征在于,所述获取算法插件,包括:
接收第二设备发送的算法插件,或者,扫描预设目录下存储的算法插件。
5.根据权利要求3所述的方法,其特征在于,所述获取算法插件,包括:
接收第三设备发送的插件封装请求,所述插件封装请求包括:机器学习模型和所述机器学习模型运行所依赖的环境信息;
从所述环境信息解析出前置逻辑脚本文件和后置逻辑脚本文件;
对所述机器学习模型、所述前置逻辑脚本文件和所述后置逻辑脚本文件进行封装,获得所述机器学习模型对应的算法模块;
获取通用适配接口,并在所述机器学习模型对应的算法模块上增加通用适配接口,获得所述算法插件。
6.根据权利要求3所述的方法,其特征在于,所述对所述算法插件进行动态编译,包括:
判断所述算法插件的名字与已存储插件名字是否相同;
若否,则对所述算法插件进行动态编译。
7.根据权利要求6所述的方法,其特征在于,在所述判断所述算法插件的名字是否与已存储插件名字相同之后,还包括:
若所述算法插件的名字与已存储插件名字相同,则在确认所述算法插件的哈希值与所述已存储插件的哈希值不同之后,对所述算法插件进行动态编译。
8.一种算法服务调用装置,其特征在于,包括:
调用请求接收模块,用于接收第一设备发送的调用请求,所述调用请求包括:算法服务标识和调用参数;
服务单元查找模块,用于查找所述算法服务标识对应的算法服务单元,并通过所述算法服务单元对所述调用参数进行计算处理,获得调用结果,所述算法服务单元是对算法插件进行动态编译后获得的;
调用结果发送模块,用于向所述第一设备发送所述调用结果。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211035715.1A CN115390944A (zh) | 2022-08-26 | 2022-08-26 | 一种算法服务调用方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211035715.1A CN115390944A (zh) | 2022-08-26 | 2022-08-26 | 一种算法服务调用方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115390944A true CN115390944A (zh) | 2022-11-25 |
Family
ID=84123314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211035715.1A Pending CN115390944A (zh) | 2022-08-26 | 2022-08-26 | 一种算法服务调用方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115390944A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117576545A (zh) * | 2024-01-16 | 2024-02-20 | 成都同步新创科技股份有限公司 | 一种多算法全匹配接入适配器接入方法 |
-
2022
- 2022-08-26 CN CN202211035715.1A patent/CN115390944A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117576545A (zh) * | 2024-01-16 | 2024-02-20 | 成都同步新创科技股份有限公司 | 一种多算法全匹配接入适配器接入方法 |
CN117576545B (zh) * | 2024-01-16 | 2024-04-05 | 成都同步新创科技股份有限公司 | 一种多算法全匹配接入适配器接入方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109032662B (zh) | 代码文件生成方法、装置、计算机设备和存储介质 | |
CN111324359B (zh) | 插件部署方法及装置 | |
CN113835713B (zh) | 源码包下载方法、装置、计算机设备和存储介质 | |
CN112527415A (zh) | 小程序跨平台迁移方法、装置、设备和介质 | |
CN109254765B (zh) | 定时任务管理方法、装置、计算机设备及存储介质 | |
CN112769706B (zh) | 组件化路由方法及系统 | |
CN112380130A (zh) | 基于调用依赖关系的应用测试方法和装置 | |
CN115390944A (zh) | 一种算法服务调用方法、装置、电子设备及存储介质 | |
CN115658237A (zh) | 一种容器应用自动部署方法、设备、装置、设备及介质 | |
CN113268245A (zh) | 代码分析方法、装置及存储介质 | |
CN111176706A (zh) | 终端升级方法、装置、电子设备及存储介质 | |
CN110806913A (zh) | 网页截图方法、装置及设备 | |
CN113138768B (zh) | 应用程序包生成方法、装置、电子设备以及可读存储介质 | |
CN113515303A (zh) | 一种项目转型方法、装置和设备 | |
CN114879976A (zh) | 版本的环境部署方法、装置及电子设备 | |
CN112685102B (zh) | 一种网关插件热加载方法、装置、设备及介质 | |
CN115729590A (zh) | 服务部署方法、装置、设备和计算机可读存储介质 | |
CN114237736A (zh) | 页面资源加载方法、系统、装置、计算机设备及存储介质 | |
CN111158654A (zh) | 算法调用方法、装置、服务器及存储介质 | |
CN114253595A (zh) | 代码仓库管理方法、装置、计算机设备及存储介质 | |
CN112559293A (zh) | 应用程序包的监控方法及装置 | |
CN111475783A (zh) | 数据检测方法、系统及设备 | |
CN117234545B (zh) | 应用程序安装方法、装置、终端设备以及存储介质 | |
CN113467888B (zh) | 智能合约的跨链调用方法及装置、电子设备、存储介质 | |
CN115543486B (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 |