一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

算法应用元的运行框架和数据处理方法、设备及存储介质与流程

2022-06-29 16:21:19 来源:中国专利 TAG:


1.本公开实施例涉及人工智能技术领域,尤其涉及一种算法应用元的运行框架和数据处理方法、设备及存储介质。


背景技术:

2.目前,随着人工智能领域的发展,越来越多的ai(artificial intelligence,人工智能)算法被开发出来应用到各行各业。算法在应用的过程中需要不断地迭代,以提升算法的精度和算法的性能。
3.但是,现有情况下大部分算法迭代周期长,算法从开发、测试和部署上线存在流程复杂,成本高,专业要求高等劣势。因此,如何解决上述问题成为本领域技术人员的研究重点。


技术实现要素:

4.本公开实施例提供一种算法应用元的运行框架和数据处理方法、设备及存储介质。
5.第一方面,提供一种算法应用元的运行框架,其特征在于,所述运行框架包括:
6.算法应用元解析层,用于解析任务对应的算法应用元,得到解析结果;所述解析结果包括所述任务对应的配置文件和脚本文件;所述配置文件用于为所述算法应用元配置运行参数,所述脚本文件为处理所述任务的目标算法对应的脚本程序;
7.运行管线构建层,用于基于所述配置文件和所述脚本文件,构建目标算法的运行管线;
8.数据流处理层,用于基于所述运行管线对至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
9.在一些实施例中,所述运行管线构建层,还用于:基于所述配置文件,确定至少一个运行阶段和所述至少一个运行阶段中每一所述运行阶段对应的配置信息;所述配置信息包括所述运行阶段对应的运行顺序和脚本标识;基于每一所述运行阶段对应的脚本标识和所述脚本文件,确定每一所述运行阶段对应的运行脚本;基于每一所述运行阶段对应的运行顺序和运行脚本,构建处理所述任务的运行管线。
10.在一些实施例中,所述数据流处理层,还用于:基于负载均衡策略,将所述至少一个数据流分配至每一所述运行阶段中的至少一个线程;所述负载均衡策略用于控制任一所述运行阶段中的各所述线程的数据流数量均衡;基于每一所述运行阶段中的至少一个线程对所述至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
11.在一些实施例中,所述数据流处理层,还用于:针对所述至少一个数据流中的目标数据流,将所述目标数据流对应的数据处理任务分配至每一所述运行阶段中的目标线程;所述目标线程为所述运行阶段运行的至少一个线程中的一个线程。
12.在一些实施例中,所述数据处理任务用于处理所述目标数据流中携带数据包信息
的待处理数据包,所述数据包信息包括所述目标数据流对应的数据流标识;
13.所述数据流处理层,还用于:建立所述目标数据流对应的数据流标识与每一所述运行阶段中目标线程对应的线程标识之间的映射关系;
14.所述数据流处理层,还用于:基于所述待处理数据包对应的数据流标识,确定所述待处理数据包在每一所述运行阶段中对应的目标线程;基于每一所述运行阶段中的目标线程对所述目标数据流中的待处理数据包进行处理,得到所述目标数据流对应的处理结果。
15.在一些实施例中,所述数据流处理层,还用于:针对所述至少一个运行阶段中的当前运行阶段,从所述当前运行阶段对应的输入队列中获取待处理数据包作为所述当前运行阶段的输入数据包;基于所述当前运行阶段中目标线程运行的脚本程序处理所述待处理数据包,得到所述当前运行阶段的输出数据包;获取所述当前运行阶段的输出数据包的数据包类型,将数据包类型为输出类型的输出数据包作为所述目标数据流对应的处理结果。
16.在一些实施例中,所述数据流处理层,还用于:基于每一所述运行阶段对应的运行顺序,确定所述当前运行阶段对应的至少一个下一运行阶段;获取数据包类型为中间类型的输出数据包的目标阶段标识,在所述至少一个下一运行阶段中确定至少一个目标运行阶段;将数据包类型为中间类型的输出数据包添加至每一所述目标运行阶段对应的输入队列。
17.在一些实施例中,所述解析结果还包括格式信息;所述运行框架还包括检验层;
18.所述检验层用于基于所述格式信息中的输入格式信息对指令数据包进行格式校验,响应于所述指令数据包校验成功,将所述指令数据包添加至所述至少一个运行阶段中的头运行阶段对应的输入队列;所述指令数据包为数据流的起始数据包或终止数据包;和/或,
19.所述检验层用于基于所述格式信息中的输出格式信息对所述输出类型的输出数据包进行格式校验,响应于所述输出类型的输出数据包校验成功,输出所述输出类型的输出数据包。
20.在一些实施例中,所述运行框架还包括数据流管理层:
21.所述数据流管理层用于响应于数据流添加操作,基于所述负载均衡策略,将所述数据流添加操作对应的新增数据流分配至每一所述运行阶段中的至少一个线程;和/或,
22.所述数据流管理层用于响应于数据流删除操作,在每一所述运行阶段中释放所述数据流删除操作对应的删除数据流占用的线程资源。
23.在一些实施例中,所述解析结果还包括以下至少之一:模型文件、动态库文件和用户文档;
24.其中,所述模型文件为所述目标算法对应的算法模型;所述动态库文件用于被所述脚本文件对应的代码调用以使所述目标算法适用于当前平台;所述用户文档用于描述所述算法应用元的使用信息。
25.第二方面,提供一种处理数据处理方法,包括:
26.解析任务对应的算法应用元,得到解析结果;所述解析结果包括所述任务对应的配置文件和脚本文件;所述配置文件用于为所述算法应用元配置运行参数,所述脚本文件为处理所述任务的目标算法对应的脚本程序;
27.基于所述配置文件和所述脚本文件,构建处理所述任务的运行管线;
28.基于所述运行管线对至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
29.在一些实施例中,所述基于所述配置文件和所述脚本文件,构建目标算法的运行管线,包括:
30.基于所述配置文件,确定至少一个运行阶段和所述至少一个运行阶段中每一所述运行阶段对应的配置信息;所述配置信息包括所述运行阶段对应的运行顺序和脚本标识;
31.基于每一所述运行阶段对应的脚本标识和所述脚本文件,确定每一所述运行阶段对应的运行脚本;
32.基于每一所述运行阶段对应的运行顺序和运行脚本,构建处理所述任务的运行管线。
33.在一些实施例中,所述基于所述运行管线对至少一个数据流进行处理,得到每一所述数据流对应的处理结果,包括:
34.基于负载均衡策略,将所述至少一个数据流分配至每一所述运行阶段中的至少一个线程;所述负载均衡策略用于控制任一所述运行阶段中的各所述线程的数据流数量均衡;
35.基于每一所述运行阶段中的至少一个线程对所述至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
36.在一些实施例中,所述将所述至少一个数据流分配至每一所述运行阶段中的至少一个线程,包括:
37.针对所述至少一个数据流中的目标数据流,将所述目标数据流对应的数据处理任务分配至每一所述运行阶段中的目标线程;所述目标线程为所述运行阶段运行的至少一个线程中的一个线程。
38.在一些实施例中,所述数据处理任务用于处理所述目标数据流中携带数据包信息的待处理数据包,所述数据包信息包括所述目标数据流对应的数据流标识;
39.所述将所述目标数据流对应的数据处理任务分配至每一所述运行阶段中的目标线程,包括:建立所述目标数据流对应的数据流标识与每一所述运行阶段中目标线程对应的线程标识之间的映射关系;
40.所述基于每一所述运行阶段中的至少一个线程对所述至少一个数据流进行处理,得到每一所述数据流对应的处理结果,包括:基于所述待处理数据包对应的数据流标识,确定所述待处理数据包在每一所述运行阶段中对应的目标线程;基于每一所述运行阶段中的目标线程对所述目标数据流中的待处理数据包进行处理,得到所述目标数据流对应的处理结果。
41.在一些实施例中,所述基于每一所述运行阶段中的目标线程对所述目标数据流中的待处理数据包进行处理,得到所述目标数据流对应的处理结果,包括:
42.针对所述至少一个运行阶段中的当前运行阶段,从所述当前运行阶段对应的输入队列中获取待处理数据包作为所述当前运行阶段的输入数据包;
43.基于所述当前运行阶段中目标线程运行的脚本程序处理所述待处理数据包,得到所述当前运行阶段的输出数据包;
44.获取所述当前运行阶段的输出数据包的数据包类型,将数据包类型为输出类型的
输出数据包作为所述目标数据流对应的处理结果。
45.在一些实施例中,所述方法还包括:
46.基于每一所述运行阶段对应的运行顺序,确定所述当前运行阶段对应的至少一个下一运行阶段;
47.获取数据包类型为中间类型的输出数据包的目标阶段标识,在所述至少一个下一运行阶段中确定至少一个目标运行阶段;
48.将数据包类型为中间类型的输出数据包添加至每一所述目标运行阶段对应的输入队列。
49.在一些实施例中,所述解析结果还包括格式信息;所述方法还包括以下至少之一:
50.基于所述格式信息中的输入格式信息对指令数据包进行格式校验,响应于所述指令数据包校验成功,将所述指令数据包添加至所述至少一个运行阶段中的头运行阶段对应的输入队列;所述指令数据包为数据流的起始数据包或终止数据包;
51.基于所述格式信息中的输出格式信息对所述输出类型的输出数据包进行格式校验,响应于所述输出类型的输出数据包校验成功,输出所述输出类型的输出数据包。
52.在一些实施例中,所述方法还包括以下至少之一:
53.响应于数据流添加操作,基于所述负载均衡策略,将所述数据流添加操作对应的新增数据流分配至每一所述运行阶段中的至少一个线程;
54.响应于数据流删除操作,在每一所述运行阶段中释放所述数据流删除操作对应的删除数据流占用的线程资源。
55.在一些实施例中,所述解析结果还包括以下至少之一:模型文件、动态库文件和用户文档;
56.其中,所述模型文件为所述目标算法对应的算法模型;所述动态库文件用于被所述脚本文件对应的代码调用以使所述目标算法适用于当前平台;所述用户文档用于描述所述算法应用元的使用信息。
57.第三方面,提供一种数据处理装置,包括:
58.解析模块,用于解析目标算法对应的算法应用元,得到解析结果;所述解析结果包括所述目标算法对应的配置文件和脚本文件;所述配置文件用于为所述算法应用元配置运行参数,所述脚本文件为目标算法对应的脚本程序;
59.构建模块,用于基于所述配置文件和所述脚本文件,构建目标算法的运行管线;
60.处理模块,用于基于所述运行管线对至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
61.第四方面,提供一种数据处理设备,包括:存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法中的步骤。
62.第五方面,提供一种计算机存储介质,所述计算机存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述方法中的步骤。
63.基于上述实施例提供的算法应用元的运行框架,不仅可以解析处理所述任务的算法应用元,进而基于解析得到的配置文件和脚本文件构建处理所述任务的运行管线,提升了算法部署的灵活性、扩展性;同时,由于基于该运行管线对至少一个数据流进行处理,可
以同时处理多个数据流,提升了数据处理过程的处理效率。
附图说明
64.图1a为本公开实施例提供的一种算法应用元的运行框架的框架示意图;
65.图1b为本公开实施例提供的一种基于算法应用元的处理数据处理方法的流程示意图;
66.图2为本公开实施例提供的一种数据处理方法的流程示意图;
67.图3为本公开实施例提供的一种数据处理方法的流程示意图;
68.图4为本公开实施例提供的一种数据处理方法的流程示意图;
69.图5为本公开实施例提供的一种数据处理方法的流程示意图;
70.图6为本公开实施例提供的一种数据处理方法的流程示意图;
71.图7为本公开另一实施例提供的一种数据处理方法的流程示意图;
72.图8为本公开实施例提供的一种数据处理系统的系统架构示意图;
73.图9为本公开实施例提供的一种数据处理装置的组成结构示意图;
74.图10为本公开实施例提供的一种数据处理设备的硬件实体示意图。
具体实施方式
75.下面将通过实施例并结合附图具体地对本公开的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
76.需要说明的是:在本公开实例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述目标的顺序或先后次序。另外,本公开实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
77.对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释。
78.(1)人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生成一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
79.人工智能技术是一门综合学科,设计领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
80.(2)计算机视觉技术(computer vision,cv)计算机实际是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图像处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语
义理解、图像检索、ocr、视频分析、视频语义理解、视频内容/行为识别、三维物体重建、3d技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。
81.(3)图像/视频分析,是指对图像采集设备所采集到的图像进行分析处理,从而明确图像或视频中是否出现了特定事件。例如,通过对视频进行识别处理,分析出视频中的车辆是否出现了交通事故,或者是视频中的人是否跌倒等。
82.(4)算法应用元,是用于对图像或视频进行分析处理的软件单元,将指定场景下的图像或视频输入到算法应用元中,就可以得到该场景对应的分析结果。在一些实施例中,还可以继续基于算法应用元进行开发,例如,在算法应用元的基础上继续开发界面交互功能,通信功能等,从而基于算法应用元得到一个完整的应用软件。
83.算法应用元是用于对图像或视频进行智能分析的软件单元,能够应用于各种业务场景,例如,人流量预警场景、交通事故路段预警场景等。
84.下面说明本公开实施例提供的电子设备的示例性应用,本公开实施例提供的电子设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端(以下简称终端),也可以实施为服务器。
85.参见图1a,图1a是本公开实施例提供的算法应用元的运行框架的框架示意图。该算法应用元的运行框架10包括算法应用元解析层11、运行管线构建层12和数据流处理层13。
86.该算法应用元解析层11,用于解析任务对应的算法应用元,得到解析结果;所述解析结果包括所述任务对应的配置文件和脚本文件;所述配置文件用于为所述算法应用元配置运行参数,所述脚本文件为处理所述任务的目标算法对应的脚本程序。
87.在一些实施例中,任务对应的算法应用元即处理所述任务的目标算法对应的applet,所述applet是一种算法应用元,可以看作应用程序包(即以功能为单位的一个小程序),里面打包的是算法的模型、代码、配置项等内容,即一个具体的算法逻辑包。
88.在一些实施例中,可以基于该算法应用元的打包方式对获取到的算法应用元进行解析(解压);其中,服务器中可以通过zip工具打包所述目标算法对应的内容,得到目标算法对应的算法应用元,例如,直接通过linux zip命令打包,或者通过内部打包工具进行打包。
89.其中,该配置文件用于为目标算法应用元配置运行参数,所述运行参数可以是描述该算法应用元是如何组成的信息,也可以是描述该算法应用元是如何运行的信息。例如,所述配置信息可以包括该算法应用元的入口文件,所述入口文件说明了该算法应用元的运行入口。又如,所述配置信息可以包括该算法应用元的运行环境文件,所述运行环境文件描述了该算法应用元的运行软件环境、运行硬件环境(如所支持的显卡类型)、性能(如支持跑多少路)、兼容信息等。
90.其中,该脚本文件为处理所述任务的目标算法对应的脚本程序,所述脚本文件可以指定所述脚本程序的路径。通常情况下,所述脚本程序可以为lua脚本,脚本程序的作用就是执行该算法应用元中的算法。在另一些实施例中,该脚本程序还可以为javascript脚本,python脚本等,本公开对此不作限制。
91.该运行管线构建层12,用于基于所述配置文件和所述脚本文件,构建处理所述任务的运行管线。
92.在一些实施例中,处理所述任务的运行管线(即pipeline),指的是所述目标算法所属任务中包括的具有一定顺序的若干个运行阶段,或者所述目标算法所属任务中包括的具有一定顺序的若干个执行步骤。因为算法也是一个流水线,因此算法也存在其对应的运行管线。例如,横幅标语检测算法,先进行横幅对象检测,然后再看检测出的横幅对象携带的文字信息,最后再根据横幅对象携带的文字信息确定是否需要生成告警消息。
93.数据流处理层13,用于基于所述运行管线对至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
94.在一些实施例中,该算法应用元对应的任务为数据处理任务,在构建处理所述任务的运行管线之后,可以基于该运行管线处理该目标算法对应的数据处理任务,即获取输入数据,并将该输入数据输入至该运行管线,进而通过该运行管线处理该输入数据,并生成对应的处理结果。
95.在本实施例中,该输入数据可以包括至少一个数据流,每一数据流可以包括该数据流对应的按照时序排列的多个待处理数据包,上述基于运行管线对数据流进行处理,得到该数据流对应的处理结果实际上就是基于运行管线对多个待处理数据包中的至少一个待处理数据包进行处理,得到该至少一个待处理数据包对应的处理结果。
96.本公开实施例中对所述目标算法的类型并不做限制,所述目标算法可以为任一类型的算法。这里,所述算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。所述目标算法可以为人工智能领域的相关算法,例如,人工智能领域的智能视频分析算法、人脸识别算法、指纹识别算法、人体检测跟踪算法等。当然,所述目标算法也可以为其他领域的相关算法,并且通常情况下所述目标算法能够实现特定的业务功能。
97.在实际使用时,算法在应用中是需要不断迭代的,以提升算法的精度和算法的性能。这个迭代过程,指的就是算法从开发完成到测试完成、再从测试完成到部署上线供用户使用这一整套的流程。
98.基于上述实施例提供的算法应用元的运行框架,不仅可以解析处理所述任务的算法应用元,进而基于解析得到的配置文件和脚本文件构建处理所述任务的运行管线,提升了算法部署的灵活性、扩展性;同时,由于基于该运行管线对至少一个数据流进行处理,可以同时处理多个数据流,提升了数据处理过程的处理效率。
99.在一些实施例中,所述运行管线构建层,还用于:基于所述配置文件,确定至少一个运行阶段和所述至少一个运行阶段中每一所述运行阶段对应的配置信息;所述配置信息包括所述运行阶段对应的运行顺序和脚本标识;基于每一所述运行阶段对应的脚本标识和所述脚本文件,确定每一所述运行阶段对应的运行脚本;基于每一所述运行阶段对应的运行顺序和运行脚本,构建处理所述任务的运行管线。
100.在一些实施例中,所述数据流处理层,还用于:基于负载均衡策略,将所述至少一个数据流分配至每一所述运行阶段中的至少一个线程;所述负载均衡策略用于控制任一所述运行阶段中的各所述线程的数据流数量均衡;基于每一所述运行阶段中的至少一个线程对所述至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
101.在一些实施例中,所述数据流处理层,还用于:针对所述至少一个数据流中的目标数据流,将所述目标数据流对应的数据处理任务分配至每一所述运行阶段中的目标线程;所述目标线程为所述运行阶段运行的至少一个线程中的一个线程。
102.在一些实施例中,所述数据处理任务用于处理所述目标数据流中携带数据包信息的待处理数据包,所述数据包信息包括所述目标数据流对应的数据流标识;
103.所述数据流处理层,还用于:建立所述目标数据流对应的数据流标识与每一所述运行阶段中目标线程对应的线程标识之间的映射关系;
104.所述数据流处理层,还用于:基于所述待处理数据包对应的数据流标识,确定所述待处理数据包在每一所述运行阶段中对应的目标线程;基于每一所述运行阶段中的目标线程对所述目标数据流中的待处理数据包进行处理,得到所述目标数据流对应的处理结果。
105.在一些实施例中,所述数据流处理层,还用于:针对所述至少一个运行阶段中的当前运行阶段,从所述当前运行阶段对应的输入队列中获取待处理数据包作为所述当前运行阶段的输入数据包;基于所述当前运行阶段中目标线程运行的脚本程序处理所述待处理数据包,得到所述当前运行阶段的输出数据包;获取所述当前运行阶段的输出数据包的数据包类型,将数据包类型为输出类型的输出数据包作为所述目标数据流对应的处理结果。
106.在一些实施例中,所述数据流处理层,还用于:基于每一所述运行阶段对应的运行顺序,确定所述当前运行阶段对应的至少一个下一运行阶段;获取数据包类型为中间类型的输出数据包的目标阶段标识,在所述至少一个下一运行阶段中确定至少一个目标运行阶段;将数据包类型为中间类型的输出数据包添加至每一所述目标运行阶段对应的输入队列。
107.在一些实施例中,所述解析结果还包括格式信息;所述运行框架还包括检验层;
108.所述检验层用于基于所述格式信息中的输入格式信息对指令数据包进行格式校验,响应于所述指令数据包校验成功,将所述指令数据包添加至所述至少一个运行阶段中的头运行阶段对应的输入队列;所述指令数据包为数据流的起始数据包或终止数据包;和/或,
109.所述检验层用于基于所述格式信息中的输出格式信息对所述输出类型的输出数据包进行格式校验,响应于所述输出类型的输出数据包校验成功,输出所述输出类型的输出数据包。
110.在一些实施例中,所述运行框架还包括数据流管理层:
111.所述数据流管理层用于响应于数据流添加操作,基于所述负载均衡策略,将所述数据流添加操作对应的新增数据流分配至每一所述运行阶段中的至少一个线程;和/或,
112.所述数据流管理层用于响应于数据流删除操作,在每一所述运行阶段中释放所述数据流删除操作对应的删除数据流占用的线程资源。
113.在一些实施例中,所述解析结果还包括以下至少之一:模型文件、动态库文件和用户文档;
114.其中,所述模型文件为所述目标算法对应的算法模型;所述动态库文件用于被所述脚本文件对应的代码调用以使所述目标算法适用于当前平台;所述用户文档用于描述所述算法应用元的使用信息。
115.参见图1b,图1b是本公开实施例提供的数据处理方法的一个可选的流程示意图,
将结合图1b示出的步骤进行说明。
116.s101、解析任务对应的算法应用元,得到解析结果;所述解析结果包括所述任务对应的配置文件和脚本文件;所述配置文件用于为所述算法应用元配置运行参数,所述脚本文件为处理所述任务的目标算法对应的脚本程序。
117.在一些实施例中,任务对应的算法应用元即处理所述任务的目标算法对应的applet,所述applet是一种算法应用元,可以看作应用程序包(即以功能为单位的一个小程序),里面打包的是算法的模型、代码、配置项等内容,即一个具体的算法逻辑包。
118.在一些实施例中,可以基于该算法应用元的打包方式对获取到的算法应用元进行解析(解压);其中,服务器中可以通过zip工具打包所述目标算法对应的内容,得到目标算法对应的算法应用元,例如,直接通过linux zip命令打包,或者通过内部打包工具进行打包。
119.其中,该配置文件用于为目标算法应用元配置运行参数,所述运行参数可以是描述该算法应用元是如何组成的信息,也可以是描述该算法应用元是如何运行的信息。例如,所述配置信息可以包括该算法应用元的入口文件,所述入口文件说明了该算法应用元的运行入口。又如,所述配置信息可以包括该算法应用元的运行环境文件,所述运行环境文件描述了该算法应用元的运行软件环境、运行硬件环境(如所支持的显卡类型)、性能(如支持跑多少路)、兼容信息等。
120.其中,该脚本文件为处理所述任务的目标算法对应的脚本程序,所述脚本文件可以指定所述脚本程序的路径。通常情况下,所述脚本程序可以为lua脚本,脚本程序的作用就是执行该算法应用元中的算法。在另一些实施例中,该脚本程序还可以为javascript脚本,python脚本等,本公开对此不作限制。
121.s102、基于所述配置文件和所述脚本文件,构建处理所述任务的运行管线。
122.在一些实施例中,处理所述任务的运行管线(即pipeline),指的是所述目标算法所属任务中包括的具有一定顺序的若干个运行阶段,或者所述目标算法所属任务中包括的具有一定顺序的若干个执行步骤。因为算法也是一个流水线,因此算法也存在其对应的运行管线。例如,横幅标语检测算法,先进行横幅对象检测,然后再看检测出的横幅对象携带的文字信息,最后再根据横幅对象携带的文字信息确定是否需要生成告警消息。
123.s103、基于所述运行管线对至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
124.在一些实施例中,该算法应用元对应的任务为数据处理任务,在构建处理所述任务的运行管线之后,可以基于该运行管线处理该目标算法对应的数据处理任务,即获取输入数据,并将该输入数据输入至该运行管线,进而通过该运行管线处理该输入数据,并生成对应的处理结果。
125.在本实施例中,该输入数据可以包括至少一个数据流,每一数据流可以包括该数据流对应的按照时序排列的多个待处理数据包,上述基于运行管线对数据流进行处理,得到该数据流对应的处理结果实际上就是基于运行管线对多个待处理数据包中的至少一个待处理数据包进行处理,得到该至少一个待处理数据包对应的处理结果。
126.基于上述举例,以该数据处理任务为横幅标语检测任务为例,该至少一个数据流可以是不同设备获取的数据流,例如,不同地点的设备获取的数据流、不同设备类型获取的
数据流、检测同一对象的不同角度的设备获取的数据流等;该数据流可以为视频流、也可以为图像流等;在该数据流为图像流的情况下,该图像流包括按照时序排列的多个待处理图像,基于构建的运行管线依次对该多个待处理图像的至少一个待处理图像进行检测,得到所述至少一个待处理图像对应的检测结果,该检测结果用于表征该至少一个待处理图像对应的真实场景中是否存在非法横幅标语;在该数据流为视频流的情况下,该视频流包括按照时序排列的多个待处理视频,基于构建的运行管线依次对该多个待处理视频的至少一个待处理视频进行检测,得到所述至少一个待处理视频对应的检测结果,该检测结果用于表征该至少一个待处理视频对应的真实场景中是否存在非法横幅标语。
127.本公开实施例中对所述目标算法的类型并不做限制,所述目标算法可以为任一类型的算法。这里,所述算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。所述目标算法可以为人工智能领域的相关算法,例如,人工智能领域的智能视频分析算法、人脸识别算法、指纹识别算法、人体检测跟踪算法等。当然,所述目标算法也可以为其他领域的相关算法,并且通常情况下所述目标算法能够实现特定的业务功能。
128.在实际使用时,算法在应用中是需要不断迭代的,以提升算法的精度和算法的性能。这个迭代过程,指的就是算法从开发完成到测试完成、再从测试完成到部署上线供用户使用这一整套的流程。
129.在一些实施例中,该电子设备可以包括算法仓,在电子设备获取到该算法应用元后,可以在该算法仓中部署该算法应用元。算法仓中的算法应用元管理服务会在该算法应用元中添加签名信息,经过签名的算法应用元就可以分发给用户使用。该算法应用元可以被直接启动运行,在运行时会首先校验其签名是否正确,如果正确则按其打包内容运行,以实现所述目标算法对应的功能。
130.在本公开实施例中,该算法仓为一种通用的能够运行任何算法应用元的系统,即所述算法仓为一个特定的算法系统,且所述算法仓与部署在所述算法仓中的任一算法应用元解耦。现有技术中,是将算法逻辑打包到镜像中,因此算法逻辑与系统是耦合在一起的。例如,docker是一个开源的应用容器引擎,开发者可以打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,容器来源于docker镜像,而镜像可以由用户自制或由运行中的容器提交来生成,镜像生成后可以推送到镜像仓库中进行保存,也可以从镜像仓库拉取到本地以运行容器。也就是说,docker镜像是一种对应用程序及其运行环境的标准化封装,这样如果需要更新算法,则需要更新整个底座服务镜像,无法单独发布算法,导致算法上线效率低,迭代慢。
131.相比于上述现有技术中的方法,本公开实施例中是将目标算法定义为独立便携的算法应用元,无需安装,更加灵活。也就是说,本公开实施例中直接获取目标算法对应的算法应用元,使得目标算法也具备了灵活的部署迭代优势,进而能够在电子设备的算法仓系统中直接部署所述目标算法对应的算法应用元并启动运行,无需安装。
132.在本公开实施例中,由于直接解析算法应用元,基于解析得到的脚本文件和配置文件可以在电子设备中构建目标算法的运行管线,提升了算法部署的灵活性、扩展性;由于基于该目标算法的运行管线对至少一个数据流进行处理,可以同时处理多个数据流,提升了数据处理过程的处理效率。
133.在一些实施例中,所述解析结果还包括以下至少之一:模型文件、动态库文件和用户文档。
134.其中,所述模型文件为所述目标算法对应的算法模型。该目标算法可以包括多个算法模型,因此该模型文件也包括该多个算法模型。以该数据处理任务为横幅标语检测任务为例,该模型文件可以包括用于检测横幅对象的对象检测模块,用于识别标语的文字检测模型和用于识别该标语是否非法的语义检测模型。
135.其中,所述动态库文件用于被所述脚本文件对应的代码调用以使所述目标算法适用于当前平台。所述动态库文件可以为用户动态链接库,所述用户动态链接库中包含能被脚本信息中的脚本程序调用来完成某些工作的函数。
136.其中,所述用户文档用于描述所述算法应用元的使用信息。例如,该用户文档可以包括算法应用元的图标,以及所述算法应用元的用户使用说明。
137.参见图2,图2是本公开实施例提供的数据处理方法的一个可选的流程示意图,基于图1b,图1b中的s102可以包括s201至s202,将结合图2示出的步骤进行说明。
138.s201、基于所述配置文件,确定至少一个运行阶段和所述至少一个运行阶段中每一所述运行阶段对应的配置信息;所述配置信息包括所述运行阶段对应的运行顺序和脚本标识。
139.在一些实施例中,该目标算法包括至少一个运行阶段。以上述横幅标语检测算法,该横幅标语检测算法可以包括三个运行阶段,其中,第一运行阶段可以为横幅对象检测阶段,第二阶段可以为横幅对象携带的文字信息检测阶段,第三阶段可以为文字信息的语义检测阶段。
140.在本实施例中,该配置文件还包括每一运行阶段对应的配置信息。所述配置信息包括所述运行阶段对应的运行顺序和脚本标识,其中,该运行顺序用于确定所述至少一个运行阶段的先后顺序和数据传输方向;该脚本标识用于在脚本文件中获取运行阶段对应的运行脚本。
141.s202、基于每一所述运行阶段对应的脚本标识和所述脚本文件,确定每一所述运行阶段对应的运行脚本。
142.在本实施例中,该脚本文件包括运行该目标算法的所有程序的运行脚本,每一运行脚本均对应唯一的脚本标识,基于每一运行阶段对应的脚本标识可以从脚本文件中获取每一运行阶段对应的运行脚本。
143.其中,该运行阶段对应的配置信息可以包括以下至少之一:阶段标识,并发参数、运行脚本的脚本标识、运行顺序参数。示例性的,
144.该运行顺序参数为“stage2、stage3”,表示该运行阶段“stage1”之后运行的是运行阶段“stage2”和运行阶段“stage3”。示例性的,阶段标识对应的字段“name”可以设置为“stage1”;并发参数对应的字段“concurrency”可以设置为“1”;运行脚本对应的字段“entrypoint”可以设置为“stage1.lua”;运行顺序参数对应的字段“nexts”可以设置为“stage2、stage3”,表示该运行阶段“stage1”之后运行的是运行阶段“stage2”和运行阶段“stage3”。
145.s203、基于每一所述运行阶段对应的运行顺序和运行脚本,构建处理所述任务的运行管线。
146.在一些实施例中,构建好的运行管线可以按照每一运行阶段的运行顺序,依次调用每一运行阶段对应的运行脚本,进而对至少一个数据流进行处理。
147.在本公开实施例中,由于该算法应用元中的配置文件携带了每一运行阶段对应的脚本标识和脚本文件,可以确定每一运行阶段对应的运行脚本;同时,由于配置文件携带了每一运行阶段对应的运行顺序,可以基于每一运行阶段对应的运行脚本快速构建该目标算法对应的运行管线,提升了算法部署效率。
148.参见图3,图3是本公开实施例提供的数据处理方法的一个可选的流程示意图,基于上述任一实施例,以基于图1b为例,图1b中的s103可以更新为s301至s302,将结合图3示出的步骤进行说明。
149.s301、基于负载均衡策略,将所述至少一个数据流分配至每一所述运行阶段中的至少一个线程;所述负载均衡策略用于控制任一所述运行阶段中的各所述线程的数据流数量均衡。
150.在一些实施例中,每一运行阶段可以并行运行至少一个线程,不同的运行阶段可以运行不同数量的线程。例如,在存在第一运行阶段、第二运行阶段和第三运行阶段的情况下,第一运行阶段可以并行运行3个线程;第二运行阶段可以并行运行2个线程;第三运行阶段可以并行运行4个线程。
151.在一些实施例中,每一运行阶段可以并行运行至少一个线程,各所述运行阶段中并行运行的线程数量相同。例如,在存在第一运行阶段、第二运行阶段和第三运行阶段的情况下,第一运行阶段至第三运行阶段可以并行运行4个线程。
152.在一些实施例中,上述负载均衡策略可以从数据流的数量角度,控制所述至少一个数据流在每一运行阶段的负载均衡。即,针对所述至少一个运行阶段中的当前运行阶段,该负载均衡策略用于控制所述当前运行阶段中的每一线程承载相同数量的数据流。例如,在数据流为12路的情况下,基于上述举例,第一运行阶段中每一线程承载4路数据流的处理任务,第二运行阶段中每一线程承载6路数据流的处理任务,第三运行阶段中每一线程承载3路数据流的处理任务。在该数据流增加为14路,即增加了(a、b)2路的情况下,第二运行阶段中每一线程分别多承载1路数据流的处理任务,第一运行阶段中的每一线程均多承载新增的(a、b)2路数据流,即第一运行阶段通过3个线程处理每一路新增的数据流,第三运行阶段中的任意两个线程多承担1路数据流(a),另外两个线程多承担另1路数据流(b)。
153.在一些实施例中,可以通过s3011实现上述将所述至少一个数据流分配至每一所述运行阶段中的至少一个线程。
154.s3011、针对所述至少一个数据流中的目标数据流,将所述目标数据流对应的数据处理任务分配至每一所述运行阶段中的目标线程;所述目标线程为所述运行阶段运行的至少一个线程中的一个线程。
155.在一些实施例中,针对目标数据流,该目标数据流在每一运行阶段中仅存在于一个线程中,将该线程成为目标线程。因此,若存在n个运行阶段,该运行管线可以包括n个目标线程。
156.s302、基于每一所述运行阶段中的至少一个线程对所述至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
157.其中,在数据流在每一运行阶段中仅存在于一个线程中的情况下,基于每一所述
运行阶段中的目标线程对所述至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
158.在本公开实施例中,由于基于负载均衡策略用于控制任一所述运行阶段中的各所述线程的数据流数量均衡,可以提升该目标算法过程中的稳定性;同时,由于该负载均衡算法是基于数据流数量实现的,因此,在面对多路数据流的情况下,本公开实施例提供的数据处理方法仍可以表现出较强的稳定性。
159.在一些实施例中,所述数据处理任务用于处理所述目标数据流中携带数据包信息的待处理数据包,所述数据包信息包括所述目标数据流对应的数据流标识。参见图4,图4是本公开实施例提供的数据处理方法的一个可选的流程示意图,基于上述任一实施例,以基于图3为例,图1b中的s3011可以更新为s401,s302可以更新为s402至s403,将结合图4示出的步骤进行说明。
160.s401、针对所述至少一个数据流中的目标数据流,建立所述目标数据流对应的数据流标识与每一所述运行阶段中目标线程对应的线程标识之间的映射关系;所述目标线程为所述运行阶段运行的至少一个线程中的一个线程。
161.s402、基于所述待处理数据包对应的数据流标识,确定所述待处理数据包在每一所述运行阶段中对应的目标线程。
162.在一些实施例中,针对每一运行阶段,在建立数据流与该运行阶段对应的目标线程之间的映射关系之后,后续获取到该数据流中的其他待处理数据包之后,可以直接将该待处理数据包分配至目标线程,提升了处理效率。
163.s403、基于每一所述运行阶段中的目标线程对所述目标数据流中的待处理数据包进行处理,得到所述目标数据流对应的处理结果。
164.在一些实施例中,所述数据包信息还包括格式信息;
165.所述方法还包括以下至少之一:
166.基于所述格式信息中的输入格式信息对指令数据包进行格式校验,响应于所述指令数据包校验成功,将所述指令数据包添加至所述至少一个运行阶段中的头运行阶段对应的输入队列;所述指令数据包为数据流的起始数据包或终止数据包;
167.基于所述格式信息中的输出格式信息对所述输出类型的输出数据包进行格式校验,响应于所述输出类型的输出数据包校验成功,输出所述输出类型的输出数据包。
168.其中,在对该数据流进行处理的过程中,从该数据流获取第一个待处理数据包为起始数据包,获取的最后一个数据包为终止数据包,本公开将该起始数据包和终止数据包作为该数据流的指令数据包,该数据包的数据包类型为指令类型;该指令数据包携带表征数据流开始或结束的字段、所述数据流对应的配置信息和任务配置信息。
169.在本公开实施例中,由于从数据流中获取起始数据包或终止数据包的过程中,基于输入格式信息对该指令数据包进行格式校验,使得每一个进入运行管线的指令数据包均符合预设格式要求,可以避免运行管线处理该待处理数据包的过程中的系统崩溃概率;同时,由于在运行管线完成处理该待处理数据包之后,基于输出格式信息对输出类型的输出数据包进行校验后输出,可以提供准确的处理结果,在该处理结果需要进入其他算法应用元的情况下,也可以避免其他算法应用元的崩溃现象。
170.参见图5,图5是本公开实施例提供的数据处理方法的一个可选的流程示意图,基
于上述任一实施例,以基于图4为例,图4中的s403可以包括s501至s503;将结合图5示出的步骤进行说明。
171.s501、针对所述至少一个运行阶段中的当前运行阶段,从所述当前运行阶段对应的输入队列中获取待处理数据包作为所述当前运行阶段的输入数据包。
172.s502、基于所述当前运行阶段中目标线程运行的脚本程序处理所述待处理数据包,得到所述当前运行阶段的输出数据包。
173.s503、获取所述当前运行阶段的输出数据包的数据包类型,将数据包类型为输出类型的输出数据包作为所述目标数据流对应的处理结果。
174.其中,每一运行阶段在对该运行阶段对应的输入数据包进行处理之后,可以生成对应的输出数据包。该输出数据包不仅包括了上述数据流标识,还包括了该数据包对应的数据包类型。
175.在一些实施例中,该数据包类型可以包括以下至少之一:输出类型、预览类型、状态类型和中间类型。每一运行阶段(当前运行阶段)可以同时输出一种或多种数据包类型的输出数据包,例如,可以同时输出预览类型、输出类型、状态类型和中间类型四种类型的输出数据包。
176.在本实施例中,仅将数据包类型为输出类型的输出数据包作为所述目标数据流对应的处理结果。
177.需要说明的是,针对一个数据流,对应的运行管线可以包括多个可以生成输出类型的输出数据包的运行阶段,相应地,得到的该数据流的处理结果包括所有输出类型的输出数据包。例如,请参阅图6所示的运行管线,若其中的运行阶段a11、a14、a15和a16均可以生成输出类型的输出数据包,则该数据流的处理结果包括a11、a14、a15和a16中每一运行阶段得到的输出类型的输出数据包。
178.在一些实施例中,针对该当前运行阶段得到的中间类型的输出数据包,所述方法还可以包括:将数据包类型为中间类型的输出数据包添加至所述当前运行阶段对应的每一所述目标运行阶段的输入队列。在一些实施例中,可以通过s504至s506实现。
179.s504、基于每一所述运行阶段对应的运行顺序,确定所述当前运行阶段对应的至少一个下一运行阶段。
180.s505、获取数据包类型为中间类型的输出数据包的目标阶段标识,在所述至少一个下一运行阶段中确定至少一个目标运行阶段。
181.s506、将数据包类型为中间类型的输出数据包添加至每一所述目标运行阶段对应的输入队列。
182.其中,针对当前运行阶段,同一数据流在该当前运行阶段可以流向至少一个下一运行阶段,在该当前运行阶段只对应一个下一运行阶段的情况下,可以直接将该中间类型的输出数据包添加至该唯一一个下一运行阶段的输入队列;在该当前运行阶段对应至少两个下一运行阶段的情况下,可以先获取数据包类型为中间类型的输出数据包的目标阶段标识,基于该目标阶段标识在至少两个下一运行阶段中确定至少一个目标运行阶段,再将数据包类型为中间类型的输出数据包添加至每一所述目标运行阶段对应的输入队列。
183.例如,请参阅图6,针对运行阶段a12,该a12对应的下一运行阶段只有一个,即a14,在a12得到数据包类型为中间类型的输出数据包的情况下,会直接将该中间类型的输出数
据包添加至a14的输入队列中;针对运行阶段a13,该a13对应的下一运行阶段包括a15和a16两个运行阶段,此时,需要获取该中间类型的输出数据包携带的目标阶段标识,在该目标阶段标识为a15的情况下,仅将该中间类型的输出数据包添加至a15的输入队列中。
184.在一些实施例中,针对该当前运行阶段得到的预览类型的输出数据包,所述方法还可以包括:将数据包类型为预览类型的输出数据包传输至展示模块,所述展示模块用于展示所述数据流的处理过程。
185.在一些实施例中,针对该当前运行阶段得到的状态类型的输出数据包,所述方法还可以包括:解析所述状态类型的输出数据包,确定所述当前运行阶段的运行状态。其中,所述运行状态包括正常状态和异常状态,该异常状态还可以包括以下至少之一:异常代码和异常信息。
186.在一些实施例中,所述方法还包括以下至少之一:
187.响应于数据流添加操作,基于所述负载均衡策略,将所述数据流添加操作对应的新增数据流分配至每一所述运行阶段中的至少一个线程;
188.响应于数据流删除操作,在每一所述运行阶段中释放所述数据流删除操作对应的删除数据流占用的线程资源。
189.其中,在每一运行阶段中,该删除数据流占用的目标线程包括销毁(destroy)函数,在接收到该数据流删除操作之后,可以直接调用该运行阶段中目标线程的销毁函数,完成对该线程资源的释放。在一些实施例中,在调用该运行阶段中目标线程的销毁函数之前,可以检测该目标线程是否还承载其他数据流的处理任务,在该目标线程还承载其他数据流的处理任务的情况下,停止调用该运行阶段中目标线程的销毁函数。
190.下面,将说明本技术实施例在一个实际的应用场景中的示例性应用。
191.本公开实施例中的算法应用元applet的包格式为algo格式,其包结构包括:config(对应上述实施例中的配置文件),用于存放配置文件;schema(对应上述实施例中的格式信息),用于存放应用程序的输入输出格式定义与校验文件;script(对应上述实施例中的脚本文件),用于存放脚本文件,实现具体的逻辑;lib(对应上述实施例中的动态库文件),用于存放库文件;model(对应上述实施例中的模型文件),用于存放模型文件;doc(对应上述实施例中的用户文档),用于存放文档。
192.在部署的过程中,下载applet包并解压,将动态库和模型文件复制到合适的位置,运行配置中指定的applet入口脚本,构建applet运行管线(pipeline),applet开发使用脚本语言为lua,但可以很轻松替换为其他语言比如javascript,python等。
193.其中,运行管线(pipeline)pipeline是applet的处理逻辑流程,applet根据不同的业务逻辑配置不同的pipeline,一个pipeline可以包括多个stage(对应上述实施例中的运行阶段)。其中,每个stage处理一个模块的逻辑,同一个stage可以配置多个线程。其中decodestage和outputstage等为内置stage,可通过输出相应类型的数据包至outputstage和previewstage等。pipeline的配置方式可以为有向无环图的applet,其配置为stage列表,列表第一个stage为起始stage。
194.请参阅图6,其示出了一种算法应用元的运行管线配置示意图。可以看出,基于上述运行管线配置示意图可以清晰的得到多个stage(a11至a16)之间的连接关系,即可以得到多个stage中每一stage的运行顺序(数据方向)。
195.在一些实施例中,每个stage运行一个或者多个线程,每个线程的运行流程如图7所示。
196.s701、初始化(initiate)线程。
197.s702、是否需要优雅退出(gracefull exit)。
198.其中,在不需要优雅退出的情况下,执行s703、在需要优雅退出的情况下,执行s706。
199.s703、从队列中获取数据包。
200.其中,该队列为当前线程所在的stage对应的队列(对应上述实施例中的输入队列),该数据包对应上述实施例中的待处理数据包。
201.s704、处理该数据包。
202.其中,基于该当前进程中的process函数处理该数据包,得到输出数据包。
203.s705、处理该输出数据包或发送至下一个stage。
204.s706、销毁(destroy)线程。
205.其中,initiate、process、destroy为stage的入口函数。这里的process函数至关重要,先从输入队列中获取packet之后,给process函数处理,然后将process输出的packet分发出去,这样就驱动了整个pipeline的运行。
206.在一些实施例中,外部处理数据的基本单位是(数据)流,一路(数据)流称作一路解析任务,有其生命周期。当用户添加一路(数据)流处理任务,applet需要处理该路流的数据,直到该路(数据)流被删除为止。一个applet可以处理一路(数据)流,也可以同时处理多路(数据)流。
207.在一些实施例中,通用的数据包(packet)格式如下,通过packet type区分不同类型的数据包,比如运行阶段的输入数据包:指令类型的数据包(对应上述指令数据包)和帧数据包,其中,指令类型的数据包可以表征数据流的开始或结束,帧数据包为数据流中开始至结束之间的数据包;还可以包括运行阶段的输出数据包:输出类型的数据包、预览类型的数据包、状态类型的数据包和中间类型的数据包,其中,输出类型的数据包为该数据流对应的处理结果,该预览类型的数据包用于输入至展示模块,并通过展示模块展示该数据流的处理过程,该状态类型的数据包用于输入至状态模块,用于确定当前运行阶段的运行状态,该中间类型的数据包用于传递至下一个运行阶段。同时,还可以通过stream_id区分(数据)流,每种类型的数据有不同的扩展data格式。
208.在一些实施例中,可以基于负载均衡策略对每个stage中的多路(数据)流进行控制,使得同一路(数据)流在每个stage只会落在一个线程中。如图8所示,可以看出,数据流b1至b6在每stage均只落在一个线程中。
209.图9为本公开实施例提供的一种数据处理装置的组成结构示意图,如图9所示,数据处理装置900包括:
210.解析模块901,用于解析任务对应的算法应用元,得到解析结果;所述解析结果包括所述任务对应的配置文件和脚本文件;所述配置文件用于为所述算法应用元配置运行参数,所述脚本文件为处理所述任务的目标算法对应的脚本程序;
211.构建模块902,用于基于所述配置文件和所述脚本文件,构建处理所述任务的运行管线;
212.处理模块903,用于基于所述运行管线对至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
213.在一些实施例中,所述构建模块902,还用于:
214.基于所述配置文件,确定至少一个运行阶段和所述至少一个运行阶段中每一所述运行阶段对应的配置信息;所述配置信息包括所述运行阶段对应的运行顺序和脚本标识;基于每一所述运行阶段对应的脚本标识和所述脚本文件,确定每一所述运行阶段对应的运行脚本;基于每一所述运行阶段对应的运行顺序和运行脚本,构建处理所述任务的运行管线。
215.在一些实施例中,所述处理模块903,还用于:
216.基于负载均衡策略,将所述至少一个数据流分配至每一所述运行阶段中的至少一个线程;所述负载均衡策略用于控制任一所述运行阶段中的各所述线程的数据流数量均衡;
217.基于每一所述运行阶段中的至少一个线程对所述至少一个数据流进行处理,得到每一所述数据流对应的处理结果。
218.在一些实施例中,所述处理模块903,还用于:
219.针对所述至少一个数据流中的目标数据流,将所述目标数据流对应的数据处理任务分配至每一所述运行阶段中的目标线程;所述目标线程为所述运行阶段运行的至少一个线程中的一个线程。
220.在一些实施例中,所述数据处理任务用于处理所述目标数据流中携带数据包信息的待处理数据包,所述数据包信息包括所述目标数据流对应的数据流标识;所述处理模块903,还用于:建立所述目标数据流对应的数据流标识与每一所述运行阶段中目标线程对应的线程标识之间的映射关系;所述处理模块903,还用于:基于所述待处理数据包对应的数据流标识,确定所述待处理数据包在每一所述运行阶段中对应的目标线程;基于每一所述运行阶段中的目标线程对所述目标数据流中的待处理数据包进行处理,得到所述目标数据流对应的处理结果。
221.在一些实施例中,所述处理模块903,还用于:
222.针对所述至少一个运行阶段中的当前运行阶段,从所述当前运行阶段对应的输入队列中获取待处理数据包作为所述当前运行阶段的输入数据包;
223.基于所述当前运行阶段中目标线程运行的脚本程序处理所述待处理数据包,得到所述当前运行阶段的输出数据包;
224.获取所述当前运行阶段的输出数据包的数据包类型,将数据包类型为输出类型的输出数据包作为所述目标数据流对应的处理结果。
225.在一些实施例中,所述处理模块903,还用于:
226.基于每一所述运行阶段对应的运行顺序,确定所述当前运行阶段对应的至少一个下一运行阶段;
227.获取数据包类型为中间类型的输出数据包的目标阶段标识,在所述至少一个下一运行阶段中确定至少一个目标运行阶段;
228.将数据包类型为中间类型的输出数据包添加至每一所述目标运行阶段对应的输入队列。
229.在一些实施例中,所述解析结果还包括格式信息;所述处理模块903,还用于:
230.基于所述格式信息中的输入格式信息对指令数据包进行格式校验,响应于所述指令数据包校验成功,将所述指令数据包添加至所述至少一个运行阶段中的头运行阶段对应的输入队列;所述指令数据包为数据流的起始数据包或终止数据包;和/或,
231.基于所述格式信息中的输出格式信息对所述输出类型的输出数据包进行格式校验,响应于所述输出类型的输出数据包校验成功,输出所述输出类型的输出数据包。
232.在一些实施例中,所述处理模块903,还用于:响应于数据流添加操作,基于所述负载均衡策略,将所述数据流添加操作对应的新增数据流分配至每一所述运行阶段中的至少一个线程;和/或,
233.响应于数据流删除操作,在每一所述运行阶段中释放所述数据流删除操作对应的删除数据流占用的线程资源。
234.在一些实施例中,所述解析结果还包括以下至少之一:模型文件、动态库文件和用户文档;
235.其中,所述模型文件为所述目标算法对应的算法模型;所述动态库文件用于被所述脚本文件对应的代码调用以使所述目标算法适用于当前平台;所述用户文档用于描述所述算法应用元的使用信息。
236.以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本公开装置实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
237.需要说明的是,本公开实施例中,如果以软件功能模块的形式实现上述的数据处理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台设备执行本公开各个实施例方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本公开实施例不限制于任何目标的硬件和软件结合。
238.图10为本公开实施例提供的一种数据处理设备的硬件实体示意图,如图10所示,该数据处理设备1000的硬件实体包括:处理器1001和存储器1002,其中,存储器1002存储有可在处理器1001上运行的计算机程序,处理器1001执行程序时实现上述任一实施例的方法中的步骤。
239.存储器1002存储有可在处理器上运行的计算机程序,存储器1002配置为存储由处理器1001可执行的指令和应用,还可以缓存待处理器1001以及数据处理设备1000中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(random access memory,ram)实现。
240.处理器1001执行程序时实现上述任一项的数据处理方法的步骤。处理器1001通常控制数据处理设备1000的总体操作。
241.本公开实施例提供一种计算机存储介质,计算机存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一实施例的数据处理方法的步骤。
242.这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本公开存储介质和设备实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
243.上述处理器可以为目标用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本公开实施例不作具体限定。
244.上述计算机存储介质/存储器可以是只读存储器(read only memory,rom)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性随机存取存储器(ferromagnetic random access memory,fram)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(compact disc read-only memory,cd-rom)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
245.应理解,说明书通篇中提到的“一个实施例”或“一实施例”或“本公开实施例”或“前述实施例”或“一些实施例”意味着与实施例有关的目标特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”或“本公开实施例”或“前述实施例”或“一些实施例”未必一定指相同的实施例。此外,这些目标的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本公开的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
246.在未做特殊说明的情况下,数据处理设备执行本公开实施例中的任一步骤,可以是数据处理设备的处理器执行该步骤。除非特殊说明,本公开实施例并不限定数据处理设备执行下述步骤的先后顺序。另外,不同实施例中对数据进行处理所采用的方式可以是相同的方法或不同的方法。还需说明的是,本公开实施例中的任一步骤是数据处理设备可以独立执行的,即数据处理设备执行上述实施例中的任一步骤时,可以不依赖于其它步骤的执行。
247.在本公开所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
248.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单
元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
249.另外,在本公开各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
250.本公开所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
251.本公开所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
252.本公开所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
253.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。
254.或者,本公开上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、数据处理设备、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
255.在本公开实施例中,不同实施例中相同步骤和相同内容的说明,可以互相参照。在本公开实施例中,术语“并”不对步骤的先后顺序造成影响。
256.以上所述,仅为本公开的实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献