运行环境动态管理的在线算法开发方法、系统及设备与流程

文档序号:33560209发布日期:2023-03-22 13:57阅读:68来源:国知局
运行环境动态管理的在线算法开发方法、系统及设备与流程

1.本发明属于数据挖掘的技术领域,尤其涉及一种运行环境动态管理的在线算法开发方法、系统及设备。


背景技术:

2.目前,市面上的算法开发平台都往低门槛、复用性高方向发展,如何提高算法开发、应用效率成为重中之重,也是各平台的主要研究方向。例如中国专利:组件发布方法、组件构建方法及图形化机器学习算法平台,专利号:cn108279890b,提供了一种组件发布方法、组件构建方法及图形化机器学习算法平台。图形化机器学习算法平台能够将功能模型发布或构建为新的组件,因此,在用户需要重复使用某一项功能的情况下,可以直接使用新的组件,而无需再重复建立功能模型,从而方便用户的使用。但是这类组件都是预安装,难以扩展、灵活地支持快速变化的业务场景。


技术实现要素:

3.本发明的目的是提供一种运行环境动态管理的在线算法开发方法、系统及设备,在平台化降低算法开发门槛的基础上,极大地提高平台化算法拓展的开发、运行效率。
4.为解决上述问题,本发明的技术方案为:
5.一种运行环境动态管理的在线算法开发方法,包括:
6.搭建算法开发的基础环境,所述基础环境包括编程语言版本文件及基础依赖文件,并将基础环境中的文件进行隔离;
7.构建算法组件,上传所述算法组件需要的依赖文件;在上传依赖文件的过程中,根据所选编程语言版本建立虚拟环境,对上传的依赖文件进行安装校验;安装成功后,汇总依赖文件并建立依赖关系图谱,得到环境库依赖清单;
8.创建算法运行环境容器,从所述环境库依赖清单中选取编程语言版本与相应依赖文件,建立拓展算法运行环境;
9.通过算法编辑器对拓展算法进行在线编码、调试;
10.将调试通过后的拓展算法代码集成至拓展算法运行环境中发布运行;
11.在任务建模时,选取多个算法组件,对算法组件所处的算法环境进行动态管理,其中包括任务建模的训练期环境动态管理及运行期环境动态管理。
12.根据本发明一实施例,所述安装成功后,汇总依赖文件并建立依赖关系图谱之后,销毁所述虚拟环境。
13.根据本发明一实施例,当卸载依赖文件时,根据所述依赖关系图谱进行校验,若待卸载的依赖文件与其他依赖文件存在依赖关系,或关联其他算法,则无法卸载;
14.若待卸载的依赖文件存在多个替代依赖文件,则允许卸载至最少存在一个替代依赖文件。
15.根据本发明一实施例,所述通过算法编辑器对拓展算法进行在线编码、调试进一
步包括:
16.预先定义算法开发过程中的内置变量,用于与上下游算法业务的数据联动。
17.根据本发明一实施例,在线编码过程中进行实时调试时,需要启动第一进程和第二进程,其中,第一进程用于当前算法环境,第二进程用于连接拓展算法进行环境;并在第一进程与第二进程之间建立双向通行,包含读、写双通道;
18.将编写的算法执行代码及所述内置变量通过写通道,从第一进程转入第二进程中执行;在执行过程中,通过读通道从第二进程中读取执行过程信息及异常报错信息至第一进程,并持久化至本地文件中进行存储;
19.同时,通过websocket,将执行过程信息及异常报错信息滚动打印至控制台,进行前端展示,以供调试排错。
20.根据本发明一实施例,对任务建模的训练期环境动态管理进一步包括:
21.将任务模型需要的多个算法组件集中在一个环境容器中启动算法环境,多个算法环境按串行顺序被使用;
22.当任务模型的训练结束后,销毁环境容器,释放资源。
23.根据本发明一实施例,对任务建模的运行期环境动态管理进一步包括:
24.任务模型需要的每个算法组件,单独在一个环境容器中启动算法环境;每个环境容器根据需要常驻n个进程用于接收算法新任务,每个进程预加载算法依赖文件,接收上游算法业务数据后立即执行,返回结果。
25.一种运行环境动态管理的在线算法开发系统,包括:
26.基础环境平台,用于搭建算法开发的基础环境,所述基础环境包括编程语言版本文件及基础依赖文件,并将基础环境中的文件进行隔离;
27.算法组件模块,用于构建算法组件,上传所述算法组件需要的依赖文件;在上传依赖文件的过程中,根据所选编程语言版本建立虚拟环境,对上传的依赖文件进行安装校验;安装成功后,汇总依赖文件并建立依赖关系图谱,得到环境库依赖清单;
28.环境容器,用于创建算法运行环境容器,从所述环境库依赖清单中选取编程语言版本与相应依赖文件,建立拓展算法运行环境;
29.算法编辑器,用于对拓展算法进行在线编码、调试;
30.算法运行模块,用于将调试通过后的拓展算法代码集成至拓展算法运行环境中发布运行;
31.动态管理模块,用于在任务建模时,选取多个算法组件,对算法组件所处的算法环境进行动态管理,其中包括任务建模的训练期环境动态管理及运行期环境动态管理。
32.一种运行环境动态管理的在线算法开发设备,包括:存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行本发明一实施例中的运行环境动态管理的在线算法开发方法中的步骤。
33.一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本发明一实施例中的运行环境动态管理的在线算法开发方法中的步骤。
34.本发明由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:
35.1)本发明一实施例中的运行环境动态管理的在线算法开发方法,针对目前的算法开发平台中的算法组件都是预安装,难以扩展、灵活地支持快速变化的业务场景的问题,通过搭建算法开发的基础环境,构建算法组件,上传算法组件需要的依赖文件;在上传依赖文件的过程中,根据所选编程语言版本建立虚拟环境,对上传的依赖文件进行安装校验;安装成功后,汇总依赖文件并建立依赖关系图谱,得到环境库依赖清单;创建算法运行环境容器,从所述环境库依赖清单中选取编程语言版本与相应依赖文件,建立拓展算法运行环境;通过算法编辑器对拓展算法进行在线编码、调试;将调试通过后的拓展算法代码集成至拓展算法运行环境中发布运行;在任务建模时,选取多个算法组件,对算法组件所处的算法环境进行动态管理,其中包括任务建模的训练期环境动态管理及运行期环境动态管理。以上提供了环境拓展方案,根据所选依赖包,进行拓展算法环境生成,实现算法的环境拓展。
36.2)本发明一实施例中的运行环境动态管理的在线算法开发方法,在线编码过程中,通过预设内置变量,实现算法开发过程中,与上下游业务数据的有效结合。
37.3)本发明一实施例中的运行环境动态管理的在线算法开发方法,通过在线编码及调试,实现算法开发过程中快速定位编码异常。
38.4)本发明一实施例中的运行环境动态管理的在线算法开发方法,通过虚拟化部署及环境动态启动和销毁,实现算法运行资源的有效把控,降低系统风险。
附图说明
39.图1为本发明一实施例中的运行环境动态管理的在线算法开发方法流图;
40.图2为本发明一实施例中的运行环境动态管理的在线算法开发系统的功能架构图;
41.图3为本发明一实施例中的在线算法编辑器示意图;
42.图4为本发明一实施例中的任务模型算法组态界面图;
43.图5为本发明一实施例中的运行环境动态管理的在线算法开发系统框图;
44.图6为本发明一实施例中的运行环境动态管理的在线算法开发设备示意图。
具体实施方式
45.以下结合附图和具体实施例对本发明提出的一种运行环境动态管理的在线算法开发方法、系统及设备作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。
46.实施例一
47.请参看图1,本实施例提供了一种运行环境动态管理的在线算法开发方法,包括以下步骤:
48.s1:搭建算法开发的基础环境,该基础环境包括编程语言版本文件及基础依赖文件,并将基础环境中的文件进行隔离;
49.s2:构建算法组件,上传算法组件需要的依赖文件;在上传依赖文件的过程中,根据编程语言版本建立虚拟环境,对上传的依赖文件进行安装校验;安装成功后,汇总依赖文件并建立依赖关系图谱,得到环境库依赖清单;
50.s3:创建算法运行环境容器,从环境库依赖清单中选取编程语言版本与相应依赖
文件,建立拓展算法运行环境;
51.s4:通过算法编辑器对拓展算法进行在线编码、调试;
52.s5:将调试通过后的拓展算法代码集成至拓展算法运行环境中发布运行;
53.s6:在任务建模时,选取多个算法组件,对算法组件所处的算法环境进行动态管理,其中包括任务建模的训练期环境动态管理及运行期环境动态管理。
54.在步骤s1中,搭建算法开发的基础环境,该基础环境包括编程语言版本文件及基础依赖文件,并将基础环境中的文件进行隔离。
55.算法开发的基础环境包括硬件环境及软件环境,通常,硬件环境如一台服务器,包含cpu、gpu、内存、操作系统、网络配置、磁盘等基础的计算组件。软件环境如根据领域需要预置不同的软件组件,对应用任务进行细化,并通过构建算粒来实现,使得用户可以通过组件轻松搭建自己的应用。其中各软件组件如python 2.7.x的python系统或python 3.x系统,通过终端命令,如apt、pip、git来安装升级相关软件或依赖库。
56.在步骤s2中,构建算法组件,上传算法组件需要的依赖文件;在上传依赖文件的过程中,根据编程语言版本建立虚拟环境,对上传的依赖文件进行安装校验;安装成功后,汇总依赖文件并建立依赖关系图谱,得到环境库依赖清单。
57.其中,安装成功后,汇总依赖文件并建立依赖关系图谱之后,销毁该虚拟环境,释放资源。
58.当卸载依赖文件时,根据该依赖关系图谱进行校验,若待卸载的依赖文件与其他依赖文件存在依赖关系,或关联其他算法,则无法卸载;
59.若待卸载的依赖文件存在多个替代依赖文件,则允许卸载至最少存在一个替代依赖文件。
60.在步骤s3中,创建算法运行环境容器,从环境库依赖清单中选取编程语言版本与相应依赖文件,建立拓展算法运行环境。
61.容器可以作为虚拟机的一种替代品,它能够帮助开发者构建、迁移、部署和实例化应用。容器是进程的集合,这些进程共享了一个操作系统实例,但是独立于服务器系统中的其他进程。容器并不需要一个完整的操作系统,这个特性使得它们比虚拟机更加轻量。因为容器能够在数秒内启动,因此容器只用分配少量的资源,就能通过扩展来满足应用的需求。
62.现有的容器方案基本采用docker方案,docker是一种虚拟化技术,是构建在轻量级的虚拟化的手段lxc(linux container)之上的,是一种基于进程容器(processcontainer)的轻量级虚拟化解决方案。docker是以docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用户构建、发布和运行分布式应用的平台。docker相比其它虚拟化技术来说最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境、轻量级的paas、构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启动、停止来应对峰谷的web应用),docker是一个跨平台、可移植并且简单易用的容器解决方案。
63.在涉及windows操作系统的图形界面的应用程序时,可采用windows操作系统下的应用容器,如通过应用层兼容引擎、内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎实现的能兼容多个windows操作系统的应用容器。
64.在实际应用中,可根据需求采用docker容器技术或能兼容多个windows操作系统
的应用容器,实现拓展算法运行环境的创建。
65.在步骤s4中,通过算法编辑器对拓展算法进行在线编码、调试。
66.在通过算法编辑器对拓展算法进行在线编码、调试时,预先定义算法开发过程中的内置变量,用于与上下游算法业务的数据联动。
67.在线编码过程中进行实时调试时,需要启动第一进程和第二进程,其中,第一进程用于当前算法环境,第二进程用于连接拓展算法进行环境;并在第一进程与第二进程之间建立双向通行,包含读、写双通道。
68.将编写的算法执行代码及内置变量通过写通道,从第一进程转入第二进程中执行;在执行过程中,通过读通道从第二进程中读取执行过程信息及异常报错信息至第一进程,并持久化至本地文件中进行存储。
69.同时,通过websocket工具,将执行过程信息及异常报错信息滚动打印至控制台,进行前端展示,以供调试排错。
70.在步骤s5中,将调试通过后的拓展算法代码集成至拓展算法运行环境中发布运行。
71.对于新开发的拓展算法需要进行调试,也就是算法训练。算法调试通过后,将算法代码与其运行环境,通过容器技术打包成镜像并发布成正式运行环境容器。
72.在步骤s6中,在任务建模时,选取多个算法组件,对算法组件所处的算法环境进行动态管理,其中包括任务建模的训练期环境动态管理及运行期环境动态管理。
73.其中,对任务建模的训练期环境动态管理时,将任务模型需要的多个算法组件集中在一个环境容器中启动算法环境,多个算法环境按串行顺序被使用;当任务模型的训练结束后,销毁环境容器,释放资源。
74.对任务建模的运行期环境动态管理时,对任务模型需要的每个算法组件,单独在一个环境容器中启动算法环境;每个环境容器根据需要常驻n个进程用于接收算法新任务,每个进程预加载算法依赖文件,接收上游算法业务数据后立即执行,返回结果。
75.本实施例中的运行环境动态管理的在线算法开发方法,从环境拓展方面,将所有的环境依赖拉平,建立统一的依赖管理平台,不同算法按需建立相应的运行环境,同时具备相应的环境、依赖管理功能;在业务结合方面,通过在算法中预设中间变量,将业务系统中的数据与拓展算法实现高效结合;从算法开发效率方面,提供在线开发编辑器,控制台实时调试,输出日志信息,快速定位错误。从系统稳定性方面,通过虚拟化部署以及环境动态启动和销毁,有效把控资源的使用。总体来说,本发明在平台化降低算法开发门槛的基础上,极大地提高平台化算法拓展的开发、运行效率。
76.应用例
77.请参看图2和3,下面以python作为算法开发编程语言为例,实现运行环境动态管理的在线算法开发方法:
78.1.上传依赖文件,对环境及依赖文件进行集中管理。
79.(1)首先,系统内置多个python编程语言主流版本(如2.7\3.5\3.7等),所有环境均为官方环境,只内置基础依赖,并通过文件隔离的方式,隔离各个基础环境文件。
80.(2)再通过python包管理工具(pip),查找、下载、准备好所需的python依赖包以及对应的requirements.txt文件(用于记录需装的依赖名称及版本信息),requirements.txt
主要信息如下表所示。
81.名称版本matplotlib3.2.2numpy1.19.5pandas1.0.5scipy1.5.1......
82.(3)上传过程中,根据所选编程语言版本建立虚拟环境,对上传的依赖包进行安装校验,然后滚动反馈安装信息,最后提示安装成功或失败。安装成功后,汇总各个依赖包名称、版本信息、依赖关系,并建立依赖关系图谱,结束后销毁该虚拟运行环境。
83.(4)卸载依赖时,则根据上步建立的依赖关系图谱进行校验,如有其他依赖包或者已关联的算法存在依赖关系,则无法删除当前依赖包。如果当前依赖包已有多个替代依赖包,则允许删除至最少有一个替代依赖包存在。
[0084][0085]
2.创建算法运行环境容器,安装所选依赖文件,成功后将环境绑定至集成开发环境。
[0086]
(1)对于系统内置算法,由于内置算法都是预开发完成,因而系统中会单独预集成相应内置环境(区别与后续的拓展算法环境),所有的内置算法统一在一个内置环境中运
行,因此更加稳定可控。
[0087]
(2)对于拓展算法,每一个拓展算法都有自己单独的运行环境,创建需要选择内置的python版本,从预设的环境库依赖清单中选择所需要的依赖文件,创建相应的拓展算法运行环境,作为后续拓展算法集成开发环境使用。
[0088]
3.在线算法开发分为训练期、运行期,并预先设置中间变量(内置变量)。
[0089]
(1)对于算法开发,提供在线算法开发编辑器,在此,我们定义完整开发过程分为训练期和运行期,分别对应训练模型、使用模型两个阶段。
[0090]
(2)对于训练期/运行期开发过程,预先定义开发过程的内置变量,用于跟平台上下游业务的数据联动。如下表所示,可以根据实际需要增减更多字段。因此在算法编码中,可以直接使用上述变量,其中对于model字段,里面的内容是用于存储模型信息,因此具体使用方法取决于对应算法开发人员。
[0091][0092]
4.算法业务代码在线编码、调试。编辑页面请参看图4。
[0093]
(1)编码过程中进行实时调试,实现路径具体为:除了当前业务环境的进程a之外,需要另启动一个进程b,用于连接拓展算法在步骤2中创建的指定运行环境,并在a、b两个进程之间建立双向通信,包含读、写双通道。
[0094]
(2)将已编写的算法脚本以及上述定义的内置变量,通过写通道,从a进程中传入b进程中进行执行;执行过程中,通过读通道,从b进程中读取至a进程中,包括执行过程信息、异常报错信息等,并持久化至本地文件中进行存储,设定定期清除策略。
[0095]
(3)执行读取的过程中,读取到的信息除了本地存储之外,也通过websocket技术,将运行过程中的输出信息、异常报错信息滚动打印在ide控制台中,进行前端展示以供调试排错。
[0096]
(4)调试过程中可随时点击终止按钮,立刻杀死b进程,从而实现终止功能,如遇下次重新调试,重复步骤(2)即可。
[0097]
调试过程中出现环境依赖选择不全、版本选择错误的情况下,可以重新回到步骤2新建拓展算法的指定运行环境。
[0098]
5.算法调试通过后,算法业务代码集成至运行环境中发布运行。
[0099]
(1)算法调试通过后,将算法代码与python运行环境,通过docker虚拟化打包成镜像并发布成正式运行环境容器,实现各个拓展算法的环境隔离。并将步骤4中使用到的调试环境资源销毁。
[0100]
(2)每个算法正式运行环境容器中添加必需的业务代码,用于满足对应的业务需求,如定义算法执行的调用接口等。
[0101]
6.实验任务环境动态管理。
[0102]
(1)上述步骤1-5中介绍了单个算法的完整创建流程。实际上单个算法,可以是内置算法、拓展算法,且均有一个训练环境容器、一个运行环境容器,分别对应训练期、运行期。
[0103]
(2)但实际上,每次完整的建模任务中大多包含多个算法组件。常见实验流程为:开始-》数据预处理-》特征工程-》机器学习建模-》模型评估-》结束。
[0104]
(3)对于训练期环境动态管理,由于训练建模对计算资源要求高,因此每次以实验任务为维度,汇总本次实验需要的算法组件,在一个容器中将这些算法环境启动,即一个实验任务对应一个环境容器,环境容器里面包含了本次所有组件的算法环境,算法环境使用为串行顺序。待实验结束后直接将环境容器销毁,释放资源。
[0105]
对于运行期环境动态管理,运行期对计算资源要求低,每个算法组件运行期都是单独容器,为满足高并发需求,每个容器可以根据需要常驻n个进程用于接收算法新任务,每个进程预加载算法依赖包,接收到上游业务数据后立即执行,返回结果。只需按照试验任务的组件顺序,串起各个组件的运行期环境即可。
[0106]
实施例二
[0107]
本实施例提供了一种运行环境动态管理的在线算法开发系统,实现上述实施例一中的运行环境动态管理的在线算法开发方法。请参看图5,该在线算法开发系统包括:
[0108]
基础环境平台1,用于搭建算法开发的基础环境,该基础环境包括编程语言版本文件及基础依赖文件,并将基础环境中的文件进行隔离;
[0109]
算法组件模块2,用于构建算法组件,上传所述算法组件需要的依赖文件;在上传依赖文件的过程中,根据所选编程语言版本建立虚拟环境,对上传的依赖文件进行安装校验;安装成功后,汇总依赖文件并建立依赖关系图谱,得到环境库依赖清单;
[0110]
环境容器3,用于创建算法运行环境容器,从所述环境库依赖清单中选取编程语言版本与相应依赖文件,建立拓展算法运行环境;
[0111]
算法编辑器4,用于对拓展算法进行在线编码、调试;
[0112]
算法运行模块5,用于将调试通过后的拓展算法代码集成至拓展算法运行环境中发布运行;
[0113]
动态管理模块6,用于在任务建模时,选取多个算法组件,对算法组件所处的算法环境进行动态管理,其中包括任务建模的训练期环境动态管理及运行期环境动态管理。
[0114]
上述基础环境平台1、算法组件模块2、环境容器3、算法编辑器4、算法运行模块5及动态管理模块6的功能及实现方式均如上述实施例一所述,在此不再赘述。
[0115]
实施例三
[0116]
本实施例提供了一种运行环境动态管理的在线算法开发设备。请参看图6,该运行环境动态管理的在线算法开发设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)510(例如,x86,arm架构处理器或fpga)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对运行环境动态管理的在线算法开发设备500中的一系列指令操作。
[0117]
进一步,处理器510可以设置为与存储介质530通信,在运行环境动态管理的在线
算法开发设备500上执行存储介质530中的一系列指令操作。
[0118]
运行环境动态管理的在线算法开发设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线的网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如windows serve、vista等等。
[0119]
本领域技术人员可以理解,图6示出的运行环境动态管理的在线算法开发设备的结构并不构成对运行环境动态管理的在线算法开发设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0120]
本发明的另一实施例还提供了一种计算机可读存储介质。
[0121]
该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质。该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行实施例一中的运行环境动态管理的在线算法开发设备方法的步骤。
[0122]
运行环境动态管理的在线算法开发方法如果以程序指令的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件的形式体现出来,该计算机软件存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0123]
所属领域的技术人员可以清楚地了解到,为描述得方便和简洁,上述描述的系统及设备的具体执行的识别内容,可以参考前述方法实施例中的对应过程。
[0124]
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式。即使对本发明作出各种变化,倘若这些变化属于本发明权利要求及其等同技术的范围之内,则仍落入在本发明的保护范围之中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1