CN110928529A - 辅助算子开发的方法和系统 - Google Patents
辅助算子开发的方法和系统 Download PDFInfo
- Publication number
- CN110928529A CN110928529A CN201911077327.8A CN201911077327A CN110928529A CN 110928529 A CN110928529 A CN 110928529A CN 201911077327 A CN201911077327 A CN 201911077327A CN 110928529 A CN110928529 A CN 110928529A
- Authority
- CN
- China
- Prior art keywords
- operator
- dependency package
- package
- target operator
- file
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种辅助算子开发的方法和系统,该方法包括:提供至少一个预设的依赖包;获取用户输入的包含目标算子的业务逻辑描述信息的目标算子开发文件,其中,目标算子的业务逻辑描述信息中包括依赖包调用信息;将目标算子开发文件与依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
Description
技术领域
本发明涉及算子开发技术领域,更具体地,涉及一种辅助算子开发的方法、一种辅助算子开发的系统、一种包括至少一个计算装置和至少一个存储装置的系统、及一种可读存储介质。
背景技术
随着人工智能的发展,越来越多的行业场景需要建立机器学习模型,包括但不限于应用统计分析方法、机器学习方法、深度学习方法、迁移学习方法等进行建模。在人工智能的建模过程中,用户会通过自定义的算法和数据处理逻辑串联出完整的建模流程。其中自定义的算法和数据处理逻辑通常被称为“算子(Operator)”。在算子的开发过程中,经常会遇到在不同的场景或建模环节中复用相同的功能代码。
在现有技术中,每次复用某一功能代码时,通常是由用户自行在代码层面进行控制,即需用户编辑算子的全部代码。在代码层面实现部分功能代码的复用,导致了算子开发效率较低、过多暴露技术细节、算子开发门槛较高的问题。
发明内容
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
根据本发明的第一方面,提供了一种辅助算子开发的方法,包括:
提供至少一个预设的依赖包;
获取用户输入的包含目标算子的业务逻辑描述信息的目标算子开发文件,其中,所述目标算子的业务逻辑描述信息中包括依赖包调用信息;
将所述目标算子开发文件与所述依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
可选的,所述至少一个预设的依赖包包括如下中的一个或多个:
用于实时监控算子运行状态的依赖包;
用于将算子运行信息对外暴露的依赖包;
用于进行日志收集的依赖包;
用于执行数据过期策略的依赖包;
用于对代码细节进行封装的依赖包;
用于进行辅助资源推荐的依赖包;
用于进行算法参数推荐的依赖包。
可选的,所述至少一个预设的依赖包包括用于进行辅助资源推荐的依赖包;
所述用于进行辅助资源推荐的依赖包,用于在算子运行时根据算子对一定量数据进行处理时的资源消耗推断算子对全量数据进行处理时的资源消耗,并根据推断结果调度对应量的资源。
可选的,所述至少一个预设的依赖包包括用于进行算法参数推荐的依赖包;
所述用于进行算法参数推荐的依赖包,用于在被执行机器学习算法的算子引用时,根据算法和参数的对应列表和/或算法参数搜索方法为相应机器学习算法确定参数。
可选的,所述目标算子开发文件形式可以是如下中的任一种:
jar包;
docker镜像;
脚本文件。
可选的,还包括:
提供依赖包接口;
通过所述依赖包接口获取用户自定义编辑的依赖包,和/或,通过所述依赖包接口接收用户上传第三方的依赖包。
可选的,在将所述目标算子开发文件与所述依赖包调用信息所涉及的依赖包一起进行封装之前,还包括:
获取用户配置的关于目标算子的配置文件,该配置文件中声明了业务逻辑信息中依赖包调用信息所涉及的依赖包;
检测所述配置文件中声明的依赖包的版本与所述目标算子开发文件的版本是否一致,如果不一致进一步判断是否兼容;
在不一致且不兼容的情况下,则根据所述目标算子开发文件的版本找到版本一致的依赖包或版本不一致但兼容的依赖包,作为替换包封装到所述目标算子中。
可选的,在将所述目标算子开发文件与所述依赖包调用信息所涉及的依赖包一起进行封装之前,还包括:
获取用户配置的关于所述目标算子的配置文件,该配置文件中声明了业务逻辑信息中依赖包调用信息所涉及的依赖包;
扫描所述目标算子开发文件,判断是否存在目标算子开发文件中存在依赖包调用信息但配置文件中不存在相应声明的依赖包;
如果存在,则在所述配置文件中补充相应的声明。
可选的,还包括:
提供与不同底层框架分别对应的底层框架执行器,以在算子实际运行时托管底层框架的任务分发的资源调度;
和/或,
提供与不同计算框架分别对应的计算框架管理器,以在算子实际运行时托管计算框架中的通信、调度和资源相关的操作。
可选的,每个依赖包具有对应的版本号,同一功能的依赖包具有至少一个版本。
可选的,还包括:
获取用于调试的模拟数据;
根据所述模拟数据对所述目标算子开发文件进行调试,在调试通过的情况下,将所述目标算子开发文件和所述依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
可选的,所述获取用于调试的模拟数据包括:
获取用户输入的所述模拟数据格式信息;
根据所述格式信息获取所述模拟数据。
可选的,所述根据所述格式信息获取所述模拟数据包括:
获取用户输入的所述目标算子的应用场景;
根据所述应用场景获取符合所述格式信息的数据,作为所述模拟数据。
可选的,所述根据所述应用场景获取符合所述格式信息的数据,作为所述模拟数据包括:
获取与所述应用场景匹配的历史数据;
根据所述历史数据确定数据限定条件;
根据所述数据限定条件生成符合所述格式信息的所述模拟数据。
可选的,所述根据所述应用场景获取符合所述格式信息的数据,作为所述模拟数据包括:
从预存的数据中选取适用于所述应用场景、且符合所述格式信息的数据,作为所述模拟数据。
可选的,所述根据所述格式信息获取所述模拟数据包括:
获取用户输入的用于表示数据内容的数据配置信息;
根据所述数据配置信息生成所述模拟数据。
可选的,还包括:
提供目标算子的前端页面模板;
获取算子开发用户输入的关于所述目标算子的前端页面模板的配置信息;
根据所述前端页面模板和前端页面模板的配置信息生成所述目标算子的前端页面,以供算子使用用户通过该前端页面调整和/或查看所述目标算子的相关参数值。
根据本发明的第二方面,提供了一种辅助算子开发的系统,包括:
依赖包提供模块,用于提供至少一个预设的依赖包;
开发文件获取模块,用于获取用户输入的包含目标算子的业务逻辑描述信息的目标算子开发文件,其中,所述目标算子的业务逻辑描述信息中包括依赖包调用信息;
算子封装模块,用于将所述目标算子开发文件与所述依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
可选的,所述至少一个预设的依赖包包括如下中的一个或多个:
用于实时监控算子运行状态的依赖包;
用于将算子运行信息对外暴露的依赖包;
用于进行日志收集的依赖包;
用于执行数据过期策略的依赖包;
用于对代码细节进行封装的依赖包;
用于进行辅助资源推荐的依赖包;
用于进行算法参数推荐的依赖包。
可选的,所述至少一个预设的依赖包包括用于进行辅助资源推荐的依赖包;
所述用于进行辅助资源推荐的依赖包,用于在算子运行时根据算子对一定量数据进行处理时的资源消耗推断算子对全量数据进行处理时的资源消耗,并根据推断结果调度对应量的资源。
可选的,所述至少一个预设的依赖包包括用于进行算法参数推荐的依赖包;
所述用于进行算法参数推荐的依赖包,用于在被执行机器学习算法的算子引用时,根据算法和参数的对应列表和/或算法参数搜索方法为相应机器学习算法确定参数。
可选的,所述目标算子开发文件形式可以是如下中的任一种:
jar包;
docker镜像;
脚本文件。
可选的,还包括:
用于提供依赖包接口的模块;
用于通过所述依赖包接口获取用户自定义编辑的依赖包,和/或,通过所述依赖包接口接收用户上传第三方的依赖包的模块。
可选的,还包括:
用于获取用户配置的关于目标算子的配置文件的模块,该配置文件中声明了业务逻辑信息中依赖包调用信息所涉及的依赖包;
用于检测所述配置文件中声明的依赖包的版本与所述目标算子开发文件的版本是否一致,如果不一致进一步判断是否兼容的模块;
用于在不一致且不兼容的情况下,则根据所述目标算子开发文件的版本找到版本一致的依赖包或版本不一致但兼容的依赖包,作为替换包封装到所述目标算子中的模块。
可选的,还包括:
用于获取用户配置的关于所述目标算子的配置文件的模块,该配置文件中声明了业务逻辑信息中依赖包调用信息所涉及的依赖包;
用于扫描所述目标算子开发文件,判断是否存在目标算子开发文件中存在依赖包调用信息但配置文件中不存在相应声明的依赖包;如果存在,则在所述配置文件中补充相应的声明的模块。
可选的,还包括:
用于提供与不同底层框架分别对应的底层框架执行器,以在算子实际运行时托管底层框架的任务分发的资源调度的模块;
和/或,
用于提供与不同计算框架分别对应的计算框架管理器,以在算子实际运行时托管计算框架中的通信、调度和资源相关的操作的模块。
可选的,每个依赖包具有对应的版本号,同一功能的依赖包具有至少一个版本。
可选的,还包括:
数据获取模块,用于获取用于调试的模拟数据的模块;
算子调试模块,用于根据所述模拟数据对所述目标算子开发文件进行调试;
所述算子封装模块用于在所述算子调试模块调试通过的情况下,将所述目标算子开发文件和所述依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
可选的,所述数据获取模块还用于:
获取用户输入的所述模拟数据格式信息;
根据所述格式信息获取所述模拟数据。
可选的,所述根据所述格式信息获取所述模拟数据包括:
获取用户输入的所述目标算子的应用场景;
根据所述应用场景获取符合所述格式信息的数据,作为所述模拟数据。
可选的,所述根据所述应用场景获取符合所述格式信息的数据,作为所述模拟数据包括:
获取与所述应用场景匹配的历史数据;
根据所述历史数据确定数据限定条件;
根据所述数据限定条件生成符合所述格式信息的所述模拟数据。
可选的,所述根据所述应用场景获取符合所述格式信息的数据,作为所述模拟数据包括:
从预存的数据中选取适用于所述应用场景、且符合所述格式信息的数据,作为所述模拟数据。
可选的,所述根据所述格式信息获取所述模拟数据包括:
获取用户输入的用于表示数据内容的数据配置信息;
根据所述数据配置信息生成所述模拟数据。
可选的,还包括:
用于提供目标算子的前端页面模板的模块;
用于获取算子开发用户输入的关于所述目标算子的前端页面模板的配置信息的模块;
用于根据所述前端页面模板和前端页面模板的配置信息生成所述目标算子的前端页面,以供算子使用用户通过该前端页面调整和/或查看所述目标算子的相关参数值的模块。
根据本发明的第三方面,提供了一种包括至少一个计算装置和至少一个存储装置的系统,
其中,所述至少一个存储装置用于存储指令,所述指令用于控制所述至少一个计算装置执行根据本发明第一方面所述的方法。
根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如本发明第一方面所述的方法。
通过本发明的实施例将用户输入的包含目标算子的业务逻辑描述信息的目标算子开发文件、及业务逻辑描述信息中依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子,可以简化算子开发流程,提高算子的开发效率,还可以大幅降低算子开发的门槛和成本。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是显示可用于实现本发明的实施例的电子设备的硬件配置的例子的框图;
图2示出了本发明的第一个实施例的辅助算子开发的系统的示意图;
图3示出了本发明的第二个实施例的辅助算子开发的系统的示意图;
图4示出了本发明的第一个实施例的辅助算子开发的方法的流程图;
图5示出了本发明的第二个实施例的辅助算子开发的方法的流程图;
图6示出了本发明的第三个实施例的辅助算子开发的方法的流程图;
图7示出了本发明的第四个实施例的辅助算子开发的方法的流程图;
图8示出了本发明的实施例的系统的框图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
下面,参照附图描述根据本发明实施例的各个实施例和例子。
<硬件配置>
图1是示出可以实现本发明的实施例的电子设备1000的硬件配置的框图。
电子设备1000可以是便携式电脑、台式计算机、手机、平板电脑等。如图1所示,电子设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100可以是中央处理器CPU、微处理器MCU等。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够进行有线或无线通信,具体地可以包括Wifi通信、蓝牙通信、2G/3G/4G/5G通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。
图1所示的电子设备仅仅是说明性的并且决不意味着对本发明、其应用或使用的任何限制。应用于本发明的实施例中,电子设备1000的所述存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本发明实施例提供的任意一项辅助算子开发的方法。本领域技术人员应当理解,尽管在图1中对电子设备1000示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,电子设备1000只涉及处理器1100和存储装置1200。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
在另外的实施例中,该电子设备1000可以包括根据本发明任意实施例的辅助算子开发的系统2000,其中,该辅助算子开发的系统2000被设置为执行根据本发明任意实施例的辅助算子开发的方法。
<辅助算子开发的系统>
本发明提供了一种辅助算子开发的系统2000,如图2所示,该辅助算子开发的系统2000包括依赖包提供模块2100、开发文件获取模块2200和算子封装模块2300。
该依赖包提供模块2100用于提供至少一个预设的依赖包;该开发文件获取模块2200用于获取用户输入的包含目标算子的业务逻辑描述信息的目标算子开发文件,其中,目标算子的业务逻辑描述信息中包括依赖包调用信息;该算子封装模块2300用于将目标算子开发文件与依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
该辅助算子开发的系统2000还可以包括如图3所示的数据获取模块3100和算子调试模块3200,该数据获取模块3100用于获取用于调试的模拟数据的模块;该算子调试模块3200用于根据模拟数据对目标算子开发文件进行调试;
算子封装模块2300用于在算子调试模块8500调试通过的情况下,将目标算子开发文件和依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
通过本实施例的辅助算子开发的系统2000,对于算子开发用户来说,可以无缝地从传统的开发模式转换到本实施例的算子开发平台中开发,不添加任何额外成本。而且,可以提高算子开发效率,还可以大幅降低算子开发的门槛和成本。
<方法实施例>
在本实施例中,提供一种辅助算子开发的方法。该辅助算子开发的方法可以是由辅助算子开发的系统2000实施,也可以是由如图1所示的电子设备1000实施。
根据图4所示,本实施例的辅助算子开发的方法可以包括如下步骤S4100~S4300:
步骤S4100,提供至少一个预设的依赖包。
其中,该依赖包可以是能够被调用、且能够实现相应功能的程序代码块。
具体的,依赖包可以包括功能类依赖包和系统类依赖包。功能类依赖包由开发者自己定义,可由外部引入。系统类依赖包,由系统提供,其目的是提供丰富的“工具箱”,来托管一些重要、但是与核心业务逻辑无关的环节,以帮助开发者提升效率,降低成本。
在本发明的一个实施例中,该方法还可以包括:提供依赖包接口;通过该依赖包接口获取用户自定义编辑的依赖包,和/或,通过该依赖包接口接收用户上传的第三方依赖包。
这样,用户就可以根据应用场景或自身具体需求,通过依赖包接口将自身常用的依赖包上传至辅助算子开发的系统2000中,以在算子开发过程中实现这些依赖包的调用。
在本发明的一个实施例中,所提供的至少一个依赖包可以包括以下任意一个或多个:
用于实时监控算子运行状态的依赖包;
用于将算子运行信息对外暴露的依赖包;
用于进行日志收集的依赖包;
用于执行数据过期策略的依赖包;
用于对代码细节进行封装的依赖包;
用于进行辅助资源推荐的依赖包;
用于进行算法参数推荐的依赖包。
在所提供的至少一个依赖包中包括用于实时监控算子运行状态的依赖包的实施例中,用于实时监控算子运行状态的依赖包具体可以用于:在调用该依赖包的算子运行时,对算子的运行状态进行实时监控。
在所提供的至少一个依赖包中包括用于将算子运行信息对外暴露的依赖包的实施例中,在调用该依赖包的算子运行时,获取算子的运行信息,并将该运行信息对外暴露,以用于交互。
在所提供的至少一个依赖包中包括用于进行日志收集的依赖包的实施例中,用于进行日志收集的依赖包具体可以用于:在调用该依赖包的算子运行时,收集算子运行过程中的日志数据。
在所提供的至少一个依赖包中包括用于执行数据过期策略的依赖包的实施例中,用于执行数据过期策略的依赖包具体可以用于:按一定的策略自动清理该调用该依赖包的算子产生的、过期的数据。
在所提供的至少一个依赖包中包括用于对代码细节进行封装的依赖包的实施例中,用于对代码细节进行封装的依赖包具体可以用于:对调用该依赖包的算子的代码细节进行封装。
在所提供的至少一个依赖包中包括用于进行辅助资源推荐的依赖包的实施例中,用于进行辅助资源推荐的依赖包具体可以用于:在调用该依赖包的算子运行时,根据算子对一定量数据进行处理时的资源消耗,推断算子对全量数据进行处理时的资源消耗,并根据推断结果调度对应量的资源。
在所提供的至少一个依赖包中包括用于进行算法参数推荐的依赖包的实施例中,用于进行算法参数推荐的依赖包具体可以用于:在被执行机器学习算法的算子引用时,根据算法和参数的对应列表和/或算法参数搜索方法为相应机器学习算法确定参数。
步骤S4200,获取用户输入的包含目标算子的业务逻辑描述信息的目标算子开发文件,其中,目标算子的业务逻辑描述信息中包括依赖包调用信息。
目标算子开发文件中包含目标算子的业务逻辑描述信息,该业务逻辑描述信息中包括依赖包的调用信息。也就是说,在运行该目标算子开发文件时,会根据依赖包调用信息进行相应依赖包的调用,实现相应的功能。
在本发明的一个实施例中,目标算子开发文件的形式可以包括如下任意一种:jar包;docker镜像;脚本文件。其中,脚本文件具体可以是python脚本、shell脚本、SQL脚本等。
在目标算子开发文件的形式为jar包的实施例中,jar包中封装了具体的算法。可以预先提供用于获取jar包的第一接口,以供用户通过该第一接口输入形式为jar包的目标算子开发文件。
在目标算子开发文件的形式为docker镜像的实施例中,docker镜像中封装了具体的算法。可以预先提供用于获取docker镜像的第二接口,以供用户通过该第二接口输入形式为docker镜像的目标算子开发文件。
在目标算子开发文件的形式为脚本文件的实施例中,可以预先提供脚本编辑界面,以供用户输入业务逻辑描述信息,得到脚本文件。
步骤S4300,将目标算子开发文件与依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
依赖包调用信息所涉及的依赖包即为目标算子开发文件所调用的依赖包。
在本发明的一个实施例中,每个依赖包具有对应的版本号,同一功能的依赖包具有至少一个版本。
在一个例子中,依赖包的版本号可以采取一种规范化的版本命名机制,形式可以是如MAJOR.MINOR.PATCH(比如1.0.0、1.0.2-alpha.1、1.0.3-beta、1.0.4-rc.1等等)。有不兼容的改动时,可以升级MAJOR字段的版本;新增向前兼容的功能时,可以升级MINOR字段的版本;进行向前兼容的漏洞修复(bugfix)时,可以升级PATCH字段的版本。
通过本实施例的辅助算子开发的方法,将用户输入的包含目标算子的业务逻辑描述信息的目标算子开发文件、及业务逻辑描述信息中依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子,可以简化算子开发流程,提高算子的开发效率,还可以大幅降低算子开发的门槛和成本。
在本发明的一个实施例中,在执行步骤S4300之前,该方法还可以包括如图5所示的步骤S5110~S5130:
步骤S5110,获取用户配置的关于目标算子的配置文件,该配置文件中声明了业务逻辑信息中依赖包调用信息所涉及的依赖包。
具体的,在配置文件中声明了依赖包调用信息所涉及的依赖包及其版本。
步骤S5120,检测配置文件中声明的依赖包的版本与目标算子开发文件的版本是否一致,如果不一致进一步判断是否兼容。
在本发明的一个实施例中,可以是检测检测配置文件中的依赖包的版本号,与目标算子开发文件的业务逻辑信息中依赖包调用信息所涉及的依赖包的版本号是否完全相同,如是,则可以判定配置文件中声明的依赖包的版本与目标算子开发文件的版本一致;如否,则可以判定配置文件中声明的依赖包的版本与目标算子开发文件的版本不一致。
在依赖包的版本号的形式为MAJOR.MINOR.PATCH的实施例中,如果判定配置文件中声明的依赖包的版本与目标算子开发文件的版本不一致,可以是检测配置文件中的依赖包的版本号的MAJOR,与目标算子开发文件的业务逻辑信息中依赖包调用信息所涉及的依赖包的版本号的MAJOR是否相同,如果相同,则判定配置文件中声明的依赖包的版本与目标算子开发文件的版本兼容;如果不相同,则可以判定配置文件中声明的依赖包的版本与目标算子开发文件的版本不兼容。
步骤S5130,在不一致且不兼容的情况下,则根据目标算子开发文件的版本找到版本一致的依赖包或版本不一致但兼容的依赖包,作为替换包封装到目标算子中。
在本发明的一个实施例中,在配置文件中声明的依赖包的版本与目标算子开发文件的版本不兼容的情况下,可以是以目标算子开发文件的业务逻辑信息中依赖包调用信息所涉及的依赖包为准,即将依赖包调用信息中所涉及的对应版本的依赖包封装到目标算子中。
例如,配置文件中所声明依赖包的版本是spark 1.6,但是,在目标算子开发文件中所涉及的依赖包的版本是spark 2.3,那么,可以是将版本为spark 2.3的依赖包与目标算子开发文件一起封装到目标算子中。
进一步地,该方法还可以包括:根据目标算子开发文件的版本替换配置文件中声明的依赖包的版本。
例如,配置文件中所声明依赖包的版本是spark 1.6,但是,在目标算子开发文件中所涉及的依赖包的版本是spark 2.3,那么,可以是将配置文件中所声明依赖包的版本替换为spark 2.3。
在本发明的另一个实施例中,在配置文件中声明的依赖包的版本与目标算子开发文件的版本不兼容的情况下,还可以是以配置文件中声明的依赖包的版本为准,即将配置文件中声明的对应版本的依赖包封装到目标算子中。
例如,配置文件中所声明依赖包的版本是spark 1.6,但是,在目标算子开发文件中所涉及的依赖包的版本是spark 2.3,那么,可以是将版本为spark 1.6的依赖包与目标算子开发文件一起封装到目标算子中。
进一步地,该方法还可以包括:根据配置文件中声明的依赖包的版本替换目标算子开发文件的版本。
例如,配置文件中所声明依赖包的版本是spark 1.6,但是,在目标算子开发文件中所涉及的依赖包的版本是spark 2.3,那么,可以是将目标算子开发文件中所涉及的依赖包的版本替换为spark 1.6。
本实施例通过对配置文件所所声明依赖包和目标算子开发文件中所涉及的依赖包预先进行容错处理,可以避免在目标算子实际运行时发现报错,进而可以提升用户体验。
在本发明的一个实施例中,在执行步骤S4300之前,该方法还可以包括如下所示的步骤S5210~S5230:
步骤S5210,获取用户配置的关于目标算子的配置文件,该配置文件中声明了业务逻辑信息中依赖包调用信息所涉及的依赖包。
步骤S5220,扫描目标算子开发文件,判断是否存在目标算子开发文件中存在依赖包调用信息但配置文件中不存在相应声明的依赖包。
在一个例子中,存在依赖包调用信息但配置文件中不存在相应声明的依赖包,可以是依赖包调用信息所涉及、但未在配置文件中声明相应版本的依赖包,也可以是依赖包调用信息所涉及、但未在配置文件中声明其任一版本的依赖包。
步骤S5230,如果存在,则在配置文件中补充相应的声明。
例如,在目标算子开发文件的依赖包调用信息涉及版本是spark 2.3的依赖包,而在配置文件中未对该依赖包进行声明,则可以是在配置文件中补充对版本是spark 2.3的依赖包的声明。
本实施例通过对配置文件所所声明依赖包和目标算子开发文件中所涉及的依赖包预先进行容错处理,可以避免在目标算子实际运行时发现报错,进而可以提升用户体验。
在本发明的一个实施例中,该方法还可以包括:
提供与不同底层框架分别对应的底层框架执行器,以在算子实际运行时托管底层框架的任务分发的资源调度;和/或,
提供与不同计算框架分别对应的计算框架管理器,以在算子实际运行时托管计算框架中的通信、调度和资源相关的操作。
其中,底层框架包括如下中的至少一种:YARN、Kubernetes。计算框架包括如下的至少一种:Spark、Tensorflow、MapReduce、Python、Shell、Java。
在一个例子中,可以是预先提供多个底层框架和计算框架,响应于用户选择底层框架的操作,提供与用户所选择的底层框架对应的底层框架执行器;响应于用户选择计算框架的操作,提供与用户所选择的计算框架对应的计算框架执行器。
如果用户使用上述计算框架来开发算子,那么,可以直接编辑业务逻辑描述信息,而不需要关心框架层的通信、调度、资源相关的问题。
下面以在YARN框架上面运行Spark任务为例进行说明。
传统做法是,算子开发用于需要下载安装Hadoop,然后配置环境变量。有Hadoop配置文件后,由于需要执行Spark的逻辑需要依赖官方提供的jar包,可以从官网下载jar文件,下载到本地后配置环境变量后就可以正常使用Spark所有完整功能了。如果环境都准备好,本地可以通过pyspark命令来启动,这样可以直接配置yarn-client模型和其他Spark参数。客户端初始化后,可以在Hadoop的应用管理页面看到正在跑的一个Application,提交各种Spark任务时也可以看到运行在Hadoop集群上。而对于商业发行版的Hadoop,开发者还需要处理各种版本不一致带来的验证、鉴权等非业务问题。非常依赖开发者对于Hadoop生态的了解,门槛极高。
而本发明的辅助算子开发的系统2000将上述繁杂的过程完全自动化。算子开发用户只需要掌握开发算子所必备的开源Hadoop和Spark的知识,专注于编辑业务逻辑描述信息。YARN框架层面的版本问题、环境配置问题、启动、提交任务等,全部通过自动化的方式来屏蔽。具体做法可以为:本发明的辅助算子开发的系统2000可以兼容市场上常用的所有Hadoop和Spark版本,并向算子开发用户提供兼容列表。算子开发用户只需在该兼容列表下进行开发,算子平台会自动监测算子开发用户所输入的代码,匹配相应的版本进行提交和执行。
下面以在Kubernetes框架上面运行Python任务为例进行说明。
传统做法是,先准备基于容器化运行的容器环境环境。然后在算法业务逻辑之外,额外准备配置文件,声明监听容器的端口号、依赖包、http输入输出方式等。再之后需要准备一个容器描述文件,指定基础镜像、设置工作目录、暴露监听端口等。最后通过命令行代码交互的方式,启动容器运行在Kubernetes上。
而本发明的辅助算子开发的系统2000将上述繁杂的过程完全自动化。具体做法是:辅助算子开发的系统2000内置标准运行环境,预置人工智能应用开发所有常用依赖包,并且自动帮助算子开发用户默认设置监听容器的端口号。当算子开发用户打包算子时,辅助算子开发的系统2000会扫描算子开发用户声明的依赖包,自动生成容器描述文件。算子开发用户无需感知任何业务逻辑之外的事情,即可通过一行命令,直接执行任务。
对于提交执行,传统做法是通过命令行代码交互的方式进行,不仅需要算子开发用户熟悉每一个框架的提交命令,还需要进行执行参数调试等各种工作。而本发明的辅助算子开发的系统2000的优化方式包括:将每个框架的提交命令封装成一个参数,并给每个框架的参数命名为算子开发用户习以为常的缩写,算子开发用户只需自己确定用于执行算子的框架,指定相应缩写即可;辅助算子开发的系统2000对每个框架的每个可调试参数进行大量测试,拟合方程公式(包括但不限于线性回归、非线性回归方法等),得出一个经验公式,然后将经验公式内置在辅助算子开发的系统2000中。算子开发用户指定某个框架后,后台自动收到指令,触发经验公式进行计算,实时返回当前最优的执行参数,并提交运行。
本发明的辅助算子开发的系统2000默认帮助算子开发用户搭建了人工智能领域常用的底层资源框架(YARN、Kubernetes)等,使得算子开发用户无需关系底层任务分发和资源调度。
本发明的辅助算子开发的系统2000还对常用的计算框架进行了抽象、封装和优化,使得使用这些计算框架的算子开发用户,能够更加低成本的完成算子开发工作。
这些抽象、封装和优化被称为Executive,即算子在特定计算框架上提交执行、状态追踪、指标(metrics)收集的管理者和执行器,可实现多种多样的Executive来对接不同的调度集群和计算框架(例如Spark 1.6.x的Executive、Tensorflow的Executive)。
Executive在提交算子到算子集群执行时,需要构造算子的传入参数。因此,针对一类要到相同Executive上执行的算子需定义好传入参数的结构规范,使算子在集群上运行时可以正确的获取到执行的传入参数。例如,Spark算子是通过将配置写出到Json文件,然后在提交时带上该Json文件,并将该Json文件的文件名作为提交参数,来让提交到YARN上的算子同反序列化文件内容获取配置。再例如,Tensorflow算子通过构建Job的command和env参数的方式,将输入参数传入镜像entryPoint的launch.py,再通过launch.py启动用户的py将这些参数传入执行。
对于状态追踪,传统做法是算子开发用户需要熟悉每个框架的状态定义,然后自己来实现运行过程中的状态追踪。本发明的辅助算子开发的系统2000则针对不同的框架,抽象总结出一个适配所有框架的通用状态追踪机制。即定义状态可以包括:INITIALIZED(初始化任务)、AWAITING(等待调度,分为本地组装与提交阶段和集群等待调度阶段)、RUNNING(运行)、SUCCEEDED(成功)、FAILED(失败)、TERMINATED(终止)、RESUMING(恢复)。算子开发用户不再需要关心和编辑状态追踪相关的逻辑,辅助算子开发的系统2000自动将上述状态逻辑用一个参数来替代,通过运行时下指令给辅助算子开发的系统2000来自动实现。
对于指标收集,传统的做法是算子开发用户需要自己写代码来实现,能力强的算子开发用户可以写出效率很高的代码进行执行,而能力不强的算子开发用户写代码后,反而会增加任务的执行时间,同时还会增加算子中间数据的存储。本发明的辅助算子开发的系统2000通过自动建立服务端与客户端的连接,服务端在获取到指标数据后主动推送到客户端,客户端负责解析和记录、展示的方式,帮助算子开发用户避免了手写代码实现。并将是否选择开启指标收集,作为了一个执行可选参数,开放给算子开发用户进行自由选择。
在本发明的一个实施例中,该方法还可以包括如图6所示的步骤S6100~S6200:
步骤S6100,获取用于调试的模拟数据。
该模拟数据可以用于调试目标算子开发文件是否可用。具体的,该模拟数据可以是自动生成的,也可以是由用户输入的。
由于在建模过程中的数据类型会不断变换,经常会从数据表到模型再到报告或者文件,不同的算子需要处理不同类型的数据。因此,需要算子开发用户能够灵活的指定目标算子的输入输出格式,并针对特定格式的数据开发特定的功能。
在本发明的一个实施例中,获取模拟数据的方式可以包括:获取用户输入的模拟数据的格式信息;根据该格式信息获取模拟数据。
该格式信息可以包括数据格式、具体数据项的类型、数量。数据格式可以为以下任意一种:数据表、数据组、模型、模型组、图片、图片集、文件。
在本实施例的基础上,获取模拟数据的方式可以包括:获取用户输入的目标算子的应用场景;根据应用场景获取符合该格式信息的数据,作为模拟数据。
该应用场景例如可以包括图片识别、图片比对、打分等。
在一个例子中,根据应用场景获取符合该格式信息的数据,作为模拟数据还可以包括:从预存的数据中选取适应于该应用场景、且符合该格式信息的数据,作为模拟数据。
在另一个例子中,根据应用场景获取符合该格式信息的数据,作为模拟数据可以包括:获取与应用场景匹配的历史数据;根据历史数据确定数据限定条件;根据数据限定条件生成符合该格式信息的模拟数据。
该历史数据中包括与应用场景匹配的其他算子的输入数据和对应的输出数据,根据该输入数据和输出数据,可以得到数据限定条件;基于该数据限定条件就可以生成符合用户输入的格式信息的模拟数据。
在本实施例的基础上,获取模拟数据的方式还可以包括:获取用户输入的用于表示数据内容的数据配置信息;根据该数据配置信息生成模拟数据。
在一个例子中,算子开发用户可以是在配置文件中指定模拟数据的格式信息。例如,算子开发用户可以通过表单式交互的方式,声明所需的模拟数据的格式信息,即可获取模拟数据供算子开发用户使用。
具体的,可以接收用户输入的配置文件,将配置文件中配置的数据表定义,转换为模拟数据的生成任务,上传到Spark上进行数据生成。
支持生成模拟数据的功能可以包括:
支持在配置文件中定义待生成数据实体的schema;
支持生成多种数据类型,包括string,short,int,long,float,double,date,time中的任意一种或多种;
支持配置生成的某个字段的数据来自于enum list或者某个文件;
支持配置数据字段为数据表的key,支持uniq字段;
支持配置数据字段为其他表的key,支持配置表数据字段来自于其他表数据字段,可控制匹配度,具体包括一对一匹配、一对多匹配、多对一匹配;
支持控制任务执行模式,spark local,spark yarn client,spark yarncluster;
支持控制生成某一天,或某时间段的数据;
支持同时生成多张表,可以配置表之间行数依赖;
支持控制数据生成任务的并行度;
支持控制数据生成周期,按天,按周,按月,按年;
支持对生成的数据进行脏化处理,添加空格,字段缺失,NULL,None,缺少分隔符;
支持配置字段分隔符,配置生成数据文件编码;
支持对生成数据文件进行压缩存储(支持snappy、lzo、gzip、bzip2等压缩格式,依赖于hadoop集群);
支持将字段名输出到生成数据文件中,作为表头;
支持配置用于组成字符串的字符的来源;
支持高斯分布、指数分布、伽马分布的浮点数类型;
支持控制数据生成位置,支持数据load hive。
在本发明的一个实施例中,本实施例的方法还可以对人工智能建模过程中,经常遇到的数据倾斜问题进行模拟,以便于算子开发用户更好的进行生产使用。
步骤S6200,根据该模拟数据对目标算子开发文件进行调试,在调试通过的情况下,将目标算子开发文件和依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
如果调试未通过,则可以向用户展示目标算子开发文件,以供算子开发用户对目标算子开发文件进行修改,以使得修改后的目标算子开发文件能够基于模拟数据调试通过。
在本发明的一个实施例中,调试是指能够查看资源控制和运行状态,通过资源查看和运行状态查看,来判断目标算子是否运行正确,符合资源消耗预期。
具体的,可以是预先搭建人工智能领域常用的底层资源框架(YARN、Kubernetes)等,使得算子开发用户无需关系底层任务分发和资源调度。此外还提供可视化模块(例如Dashboard),并将调试结果通过该可视化模块展示给算子开发用户,以使算子开发用户可以清晰的查看资源控制和运行状态。
在调试完成后,可以一键发布,使得目标算子可以模拟在线上真实情况下的运行。线上模拟相当于是执行本发明实施例的电子设备模拟用户去使用目标算子,是前后端联调及质量的测试,以保证目标算子只要是能够通过线上模拟测试,均可正常在真实环境中运行。
具体的,可以使用websocket协议建立服务端与客户端的连接,服务端在获取到日志数据后主动推送到客户端,客户端(前端页面)负责解析并展示数据即可。
系统在线上真实环境(即已经投入使用的算子的运行环境),可以自动根据用于针对该目标算子指定的输入类型,匹配一份内置数据,然后用大量预置的测试用例,对目标算子进行测试。具体可以包括输入、输出、运行时长、资源消耗、UI交互、与其他算子的方案编排等各方面测试。
在本发明的一个实施例中,在得到目标算子之后,该方法还可以包括如图7所示的步骤S7100~S7300:
步骤S7100,提供目标算子的前端页面模板。
步骤S7200,获取算子开发用户输入的关于目标算子的前端页面模板的配置信息。
算子开发用户无需关心前端开发技术,只需要在配置信息中设置希望算子使用用户看到和/或调整的参数。
在一个例子中,用户输入的关于目标算子的前端页面模板的配置信息可以包括:目标算子所属的算子分类、目标算子的名称、目标算子的版本号、目标算子的输出字段、该输出字段对应的目标值字段等。
步骤S7300,根据前端页面模板和前端页面模板的配置信息生成目标算子的前端页面,以供算子使用用户通过该前端页面调整和/或查看目标算子的相关参数值。
根据前端页面模板和前端页面模板的配置信息生成的前端页面中,展示有算子开发用户希望算子使用用户看到和/或调整的参数,这样,算子使用用户就可以过该前端页面调整和/或查看目标算子的相关参数值。
在本发明的一个实施例中,目标算子的版本号可以采取一种规范化的版本命名机制,形式可以是如MAJOR.MINOR.PATCH(比如1.0.0、1.0.2-alpha.1、1.0.3-beta、1.0.4-rc.1等等)。有不兼容的改动时,可以升级MAJOR字段的版本;新增向前兼容的功能时,可以升级MINOR字段的版本;进行向前兼容的漏洞修复(bugfix)时,可以升级PATCH字段的版本。
在本实施例中,引入算子版本化,可以解决算子的开发迭代问题和多版本共存问题。
但由于算子之间没有协议,无法保证不同的算子之间能兼容工作,当一个基于算子的方案编排中存在不兼容的算子时,需要等到运行时才能暴露问题。如果仅引入基于算子的方案编排的版本化,限制一个版本的方案里能使用的算子集合,那么算子之间的兼容性问题能够解决,但无法解决算子本身开发迭代和多版本算子共存的问题。
因此,可以是算子和基于算子的方案编排都引入版本化机制,其中,算子的版本化用于解决算子的开发迭代问题和多版本共存问题,编排方案的版本化用于解决算子之间的兼容性问题。
在一个例子中,目标算子的版本号可以由算子模板提供,算子模板中新增version字段和protocol Version字段。version字段供方案编排使用。Protocol Version字段标识目标算子所属的方案版本,为数组类型,因为一个版本的算子可以出现在多个版本的方案中,数组中的每个版本只能使用完整的版本号。
<系统实施例>
在本实施例中,提供一种辅助算子开发的系统2000,如图2所示,该系统2000可以包括依赖包提供模块2100、开发文件获取模块2200和算子封装模块2300。该依赖包提供模块2100用于提供至少一个预设的依赖包;该开发文件获取模块2200用于获取用户输入的包含目标算子的业务逻辑描述信息的目标算子开发文件,其中,目标算子的业务逻辑描述信息中包括依赖包调用信息;该算子封装模块2300用于将目标算子开发文件与依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
在本发明的一个实施例中,至少一个预设的依赖包可以包括如下中的一个或多个:
用于实时监控算子运行状态的依赖包;
用于将算子运行信息对外暴露的依赖包;
用于进行日志收集的依赖包;
用于执行数据过期策略的依赖包;
用于对代码细节进行封装的依赖包;
用于进行辅助资源推荐的依赖包;
用于进行算法参数推荐的依赖包。
在本发明的一个实施例中,至少一个预设的依赖包包括用于进行辅助资源推荐的依赖包;用于进行辅助资源推荐的依赖包,用于在算子运行时根据算子对一定量数据进行处理时的资源消耗推断算子对全量数据进行处理时的资源消耗,并根据推断结果调度对应量的资源。
在本发明的一个实施例中,至少一个预设的依赖包包括用于进行算法参数推荐的依赖包;用于进行算法参数推荐的依赖包,用于在被执行机器学习算法的算子引用时,根据算法和参数的对应列表和/或算法参数搜索方法为相应机器学习算法确定参数。
在本发明的一个实施例中,目标算子开发文件形式可以是如下中的任一种:jar包;docker镜像;脚本文件。其中,脚本文件具体可以是python脚本、shell脚本、SQL脚本等。
在本发明的一个实施例中,该系统2000还可以包括:
用于提供依赖包接口的模块;
用于通过依赖包接口获取用户自定义编辑的依赖包,和/或,通过依赖包接口接收用户上传第三方的依赖包的模块。
在本发明的一个实施例中,该系统2000还可以包括:
用于获取用户配置的关于目标算子的配置文件的模块,该配置文件中声明了业务逻辑信息中依赖包调用信息所涉及的依赖包;
用于检测配置文件中声明的依赖包的版本与目标算子开发文件的版本是否一致,如果不一致进一步判断是否兼容的模块;
用于在不一致且不兼容的情况下,则根据目标算子开发文件的版本找到版本一致的依赖包或版本不一致但兼容的依赖包,作为替换包封装到目标算子中的模块。
在本发明的一个实施例中,该系统2000还可以包括:
用于获取用户配置的关于目标算子的配置文件的模块,该配置文件中声明了业务逻辑信息中依赖包调用信息所涉及的依赖包;
用于扫描目标算子开发文件,判断是否存在目标算子开发文件中存在依赖包调用信息但配置文件中不存在相应声明的依赖包;如果存在,则在配置文件中补充相应的声明的模块。
在本发明的一个实施例中,该系统2000还可以包括:
用于提供与不同底层框架分别对应的底层框架执行器,以在算子实际运行时托管底层框架的任务分发的资源调度的模块;
和/或,
用于提供与不同计算框架分别对应的计算框架管理器,以在算子实际运行时托管计算框架中的通信、调度和资源相关的操作的模块。
可选的,每个依赖包具有对应的版本号,同一功能的依赖包具有至少一个版本。
在本发明的一个实施例中,该系统2000还可以包括如图3所示的数据获取模块3100和算子调试模块3200,该数据获取模块3100用于获取用于调试的模拟数据的模块;该算子调试模块3200用于根据模拟数据对目标算子开发文件进行调试;
算子封装模块2300用于在算子调试模块3200调试通过的情况下,将目标算子开发文件和依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
在本发明的一个实施例中,数据获取模块3100还可以用于:
获取用户输入的模拟数据格式信息;
根据格式信息获取模拟数据。
在本发明的一个实施例中,根据格式信息获取模拟数据包括:
获取用户输入的目标算子的应用场景;
根据应用场景获取符合格式信息的数据,作为模拟数据。
在本发明的一个实施例中,根据应用场景获取符合格式信息的数据,作为模拟数据包括:
获取与应用场景匹配的历史数据;
根据历史数据确定数据限定条件;
根据数据限定条件生成符合格式信息的模拟数据。
在本发明的一个实施例中,根据应用场景获取符合格式信息的数据,作为模拟数据包括:
从预存的数据中选取适用于应用场景、且符合格式信息的数据,作为模拟数据。
在本发明的一个实施例中,根据格式信息获取模拟数据包括:
获取用户输入的用于表示数据内容的数据配置信息;
根据数据配置信息生成模拟数据。
在本发明的一个实施例中,该系统2000还可以包括:
用于提供目标算子的前端页面模板的模块;
用于获取算子开发用户输入的关于目标算子的前端页面模板的配置信息的模块;
用于根据前端页面模板和前端页面模板的配置信息生成目标算子的前端页面,以供算子使用用户通过该前端页面调整和/或查看目标算子的相关参数值的模块。
<系统>
在本实施例中,如图8所示,还提供一种至少一个计算装置8100和至少一个存储装置8200的系统8000。该至少一个存储装置8200用于存储可执行的指令;该指令用于控制至少一个计算装置8100执行根据本发明任意实施例的辅助算子开发的方法。
在本实施例中,该系统8000可以是手机、平板电脑、掌上电脑、台式机、笔记本电脑、工作站、游戏机等设备,也可以是由多个设备构成的分布式系统。
<计算机可读存储介质>
在本实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现如本发明任意实施例的辅助算子开发的方法。
本发明可以是设备、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
Claims (10)
1.一种辅助算子开发的方法,包括:
提供至少一个预设的依赖包;
获取用户输入的包含目标算子的业务逻辑描述信息的目标算子开发文件,其中,所述目标算子的业务逻辑描述信息中包括依赖包调用信息;
将所述目标算子开发文件与所述依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
2.根据权利要求1所述的方法,其中,所述至少一个预设的依赖包包括如下中的一个或多个:
用于实时监控算子运行状态的依赖包;
用于将算子运行信息对外暴露的依赖包;
用于进行日志收集的依赖包;
用于执行数据过期策略的依赖包;
用于对代码细节进行封装的依赖包;
用于进行辅助资源推荐的依赖包;
用于进行算法参数推荐的依赖包。
3.根据权利要求1所述的方法,其中,所述至少一个预设的依赖包包括用于进行辅助资源推荐的依赖包;
所述用于进行辅助资源推荐的依赖包,用于在算子运行时根据算子对一定量数据进行处理时的资源消耗推断算子对全量数据进行处理时的资源消耗,并根据推断结果调度对应量的资源。
4.根据权利要求1所述的方法,其中,所述至少一个预设的依赖包包括用于进行算法参数推荐的依赖包;
所述用于进行算法参数推荐的依赖包,用于在被执行机器学习算法的算子引用时,根据算法和参数的对应列表和/或算法参数搜索方法为相应机器学习算法确定参数。
5.根据权利要求1所述的方法,其中,所述目标算子开发文件形式可以是如下中的任一种:
jar包;
docker镜像;
脚本文件。
6.根据权利要求1所述的方法,还包括:
提供依赖包接口;
通过所述依赖包接口获取用户自定义编辑的依赖包,和/或,通过所述依赖包接口接收用户上传第三方的依赖包。
7.根据权利要求1所述的方法,在将所述目标算子开发文件与所述依赖包调用信息所涉及的依赖包一起进行封装之前,还包括:
获取用户配置的关于目标算子的配置文件,该配置文件中声明了业务逻辑信息中依赖包调用信息所涉及的依赖包;
检测所述配置文件中声明的依赖包的版本与所述目标算子开发文件的版本是否一致,如果不一致进一步判断是否兼容;
在不一致且不兼容的情况下,则根据所述目标算子开发文件的版本找到版本一致的依赖包或版本不一致但兼容的依赖包,作为替换包封装到所述目标算子中。
8.一种辅助算子开发的系统,包括:
依赖包提供模块,用于提供至少一个预设的依赖包;
开发文件获取模块,用于获取用户输入的包含目标算子的业务逻辑描述信息的目标算子开发文件,其中,所述目标算子的业务逻辑描述信息中包括依赖包调用信息;
算子封装模块,用于将所述目标算子开发文件与所述依赖包调用信息所涉及的依赖包一起进行封装,得到目标算子。
9.一种包括至少一个计算装置和至少一个存储装置的系统,其中,所述至少一个存储装置用于存储指令,所述指令用于控制所述至少一个计算装置执行根据权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如权利要求1至7中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911077327.8A CN110928529B (zh) | 2019-11-06 | 2019-11-06 | 辅助算子开发的方法和系统 |
PCT/CN2020/126666 WO2021088909A1 (zh) | 2019-11-06 | 2020-11-05 | 辅助算子开发的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911077327.8A CN110928529B (zh) | 2019-11-06 | 2019-11-06 | 辅助算子开发的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110928529A true CN110928529A (zh) | 2020-03-27 |
CN110928529B CN110928529B (zh) | 2021-10-26 |
Family
ID=69853359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911077327.8A Active CN110928529B (zh) | 2019-11-06 | 2019-11-06 | 辅助算子开发的方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110928529B (zh) |
WO (1) | WO2021088909A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084391A (zh) * | 2020-09-08 | 2020-12-15 | 中国平安人寿保险股份有限公司 | 依赖包信息的获取方法、装置、设备及计算机介质 |
CN112099848A (zh) * | 2020-09-11 | 2020-12-18 | 杭州海康威视数字技术股份有限公司 | 一种业务处理方法、装置及设备 |
CN112182199A (zh) * | 2020-09-10 | 2021-01-05 | 中信银行股份有限公司 | 一种依赖包推荐方法、装置、电子设备和可读存储介质 |
CN112199086A (zh) * | 2020-09-18 | 2021-01-08 | 北京达佳互联信息技术有限公司 | 自动编程控制系统、方法、装置、电子设备及存储介质 |
CN112527281A (zh) * | 2020-12-17 | 2021-03-19 | 北京百度网讯科技有限公司 | 基于人工智能的算子升级方法、装置、电子设备及介质 |
CN112597011A (zh) * | 2020-12-16 | 2021-04-02 | 测点大数据(苏州)有限公司 | 一种基于多语言的算子测试用例生成和优化方法 |
CN112632113A (zh) * | 2020-12-31 | 2021-04-09 | 北京九章云极科技有限公司 | 一种算子管理方法和算子管理系统 |
WO2021088909A1 (zh) * | 2019-11-06 | 2021-05-14 | 第四范式(北京)技术有限公司 | 辅助算子开发的方法和系统 |
CN113537908A (zh) * | 2020-04-13 | 2021-10-22 | 亚信科技(中国)有限公司 | 一种针对结算因子的处理方法及装置 |
CN113535138A (zh) * | 2020-04-15 | 2021-10-22 | 北京华为数字技术有限公司 | 软件项目打包方法及相关设备 |
WO2024001594A1 (zh) * | 2022-06-29 | 2024-01-04 | 第四范式(北京)技术有限公司 | 算子开发、处理方法、装置、电子设备、系统及存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113238765B (zh) * | 2021-05-20 | 2024-04-02 | 北京百度网讯科技有限公司 | 小程序的分发方法、装置、设备和存储介质 |
CN113687818A (zh) * | 2021-08-17 | 2021-11-23 | 北京市商汤科技开发有限公司 | 任务执行方法、装置、设备及计算机可读存储介质 |
CN113721895B (zh) * | 2021-11-02 | 2022-03-29 | 树根互联股份有限公司 | 应用建模方法、系统、装置、计算机设备及可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0498175A (ja) * | 1990-08-16 | 1992-03-30 | Japan Radio Co Ltd | Mls受信機のチャネル自動設定方式 |
CN104866310A (zh) * | 2015-05-20 | 2015-08-26 | 百度在线网络技术(北京)有限公司 | 知识数据的处理方法和系统 |
CN107943463A (zh) * | 2017-12-15 | 2018-04-20 | 清华大学 | 交互式自动化大数据分析应用开发系统 |
CN107944012A (zh) * | 2017-12-08 | 2018-04-20 | 北京百度网讯科技有限公司 | 知识数据计算系统、方法、服务器及存储介质 |
CN108628605A (zh) * | 2018-04-28 | 2018-10-09 | 百度在线网络技术(北京)有限公司 | 流式数据处理方法、装置、服务器和介质 |
CN108984155A (zh) * | 2018-05-17 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 数据处理流程设定方法和装置 |
CN109086038A (zh) * | 2018-07-10 | 2018-12-25 | 千寻位置网络有限公司 | 基于Spark的大数据开发方法及装置、终端 |
CN109447256A (zh) * | 2018-09-12 | 2019-03-08 | 上海交通大学 | 基于FPGA的Tensorflow系统加速的设计方法 |
CN109492749A (zh) * | 2018-10-12 | 2019-03-19 | 平安科技(深圳)有限公司 | 在局域网中实现神经网络模型线上服务的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126643B (zh) * | 2016-06-23 | 2018-01-02 | 北京百度网讯科技有限公司 | 流式数据的分布式处理方法和装置 |
CN107169572B (zh) * | 2016-12-23 | 2018-09-18 | 福州大学 | 一种基于Mahout的机器学习服务组装方法 |
CN110928529B (zh) * | 2019-11-06 | 2021-10-26 | 第四范式(北京)技术有限公司 | 辅助算子开发的方法和系统 |
-
2019
- 2019-11-06 CN CN201911077327.8A patent/CN110928529B/zh active Active
-
2020
- 2020-11-05 WO PCT/CN2020/126666 patent/WO2021088909A1/zh active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0498175A (ja) * | 1990-08-16 | 1992-03-30 | Japan Radio Co Ltd | Mls受信機のチャネル自動設定方式 |
CN104866310A (zh) * | 2015-05-20 | 2015-08-26 | 百度在线网络技术(北京)有限公司 | 知识数据的处理方法和系统 |
CN107944012A (zh) * | 2017-12-08 | 2018-04-20 | 北京百度网讯科技有限公司 | 知识数据计算系统、方法、服务器及存储介质 |
CN107943463A (zh) * | 2017-12-15 | 2018-04-20 | 清华大学 | 交互式自动化大数据分析应用开发系统 |
CN108628605A (zh) * | 2018-04-28 | 2018-10-09 | 百度在线网络技术(北京)有限公司 | 流式数据处理方法、装置、服务器和介质 |
CN108984155A (zh) * | 2018-05-17 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 数据处理流程设定方法和装置 |
CN109086038A (zh) * | 2018-07-10 | 2018-12-25 | 千寻位置网络有限公司 | 基于Spark的大数据开发方法及装置、终端 |
CN109447256A (zh) * | 2018-09-12 | 2019-03-08 | 上海交通大学 | 基于FPGA的Tensorflow系统加速的设计方法 |
CN109492749A (zh) * | 2018-10-12 | 2019-03-19 | 平安科技(深圳)有限公司 | 在局域网中实现神经网络模型线上服务的方法及装置 |
Non-Patent Citations (2)
Title |
---|
ALEXANDER CHEMERIS等: "Loop nests parallelization for digital system synthesis", 《EAST-WEST DESIGN & TEST SYMPOSIUM (EWDTS 2013)》 * |
石殿祥等: "逆算子逼近法3D偏移软件开发与应用", 《2001年中国地球物理学会年刊——中国地球物理学会第十七届年会论文集》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021088909A1 (zh) * | 2019-11-06 | 2021-05-14 | 第四范式(北京)技术有限公司 | 辅助算子开发的方法和系统 |
CN113537908A (zh) * | 2020-04-13 | 2021-10-22 | 亚信科技(中国)有限公司 | 一种针对结算因子的处理方法及装置 |
CN113535138A (zh) * | 2020-04-15 | 2021-10-22 | 北京华为数字技术有限公司 | 软件项目打包方法及相关设备 |
CN113535138B (zh) * | 2020-04-15 | 2023-09-29 | 北京华为数字技术有限公司 | 软件项目打包方法及相关设备 |
CN112084391B (zh) * | 2020-09-08 | 2024-02-09 | 中国平安人寿保险股份有限公司 | 依赖包信息的获取方法、装置、设备及计算机介质 |
CN112084391A (zh) * | 2020-09-08 | 2020-12-15 | 中国平安人寿保险股份有限公司 | 依赖包信息的获取方法、装置、设备及计算机介质 |
CN112182199A (zh) * | 2020-09-10 | 2021-01-05 | 中信银行股份有限公司 | 一种依赖包推荐方法、装置、电子设备和可读存储介质 |
CN112099848A (zh) * | 2020-09-11 | 2020-12-18 | 杭州海康威视数字技术股份有限公司 | 一种业务处理方法、装置及设备 |
CN112099848B (zh) * | 2020-09-11 | 2024-03-05 | 杭州海康威视数字技术股份有限公司 | 一种业务处理方法、装置及设备 |
CN112199086A (zh) * | 2020-09-18 | 2021-01-08 | 北京达佳互联信息技术有限公司 | 自动编程控制系统、方法、装置、电子设备及存储介质 |
CN112597011A (zh) * | 2020-12-16 | 2021-04-02 | 测点大数据(苏州)有限公司 | 一种基于多语言的算子测试用例生成和优化方法 |
CN112597011B (zh) * | 2020-12-16 | 2024-04-16 | 测点大数据(苏州)有限公司 | 一种基于多语言的算子测试用例生成和优化方法 |
CN112527281A (zh) * | 2020-12-17 | 2021-03-19 | 北京百度网讯科技有限公司 | 基于人工智能的算子升级方法、装置、电子设备及介质 |
CN112527281B (zh) * | 2020-12-17 | 2022-03-11 | 北京百度网讯科技有限公司 | 基于人工智能的算子升级方法、装置、电子设备及介质 |
CN112632113A (zh) * | 2020-12-31 | 2021-04-09 | 北京九章云极科技有限公司 | 一种算子管理方法和算子管理系统 |
WO2024001594A1 (zh) * | 2022-06-29 | 2024-01-04 | 第四范式(北京)技术有限公司 | 算子开发、处理方法、装置、电子设备、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110928529B (zh) | 2021-10-26 |
WO2021088909A1 (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110928529B (zh) | 辅助算子开发的方法和系统 | |
CN110825362B (zh) | 低代码应用软件开发系统及方法 | |
WO2018228211A1 (zh) | 应用转换方法、装置及设备 | |
CN107491329B (zh) | Docker镜像构建方法、设备、存储介质以及电子装置 | |
US9442744B2 (en) | Multilingual build integration for compiled applications | |
US20180113799A1 (en) | Model generation for model-based application testing | |
CN102411503B (zh) | 一种在设计时环境中执行业务过程模型的空运行的方法及系统 | |
US11389960B2 (en) | Systems and methods for robotic process automation | |
CN110941467A (zh) | 数据处理方法、装置及系统 | |
US20170286068A1 (en) | Development support system | |
US20210208854A1 (en) | System and method for enhancing component based development models with auto-wiring | |
CN111176629A (zh) | 一种应用开发的方法和装置 | |
US20230266970A1 (en) | Systems and methods for modernizing legacy applications | |
CN115658529A (zh) | 用户页面的自动化测试方法以及相关设备 | |
CN112000334A (zh) | 页面开发方法、装置、服务器及存储介质 | |
Nüst et al. | The rockerverse: packages and applications for containerization with r | |
CN108287720B (zh) | 软件编译方法、装置、设备及存储介质 | |
KR101409528B1 (ko) | Mda 기반 스마트 크로스 플랫폼 어플리케이션 저작 방법 및 장치 | |
Kaewkasi | Docker for serverless applications: containerize and orchestrate functions using OpenFaas, OpenWhisk, and Fn | |
CN114721647B (zh) | 一种基于无代码应用开发的面向对象编程方法 | |
CN114265595B (zh) | 一种基于智能合约的云原生应用开发与部署系统和方法 | |
CN112667202B (zh) | Mda与bpmn相结合的软件设计方法和装置 | |
WO2023038715A1 (en) | Hot reloading a running application with an unsaved source code change | |
Siebra et al. | Empowering continuous delivery in software development: the DevOps strategy | |
WO2024001594A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |