CN115309562A - 算子调用***、算子生成方法,电子设备 - Google Patents
算子调用***、算子生成方法,电子设备 Download PDFInfo
- Publication number
- CN115309562A CN115309562A CN202110497298.1A CN202110497298A CN115309562A CN 115309562 A CN115309562 A CN 115309562A CN 202110497298 A CN202110497298 A CN 202110497298A CN 115309562 A CN115309562 A CN 115309562A
- Authority
- CN
- China
- Prior art keywords
- operator
- calling
- software package
- function
- configuration information
- 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
- 238000000034 method Methods 0.000 title claims description 42
- 230000006870 function Effects 0.000 claims abstract description 144
- 238000004364 calculation method Methods 0.000 claims abstract description 26
- 238000013515 script Methods 0.000 claims description 17
- 230000006978 adaptation Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 7
- 230000002776 aggregation Effects 0.000 claims description 5
- 238000004220 aggregation Methods 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 238000011161 development Methods 0.000 abstract description 25
- 238000012423 maintenance Methods 0.000 abstract description 11
- 238000004590 computer program Methods 0.000 description 16
- 238000012544 monitoring process Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- IWEDIXLBFLAXBO-UHFFFAOYSA-N dicamba Chemical compound COC1=C(Cl)C=CC(Cl)=C1C(O)=O IWEDIXLBFLAXBO-UHFFFAOYSA-N 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种算子调用***,属于计算机技术领域,用于解决算子的平台兼容性问题。本申请实施例公开的算子调用***,通过配置模块获取算子的配置信息,并根据选择的算子的所述配置信息生成算子执行引擎,其中,所述配置信息包括:算子属性信息、算子的依赖函数及参数,以及,依赖函数的函数实现;然后,通过第一算子部署模块根据预设远程调用接口和所述算子执行引擎生成第一算子调用软件包,并将所述第一算子调用软件包发送至所述算子服务端;所述算子服务端在存储所述第一算子调用软件包后,响应于对所述预设远程调用接口的调用,执行所述算子执行引擎,输出计算结果,提升了算子调用的平台兼容性,降低算子开发和维护成本。
Description
技术领域
本申请实施例涉及计算机技术领域,特别是涉及一种算子调用***、算子生成方法、电子设备及计算机可读存储介质。
背景技术
在决策***、机器学***台场景下,存在着大量的特征指标计算。通常情况下,特征指标计算的逻辑和口径由业务RD或算法RD等不同角色以不同形式表达。但是,特征指标的使用会分布于在线、近线和离线的全场景链路下,且共用特征指标的计算口径必须保证一致性,这部分特征指标的计算逻辑需要支持在各***平台下共享或复用。
现有技术中,针对不同平台或者以不同使用方式共享或复用以不同形式表达的特征指标的情况,往往需要针对不同平台对特征指标的计算算子进行转换,然后将转换后的算子拷贝到相应平台中使用。
可见,现有技术中的算子调用***需要针对不同的平台进行二次开发和独立维护,平台兼容性差,而且开发和维护成本高。
发明内容
本申请实施例提供一种算子调用***,有助于提升算子调用的平台兼容性,降低算子开发和维护成本。
第一方面,本申请实施例提供了一种算子调用***,包括:
所述配置模块,用于获取算子的配置信息,并根据选择的算子的所述配置信息生成算子执行引擎,其中,所述配置信息包括:算子属性信息、算子的依赖函数及参数,以及,依赖函数的函数实现;
所述第一算子部署模块,用于根据预设远程调用接口和所述算子执行引擎生成第一算子调用软件包,并将所述第一算子调用软件包发送至所述算子服务端;
所述算子服务端,用于存储所述第一算子调用软件包,并响应于对所述预设远程调用接口的调用,执行所述算子执行引擎。
第二方面,本申请实施例提供了一种算子生成方法,包括:
获取算子的配置信息,其中,所述配置信息包括:算子属性信息、算子的依赖函数及参数,以及,依赖函数的函数实现;
响应于第一算子调用软件包生成操作,根据算子的所述配置信息,生成算子代码,并根据所述算子代码生成算子执行引擎,使得封装预设远程调用接口和所述算子执行引擎的第一算子调用软件包被存储于算子服务端后,所述算子服务端响应于对所述预设远程调用接口的调用,执行所述算子执行引擎。
第三方面,本申请实施例还公开了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请实施例所述的算子生成方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时本申请实施例公开的算子生成方法的步骤。
本申请实施例公开的算子调用***,通过配置模块获取算子的配置信息,并根据选择的算子的所述配置信息生成算子执行引擎,其中,所述配置信息包括:算子属性信息、算子的依赖函数及参数,以及,依赖函数的函数实现;然后,通过第一算子部署模块根据预设远程调用接口和所述算子执行引擎生成第一算子调用软件包,并将所述第一算子调用软件包发送至所述算子服务端;所述算子服务端在存储所述第一算子调用软件包后,响应于对所述预设远程调用接口的调用,执行所述算子执行引擎,输出计算结果,提升了算子调用的平台兼容性,降低算子开发和维护成本。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1是本申请实施例一的算子调用***结构图之一;
图2是本申请实施例一的算子调用应用场景示意图;
图3是本申请实施例一的算子调用***示意图之二;
图4是本申请实施例二的算子生成方法流程示意图之一;
图5是本申请实施例二的算子生成方法流程示意图之二;
图6示意性地示出了用于执行根据本申请的方法的电子设备的框图;以及
图7示意性地示出了用于保持或者携带实现根据本申请的方法的程序代码的存储单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
本申请实施例公开的一种算子调用***,如图1所示,所述***包括:配置模块110、第一算子部署模块120,以及,算子服务端130;其中,
所述配置模块110,用于获取算子的配置信息,并根据选择的算子的所述配置信息生成算子执行引擎,其中,所述配置信息包括:算子属性信息、算子的依赖函数及参数,以及,依赖函数的函数实现;
所述第一算子部署模块120,用于根据预设远程调用接口和所述算子执行引擎生成第一算子调用软件包,并将所述第一算子调用软件包发送至所述算子服务端130;
所述算子服务端130,用于存储所述第一算子调用软件包,并响应于对所述预设远程调用接口的调用,执行所述算子执行引擎。
其中,所述算子是对预设数据特征和/或指标的计算逻辑进行封装所得到的。
本申请实施例中所述的算子指函数空间到函数空间之间的映射。每个算子只能由一个函数实现,一个函数可以做为多个算子的依赖函数,进而可通过函数的复用,提升算子的上线效率。算子通过基于指定参数的函数实现。本申请实施例中所述的函数包括但不限于以下一种或多种:聚合函数、标量函数、表函数。本申请实施例中所述的参数包括但不限于以下一种或多种:常量、变量、算子。
下面结合图2所示的算子调用场景示意图,举例说明本申请公开的算子调用***中各组成部分的具体实施方式。
本申请实施例中所述的算子调用***可以应用于在线、近线或离线等调用模式,可以应用于以下任意一种场景中:决策***、机器学***台接口,再内嵌动态脚本引擎(如Groovy、Aviator等),使得算子可以在多个平台执行,最终实现算子的一次开发,多场景共享,消除了指标计算逻辑的跨语言转换和口径不一致的问题。
本申请实施例中所述的配置模块110包括配置前端和后台配置处理中心,其中,所述配置前端通过展示算子配置界面或者函数配置界面,获取用户对算子和函数的配置信息,并响应于用户对配置信息的确认操作,将所述配置信息发送到后台配置处理中心,由后台配置处理中心对所述配置信息进行缓存,并根据所述配置信息生成算子或者函数实现。
本申请的一些实施例中,后台配置处理中心根据配置信息中算子和函数的依赖关系,生成算子的实现脚本。
本申请的一些实施例中,算子的配置信息包括但不限于以下任意一种或多种:算子名称、标签、描述信息,依赖函数等信息;函数的配置信息包括但不限于以下任意一种或多种:函数名称、函数类型、描述信息、状态、入参信息(如入参名称、类型、是否必要、参数描述等),出参信息(如入参名称、类型、是否必要、参数描述等)。由于算子计算底层是依托于函数类实现,因此,算子开发易扩展也即函数开发易扩展,当需要新增算子时,只需复用已有的或者新增的函数实现类,然后再通过配置该算子与相应函数的依赖关系,即可实现算子的开发。
本申请的一些实施例中,函数开发使用模板模式,便于函数实现类的开发,让开发者聚焦于函数功能的开发,减少计算框架层的感知,降低函数开发复杂度,提升开发效率。例如,通过设置不同类型函数的基础函数类模版,然后通过在函数实现类中设置函数功能实现代码的接口调用,使得函数能够实现指定的功能。
所述函数的开发可基于脚本引擎和不同编程语言实现。其中Aviator引擎和Python语言可以支持非开发人员(如算法人员、业务人员等)开发相应的函数,避免了跨语言转换代码,节省了跨团队沟通成本,降低了代码错误率,提升了算子上线效率和准确率。所述的函数包括两类,一类为本地实现函数,一类为远端实现函数。本申请的一些实施例中,函数包括基于脚本语言开发的函数;其中,所述脚本语言包括:Python语言,基于Python语言开发的所述函数部署在远程Python服务端,所述算子执行引擎中包括预先配置的算子与部署在远程Python服务端的函数的映射关系。以Python语言实现的函数为例,Python函数只支持基础Python代码,若要使用如机器学习、科学计算等三方库,则需将Python代码部署在远程Python服务端,然后再配置算子与Python函数的映射关系。在生成算子的函数实现时,将根据算子与Python函数的映射关系,生成算子的实现代码。
在用户通过配置前端的配置界面完成算子和函数的配置之后,可以通过前端配置界面设置的保存或刷新按钮,触发配置前端将对算子的配置信息发送至后台配置处理中心,由后台配置处理中心的第一算子部署模块120,根据接收到的算子配置信息生成算子的实现代码。用户通过配置前端界面可以选择算子,并由后台配置处理中心根据选择的算子生成算子执行引擎。
由以上描述可以得知,按照上述方式生成的算子实现代码和函数实现代码并没有限定适配平台,上述算子的实现代码不可能覆盖所有平台,即上述步骤生成的算子执行引擎不能够在所有目标平台上运行。接下来,则需要解决算子跨平台的问题。
本申请的一些实施例中,所述的算子调用***支持远程模式和本地模式两种调用模式。对于远程调用模式,算子在算子服务端运行,其他平台通过HTTP(HyperTextTransfer Protocol,超文本传输协议)或RPC(Remote Procedure Call,远程过程调用)模式访问算子服务端对外提供的接口地址,便于客户端远程访问算子。在远程模式下,由于算子执行引擎在算子服务端运行,因此,支持各种平台的算子调用。
本申请的一些实施例中,为了适配远程调用,在根据算子执行引擎生成运行于算子服务端的第一算子调用软件包时,需要将预设远程调用接口与所述算子执行引擎共同封装成第一算子调用软件包。例如,通过设置Restful Api对基于HTTP服务的远程算子调用进行调用接口转换,通过设置Thrift Api对基于RPC服务的远程算子调用进行调用接口转换,从而实现基于不同调用形式对算子执行引擎中的算子进行远程调用。
在生成第一算子调用软件包之后,所述第一算子部署模块120将所述第一算子调用软件包发送至所述算子服务端130进行存储。之后,所述算子服务端130将可以响应其他平台或应用对所述第一算子调用软件包中算子的远程调用,在算子服务端执行调用的算子。例如,应用客户端访问算子服务端的HTTP服务接口或者RPC服务接口时,所述第一算子调用软件包中预设远程调用接口接收到远程调用之后,将所述远程调用转换为对算子执行引擎中相应算子的调用。
本申请的一些实施例中,如图3所示,所述算子调用***还包括:第二算子部署模块140。
本申请的一些实施例中,所述配置模块110,还用于获取所述算子执行引擎的开放接口和算子适配平台。例如,用户可以通过配置模块110的前端界面操作将算子执行引擎以SDK(软件开发包)的形式导出,之后,下载到不同平台的客户端本地运行。在这种应用场景下,算子执行引擎需要在不同平台上运行,因此,需要解决平台适配问题。本申请的一些实施例中,所述第二算子部署模块140,用于根据所述开放接口、与算子适配平台匹配的适配接口,以及,所述算子执行引擎,生成第二算子调用软件包,所述第二算子调用软件包用于由应用客户端加载,使得所述应用客户端响应于对所述开放接口的调用执行所述算子执行引擎。例如,应用客户端通过调用预设的开放接口时,所述第二算子调用软件包中相应的开放接口接收到应用客户端的本地调用之后,通过所述第二算子调用软件包中相应的平台适配接口,对算子执行引擎中相应算子进行调用。
首先,在检测到用户生成SDK的操作之后,所述第二算子部署模块140进一步通过配置模块获取待生成的所述SDK适配平台的配置信息和开放接口信息,之后,所述第二算子部署模块140根据所述SDK适配平台的配置信息获取平台适配器,并将开放接口的实现代码、平台适配器和所述算子执行引擎打包为一个JAR包(JAVA归档文件),作为第二算子调用软件包。其中,所述开放接口信息为客户端调用算子引擎的通用接口;平台适配器用于将相应平台对算子的调用进行平台适配,使得对算子的调用可以在客户端本地执行。对于适配不同平台的第二算子调用软件包,其对算子的应用场景不同,第二算子调用软件包中的平台适配器各不相同。
以近端算子调用场景为例,如指标分析、特征计算等,可以直接通过客户端接口调用算子进行指标或特征计算;在适用于flink sql大数据平台的算子调用场景中,flink(一种数据流处理框架)已有适配器自动封装flink udf(flink自定义标量函数),在sql调用中,可以直接使用算子,如`select hash(id)from table`中hash即为算子名;在适用于hive sql(一种数据平台工具)中算子应用场景,hive(一种数据库架构)已有适配器自动封装(hive自定义标量函数),在sql调用中,可以直接使用算子,如`select hash(id)fromtable`中hash即为算子名。
由以上算子生成和部署方案可以确定,算子调用的不同模式(如HTTP、RPC、SDK)都是共享同一套算子执行引擎,不管客户端调用是实时的联机***,还是非联机如近线、离线***,对于同一个算子调用实现逻辑是一样的,不存在算子实现的二义性与跨平台的差异性。
本申请的一些实施例中,如图3所示,所述算子调用***还包括:算子试算模块150和算子刷新模块160,其中,
所述算子试算模块150,用于对配置模块配置的算子和/或函数进行预编译,并执行预编译后的算子脚本和/或函数脚本;
所述算子刷新模块160,用于将待刷新算子和/或函数的配置信息更新至所述算子服务端。
本申请的一些实施例中,可以通过在前端配置界面设置触发按钮,启动对选定算子或函数的试算。以算子试算为例,此时,所述算子试算模块150可以获取选定算子的配置信息和依赖函数信息,并根据函数的实现脚本确定算子的实现代码,之后,调用本地的脚本引擎对算子的实现代码进行编译和执行,以测试算子执行结果。本申请实施例中所述的算子试算模块150设置于后台配置处理中心。
本领域技术人员应当理解,动态脚本函数包括:Groovy、Aviator和Python脚本,均可实现实时更新和部署生效,因此,本申请实施例公开的算子调用***中可以实现算子的实时热部署。
本申请的一些实施例中,可以通过在前端配置界面设置触发按钮,启动对选定或函数算子的热部署。以算子更新为例,此时,所述算子刷新模块160会将通过前端配置界面选择的待刷新算子的配置信息更新至所述算子服务端130。所述算子服务端130根据接收到的配置信息更新相应算子的实现代码。本申请实施例中所述的算子更新模块150可以包括前端界面和后台更新应用两部分,其中,后台更新应用可以设置与所述算子服务端130处。
本申请的一些实施例中,所述算子服务端130,还用于通过加载第二算子调用软件包的应用服务器预先注册的网络地址,向所述应用服务器推送待刷新算子和/或函数的配置信息,使得所述应用服务器通过加载的所述第二算子调用软件包中预置的配置更新模块对所述第二算子调用软件包进行更新;或者,所述算子服务端,还用于输出全量更新配置信息或输出所述待刷新算子和/或函数的配置信息,便于所述第二算子调用软件包中配置更新模块拉取。
对于客户端本地下载的第二算子调用软件包中的算子,可以采用推送或拉取的方式进行算子更新,在算子更新过程中,可以进行全量算子更新或者部分算子更新。下面分别介绍采用推送方式进行算子更新,和采用拉取方式进行算子更新的技术方案。
在采用推送方式更新第二算子调用软件包的方案中,所述第二算子调用软件包中封装了配置更新模块。所述配置更新模块在客户端加载第二算子调用软件包时,通过回调函数,将网络地址等信息在算子服务端进行注册,算子服务端根据客户端的注册信息存储所述客户端的监听地址。当算子服务端接收到算子更新的配置信息之后,通过已经注册的监听地址向客户端推送算子更新信息。之后,客户端加载的第二算子调用软件包中的所述配置更新模块将算子服务端推送的算子更新信息进行缓存,并按照预设策略对所述客户端本地加载的相应算子进行更新。
在采用拉取方式更新第二算子调用软件包的方案中,所述第二算子调用软件包中封装了配置更新模块。所述配置更新模块主动按照预设策略(如周一或者每次第二算子调用软件包被加载)从算子服务端下载算子更新信息,并将下载的算子更新信息进行缓存,之后,按照预设策略对所述客户端本地加载的相应算子进行更新。
本申请的一些实施例中,所述配置更新模块可以采用增量更新或全量更新的方式对第二算子调用软件包进行更新。当所述配置更新模块采用增量更新的方式对第二算子调用软件包进行更新时,所述配置更新模块将定时检测所述算子服务端的算子更新信息,并根据下载的算子更新信息对客户端本地加载的第二算子调用软件包进行增量更新。而算子服务端将设置算子更新数据库存储算子增量更新信息。
例如,本申请的一些实施例中,所述算子服务端还设置有算子增量更新监听模块,用于监听所述算子服务端接收到的算子更新信息。本申请的一些实施例中,可以采用中间件方式监听算子服务端的算子信息变化。算子服务端可以通过设置算子配置变化监听模块,监听本地存储的第一算子调用软件包的变化,或者,监听前述算子刷新模块发送的待刷新算子的配置信息,并在监听到上述信息之后,生成增量配置信息,并将生成的增量配置信息通过消息***同步至预设中间件。所述预设中间件通过消息队列的生产者、消费者模式,不断的将算子增量更新监听模块发送的消息,通过消费者模式存储至预设数据库中,供客户端的所述配置更新模块拉取。
本申请实施例公开的算子调用***,通过配置模块获取算子的配置信息,并根据选择的算子的所述配置信息生成算子执行引擎,其中,所述配置信息包括:算子属性信息、算子的依赖函数及参数,以及,依赖函数的函数实现;然后,通过第一算子部署模块根据预设远程调用接口和所述算子执行引擎生成第一算子调用软件包,并将所述第一算子调用软件包发送至所述算子服务端;所述算子服务端在存储所述第一算子调用软件包后,响应于对所述预设远程调用接口的调用,执行所述算子执行引擎,输出计算结果,提升了算子调用的平台兼容性,降低算子开发和维护成本。
本申请实施例中公开的算子调用***,通过将应用场景中的特征或指标的计算规则映射为算子,并通过前端配置界面配置算子和函数的依赖关系,通过脚本语言实现算子的依赖函数,通过内嵌动态脚本引擎,使得执行一次算子开发(如算子配置和函数开发)得到的算子,可以在多场景共享,消除了指标口径不一致问题,提升了研发和运维效率。
另一方面,通过配置模块可以配置多个算子依赖一个底层函数,通过不同的参数进行区分;同时函数按照标量、聚合、表抽象封装,易于不同场景下扩展使用,提升了研发效率。
由于实现算子的函数支持Groovy、Aviator、Python等开发语言实现接口,使得算子服务端可以对算子和函数进行实时更新并生效,提升了算子调用***的运行和维护效率。
实施例二
本申请实施例公开的一种算子生成方法,应用于实施例一中所述的算子调用***,如图4所示,所述方法包括:步骤410和步骤420。
步骤410,获取算子的配置信息;其中,所述配置信息包括:算子属性信息、算子的依赖函数及参数,以及,依赖函数的函数实现。
本申请实施例中所述的算子是对预设数据特征和/或指标的计算逻辑进行封装所得到的。所述算子基于制定的一个函数实现,一个函数通过配置不同的参数,可以用于实现多个算子。算子的依赖函数是算子的低层函数实现,即算子的依赖函数是低层计算逻辑的实现。
本申请的一些实施例中,所述函数至少包括以下一种或多种包括:聚合函数、表函数、标量函数;所述函数是基于函数模板开发的。本申请实施例中所述的参数包括但不限于以下一种或多种:常量、变量、算子。
本申请的一些实施例中,所述函数包括基于脚本语言和/或可执行语言开发的;其中,所述脚本语言包括:Python语言,基于Python语言开发的所述函数部署在远程Python服务端,所述算子执行引擎中包括预先配置的算子与部署在远程Python服务端的函数的映射关系。
本申请的一些实施例中,可以通过前端配置界面对算子的属性信息以及算子依赖的函数、实现算子的函数参数等信息进行配置。对算子以及函数进行配置的具体实施方式参见实施例一中的相关描述,本实施例中不再赘述。
步骤420,响应于第一算子调用软件包生成操作,根据算子的所述配置信息,生成算子代码,并根据所述算子代码生成算子执行引擎,使得封装预设远程调用接口和所述算子执行引擎的第一算子调用软件包被存储于算子服务端后,所述算子服务端响应于对所述预设远程调用接口的调用,执行所述算子执行引擎。
生成第一算子调用软件包的具体实施方式参见实施例一,本实施例中不再赘述。
第一算子调用软件包将被发送至算子服务端存储,并在算子服务端运行。
第一算子调用软件包中算子的调用方案参见实施例一中的相关描述,本实施例中不再赘述。
本申请的一些实施例中,如图5所示,所述步骤410之后,还包括:
步骤430,响应于第二算子调用软件包生成操作,根据算子的所述配置信息,生成算子代码,并根据所述算子代码生成算子执行引擎,使得封装预先配置的开放接口、与算子适配平台匹配的适配接口,以及,所述算子执行引擎所生成的第二算子调用软件包,在被应用客户端加载后,所述应用客户端响应于对所述开放接口的调用,执行所述算子执行引擎。
生成第二算子调用软件包的具体实施方式参见实施例一,本实施例中不再赘述。
本申请的一些实施例中,应用客户端可以将第二算子调用软件包下载到本地存储,并调用第二算子调用软件包中的算子。
第二算子调用软件包中算子的调用方案参见实施例一中的相关描述,本实施例中不再赘述。
本申请的一些实施例中,所述获取算子的配置信息之后,还包括:
响应于算子试算操作被触发,根据所述配置信息确定待试算算子的算子实现脚本,并对所述算子实现脚本进行预编译;
执行预编译后的算子实现脚本,并输出算子实现脚本的执行结果。
算子的试算方案参见实施例一中的相关描述,本实施例中不再赘述。
本申请的一些实施例中,所述方法还包括:
响应于算子刷新操作被触发,将待刷新算子的配置信息更新至所述算子服务端。
算子的刷新方案参见实施例一中的相关描述,本实施例中不再赘述。
本申请的一些实施例中,所述方法还包括:
所述算子服务端通过加载第二算子调用软件包的应用服务器预先注册的网络地址,向所述应用服务器推送待刷新算子和/或函数的配置信息,使得所述应用服务器通过加载的所述第二算子调用软件包中预置的配置更新模块对所述第二算子调用软件包进行更新。
本申请的一些实施例中,所述方法还包括:
所述算子服务端输出全量更新配置信息或输出所述待刷新算子和/或函数的配置信息,便于所述第二算子调用软件包中配置更新模块拉取。
对应用客户端处第二算子调用软件包进行全量更新或者部分更新的技术方案,参见实施例一中的相关描述,本实施例中不再赘述。
本申请实施例公开的算子生成方法,应用于本申请实施例一中所述的算子调用***,方法的各个步骤的具体实施方式参见相应模块的具体实施方式,本实施例中不再赘述。
本申请实施例公开的算子生成方法,通过获取算子的配置信息,其中,所述配置信息包括:算子属性信息、算子的依赖函数及参数,以及,依赖函数的函数实现;之后,响应于第一算子调用软件包生成操作,根据算子的所述配置信息,生成算子代码,并根据所述算子代码生成算子执行引擎,使得封装预设远程调用接口和所述算子执行引擎的第一算子调用软件包被存储于算子服务端后,所述算子服务端响应于对所述预设远程调用接口的调用,执行所述算子执行引擎,输出计算结果,提升了算子调用的平台兼容性,降低算子开发和维护成本。
本申请实施例中公开的算子生成方法,通过将应用场景中的特征或指标的计算规则映射为算子,并通过前端配置界面配置算子和函数的依赖关系,通过脚本语言实现算子的依赖函数,通过内嵌动态脚本引擎,使得执行一次算子开发(如算子配置和函数开发)得到的算子,可以在多场景共享,消除了指标口径不一致问题,提升了研发和运维效率。
另一方面,本申请实施例中公开的算子生成方法中,多个算子依赖一个底层函数,通过不同的参数进行区分;同时函数按照标量、聚合、表抽象封装,易于不同场景下扩展使用,提升了研发效率。
由于实现算子的函数支持Groovy、Aviator、Python等开发语言实现接口,使得算子服务端可以对算子和函数进行实时更新并生效,提升了算子调用***的运行和维护效率。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请提供的一种算子调用***和算子生成方法进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其一种核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的电子设备中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
例如,图6示出了可以实现根据本申请的方法的电子设备。所述电子设备可以为PC机、移动终端、个人数字助理、平板电脑等。该电子设备传统上包括处理器610和存储器620及存储在所述存储器620上并可在处理器610上运行的程序代码630,所述处理器610执行所述程序代码630时实现上述实施例中所述的方法。所述存储器620可以为计算机程序产品或者计算机可读介质。存储器620可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。存储器620具有用于执行上述方法中的任何方法步骤的计算机程序的程序代码630的存储空间6201。例如,用于程序代码630的存储空间6201可以包括分别用于实现上面的方法中的各种步骤的各个计算机程序。所述程序代码630为计算机可读代码。这些计算机程序可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。所述计算机程序包括计算机可读代码,当所述计算机可读代码在电子设备上运行时,导致所述电子设备执行根据上述实施例的方法。
本申请实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例二所述的算子生成方法的步骤。
这样的计算机程序产品可以为计算机可读存储介质,该计算机可读存储介质可以具有与图6所示的电子设备中的存储器620类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩存储在所述计算机可读存储介质中。所述计算机可读存储介质通常为如参考图7所述的便携式或者固定存储单元。通常,存储单元包括计算机可读代码630’,所述计算机可读代码630’为由处理器读取的代码,这些代码被处理器执行时,实现上面所描述的方法中的各个步骤。
本文中所称的“一个实施例”、“实施例”或者“一个或者多个实施例”意味着,结合实施例描述的特定特征、结构或者特性包括在本申请的至少一个实施例中。此外,请注意,这里“在一个实施例中”的词语例子不一定全指同一个实施例。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种算子调用***,其特征在于,包括:配置模块、第一算子部署模块,以及,算子服务端;其中,
所述配置模块,用于获取算子的配置信息,并根据选择的算子的所述配置信息生成算子执行引擎;其中,所述配置信息包括:算子属性信息、算子的依赖函数及参数,以及,依赖函数的函数实现;
所述第一算子部署模块,用于根据预设远程调用接口和所述算子执行引擎生成第一算子调用软件包,并将所述第一算子调用软件包发送至所述算子服务端;
所述算子服务端,用于存储所述第一算子调用软件包,并响应于对所述预设远程调用接口的调用,执行所述算子执行引擎。
2.根据权利要求1所述的***,其特征在于,还包括:第二算子部署模块;
所述配置模块,还用于获取所述算子执行引擎的开放接口和算子适配平台;
所述第二算子部署模块,用于根据所述开放接口、与算子适配平台匹配的适配接口,以及,所述算子执行引擎,生成第二算子调用软件包,所述第二算子调用软件包用于由应用客户端加载,使得所述应用客户端响应于对所述开放接口的调用执行所述算子执行引擎。
3.根据权利要求2所述的***,其特征在于,还包括:算子试算模块和算子刷新模块,
所述算子试算模块,用于对配置模块配置的算子和/或函数进行预编译,并执行预编译后的算子脚本和/或函数脚本;
所述算子刷新模块,用于将待刷新算子和/或函数的配置信息更新至所述算子服务端。
4.根据权利要求3所述的***,其特征在于,
所述算子服务端,还用于通过加载第二算子调用软件包的应用服务器预先注册的网络地址,向所述应用服务器推送待刷新算子和/或函数的配置信息,使得所述应用服务器通过加载的所述第二算子调用软件包中预置的配置更新模块对所述第二算子调用软件包进行更新;或者,
所述算子服务端,还用于输出全量更新配置信息或输出所述待刷新算子和/或函数的配置信息,便于所述第二算子调用软件包中配置更新模块拉取。
5.根据权利要求1至4任一项所述的***,其特征在于,所述函数至少包括以下一种或多种包括:聚合函数、表函数、标量函数;所述函数是基于函数模板开发的。
6.根据权利要求5所述的***,其特征在于,所述函数包括基于脚本语言和/或可执行语言开发的;其中,所述脚本语言包括:Python语言,基于Python语言开发的所述函数部署在远程Python服务端,所述算子执行引擎中包括预先配置的算子与部署在远程Python服务端的函数的映射关系。
7.根据权利要求1至4任一项所述的***,其特征在于,所述算子是对预设数据特征和/或指标的计算逻辑进行封装所得到的。
8.一种算子生成方法,其特征在于,包括:
获取算子的配置信息,其中,所述配置信息包括:算子属性信息、算子的依赖函数及参数,以及,依赖函数的函数实现;
响应于第一算子调用软件包生成操作,根据算子的所述配置信息,生成算子代码,并根据所述算子代码生成算子执行引擎,使得封装预设远程调用接口和所述算子执行引擎的第一算子调用软件包被存储于算子服务端后,所述算子服务端响应于对所述预设远程调用接口的调用,执行所述算子执行引擎。
9.根据权利要求8所述的方法,其特征在于,所述获取算子的配置信息的步骤之后,还包括:
响应于第二算子调用软件包生成操作,根据算子的所述配置信息,生成算子代码,并根据所述算子代码生成算子执行引擎,使得封装预先配置的开放接口、与算子适配平台匹配的适配接口,以及,所述算子执行引擎所生成的第二算子调用软件包,在被应用客户端加载后,所述应用客户端响应于对所述开放接口的调用,执行所述算子执行引擎。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的程序代码,其特征在于,所述处理器执行所述程序代码时实现权利要求8和9所述的算子生成方法。
11.一种计算机可读存储介质,其上存储有程序代码,其特征在于,该程序代码被处理器执行时实现权利要求8和9所述的算子生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110497298.1A CN115309562A (zh) | 2021-05-07 | 2021-05-07 | 算子调用***、算子生成方法,电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110497298.1A CN115309562A (zh) | 2021-05-07 | 2021-05-07 | 算子调用***、算子生成方法,电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115309562A true CN115309562A (zh) | 2022-11-08 |
Family
ID=83854182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110497298.1A Pending CN115309562A (zh) | 2021-05-07 | 2021-05-07 | 算子调用***、算子生成方法,电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115309562A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225669A (zh) * | 2023-05-08 | 2023-06-06 | 之江实验室 | 一种任务执行方法、装置、存储介质及电子设备 |
CN116932092A (zh) * | 2023-09-18 | 2023-10-24 | 之江实验室 | 一种算子调用代码自动生成的方法、装置、介质及设备 |
CN117118962A (zh) * | 2023-07-25 | 2023-11-24 | 领悦数字信息技术有限公司 | 用于跨多个云平台部署用户方法的方法和*** |
-
2021
- 2021-05-07 CN CN202110497298.1A patent/CN115309562A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225669A (zh) * | 2023-05-08 | 2023-06-06 | 之江实验室 | 一种任务执行方法、装置、存储介质及电子设备 |
CN116225669B (zh) * | 2023-05-08 | 2024-01-09 | 之江实验室 | 一种任务执行方法、装置、存储介质及电子设备 |
CN117118962A (zh) * | 2023-07-25 | 2023-11-24 | 领悦数字信息技术有限公司 | 用于跨多个云平台部署用户方法的方法和*** |
CN117118962B (zh) * | 2023-07-25 | 2024-03-22 | 领悦数字信息技术有限公司 | 用于跨多个云平台部署用户方法的方法和*** |
CN116932092A (zh) * | 2023-09-18 | 2023-10-24 | 之江实验室 | 一种算子调用代码自动生成的方法、装置、介质及设备 |
CN116932092B (zh) * | 2023-09-18 | 2024-01-09 | 之江实验室 | 一种算子调用代码自动生成的方法、装置、介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108037961B (zh) | 一种应用程序配置方法、装置、服务器和存储介质 | |
CN115309562A (zh) | 算子调用***、算子生成方法,电子设备 | |
CN110134386B (zh) | 一种程序编辑方法和装置 | |
CN112306586B (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
US10564988B1 (en) | Deploying cross-platform applications on mobile devices with native and web components | |
CN110187902B (zh) | 基于spring boot的项目改造方法、装置、设备及存储介质 | |
GB2589658A (en) | Method and apparatus for running an applet | |
US9491222B2 (en) | System and method for interoperability between flex applications and .NET applications | |
CN112256321A (zh) | 静态库打包方法、装置、计算机设备和存储介质 | |
CN113641413B (zh) | 目标模型加载更新方法及装置、可读介质和电子设备 | |
CN108965375B (zh) | 服务调用代理控制***、方法、服务器及可读存储介质 | |
CN112015519A (zh) | 模型线上部署方法及装置 | |
US20200409680A1 (en) | Updating of container-based applications | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
CN111651169A (zh) | 基于web容器的区块链智能合约运行方法及*** | |
CN117093286B (zh) | 插件生成方法、装置、设备及计算机可读存储介质 | |
CN111602115A (zh) | 基于本体的应用程序开发的模型驱动方法 | |
CN111683005B (zh) | 一种物联网智能网关设备及其构建方法 | |
CN113721898A (zh) | 机器学习模型部署方法、***、计算机设备及存储介质 | |
CN108804088B (zh) | 协议处理方法和装置 | |
CN116166457A (zh) | 数据处理方法及相关设备 | |
CN115344275A (zh) | 操作***的镜像文件生成方法、装置和计算机设备 | |
CN114237644A (zh) | 运行镜像的***、方法、装置和构建镜像的方法、装置 | |
CN115328526A (zh) | 一种依赖包的更新方法、装置、设备及存储介质 | |
CN115480771A (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 |