CN114172908B - 一种端云协同处理方法及设备 - Google Patents
一种端云协同处理方法及设备 Download PDFInfo
- Publication number
- CN114172908B CN114172908B CN202210126284.3A CN202210126284A CN114172908B CN 114172908 B CN114172908 B CN 114172908B CN 202210126284 A CN202210126284 A CN 202210126284A CN 114172908 B CN114172908 B CN 114172908B
- Authority
- CN
- China
- Prior art keywords
- task
- machine learning
- target
- model
- event
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
Abstract
本申请实施例提供一种端云协同处理方法及设备。在本申请实施例中,由任务部署组件、支持端侧部署的数据流处理组件以及支持端云一致部署的计算容器相互配合实现端云协同方法,具体为:任务部署组件为机器学习任务提供端云之间的部署服务,数据流处理组件部署在端侧,用于为机器学习任务提供数据服务和触发服务,计算容器为机器学习任务提供多端一致、端云一致的运行环境和计算引擎,并支持机器学习任务的执行。本申请实施例考虑端侧和云侧的特征,实现端云优势互补,面向移动设备提供更实时、更合理、更安全的端云无缝衔接的协同服务,让机器学习任务在云侧和端侧之间无缝运行。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种端云协同处理方法及设备。
背景技术
近年来,以深度学习为代表的新一代人工智能(Artificial Intelligence,AI)技术快速发展,在图像、语音、自然语言处理等领域不断获得突破,并逐步进入应用落地阶段。云计算技术可为依赖机器学习任务的AI应用提供海量的计算、存储等服务,目前已经在语言翻译、语音识别、大数据等相关得到广泛应用,故现有AI应用所依赖的机器学习任务通常被部署在云侧设备上。
移动设备作为覆盖用户最广,用户使用频率最高,应用场景最丰富的端侧设备,是AI应用落地的重要载体,即AI应用被部署在移动设备上,实际运行过程中,AI应用向云侧设备发送服务请求,云侧设备利用AI应用对应的机器学习任务完成相关计算任务,并将任务执行结果返回给AI应用,由AI应用进行展示等进一步处理。
现有通过云侧设备集中执行机器学习任务的方式存在响应实时性差、端侧能力利用率低等问题,尤其是在移动设备的算力和存储等能力都已获得显著提升的情况下,移动设备蕴含的巨大潜能未能被充分利用。
发明内容
本申请的多个方面提供一种端云协同处理系统、方法、设备及存储介质,用以实现端云优势互补,面向移动设备提供更实时、更合理、更安全的端云无缝衔接的协同服务,让机器学习任务在云侧和端侧之间无缝运行。
本申请实施例提供一种端云协同处理系统,包括:任务部署组件、数据流处理组件以及计算容器,所述计算容器被部署在云侧设备和/或目标端侧设备上,所述数据流处理组件被部署在目标端侧设备上,所述目标端侧设备是指目标应用所在的端侧设备;所述任务部署组件,用于将目标应用所需的机器学习任务部署至所述计算容器所在的云侧设备和/或目标端侧设备上;所述数据流处理组件,用于根据所述目标应用产生的目标事件的信息,触发所述计算容器执行所述机器学习任务;所述计算容器自上而下包括所述机器学习任务所依赖的动态编程语言解释器、机器学习库和张量计算引擎,用于在所述数据流处理组件的触发下,基于所述动态编程语言解释器、机器学习库和张量计算引擎执行所述机器学习任务;其中,所述机器学习库是基于所述张量计算引擎提供的模型算子构建的,所述张量计算引擎提供的模型算子对应多种后端适配层,用于适配多种硬件资源。
本申请实施例提供一种端云协同处理方法,适用于端云协同处理系统,该方法包括:将目标应用所需的机器学习任务部署至计算容器所在的云侧设备和/或目标端侧设备上,所述目标端侧设备是指目标应用所在的端侧设备;根据所述目标应用产生的目标事件的信息,触发所述计算容器执行所述机器学习任务;在所述触发下,所述计算容器基于自上而下为所述机器学习任务提供的动态编程语言解释器、机器学习库和张量计算引擎,执行所述机器学习任务;其中,所述机器学习库是基于所述张量计算引擎提供的模型算子构建的,所述张量计算引擎提供的模型算子对应多种后端适配层,用于适配多种硬件资源。
本申请实施例提供一种计算机设备,包括:存储器和处理器;所述存储器,用于存储计算机程序;所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行本申请实施例提供的一种端云协同处理方法中的步骤。
本申请实施例提供一种存储有计算机程序的计算机存储介质,当所述计算机程序被处理器执行时,致使所述处理器能够实现本申请实施例提供的一种端云协同处理方法中的步骤。
在本申请实施例中,由任务部署组件、支持端侧部署的数据流处理组件以及支持端云一致部署的计算容器相互配合实现端云协同方法,其中,任务部署组件为机器学习任务提供端云之间的部署服务,数据流处理组件部署在端侧,用于为机器学习任务提供数据服务和触发服务,计算容器为机器学习任务提供多端一致、端云一致的运行环境和计算引擎,并支持机器学习任务的执行。本申请实施例考虑端侧和云侧的特征,实现端云优势互补,面向移动设备提供更实时、更合理、更安全的端云无缝衔接的协同服务,让机器学习任务在云侧和端侧之间无缝运行。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请示例性实施例提供的一种端云协同处理系统的结构示意图;
图2为本申请实施例提供的用于任务部署的系统架构图;
图3为本申请示例性实施例提供的一种面向移动端的数据流处理方法的流程示意图;
图4为本申请实施例提供的一种计算容器的结构示意图;
图5为本申请实施例提供的一种端云协同处理方法的流程示意图;
图6为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对现有机器学习任务由云侧设备集中执行存在的响应实时性差和端侧能力利用率低等技术问题,在本申请实施例中,提供一种端云协同处理系统,该系统考虑端侧和云侧的特征,实现端云优势互补,面向移动设备提供更实时、更合理、更安全的端云无缝衔接的协同服务,让机器学习任务在云侧和端侧之间无缝运行。
借助于本申请实施例提供的端云协同处理系统,机器学习任务既可以运行在端侧,也可以运行在云侧,并且根据应用场景的不同可以灵活调整。例如,针对简单应用场景,支持将机器学习任务部署到端侧,直接在端侧本地运行;针对复杂应用场景,支持将相对简单的机器学习任务部署在端侧运行,将相对复杂的机器学习任务部署在云侧运行,两者之间实现计算中继和协同;针对复杂且存在云侧资源依赖的应用场景,支持将机器学习任务部署在云侧运行。在此说明,在本申请实施例中,同一应用场景可以使用多种机器学习任务,多种机器学习任务之间可以相互关联,多种机器学习任务可以同时部署于端侧,也可以同时部署于云侧,或者,多种机器学习任务中可以部分(例如相对简单的)部署于端侧,部分(例如相对复杂的)部署于云侧。
针对任一机器学习任务,在该机器学习任务被部署在端侧运行的情况下,端侧无需向云侧请求模型服务,可节约网络延迟和云侧的处理耗时,提高模型服务的响应实时性,可以支持对实时性要求较高的各种AI应用,例如AR特效、人脸识别等。进一步,机器学习任务在端侧运行,这样就不需要将端侧产生的原始数据上传至云侧,还可以省略原始数据的集中式存储和云侧处理等环节,有利于提高数据安全性,降低用户隐私等敏感数据泄露的概率;而且,大量原始数据无需上传至云端进行处理,还可以节约云端的计算资源、网络带宽和存储资源。更进一步,机器学习任务在端侧运行,可以充分利用移动设备蕴含的巨大潜能,对端侧资源和能力实现充分的利用,有利于提升系统整体性能和效率。
其中,端云协同处理系统的实现解决如下三个核心问题:(1)计算问题,即如何让机器学习任务屏蔽端侧之间以及端侧与云侧之间的差异性,在各种端侧和云侧之间无缝执行问题。(2)数据问题,如何解决机器学习任务在端侧和/或云侧执行的数据输入问题。(3)部署问题,即如何将机器学习任务部署到端侧和/或云侧,而不影响机器学习任务所属应用的前台用户体验。基于此,如图1所示,本申请实施例提供的端云协同处理系统至少包括任务部署组件、支持端侧部署的数据流处理组件以及支持端云一致部署的计算容器。在实际应用中,本申请实施例提供的计算容器可被部署在云侧设备和/或目标端侧设备上,数据流处理组件可被部署在目标端侧设备上,其中,目标端侧设备是指目标应用所在的端侧设备。
在本实施例中,任务部署组件用于为机器学习任务提供端云之间的部署服务,为端云协同提供基础,解决端云协同面临的任务部署问题,保证端侧能够及时获取并运行机器学习任务,提高前台用户体验。具体地,任务部署组件,用于将目标应用所需的机器学习任务部署至计算容器所在的云侧设备和/或目标端侧设备上,具体可视计算容器的部署位置而定,计算容器的部署位置可由应用需求而定。具体地,如果需要在云侧和端侧同时部署机器学习任务,则可以在云侧设备和目标端侧设备部署计算容器,如果只需在端侧部署机器学习任务,则可以仅在目标端侧设备上部署计算容器,如果只需在云侧部署机器学习任务,则可以仅在云侧设备上部署计算容器。关于任务部署组件的工作原理可参见下述实施例,在此不做详述。
数据流处理组件位于目标端侧设备,负责对目标端侧设备上目标应用产生的数据流(或事件流)进行处理,为机器学习任务提供数据流处理和触发服务,即数据流处理组件可根据目标应用产生的目标事件的信息,触发计算容器执行机器学习任务,解决机器学习任务在端侧和/或云侧执行时的数据输入问题。具体地,数据流处理组件可根据目标应用产生的目标事件的信息,生成机器学习任务对应的触发事件序列,将该触发事件序列提供给计算容器,以触发计算容器根据该触发事件序列执行机器学习任务。关于数据流处理组件的工作原理可参见下述实施例,在此不做详述。
计算容器负责为机器学习任务提供执行环境和执行资源。本实施例的计算容器是一种支持多端一致、端云一致的计算容器,通过该计算容器可进行机器学习任务的运行。针对同一应用场景,所述多端是指部署有目标应用的不同的目标端侧设备,不同目标端侧设备的硬件资源可能不同,也可能相同;相应地,多端一致、端云一致是指对不同目标端侧设备和云侧设备而言,计算容器都是一样的,并不会因为设备的不同而有所不同。该计算容器是跨平台、且支持多端部署、端云一致部署的物理计算引擎,该计算容器可以基于张量计算引擎实现,可选地,张量计算引擎可以是但不限于MNN引擎,MNN引擎是一个轻量级的深度学习端侧推理引擎,旨在解决深度神经网络模型在端侧推理运行问题,包含深度神经网络模型的优化、转换和推理,具有高通用性和高性能的特点,支持多种训练框架的模型,常用深度学习算子,多种系统,以及卷积计算方式计算优化等。其中,MNN引擎的后端(Backends)开发者可以编写多份后端代码(称为后端适配层)用于适配各个平台硬件来实现张量计算引擎所在计算容器的跨平台特性,对于机器学习任务的开发者在使用时仅需编写一份机器学习任务的代码即可在计算容器支持的各目标端侧设备、云侧设备上跨平台执行。该计算容器可以屏蔽各种目标端侧设备之间以及目标端侧设备与云侧设备之间的硬件差异,既可以部署在各种目标端侧设备上,也可以部署在云侧设备上。其中,计算容器使得端云协同实现的关键。关于计算容器的实现结构以及工作原理可参见下述实施例,在此不做详述。
在本实施例中,目标端侧设备上部署有目标应用,目标应用泛指各种依赖机器学习任务的应用,例如可以是购物类应用、视频类应用、直播类应用、游戏类应用、语言处理类应用等等。举例说明:对于购物类应用可基于机器学习任务进行个性化商品推荐、首页商品推荐等,视频类应用可基于机器学习任务进行个性化视频推荐、视频剪辑、视频分类、特定内容检测等,直播类应用可基于机器学习任务进行人脸识别、人脸3D建模、语音处理等。本申请实施例对目标端侧设备的设备形态不做限制,目标端侧设备例如可以是但不限于:手机、平板电脑、可穿戴式智能设备、智能家居设备等,在下面图2中的目标端侧设备以手机为例示出。
本实施例给出一种机器学习任务的定义和其实现结构,机器学习任务的真实表达可以认为是一段程序代码,机器学习任务的实现结构可以包括前处理任务、机器学习模型和后处理任务。前处理任务用于对待输入至机器学习模型的输入数据进行预处理,例如,在计算机视觉场景,前处理任务需要执行以下数据预处理:图像旋转、图像放大、图像缩小等。机器学习模型是一个由一段数据表达的函数,数据记录了函数结构和函数参数。机器学习模型在经过训练(参数优化)后可以识别特定类型的模式,其具体作用是实现从一个样本到样本标签的映射。后处理任务用于机器学习模型的输出数据进行后处理,例如,机器学习模型的输出多个分类结果及其概率,根据多个分类结果的概率从多个分类结果中选择符合要求的最终分类结果进行输出。在本申请实施例中,可由任务部署组件在云侧设备上利用云侧资源进行机器学习模型的训练,以及生成机器学习模型的配置信息、脚本、模型资源,根据这些信息生成机器学习任务。机器学习任务可以机器学习任务可以不断更新,可能具有多个版本,对应的机器学习任务也会多有个版本。需要该机器学习任务的目标应用部署在目标端侧设备上,这就需要面向目标端侧设备进行机器学习任务的部署,其中,机器学习任务的部署过程既包括机器学习任务的首次部署过程,也包括机器学习任务更新升级后的更新部署过程。在本实施例中,由任务部署组件负责机器学习任务的部署、运维和管理。本申请实施例对任务部署组件的设备形态不做限制,任务部署组件例如可以是但不限于:单个服务器、云服务器或多个服务器组成的分布式服务器集群。下面实施例将详细介绍任务部署组件面向目标端侧设备进行机器学习任务部署的实施方式,即任务部署组件的工作原理如下:
图2为本申请实施例提供的用于任务部署的系统架构图。参见图2,该系统至少可以包括多个目标端侧设备10、应用接入网关20和任务部署组件30。其中,任务部署组件30可以实现为云端服务器,但不限于此。可选的,图2所示系统中的两两设备之间通过有线网络、或者无线网络进行交互。应当理解的是,图2中的目标端侧设备10、应用接入网关20和任务部署组件30的数量仅仅是示意性的。实际应用中,可以根据实际需求部署任意数量的目标端侧设备10、应用接入网关20和任务部署组件30。
在本实施例中,目标应用在其运行过程中,还需要与其对应的应用服务器40进行交互,例如响应用户页面浏览、页面跳转或者页面刷新等触发操作,向应用服务器40请求页面数据,或者,在监测到设定上报事件的情况下,主动向应用服务器40上报关联的事件数据,或者,接收应用服务器40主动推送的系统消息、订阅内容、社交互动提醒消息、营销活动消息等。其中,应用服务器40是目标端侧设备10中安装的应用程序(Application,APP)对应的服务器。例如,应用服务器40可以是购物APP对应的电商服务器、打车APP对应的管理出行服务的服务器、外卖APP对应的管理餐饮服务的服务器。
在本实施例的系统中,还包括应用接入网关20,该应用接入网关20负责帮助目标端侧设备10上的目标应用与应用服务器40之间进行数据交互。应用接入网关20是指设置在应用层负责在目标应用与应用服务器40之间进行数据交互的应用层网关。在本申请实施例中,应用接入网关20不仅可帮助目标端侧设备10与应用服务器40之间进行数据交互,应用接入网关20还可帮助目标端侧设备10与任务部署组件30之间进行数据交互,故该应用接入网关20也可以称为代理服务器。
其中,根据应用场景的不同,机器学习任务的部署需求和方式会有所不同。在一些应用场景中,可能需要考虑目标端侧设备10的差异性,针对不同的目标端侧设备10部署不同的机器学习任务。极端情况下,需要针对每个目标端侧设备10部署不同的机器学习任务,并且需要做好版本管理和更新,即“千人千模”场景。其中,千人千模泛指每个用户拥有自己独特的机器学习任务。在本实施例中,任务部署组件30支持面向海量目标端侧设备10进行个性化任务的部署。
在一些应用场景中,仅考虑因应用场景不同造成机器学习任务的差异性,不考虑目标端侧设备10的差异性,针对不同的目标端侧设备10部署在同一应用场景下部署相同的机器学习任务,实现机器学习任务的统一部署。
值得注意的是,任务部署组件30采用推拉结合的方式进行任务部署,通过“推”的方式使目标端侧设备获知有新版本的机器学习任务,再通过“拉”的方式由目标端侧设备下载相应的新版本的机器学习任务对应的任务资源。这种推拉结合的方式充分考虑配置更新数据量小、任务资源数据量大,以及应用请求频繁等特点,因此该方案具有架构简单、部署实时性强、任务部署组件30压力小和支持较大文件部署等优势。
进一步可选的,在“推”的实现方案中,考虑到无线网络不可控特性,摒弃了传统长连接通道方案,可以复用目标应用与其对应的应用服务器40之间的应用链路50,该应用链路50例如是HTTP(Hyper Text Transfer Protocol,超文本传输协议)请求通道,在目标端侧设备10通过移动APP向其对应的应用服务器40上传诸如HTTP请求的请求信息时,在诸如HTTP请求的请求信息中携带目标端侧设备10侧的机器学习任务的当前版本信息;目标端侧设备10侧的机器学习任务的当前版本信息通过应用接入网关20被转发给任务部署组件30,任务部署组件30将本地保存的各个机器学习任务的版本信息与上传的目标端侧设备10侧的机器学习任务的当前版本信息进行比对,判断是否有新版本的机器学习任务可供目标端侧设备10使用,并在判断结果为是时,任务部署组件30向目标端侧设备10推送有机器学习任务可进行版本更新的消息,并进一步推送任务资源的资源下载地址,至此,任务部署组件30完成向目标端侧设备10的任务更新消息推送操作。当然,在判断结果为否时,任务部署组件30持续监测是否有新的机器学习任务。
进一步可选的,可以采用CDN或CEN网络作为机器学习任务的分发网络。基于此,在“拉”的实现方案中,目标端侧设备10根据任务部署组件30推送的CDN或CEN资源下载地址从CDN网络60或CEN网络70下载最新版本的任务资源,并根据最新版本的任务资源在目标端侧设备10本地部署新版本的机器学习任务。由于CDN网络60或CEN网络70本身具有分布式多节点的特点,因此设备侧拉取CDN资源或CEN资源时可以从设备侧附近CDN节点或者CEN节点下载,从而获得比较快的拉取速度。
可选的,在个性化部署场景中,任务部署组件30在确定目标应用有新版本机器学习任务的情况下,可拦截应用服务器发送给目标应用的消息,在该消息中添加版本更新通知信息,以借助于该消息向运行有目标应用的目标端侧设备提供版本更新通知信息;该目标端侧设备接收应用服务器发送给目标应用的消息,从该消息中获取版本更新通知信息,根据该版本更新通知信息确定目标应用有新版本的机器学习任务,于是在目标应用发送给应用服务器的消息中添加目标端侧设备对应的个性化信息并将添加个性化信息的消息发送出去,个性化信息包括设备信息和/或用户信息;任务部署组件30拦截目标应用发送给应用服务器的消息,从消息中获取目标端侧设备的个性化信息,确定与该目标端侧设备适配的个性化任务资源,并再次拦截应用服务器发送给目标应用的另一消息,将指向该个性化任务资源的第一资源下载地址添加至该另一消息中发送给目标端侧设备;目标端侧设备接收到应用服务器发送给目标应用的另一消息时,从该另一消息中获取第一资源下载地址,根据该第一资源下载地址下载该个性化任务资源,并根据该个性化任务资源在本地部署新版本的机器学习任务。
本申请实施例,任务部署组件30复用目标端侧设备10上应用与应用服务器40之间的应用链路50进行任务部署,不再建立和维护专门用于任务部署的长连接,另一方面采用推拉结合的方式进行任务部署,这两方面结合,既能解决任务部署组件30维护海量长连接造成的资源浪费和负担较重的问题,又能确保机器学习任务的及时触达目标端侧设备,使得面向海量目标端侧设备10进行任务部署得以实现。
关于数据流处理组件的工作原理如下:
在本申请实施例中,数据流处理组件为机器学习任务提供端云一致的数据服务,让数据在端云之间无缝计算和流转并作为端侧和云侧机器学习任务的计算输入。数据流处理组件的核心是端侧的数据流处理框架,其在端侧将用户使用目标应用过程中产生的数据流以合理的方式进行计算和使用,节省不必要的数据上传,同时降低云侧处理数据、存储数据的消耗。该数据流处理组件可以直接部署在端侧运行,采用任务树的方式对目标应用对应的机器学习任务及其触发事件序列进行组织管理,针对目标应用运行过程中发生的当前目标事件,通过查询任务树的方式以将当前目标事件与任务树上事件节点或叶子节点进行匹配,并根据匹配结果决策是否触发计算容器执行机器学习任务。由此,结合任务树可以自动、快速、准确地识别部署在端侧的机器学习任务的触发条件是否被满足,保证端侧的机器学习任务的自动、准确以及快速执行。进一步可选的,执行机器学习任务产生的数据处理结果既可以在端侧进行使用,还可以上传至云侧进行使用,进而能够让数据以合理的方式在端侧和/或云侧进行计算和使用,节省不必要的上传和云侧计算、存储消耗。
具体应用中,数据流处理组件可以利用数据流处理框架执行面向移动端的数据流处理方法。如图3所示,数据流处理框架执行面向移动端的数据流处理方法时,具体执行以下步骤:
101、预先生成目标应用对应的任务树,该任务树包括根节点、事件节点和叶子节点,每个叶子节点关联至少一个机器学习任务,且至少一个机器学习任务对应触发事件序列中的触发事件与从根节点到该叶子节点经过的事件节点按序对应;
102、当目标应用产生当前目标事件时,获取用于当前目标事件的候选事件节点,候选事件节点包括两类事件节点,第一类事件节点为根节点的下一级事件节点,第二类事件节点为上一目标事件在任务树匹配到的事件节点的下一级事件节点;
103、将当前目标事件与候选事件节点对应的触发事件进行匹配,以获取触发事件与当前目标事件匹配的至少一个候选事件节点作为目标事件节点;
104、对每个目标事件节点,若该目标事件节点的下一级节点中包括叶子节点,则根据从根节点到叶子节点经过的事件节点匹配到的目标事件的信息,执行叶子节点关联的至少一个机器学习任务。
在本实施例中,目标应用需要依赖机器学习任务,该机器学习任务可以被部署在目标端侧设备上,也可以被部署在云端设备,例如云服务器上。所述机器学习任务是指对数据进行处理的任务,机器学习任务的数据处理对象可以是端侧用户行为数据,该端侧用户行为数据可以采用埋点技术进行采集。例如,在目标应用关联的程序代码中植入一个或多个埋点API(Application Programming Interface,应用程序接口),调用埋点API采集相应的端侧用户行为数据。机器学习任务的数据处理对象也可以是机器学习模型运行过程中产生的过程数据,执行机器学习任务对过程数据进行处理,并将处理后的过程数据返回至机器学习模型,以供机器学习模型继续进行推理。例如,对机器学习模型产生的图像特征数据进行图像上采样或下采样处理,并将图像上采样或下采样处理的图像特征数据提供给机器学习模型,以供机器学习模型继续进行推理。当然,本实施例对数据处理对象不做限制。
在机器学习任务部署在目标端侧设备上的情况下,可采用上述实施例提供的部署方法,由任务部署组件将机器学习任务部署至目标端侧设备上。另外,需要说明的是,机器学习任务可以部署在目标端侧设备上,也可以部署在云侧,本实施例的数据流处理方法均适用。也就是说,无论机器学习任务部署在哪里,目标端侧设备端都可以按照本申请实施例提供的数据流处理方法来确定数据处理任务是否被触发执行。具体地,在机器学习任务部署在目标端侧设备上的情况下,则在步骤104中,可以直接触发部署于目标端侧设备的计算容器执行叶子节点关联的至少一个机器学习任务;在机器学习任务被部署在云侧设备上的情况下,则在步骤104中,可以将从根节点到叶子节点经过的事件节点匹配到的目标事件的信息作为触发事件序列上报至云侧设备,由部署于云侧设备的计算容器执行该叶子节点关联的至少一个机器学习任务。
在本实施例中,机器学习任务中可以包括但不限于:计算实体和任务配置信息。其中,计算实体包括用于实现数据处理技术逻辑的程序代码,该计算实体例如可以采用Python语言或C语言编写。例如,机器学习任务为图像预处理任务,则计算实体是可以执行图像预处理功能的程序代码。任务配置信息记录机器学习任务相关的配置信息,例如包括但不限于:任务名称、任务标识、存储地址、触发条件、等等。任务名称或任务标识均可以唯一标识机器学习任务,存储地址是指经过数据存储任务处理后的数据的存储地址。
在本实施例中,机器学习任务的触发条件可以是有一个或多个触发事件ID(Identity/Identifier的缩写)组成的触发事件序列,触发事件ID在触发事件序列中的位置表明对应的触发事件发生的先后顺序。应理解,当数据流处理组件检测到按序出现了触发事件序列中全部的触发事件时,满足机器学习任务的触发条件,机器学习任务被触发,计算容器需要执行机器学习任务。当然,若没有按序出现触发事件序列中全部的触发事件,则不满足机器学习任务的触发条件,机器学习任务不会被触发,计算容器不需要执行对应的机器学习任务。需要说明的是,机器学习任务与其对应的触发事件序列相关,可选地,触发事件序列可作为机器学习任务的部分或全部输入,也就是机器学习任务需要处理的部分或全部数据对象。
在本实施例中,触发事件可以是基础事件。基础事件是指随着目标端侧设备中用户操作产生的原始事件,基础事件基于用户操作不同例如可以但不限于分类成以下几种类别:与页面进入(page enter)操作对应的页面进入事件、与页面退出(page exit)操作对应的页面退出事件、与页面滑动(page scroll)操作对应的滚动事件、与控件点击(click)操作对应的点击事件、与曝光(exposure)操作对应的曝光事件。需要说明的是,曝光操作是指随着用户的其他交互操作(如页面进入、页面滑动、控件点击),某些特定内容(如商品、广告横幅)在目标端侧设备的屏幕上展示给了用户(此时便认为用户看到了该特定内容)。“特定内容出现在屏幕中”也可称为是“用户看到该特定内容”,此时会被记录为一次该特定内容的曝光事件。
在本实施例中,基础事件可以通过对用户在操作目标端侧设备上的目标应用产生的用户行为数据进行分析得到。基础事件的事件信息包括但不限于:事件ID、页面ID、时间戳、事件内容。其中,事件ID用于区分不同类型的基础事件,不同事件ID对应不同的基础事件。例如,事件ID采用数字的形式表示,事件ID分别为1(对应页面进入事件)、2(对应页面退出事件)、3(对应页面滚动事件)、4(对应点击事件)、5(对应曝光事件)。当然,事件ID采用数字的形式表示仅为示例,本实施例对事件ID的表示形式不做限制。
页面ID是指发生事件ID对应的基础事件所关联的页面的ID。例如,目标应用为购物类APP,该购物类APP例如包括首页面、购物车页面或系统消息页面等。当用户在首页面、购物车页面或系统消息页面上进行与基础事件相关的操作时,这些页面即为与基础事件关联的页面。
在本实施例中,用户使用目标应用过程产生一系列的基础事件按照时间先后顺序组成基础事件流(Basic Events)。在基础事件流的基础上还可构造页面事件流。页面事件流的构造过程如下:在新的基础事件进入基础事件流之后,根据新的基础事件的事件ID确定新的基础事件是否属于页面进入事件,在新的基础事件属于页面进入事件的情况下,确定出现新的页面事件,获取新的基础事件的事件ID和该新的基础事件所属页面的ID(简称页面ID),按照{页面 ID:[事件 ID]}的形式构建新的页面事件的信息,并加入页面事件流。其中,根据{页面 ID:[事件 ID]}可以获知页面 ID对应的页面上发生过事件ID对应的基础事件。页面事件流包括按照时间先后顺序产生的多个页面事件,不同页面事件所属页面ID不同,也即每个页面事件是一个页面ID标识的页面事件,一个页面事件可以包括一个或多个基础事件。
值得注意的是,每当出现新的基础事件进入基础事件流,可以判断该新的基础事件的页面ID与最晚加入至页面事件流的页面事件对应的页面ID是否一致,若一致,则新的基础事件的事件ID继续更新到最晚加入至页面事件流的页面事件的信息当中。随着加入同一页面事件的基础事件越来越多,同一页面ID下关联多个基础事件的事件ID,例如{页面ID:[事件ID,...,事件ID]}表示同一页面ID下关联的多个基础事件的事件ID。值得注意的是,在同一页面上检测到页面退出事件时,该页面ID对应的页面事件结束。同时,同一页面事件下属的基础事件包括从进入页面到退出页面之间的各个基础事件。
举例来说,在基于当前的用户行为数据检测到当前有基础事件d发生时,且基础事件d是页面进入事件,且获取基础事件d所在页面的页面ID,假设页面ID为D,构建出{D:d}页面事件加入至页面事件流中。基础事件d'到达后,基础事件d所在的页面ID仍然为页面D,则更新已构建的{D:d}页面事件为{D:d,d'}。
在本实施例中,目标应用的各类数据处理需求会对应多个不同的机器学习任务,每个机器学习任务对应触发事件序列,为了便于高效管理机器学习任务的触发,可以采用树结构对目标应用的各个机器学习任务及其对应的触发事件序列进行组织管理。为了便于理解和区分,将基于目标应用的各个机器学习任务及其对应的触发事件序列构建出的树结构作为任务树。该任务树包括根节点、事件节点和叶子节点,从根节点到叶子节点的路径上经过一个或多个事件节点。一个任务树只有一个根节点,事件节点和叶子节点的数量可以是一个或多个。任务树中任意一条“根节点-若干个事件节点-叶子节点”组成的路径唯一对应一个触发条件或触发事件序列,每个触发条件对应路径上的每个事件节点关联该触发条件中的一个触发事件,事件节点的节点标识包括触发事件的标识信息;根节点的节点标识用于标记触发条件的开始,根节点可以认为是触发条件对应的开始节点;叶子节点的节点标识用于标记触发条件的结束,叶子节点可以认为是触发条件对应的结束节点,叶子节点上关联存储满足触发条件的机器学习任务,叶子节点上关联的机器学习任务可以是一个或多个。进一步的,针对存在一个或多个相同的触发事件的不同触发条件,从根节点到子树根节点的路径上的事件节点为不同触发条件的共有的事件节点。在一可选实施例中,任务树可以采用字典树、二叉树和哈夫曼树,但不限于此。
实际应用中,随着时间推移,因数据处理需求发生改变可能需要更新已有机器学习任务的触发条件,或者,出现新的数据处理需求需要为目标应用部署新的机器学习任务。于是,进一步可选的,支持对已经构建出的目标应用的任务树进行更新。针对已有机器学习任务的触发条件发生更新时,根据更新后的触发条件更新任务树。针对新的机器学习任务被部署给目标应用时,获取新的机器学习任务对应的触发事件序列,作为待匹配的触发事件序列,并将待匹配的触发事件序列中的触发事件按序与任务树上各事件节点对应的触发事件进行匹配;若匹配到与待匹配的触发事件序列中的触发事件按序对应的目标路径,将新的机器学习任务与目标路径对应的叶子节点进行关联;若未匹配到与待匹配的触发事件序列中的触发事件按序对应的目标路径,以最后一个匹配成功的事件节点为子树的根节点,为待匹配的触发事件序列中未匹配中的触发事件构建子树,并将新的机器学习任务与子树的叶子节点进行关联。
具体而言,在将待匹配的触发事件序列中的触发事件按序与任务树上的各事件节点对应的触发事件进行匹配之前,在待匹配的触发事件序列的首部和尾部分别添加起始标记和结束标记,起始标记用于对应任务树的根节点,结束标记用于对应任务树上的叶子节点,位于起始标记和结束标记之间的触发事件用于对应任务树上的事件节点。
值得注意的是,位于待匹配的触发事件序列中第一个触发事件之前的位置称作首部,该首部用于添加根节点对应的起始标记;位于待匹配的触发事件序列中最后一个触发事件之后的位置称作尾部,该尾部用于添加叶子节点对应的结束标记。
针对已添加起始标记和结束标记的待匹配的触发事件序列,可以采用诸如深度优先搜索(Depth First Search,DFS)或者广度优先搜索((Breadth First Search,BFS)等图形搜索算法对任务树进行搜索,以识别任务树是否存在与待匹配的触发事件序列中的触发事件按序对应的目标路径,该目标路径是指从根节点到叶子节点经过的若干个事件节点形成的路径。值得注意的是,在搜索任务树时,从任务树的根节点出发,依次遍历任务树上各条路径上的事件节点,以确定是否存在与待匹配的触发事件序列中的触发事件按序对应的目标路径。若存在目标路径,则说明新的机器学习任务的触发条件与已经部署的机器学习任务的触发条件相同,针对这种情况无需在任务树上添加新的子树。若不存在目标路径,则说明新的机器学习任务与已经部署的机器学习任务的触发条件不同,针对这种情况需要在任务树上添加新的子树。子树的根节点是任务树上最后一个与待匹配的触发事件序列中触发事件匹配成功的事件节点,将待匹配的触发事件序列位于最后一个与任务树匹配成功的触发事件之后的触发事件依次作为子树的一个事件节点对应的触发事件,并为子树添加叶子节点,叶子节点关联新的机器学习任务,至此完成子树的创建。
在本实施例中,预先根据已部署给目标应用的机器学习任务创建生成任务树,任务树上每个叶子节点关联至少一个机器学习任务,且至少一个机器学习任务对应触发事件序列中的触发事件与从根节点到该叶子节点经过的事件节点按序对应。示例性的,在触发事件为基础事件时,对应的事件节点的节点标识为基础事件的事件ID;在触发事件为页面事件时,对应的事件节点的节点标识为页面事件的页面ID;于是,从根节点到叶子节点依次经过的事件节点对应的事件ID或页面ID形成触发事件序列,也即形成机器学习任务的触发条件。
在本实施例中,在目标应用的运行过程中,可采集用户使用目标应用过程中的用户行为数据,并分析用户行为数据以确定是否发生基础事件和/或页面事件等当前目标事件。实际应用中,用户在目标应用运行过程中发起的交互操作产生的基础事件可能是页面进入事件,也可能是除页面进入事件之外的其他基础事件,在基础事件是页面进入事件时,当前发生一件新的页面事件。于是,进一步可选的,为了及时准确识别当前目标事件,在一可选实现方式中,响应用户在目标应用运行过程中发起的交互操作,获取交互操作产生的基础事件,将基础事件添加至基础事件流中,并将基础事件作为当前目标事件,基础事件为预设事件类型中的一类事件;和/或判断基础事件是否为页面进入事件;若基础事件为页面进入事件,则根据基础事件的标识和基础事件所属页面的标识构建页面事件,并将页面事件作为当前目标事件。其中,预设事件类型根据实际需求设置,例如为页面进入事件、页面退出事件、页面滚动事件、点击事件、曝光事件中一种或多种。
在本实施例中,若发生目标事件,则进一步判断目标事件是否为触发计算容器执行机器学习任务的一个触发事件,以便保证机器学习任务的高效触发。具体而言,在目标应用运行过程中发生目标事件时,获取用于当前目标事件的候选事件节点,候选事件节点包括第一类事件节点和第二类事件节点,第一类事件节点为根节点的下一级事件节点,第二类事件节点为上一目标事件在任务树匹配到的事件节点的下一级事件节点。其中,第一类事件节点不能为空,是必须要有的候选事件节点,第二类事件节点的数量可以为0。在一可选实施例中,可以采用静态节点列表存储第一类事件节点和采用动态节点列表存储第二类事件节点,于是,可以获取静态节点列表和动态节点列表以实现获取用于当前目标事件的候选事件节点。值得注意的是,随着时间推移,不同时间点的上一目标事件有所不同,于是,动态节点列表随着时间发生动态变化,存储的是不同时间点对应的上一目标事件在任务树匹配到的事件节点的下一级事件节点。 而一般任务树的根节点的下一级事件节点不发生变化,于是静态节点列表一般不随着时间发生动态变化,保持固定状态。
在本实施例中,获取到候选事件节点之后,将当前目标事件与候选事件节点对应的触发事件进行匹配,以获取触发事件与当前目标事件匹配的至少一个候选事件节点作为目标事件节点。在候选事件节点来源于静态节点列表或者动态节点列表时,则在将当前目标事件与候选事件节点对应的触发事件进行匹配时,可以依次遍历静态节点列表和动态节点列表中的各事件节点;将当前遍历到的事件节点对应的触发事件与当前目标事件进行匹配,若两者匹配,则将当前遍历到的事件节点作为当前目标事件匹配到的目标事件节点。
在本实施例中,目标事件节点的数量可以为一个或多个。对每个目标事件节点,若该目标事件节点的下一级节点中包括叶子节点,则根据从根节点到叶子节点经过的事件节点匹配到的目标事件的信息,执行叶子节点关联的至少一个机器学习任务。对每个目标事件节点,若目标事件节点的下一级节点中包括事件节点,则将目标事件节点的下一级事件节点作为新的第二类事件节点替换候选事件节点中原有的第二类事件节点,以得到用于下一目标事件的候选事件节点。
值得注意的是,在目标事件节点的下一级节点为叶子节点时,说明该叶子节点关联的机器学习任务的触发条件被满足,此时可以进行机器学习任务执行阶段。当然,在目标事件节点的下一级节点为事件节点时,说明尚未满足机器学习任务的触发条件,尚不能执行机器学习任务。针对下一级节点为事件节点的情形,在检测到的当前目标事件与候选事件节点匹配结束之后,需要更新动态节点列表。于是,在一可选实现方式中,每当匹配到一个目标事件节点,对于该目标事件节点的每个下一级节点,判断该下一级节点是否为叶子节点;若该下一级节点为叶子节点,则输出该叶子节点关联的至少一个机器学习任务,以触发至少一个机器学习任务的执行操作;若该下一级节点为事件节点,则将该事件节点添加至动态缓存中;相应地,将目标事件节点的下一级事件节点作为新的第二类事件节点替换候选事件节点中原有的第二类事件节点,包括:在遍历完静态节点列表和动态节点列表中的所有事件节点之后,将动态缓存中的事件节点赋值给动态节点列表,并清空动态缓存。
在本实施例中,在任一叶子节点关联的机器学习任务的触发条件被满足时,根据该触发条件对应的从根节点到叶子节点经过的事件节点匹配到的目标事件的信息,触发计算容器执行叶子节点关联的至少一个机器学习任务。
关于计算容器的实现结构和工作原理如下:
在本申请实施例中,计算容器,为机器学习任务提供多端一致、端云一致的计算引擎,支持机器学习任务中的前处理操作、机器学习模型的运行和后处理操作。
图4为本申请实施例提供的一种计算容器的结构示意图。参见图4,该计算容器自上而下至少包括:机器学习任务所依赖的动态编程语言解释器、机器学习库和张量计算引擎。
在本实施例中,动态编程语言解释器可以是指能够对动态编程语言编写的程序代码进行解释并执行的解释器,也可以称为用于动态编程语言的虚拟机。相应地,机器学习任务的源代码可以是采用动态编程语言编写的。本实施例采用的动态编程语言例如包括但不限于:Python、JavaScript和Ruby。相应的,动态编程语言解释器例如包括但不限于:Python解释器、JavaScript解释器和Ruby解释器。优选地,可以采用Python语言,则机器学习任务是基于Python编写的。基于Python解释器(或称为PythonVM)支持动态运行下发的基于Python编写的机器学习任务,从而实现机器学习任务脱离应用版本做到按天独立迭代。
在本实施例中,机器学习库负责提供机器学习任务所需的部分库函数,以供任务开发人员根据该库函数编写机器学习任务,也就是说,机器学习任务可以使用机器学习库中的库函数。机器学习库是基于张量计算引擎提供的模型算子构建的。可选地,在张量计算引擎采用MNN引擎的情况下,基于张量计算引擎构建出的机器学习库包括以下至少一种:基于MNN(Mobile Neural Network)引擎构建的用于模型推理的机器学习库(简称模型推理库)、基于MNN引擎构建的用于模型训练的机器学习库(简称模型训练库)、基于MNN引擎构建的用于视觉处理的机器学习库(简称视觉处理库)和基于MNN引擎构建的用于矩阵运算的机器学习库(简称矩阵运算库)。MNN引擎一个轻量级的深度学习端侧推理引擎,旨在解决深度神经网络模型在端侧推理运行问题,包含深度神经网络模型的优化、转换和推理,具有高通用性和高性能的特点,支持多种训练框架的模型,常用深度学习算子,多种系统,以及卷积计算方式计算优化等。
其中,模型推理库中可以包括一个或多个与模型推理相关的库函数,例如包括但不限于:获取指定会话的输入张量及对应名称的库函数、获取指定会话的输出张量及对应名称的库函数和修改张量形状的库函数等。模型训练库中可以包括一个或多个与模型训练相关的库函数,例如包括但不限于:模型前向计算库函数、计算交叉熵库函数、模型参数存储库函数等。视觉处理库中可以包括一个或多个与视觉处理相关的库函数,例如包括但不限于:图像透视变换库函数、高斯模糊处理库函数和图像仿射变换库库函数等。矩阵运算库中包括一个或多个与矩阵运算相关的库函数,例如包括但不限于:矩阵乘法库函数、矩阵点乘库函数或者坐标变换库函数等等。
在本实施例中,张量(Tensor)是任意维度的向量或矩阵,张量计算即以张量作为输入输出的计算过程。张量(Tensor)计算引擎主要用于以模型算子(Operator,Op)为单元对外提供基础的张量计算能力。张量计算引擎主要工作在于:张量的定义、张量计算的实现及优化。张量计算引擎的执行流程一般是:(1)使用算子构建计算图;(2)张量计张量计算图;(3)在给定输入张量下,张量计算引擎执行计算图,得到并返回输出张量。
进一可选的,本实施例的张量计算引擎提供几何计算功能以及半自动搜索功能。几何计算服务是指将以简化模型算子为目标,将模型算子拆解为更基础的原子算子或形变算子。半自动搜索功能是在模型结构已知的情况下,在已有的高性能计算模块中,按照一定规则,搜索、组合出最适合模型的计算方案。关于几何计算功能和半自动搜索功能在后面实施例进行详细介绍。另外,本实施例的张量计算引擎还包括后端(backends)适配层,也可以简称为后端,主要是提供了一套统一的接口来隐藏后端的差异以支持多种异构设备,是使张量计算引擎适配不同硬件资源的指令集架构的软件层。可选地,可适配的硬件平台指令集架构包括但不限于但不限于:各版本的ARM指令集架构,例如ARM V7、ARM V8.2、ARM V64,OpenCL、Vulkan、Metal、X86 AVX、CUDA等;相应地,使得张量计算引擎可适配支持基于诸如ARM V7、ARM V8.2、ARM V64等安卓架构的CPU、支持提供OpenCL(Open ComputingLanguage,开放运算语言)、VulKan、Metal等图形程序接口的GPU,支持具有的CUDA(ComputeUnified Device Architecture,统一计算设备架构)的GPU,支持x86指令集、AVX指令集、AVX512指令集的CPU、GPU或NPU等异构设备。
在本实施例中,计算容器除了具有以上结构之外,还可以在上述数据流处理组件的触发下,基于动态编程语言解释器、机器学习库和张量计算引擎执行机器学习任务。在一可选实施例中,计算容器基于动态编程语言解释器、机器学习库和张量计算引擎执行机器学习任务的过程包括:在数据流处理组件的触发下,执行动态编程语言解释器,以将机器学习任务解释为多条机器指令,所述多条机器指令包括与机器学习任务中的模型算法任务对应的第一机器指令;依次执行多条机器学习任务,在执行到第一机器指令时,调用目标库函数中的第一库函数并执行第一库函数,所述第一库函数是第一机器指令调用的机器学习库中的库函数;进一步,在第一库函数涉及张量计算的情况下,调用张量计算引擎,在预先为所述模型算法任务适配出的目标硬件资源上,执行与所述第一库函数对应的目标模型算子以完成张量计算,所述目标模型算子是张量计算引擎提供的模型算子中与第一库函数对应的模型算子。其中,模型算法任务是指需要机器学习模型完成的任务,该模型算法任务通常涉及多个模型算子,每个模型算子具有输入张量形状,该输入张量形状一定程度上描述模型算子的输入数据信息,例如数据量等。每个模型算子的输入张量形状是在设计机器学习模型时确定的。
进一步可选地,本实施例的机器学习任务还包括与模型算法任务适配的前处理和/或后处理任务,则上述多条机器指令还包括与所述机器学习任务中的前处理和/或后处理任务对应的第二机器指令。基于此,计算容器执行机器学习任务的过程还包括:在执行到第二机器指令时,调用动态编程语言解释器提供的第二库函数并执行第二库函数,以完成前处理和/或后处理任务,第二库函数是第二机器指令调用的库函数,用以实现机器学习任务中的前处理和/或后处理任务。
进一步可选的,如图4所示,该计算容器还可包括:API(Application ProgrammingInterface,应用程序接口)层。该API层对外提供基于动态编程语言实现的标准API集合。该所述标准API集合例如可以包括所述动态编程语言解释器自带的第一类API和机器学习库透过所述动态编程语言解释器提供的第二类API,以供相关人员编写机器学习任务;其中,第一类API对应的库函数用于实现机器学习任务中的前处理和/或后处理任务,第二类API对应的库函数用于实现机器学习任务中的模型算法任务。其中,机器学习库透过动态编程语言解释器提供的第二类API可以是指机器学习库对外提供使用动态编程语言编写的第二类API。其中,第一类API与动态编程语言解释器可以提供的库函数的数量相同,两者具有一一对应关系,相应地,第二类API的数量与机器学习库中库函数的数量相同,两者具有一一对应关系。
可选的,第一类API例如包括但不限于图像处理类API和矩阵运算类API。其中,图像处理类API例如包括但不限于:图像透视变换API、高斯模糊处理API和图像仿射变换库API。矩阵运算类API例如包括但不限于:矩阵乘法API、矩阵点API或者坐标变换API等等。
可选的,第二类API例如包括但不限于:与模型推理相关的API和与模型训练相关的API。其中,与模型推理相关的API例如包括但不限于:获取指定会话的输入张量形状及对应名称的API、获取指定会话的输出张量形状及对应名称的API和修改张量形状的API。与模型训练相关的API例如包括但不限于:模型前向计算API、计算交叉熵API、模型参数存储API。
简单而言,机器学习任务可以使用第一类API实现前处理和/或后处理任务,并使用第二类API实现模型算法任务。基于此,计算容器执行机器学习任务的过程包括:在触发事件序列到达时,执行动态编程语言解释器,以将机器学习任务解释为多条机器指令;依次执行多条机器指令,针对当前执行到的机器指令,判断该机器指令的参数中是否包含待调用的API;若该机器指令的参数中包含待调用的API,且待调用的API为第二类API,确定该机器指令为第一机器指令;若该机器指令的参数中包含待调用的API,且待调用的API为第一类API,确定该机器指令为第二机器指令。对于执行到与机器学习任务使用的第一类API对应的第二机器指令时,可调用上述动态编程语言解释器提供的第二库函数对触发事件序列进行前处理和/或对模型计算产生的结果数据进行后处理;对于执行到与机器学习任务使用的第二类API对应的第一机器指令时,调用上述机器学习库中的第一库函数对所述前处理产生的结果数据进行模型计算;进一步,在第一库函数涉及张量计算的情况下,调用张量计算引擎动态在预先为所述模型算法任务适配出的目标硬件资源上,执行与所述第一库函数对应的目标模型算子以完成张量计算,并在模型任务完成后向上返回模型算法任务产生的结果数据。
进一步可选的,计算容器的运行依赖于其所在目标端侧设备或云侧设备的操作系统和硬件资源。计算容器可支持的操作系统例如包括但不限于:Android(安卓)、iOS(苹果)系统、Linux系统、Windows操作系统、MacOS(一种图像界面操作系统)、Docker(容器);硬件资源例如包括但不限于:CPU、GPU或NPU等。
进一步可选地,可借助于张量计算引擎的半自动搜索功能,预先为上述模型算法任务适配出目标硬件资源。半自动搜索功能即是一种运行时根据硬件资源信息和模型结构信息进行动态决策选取最高效运行方式的技术方案。需要预先实现不同硬件资源与不同模型算子实现的后端适配层,并相应地设定损失评估公式。在加载模型之前或加载时,根据设备硬件信息、模型算子、输入张量形状,按这些公式计算这些方案的计算性能,选择最优实现。具体地,在上述模型算法任务执行之前,根据该模型算法任务涉及的模型算子及其输入张量形状,采用半自动搜索算法,预先从多种后端适配层对应硬件资源中为该模型算法任务适配目标硬件资源。进一步,根据该模型算法任务涉及的模型算子及其输入张量形状,采用半自动搜索算法,预先从多种后端适配层对应硬件资源中为该模型算法任务适配目标硬件资源的实现方式可以是:
根据所述模型算法任务涉及的模型算子及其输入张量形状,计算所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数;根据所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数,选择性能参数符合要求的硬件资源,例如可以选择性能参数最优的硬件资源作为与所述模型算法任务适配目标硬件资源。
进一步,上述根据所述模型算法任务涉及的模型算子及其输入张量形状,计算所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数的实现方式可以是:针对每种后端适配层,在该后端适配层对应的硬件资源上分别执行上述模型算法任务涉及的每个模型算子对应的各种实现算法,以得到每个模型算子在采用各种实现算法时的损失性能分数;将每个模型算子在采用各种实现算法时的损失性能分数中的最小损失性能分数进行求和,将各个最小损失性能分数之和(即性能损失总分数),作为上述模型算法任务在该后端适配层上的性能参数。进而,在得到上述模型算法任务在每种后端适配层上的性能参数之后,从中选择性能参数最优的,例如性能损失总分数最小的硬件资源作为与上述模型算法任务适配的目标硬件资源。其中,每种硬件资源例如包括但不限于:内存资源和计算资源等,其中,计算资源例如包括但不限于:CPU(中央处理器,Central Processing Unit)、GPU(图形处理器,graphics processing unit)、NPU(Neural-network Processing Unit,嵌入式神经网络处理器)。
在本实施例中,模型算子是指张量计算引擎对外提供的可供机器学习库使用的具有机器学习意义的算子,例如包括卷积(Conv)算子、转置(Trans,transpose的缩写)算子、单目(Unary)算子、切片(Slice)算子、池化(Pool)算子等。Unary指代的是一类单目算子,其中实际包含多个算子,对应如 abs、sqrt、log、cos这样的对单个输入进行的数学操作。如果以张量为一个Unary算子的输入的话,那么会对张量中的每个元素进行该一元操作。模型算子的数量较多,直接针对每个模型算子,计算硬件资源对应的计算性能,计算量较大。故在本实施例中,可以结合几何计算原理,将模型算子分类成原子算子、形变算子和组合算子。其中,原子算子是指不能拆分或拆分后性能变差的模型算子,例如包括但不限于:单目算子(Unary、上面已举例);双目算子(Binary)如加减乘除;归约算子(Reduce)(如 取极值、求和、平均等)将输入张量在某个方向归约,使其维数降低一维的操作;光栅算子(Raster),用于完成数据在内存中的区域映射(或称为搬运),可通过对其进行自定义设置等效地实现不同的形变效果。形变算子的数量很多,但是对于只进行内存映射而没有数值计算的算子,可以通过一个光栅算子Raster来实现。光栅算子Raster通过存储输入张量到输出张量的内存映射信息,来实现各种形变算子。而映射关系通过存储内存的偏移(offset),行跨度(stride),大小(size)信息,在光栅算子Raster中通过固定的循环结构来存取数据即可。光栅算子Raster使用区域(Region)来存储变换信息。形变算子例如包括但不限于转置、切片、串联和排列等。组合算子可以分解为原子算子,组合算子例如包括但不限于:卷积操作、反卷机操作、池化操作、内积操作等操作符。形变算子和组合算子是由原子算子组合或拼装而成的。
几何计算负责把形变算子和组合算子拆解/转换为原子算子。它转换形变算子的原理是:先基于算子输入的形状计算算子输出的形状,再基于输入输出的形状和形变规则,计算出一系列线性内存搬运区域,按这些区域去搬运内存,等效于原始的形变算子实现。对于组合算子,可将形变部分提取出来,同样地计算内存搬运的区域,其他的可分解为原子算子。
因为模型算子被分类为原子算子、形变算子和组合算子,在这些不同类型的算子中,原子算子的数量较少,原子算子与多种硬件资源组合较少,因此在开发过程中,只需针对原子算子与硬件资源的组合开发对应的后端适配层即可,因此在为张量计算引擎实现模型算子对应的后端适配层时的开发工作量会大大减少。在半自动搜索过程中,可以将形变算子和组合算子拆解为原子算子进行性能计算。具体地,上述针对每种后端适配层,在该后端适配层对应的硬件资源上分别执行上述模型算法任务涉及的每个模型算子对应的各种实现算法,以得到每个模型算子在采用各种实现算法时的损失性能分数的实施方式包括:
针对每种后端适配层,且针对上述模型算法任务涉及的每个模型算子,可以识别该模型算子的类型;若该模型算子是原子算子,该原子算子会对应一种或多种实现算法,则针对该原子算子的每种实现算法,分别在该后端适配层对应的硬件资源上执行,以得到该原子算子在该实现算法下的性能损失分数;在得到该原子算子在各种实现算法下的性能损失分数之后,选择其中最小的性能损失分数作为该原子算子的性能损失分数。若该模型算子是形变算子或组合算子,该形变算子或组合算子会对应一种或多种拆解算法,每种拆解算法可以视为该形变算子或组合算子的一种实现算法,不同拆解算法可以将形变算子或组合算子拆解为不同的原子算子,然后针对拆解出的每个原子算子,采用上述方式得到每个原子算子对应的最小性能损失分数,将这些原子算子对应的最小性能损失分数进行求和,得到前述形变算子或组合算子的性能损失分数。进一步,在得到上述模型算法任务涉及的每个模型算子的性能损失分数之后,对这些模型算子的性能损失分数进行求和,作为该模型算法任务在该后端适配层对应硬件资源上执行时的性能参数。
在本实施例中,以卷积算子为例,其可以采用拆解算法例如包括但不限限于:滑动窗口(Slide Winodow)算法、将图片转换成矩阵的矩阵列的Im2Col算法+GEMM(GeneralMatrix Multiplication,通用矩阵乘)算法、用来加速卷积运算的Winograd算法+GEMM算法。其中,Im2Col算法+GEMM算法表示损失评估算法同时包括Im2Col算法和GEMM算法;Winograd算法+GEMM算法表示损失评估算法同时包括Winograd算法和GEMM算法。
进一步可选的,上述机器学习任务可以为多个,在存在多个机器学习任务的情况下,若计算容器所在云侧设备和/或端侧设备上的硬件计算资源具有多核,例如CPU为4核、8核等,则所述计算容器还用于:为多个机器学习任务分别创建动态编程语言解释器,以实现线程级的动态编程语言解释器机制(简称为线程级的虚拟机机制),每个动态编程语言解释器对应一个执行线程,所述动态编程语言解释器及其对应的机器学习任务在对应的执行线程中运行。
以硬件计算资源为CPU为例,若CPU为多核处理器,则可以多核处理器中的每个处理器中分别运行一个执行线程,这样,在存在多个机器学习任务的情况下,便可使多个机器学习任务及其对应的动态编程语言解释器分别在一个执行线程中运行,这样,能够保证同一时间有多个执行线程可以使用硬件计算资源的不同核,实现多线程并发执行,加快了机器学习任务的执行效率。
在本申请上述实施例中,由任务部署组件、支持端侧部署的数据流处理组件以及支持端云一致部署的计算容器相互配合实现端云协同方法,具体为:任务部署组件为机器学习任务提供端云之间的部署服务,数据流处理组件部署在端侧,用于为机器学习任务提供数据服务和触发服务,计算容器为机器学习任务提供多端一致、端云一致的运行环境和计算引擎,并支持机器学习任务的执行。本申请实施例考虑端侧和云侧的特征,实现端云优势互补,面向移动设备提供更实时、更合理、更安全的端云无缝衔接的协同服务,让机器学习任务在云侧和端侧之间无缝运行。
为了便于理解,下面介绍几种应用场景:
在一种应用场景中,目标应用为购物类APP,机器学习任务为用于向用户进行个性化商品推荐的商品推荐模型。在云侧资源上,预先训练出与每个用户适配的商品推荐模型,并采用上述实施例提供的个性化部署方法将商品推荐模型部署到用户使用的购物类APP中,与此同时,该购物类APP包括上述实施例提供的计算容器,随着用户在购物类APP上的浏览、点击、查看商品详情、查看商品评论以及加购物车等各种操作,采集并生成各种基础事件,当商品推荐模型对应的触发事件序列产生时,计算容器加载该商品推荐模型并采用上述实施例提供的方法运行该商品推荐模型,最终输出推荐给用户的目标商品,并由购物类APP将推荐的目标商品展示在相关页面上,以供用户查看和选购。
在另一种应用场景中,目标应用为直播类APP,机器学习任务为对直播内容进行打标的打标处理模型。在云侧资源上,预先训练出打标处理模型,并采用上述实施例提供的个性化部署方法将打标处理模型部署到主播使用的直播类APP中,与此同时,该直播类APP包括上述实施例提供的计算容器,随着直播过程的进程,不断生成直播内容,该直播内容包括直播画面和直播语音,计算容器会加载该打标处理模型并采用上述实施例提供的方法运行该打标处理模型,最终在直播内容中的关键内容上添加标记,并输出带有标记信息的直播内容,以供直播服务端对带有标记信息的直播内容做进一步处理。打标内容可以是一些隐私信息,重要信息或者特定商品信息等。
图5为本申请实施例提供的一种端云协同处理方法的流程示意图。该方法适用于端云协同处理系统,如图5所示,该方法包括:
501、将目标应用所需的机器学习任务部署至计算容器所在的云侧设备和/或目标端侧设备上,目标端侧设备是指目标应用所在的端侧设备。
502、根据目标应用产生的目标事件的信息,触发计算容器执行机器学习任务。
503、在触发下,计算容器基于自上而下为机器学习任务提供的动态编程语言解释器、机器学习库和张量计算引擎,执行机器学习任务;其中,机器学习任务是采用动态编程语言基于机器学习库中的库函数编写的,机器学习库是基于张量计算引擎提供的模型算子构建的,张量计算引擎提供的模型算子对应多种后端适配层,用于适配多种硬件资源。
进一步可选的,在触发下,计算容器基于自上而下为机器学习任务提供的动态编程语言解释器、机器学习库和张量计算引擎,执行机器学习任务,包括:在触发下,执行动态编程语言解释器,以将机器学习任务解释为多条机器指令,多条机器指令包括与机器学习任务中的模型算法任务对应的第一机器指令;在执行到第一机器指令时,调用目标库函数中的第一库函数并执行第一库函数,第一库函数是第一机器指令调用的库函数;以及在第一库函数涉及张量计算的情况下,调用张量计算引擎,在预先为所述模型算法任务适配出的目标硬件资源上,执行与所述第一库函数对应的目标模型算子以完成张量计算。
进一步可选的,多条机器指令还包括与机器学习任务中的前处理和/或后处理任务对应的第二机器指令,上述方法还包括:在执行到第二机器指令时,调用动态编程语言解释器提供的第二库函数并执行第二库函数,以完成前处理和/或后处理任务,第二库函数是第二机器指令调用的库函数。
进一步可选的,计算容器还包括基于动态编程语言实现的标准API集合,标准API集合包括动态编程语言解释器自带的第一类API和机器学习库透过动态编程语言解释器提供的第二类API,以供编写机器学习任务;其中,第一类API对应的库函数用于实现机器学习任务中的前处理和/或后处理任务,第二类API对应的库函数用于实现机器学习任务中的模型算法任务。
进一步可选的,预先为所述模型算法任务适配出目标硬件资源,包括:在所述模型算法任务执行之前,根据所述模型算法任务涉及的模型算子及其输入张量形状,计算所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数;根据所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数,选择性能参数符合要求的硬件资源作为与所述模型算法任务适配目标硬件资源。
进一步可选的,根据所述模型算法任务涉及的模型算子及其输入张量形状,计算所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数,包括:针对每种后端适配层,在所述后端适配层对应的硬件资源上分别执行所述模型算法任务涉及的每个模型算子对应的各种实现算法,以得到每个模型算子在采用各种实现算法时的损失性能分数;将每个模型算子在采用各种实现算法时的损失性能分数中的最小损失性能分数之和,作为所述模型算法任务在所述后端适配层上的性能参数。
进一步可选的,在机器学习任务为多个的情况下,上述方法还包括:为多个机器学习任务分别创建动态编程语言解释器,以实现线程级的动态编程语言解释器机制,每个动态编程语言解释器对应一个执行线程,动态编程语言解释器及其对应的机器学习任务在对应的执行线程中运行。
图5的端云协同处理方法的各步骤的具体实现方式已经在有关该端云协同处理系统的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤501至步骤503的执行主体可以为设备A;又比如,步骤501和502的执行主体可以为设备A,步骤503的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如501、502等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图6为本申请实施例提供的一种计算机设备的结构示意图。如图6所示,该计算机设备包括:存储器61和处理器62;
存储器61,用于存储计算机程序,并可被配置为存储其它各种数据以支持在计算平台上的操作。这些数据的示例包括用于在计算平台上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器61可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器62,与存储器61耦合,用于执行存储器61中的计算机程序,以用于:将目标应用所需的机器学习任务部署至计算容器所在的云侧设备和/或目标端侧设备上,目标端侧设备是指目标应用所在的端侧设备;根据目标应用产生的目标事件的信息,触发计算容器执行机器学习任务;在触发下,计算容器基于自上而下为机器学习任务提供的动态编程语言解释器、机器学习库和张量计算引擎,执行机器学习任务;其中,所述机器学习库是基于所述张量计算引擎提供的模型算子构建的,所述张量计算引擎提供的模型算子对应多种后端适配层,用于适配多种硬件资源。
进一步可选的,在触发下,计算容器基于自上而下为机器学习任务提供的动态编程语言解释器、机器学习库和张量计算引擎,执行机器学习任务,包括:在触发下,执行动态编程语言解释器,以将机器学习任务解释为多条机器指令,多条机器指令包括与机器学习任务中的模型算法任务对应的第一机器指令;在执行到第一机器指令时,调用目标库函数中的第一库函数并执行第一库函数,第一库函数是第一机器指令调用的库函数;以及在第一库函数涉及张量计算的情况下,调用张量计算引擎,在预先为所述模型算法任务适配出的目标硬件资源上,执行与所述第一库函数对应的目标模型算子以完成张量计算。
进一步可选的,多条机器指令还包括与机器学习任务中的前处理和/或后处理任务对应的第二机器指令,处理器62还用于:在执行到第二机器指令时,调用动态编程语言解释器提供的第二库函数并执行第二库函数,以完成前处理和/或后处理任务,第二库函数是第二机器指令调用的库函数。
进一步可选的,计算容器还包括基于动态编程语言实现的标准API集合,标准API集合包括动态编程语言解释器自带的第一类API和机器学习库透过动态编程语言解释器提供的第二类API,以供编写机器学习任务;其中,第一类API对应的库函数用于实现机器学习任务中的前处理和/或后处理任务,第二类API对应的库函数用于实现机器学习任务中的模型算法任务。
进一步可选的,处理器62在预先为所述模型算法任务适配出目标硬件资源时,具体用于:在所述模型算法任务执行之前,根据所述模型算法任务涉及的模型算子及其输入张量形状,计算所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数;根据所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数,选择性能参数符合要求的硬件资源作为与所述模型算法任务适配目标硬件资源。
进一步可选的,处理器62根据所述模型算法任务涉及的模型算子及其输入张量形状,计算所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数时,具体用于:针对每种后端适配层,在所述后端适配层对应的硬件资源上分别执行所述模型算法任务涉及的每个模型算子对应的各种实现算法,以得到每个模型算子在采用各种实现算法时的损失性能分数;将每个模型算子在采用各种实现算法时的损失性能分数中的最小损失性能分数之和,作为所述模型算法任务在所述后端适配层上的性能参数。
进一步可选的,在机器学习任务为多个的情况下,处理器62还用于:为多个机器学习任务分别创建动态编程语言解释器,以实现线程级的动态编程语言解释器机制,每个动态编程语言解释器对应一个执行线程,动态编程语言解释器及其对应的机器学习任务在对应的执行线程中运行。
进一步,如图6所示,该计算机设备还包括:通信组件63、显示器64、电源组件65、音频组件66等其它组件。图6中仅示意性给出部分组件,并不意味着计算机设备只包括图6所示组件。另外,图6中虚线框内的组件为可选组件,而非必选组件,具体可视排产设备的产品形态而定。本实施例的计算机设备可以实现为台式电脑、笔记本电脑、智能手机或IOT设备等终端设备,也可以是常规服务器、云服务器或服务器阵列等服务端设备。若本实施例的计算机设备实现为台式电脑、笔记本电脑、智能手机等终端设备,可以包含图6中虚线框内的组件;若本实施例的计算机设备实现为常规服务器、云服务器或服务器阵列等服务端设备,则可以不包含图6中虚线框内的组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由计算机设备执行的各步骤。
相应地,本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令被处理器执行时,致使处理器能够实现上述方法实施例中可由计算机设备执行的各步骤。
上述通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、6G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
上述电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种端云协同处理系统,其特征在于,包括:任务部署组件、数据流处理组件以及计算容器,所述计算容器被部署在云侧设备和/或目标端侧设备上,所述数据流处理组件被部署在目标端侧设备上,所述目标端侧设备是指目标应用所在的端侧设备;
所述任务部署组件,用于将目标应用所需的机器学习任务部署至所述计算容器所在的云侧设备和/或目标端侧设备上;
所述数据流处理组件,用于根据所述目标应用产生的目标事件的信息,触发所述计算容器执行所述机器学习任务;
所述计算容器自上而下包括所述机器学习任务所依赖的动态编程语言解释器、机器学习库和张量计算引擎,用于在所述数据流处理组件的触发下,基于所述动态编程语言解释器、机器学习库和张量计算引擎执行所述机器学习任务;
其中,所述机器学习任务是采用动态编程语言基于所述机器学习库中的库函数编写的,所述机器学习库是基于所述张量计算引擎提供的模型算子构建的,所述张量计算引擎提供的模型算子对应多种后端适配层,用于适配多种硬件资源;
其中,所述机器学习任务部署在端侧或者云侧,或者,所述机器学习任务中部分部署在端侧或者云侧,并且根据应用场景的不同灵活调整。
2.根据权利要求1所述的系统,其特征在于,在所述数据流处理组件的触发下,基于所述动态编程语言解释器、机器学习库和张量计算引擎执行所述机器学习任务,包括:
在所述数据流处理组件的触发下,执行所述动态编程语言解释器,以将所述机器学习任务解释为多条机器指令,所述多条机器指令包括与所述机器学习任务中的模型算法任务对应的第一机器指令;
在执行到第一机器指令时,调用所述目标库函数中的第一库函数并执行所述第一库函数,所述第一库函数是所述第一机器指令调用的库函数;以及
在所述第一库函数涉及张量计算的情况下,调用所述张量计算引擎,在预先为所述模型算法任务适配出的目标硬件资源上,执行与所述第一库函数对应的目标模型算子以完成张量计算。
3.根据权利要求2所述的系统,其特征在于,所述多条机器指令还包括与所述机器学习任务中的前处理和/或后处理任务对应的第二机器指令,所述计算容器还用于:
在执行到第二机器指令时,调用所述动态编程语言解释器提供的第二库函数并执行所述第二库函数,以完成所述前处理和/或后处理任务,所述第二库函数是所述第二机器指令调用的库函数。
4.根据权利要求3所述的系统,其特征在于,所述计算容器还包括基于所述动态编程语言实现的标准API集合,所述标准API集合包括所述动态编程语言解释器自带的第一类API和所述机器学习库透过所述动态编程语言解释器提供的第二类API,以供编写所述机器学习任务;
其中,所述第一类API对应的库函数用于实现所述机器学习任务中的前处理和/或后处理任务,所述第二类API对应的库函数用于实现所述机器学习任务中的模型算法任务。
5.根据权利要求2-4任一项所述的系统,其特征在于,预先为所述模型算法任务适配出目标硬件资源,包括:
在所述模型算法任务执行之前,根据所述模型算法任务涉及的模型算子及其输入张量形状,计算所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数;
根据所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数,选择性能参数符合要求的硬件资源作为与所述模型算法任务适配目标硬件资源。
6.一种端云协同处理方法,其特征在于,适用于端云协同处理系统,所述方法包括:
将目标应用所需的机器学习任务部署至计算容器所在的云侧设备和/或目标端侧设备上,所述目标端侧设备是指目标应用所在的端侧设备;
根据所述目标应用产生的目标事件的信息,触发所述计算容器执行所述机器学习任务;
在所述触发下,所述计算容器基于自上而下为所述机器学习任务提供的动态编程语言解释器、机器学习库和张量计算引擎,执行所述机器学习任务;
其中,所述机器学习任务是采用动态编程语言基于所述机器学习库中的库函数编写的,所述机器学习库是基于所述张量计算引擎提供的模型算子构建的,所述张量计算引擎提供的模型算子对应多种后端适配层,用于适配多种硬件资源;
其中,所述机器学习任务部署在端侧或者云侧,或者,所述机器学习任务中部分部署在端侧或者云侧,并且根据应用场景的不同灵活调整。
7.根据权利要求6所述的方法,其特征在于,在所述触发下,所述计算容器基于自上而下为所述机器学习任务提供的动态编程语言解释器、机器学习库和张量计算引擎,执行所述机器学习任务,包括:
在所述触发下,执行所述动态编程语言解释器,以将所述机器学习任务解释为多条机器指令,所述多条机器指令包括与所述机器学习任务中的模型算法任务对应的第一机器指令;
在执行到第一机器指令时,调用所述目标库函数中的第一库函数并执行所述第一库函数,所述第一库函数是所述第一机器指令调用的库函数;以及
在所述第一库函数涉及张量计算的情况下,调用所述张量计算引擎,在预先为所述模型算法任务适配出的目标硬件资源上,执行与所述第一库函数对应的目标模型算子以完成张量计算。
8.根据权利要求7所述的方法,其特征在于,所述多条机器指令还包括与所述机器学习任务中的前处理和/或后处理任务对应的第二机器指令,所述方法还包括:
在执行到第二机器指令时,调用所述动态编程语言解释器提供的第二库函数并执行所述第二库函数,以完成所述前处理和/或后处理任务,所述第二库函数是所述第二机器指令调用的库函数。
9.根据权利要求8所述的方法,其特征在于,所述计算容器还包括基于所述动态编程语言实现的标准API集合,所述标准API集合包括所述动态编程语言解释器自带的第一类API和所述机器学习库透过所述动态编程语言解释器提供的第二类API,以供编写所述机器学习任务;
其中,所述第一类API对应的库函数用于实现所述机器学习任务中的前处理和/或后处理任务,所述第二类API对应的库函数用于实现所述机器学习任务中的模型算法任务。
10.根据权利要求7所述的方法,其特征在于,预先为所述模型算法任务适配出目标硬件资源,包括:
在所述模型算法任务执行之前,根据所述模型算法任务涉及的模型算子及其输入张量形状,计算所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数;
根据所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数,选择性能参数符合要求的硬件资源作为与所述模型算法任务适配目标硬件资源。
11.根据权利要求10所述的方法,其特征在于,根据所述模型算法任务涉及的模型算子及其输入张量形状,计算所述模型算法任务在每种后端适配层对应硬件资源上执行时的性能参数,包括:
针对每种后端适配层,在所述后端适配层对应的硬件资源上分别执行所述模型算法任务涉及的每个模型算子对应的各种实现算法,以得到每个模型算子在采用各种实现算法时的损失性能分数;
将每个模型算子在采用各种实现算法时的损失性能分数中的最小损失性能分数之和,作为所述模型算法任务在所述后端适配层上的性能参数。
12.根据权利要求6-11任一项所述的方法,其特征在于,在所述机器学习任务为多个的情况下,所述方法还包括:
为多个机器学习任务分别创建动态编程语言解释器,以实现线程级的动态编程语言解释器机制,每个动态编程语言解释器对应一个执行线程,所述动态编程语言解释器及其对应的机器学习任务在对应的执行线程中运行。
13.一种计算机设备,其特征在于,包括:存储器和处理器;所述存储器,用于存储计算机程序;所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行权利要求6-12任一项所述方法中的步骤。
14.一种存储有计算机程序的计算机存储介质,其特征在于,当所述计算机程序被处理器执行时,致使所述处理器能够实现权利要求6-12任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210126284.3A CN114172908B (zh) | 2022-02-10 | 2022-02-10 | 一种端云协同处理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210126284.3A CN114172908B (zh) | 2022-02-10 | 2022-02-10 | 一种端云协同处理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114172908A CN114172908A (zh) | 2022-03-11 |
CN114172908B true CN114172908B (zh) | 2022-08-05 |
Family
ID=80489955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210126284.3A Active CN114172908B (zh) | 2022-02-10 | 2022-02-10 | 一种端云协同处理方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114172908B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117079256B (zh) * | 2023-10-18 | 2024-01-05 | 南昌航空大学 | 基于目标检测及关键帧快速定位的疲劳驾驶检测算法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108243216A (zh) * | 2016-12-26 | 2018-07-03 | 华为技术有限公司 | 数据处理的方法、端侧设备、云侧设备与端云协同系统 |
CN111626430A (zh) * | 2019-04-18 | 2020-09-04 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
CN113010181A (zh) * | 2021-03-24 | 2021-06-22 | 北京百度网讯科技有限公司 | 一种深度学习框架之中算子的部署方法、装置及电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10664766B2 (en) * | 2016-01-27 | 2020-05-26 | Bonsai AI, Inc. | Graphical user interface to an artificial intelligence engine utilized to generate one or more trained artificial intelligence models |
WO2018053717A1 (en) * | 2016-09-21 | 2018-03-29 | Accenture Global Solutions Limited | Dynamic resource allocation for application containers |
CN111488254A (zh) * | 2019-01-25 | 2020-08-04 | 顺丰科技有限公司 | 一种机器学习模型的部署与监控装置和方法 |
CN111258716B (zh) * | 2020-01-14 | 2023-06-27 | 钛链智云(厦门)信息科技有限公司 | 一种基于容器云平台的边缘机器学习系统及其方法 |
CN113313241A (zh) * | 2020-02-27 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 确定深度学习模型的张量信息的方法和计算装置 |
US20210398015A1 (en) * | 2020-06-19 | 2021-12-23 | Apple Inc. | Machine learning model compiler |
-
2022
- 2022-02-10 CN CN202210126284.3A patent/CN114172908B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108243216A (zh) * | 2016-12-26 | 2018-07-03 | 华为技术有限公司 | 数据处理的方法、端侧设备、云侧设备与端云协同系统 |
CN111626430A (zh) * | 2019-04-18 | 2020-09-04 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
CN113010181A (zh) * | 2021-03-24 | 2021-06-22 | 北京百度网讯科技有限公司 | 一种深度学习框架之中算子的部署方法、装置及电子设备 |
Non-Patent Citations (2)
Title |
---|
杨绍光等.云边协同关键技术及应用场景研究.《信息通信技术》.2020,(第04期), * |
范斌等.基于边云协同计算的智能审计系统架构技术.《现代计算机》.2020,(第03期), * |
Also Published As
Publication number | Publication date |
---|---|
CN114172908A (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230334368A1 (en) | Machine learning platform | |
Eismann et al. | A review of serverless use cases and their characteristics | |
US10891327B1 (en) | Computer-based systems and methods configured to utilize automating deployment of predictive models for machine learning tasks | |
KR102103902B1 (ko) | 컴포넌트 기반의 머신러닝 자동화 예측 장치 및 방법 | |
US10762678B2 (en) | Representing an immersive content feed using extended reality based on relevancy | |
CN107463434A (zh) | 一种分布式任务处理方法与设备 | |
US11645575B2 (en) | Linking actions to machine learning prediction explanations | |
Pääkkönen et al. | Extending reference architecture of big data systems towards machine learning in edge computing environments | |
CN111143039B (zh) | 一种虚拟机的调度方法、装置及计算机存储介质 | |
CN114172908B (zh) | 一种端云协同处理方法及设备 | |
Ferenc et al. | Deep-water framework: The Swiss army knife of humans working with machine learning models | |
Fowdur et al. | Big data analytics with machine learning tools | |
CN114168601B (zh) | 一种面向移动端的数据流处理方法及设备 | |
CN116720489B (zh) | 页面填充方法及装置、电子设备和计算机可读存储介质 | |
Tran et al. | Yet another method for heterogeneous data fusion and preprocessing in proactive decision support systems: distributed architecture approach | |
US20230244996A1 (en) | Auto adapting deep learning models on edge devices for audio and video | |
CN114168446B (zh) | 一种面向移动端运行算法模型的模拟评测方法及设备 | |
US11783221B2 (en) | Data exposure for transparency in artificial intelligence | |
US20170269893A1 (en) | Remote rendering of locally displayed content | |
CN114168177B (zh) | 一种支持海量移动设备的个性化任务处理方法及设备 | |
CN114676924A (zh) | 数据处理方法、装置和电子设备 | |
Li et al. | Enterprise precision marketing effectiveness model based on data mining technology | |
CN112288133A (zh) | 一种算法服务处理方法和装置 | |
Arjun et al. | Emerging IoT-Big Data Platform Oriented Technologies | |
CN116738081B (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 |