CN112099848B - 一种业务处理方法、装置及设备 - Google Patents
一种业务处理方法、装置及设备 Download PDFInfo
- Publication number
- CN112099848B CN112099848B CN202010954140.8A CN202010954140A CN112099848B CN 112099848 B CN112099848 B CN 112099848B CN 202010954140 A CN202010954140 A CN 202010954140A CN 112099848 B CN112099848 B CN 112099848B
- Authority
- CN
- China
- Prior art keywords
- program
- executed
- flow graph
- processing
- executable 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 8
- 238000012545 processing Methods 0.000 claims abstract description 221
- 238000010801 machine learning Methods 0.000 claims abstract description 88
- 238000004364 calculation method Methods 0.000 claims abstract description 84
- 238000010586 diagram Methods 0.000 claims abstract description 71
- 238000000034 method Methods 0.000 claims abstract description 65
- 230000006870 function Effects 0.000 claims description 191
- 230000008569 process Effects 0.000 claims description 34
- 238000012805 post-processing Methods 0.000 claims description 25
- 238000005457 optimization Methods 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 22
- 238000004458 analytical method Methods 0.000 claims description 16
- 238000012549 training Methods 0.000 claims description 14
- 238000005538 encapsulation Methods 0.000 claims description 11
- 238000013139 quantization Methods 0.000 claims description 8
- 239000000758 substrate Substances 0.000 claims 2
- 238000011161 development Methods 0.000 abstract description 45
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000001514 detection method Methods 0.000 description 66
- 238000013528 artificial neural network Methods 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 12
- 238000010276 construction Methods 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000008676 import Effects 0.000 description 7
- 238000003062 neural network model Methods 0.000 description 6
- 238000011176 pooling Methods 0.000 description 5
- 230000005284 excitation Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013145 classification model Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 241000282412 Homo Species 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000003909 pattern recognition Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 108091028043 Nucleic acid sequence Proteins 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computer Security & Cryptography (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种业务处理方法、装置及设备,该方法包括:获取与目标业务对应的目标计算流图;根据所述目标计算流图获取与目标业务对应的待执行程序,并根据所述目标计算流图获取与所述待执行程序对应的配置文件;通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果。通过本申请的技术方案,能够使用机器学习技术实现各种类型的业务处理,能够实现基于计算流图的应用开发框架。
Description
技术领域
本申请涉及人工智能技术领域,尤其是一种业务处理方法、装置及设备。
背景技术
机器学习是实现人工智能的一种途径,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。机器学习用于研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习更加注重算法设计,使计算机能够自动地从数据中学习规律,并利用规律对未知数据进行预测。
机器学习已经有了十分广泛的应用,例如:数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测***欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人运用等等。
虽然机器学习技术得到了广泛应用,但是,如何使用机器学习技术实现各种类型的业务处理,如人脸检测,车辆检测等,目前并没有合理的实现方式。
发明内容
本申请提供一种业务处理方法,所述方法包括:
获取与目标业务对应的目标计算流图;其中,所述目标计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;
根据所述目标计算流图获取与目标业务对应的待执行程序,并根据所述目标计算流图获取与所述待执行程序对应的配置文件;其中,所述待执行程序包括多个可执行文件,所述多个可执行文件与所述多个操作节点的功能类型相对应;所述配置文件包括所述多个可执行文件的输入输出关系,所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定;
通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述待执行程序内的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果,并基于所述配置文件中的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
本申请提供一种业务处理装置,所述装置包括:
获取模块,用于获取与目标业务对应的目标计算流图;其中,所述目标计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;根据所述目标计算流图获取与目标业务对应的待执行程序,并根据所述目标计算流图获取与所述待执行程序对应的配置文件;其中,所述待执行程序包括多个可执行文件,所述多个可执行文件与所述多个操作节点的功能类型相对应;所述配置文件包括所述多个可执行文件的输入输出关系,所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定;
处理模块,用于通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述待执行程序内的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果,并基于所述配置文件中的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
本申请提供一种业务处理设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下的步骤:
获取与目标业务对应的目标计算流图;其中,所述目标计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;
根据所述目标计算流图获取与目标业务对应的待执行程序,并根据所述目标计算流图获取与所述待执行程序对应的配置文件;其中,所述待执行程序包括多个可执行文件,所述多个可执行文件与所述多个操作节点的功能类型相对应;所述配置文件包括所述多个可执行文件的输入输出关系,所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定;
通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述待执行程序内的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果,并基于所述配置文件中的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
由以上技术方案可见,本申请实施例中,可以基于与目标业务对应的目标计算流图获取待执行程序和配置文件,通过待执行程序和配置文件对待处理数据进行业务处理,目标计算流图包括多个操作节点及各操作节点的功能类型,待执行程序包括与多个操作节点对应的多个可执行文件,配置文件包括多个可执行文件的输入输出关系,这些可执行文件能够实现机器学***台上。应用开发框架可以涉及机器学***台的硬件资源情况,进行针对性优化,平衡资源使用和业务处理效果,最大化的利用硬件资源。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1是本申请一种实施方式中的业务处理方法的流程图;
图2A是本申请一种实施方式中的目标业务的拆分示意图;
图2B是本申请一种实施方式中的计算流图的示意图;
图2C是本申请一种实施方式中的待执行程序的示意图;
图2D是本申请一种实施方式中的执行调度的流程示意图;
图3A是本申请一种实施方式中的应用开发框架的示意图;
图3B是本申请一种实施方式中的模型封装导入的处理示意图;
图4是本申请一种实施方式中的业务处理装置的结构图;
图5是本申请一种实施方式中的业务处理设备的结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在介绍本申请的技术方案之前,先介绍与本申请实施例有关的概念。
机器学习:机器学习是实现人工智能的一种途径,用于研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身性能。深度学习属于机器学习的子类,是一种使用数学模型对真实世界中的特定问题进行建模,以解决该领域内相似问题的过程。神经网络是深度学习的实现方式,为了方便描述,本文以神经网络为例,介绍神经网络的结构和功能,对于机器学习的其它子类,与神经网络的结构和功能类似。
神经网络:神经网络包括但不限于卷积神经网络(简称CNN)、循环神经网络(简称RNN)、全连接网络等,神经网络的结构单元包括但不限于卷积层(Conv)、池化层(Pool)、激励层、全连接层(FC)等,对此不做限制。
在实际应用中,可以根据不同需求,将一个或多个卷积层,一个或多个池化层,一个或多个激励层,以及一个或多个全连接层进行组合构建神经网络。
在卷积层中,通过使用卷积核对输入数据特征进行卷积运算,使输入数据特征增强,该卷积核可以是m*n大小的矩阵,卷积层的输入数据特征与卷积核进行卷积,可以得到卷积层的输出数据特征,卷积运算实际是一个滤波过程。
在池化层中,通过对输入数据特征(如卷积层的输出)进行取最大值、取最小值、取平均值等操作,从而利用局部相关性的原理,对输入数据特征进行子抽样,减少处理量,并保持特征不变性,池化层运算实际是一个降采样过程。
在激励层中,可以使用激活函数(如非线性函数)对输入数据特征进行映射,从而引入非线性因素,使得神经网络通过非线性的组合增强表达能力。
该激活函数可以包括但不限于ReLU(Rectified Linear Units,整流线性单元)函数,该ReLU函数用于将小于0的特征置0,而大于0的特征保持不变。
在全连接层中,用于将输入给本全连接层的所有数据特征进行全连接处理,从而得到一个特征向量,且该特征向量中可以包括多个数据特征。
以下结合具体实施例,对本申请实施例的技术方案进行说明。
本申请实施例中提出一种业务处理方法,参见图1所示,为业务处理方法的流程示意图,该方法可以应用于任意设备,该方法可以包括以下步骤:
步骤101,获取与目标业务对应的目标计算流图,该目标计算流图至少可以包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系。
在一种可能的实施方式中,可以采用如下方式获取目标计算流图:
步骤1011,获取与目标业务对应的初始计算流图,该初始计算流图至少可以包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系。
示例性的,本实施例中提出一种应用开发框架,各用户可以基于应用开发框架实现自身的业务,为区分方便,将该业务称为目标业务,如人脸检测,人体检测,车辆检测等等,对此目标业务不做限制。比如说,目标业务可以为用于实现人脸检测和性别检测的业务,参见图2A所示,为目标业务的示意图。
示例性的,针对目标业务来说,可以将该目标业务拆分为多个功能,参见图2A所示,可以将用于实现人脸检测和性别检测的目标业务拆分为视频解码功能,图像缩放功能,人脸检测功能,图像抠图功能,人脸性别分类功能。
基于目标业务的上述功能,目标业务的处理过程可以依次为,针对输入数据(如视频图像),先对该输入数据进行视频解码处理,然后,对视频解码处理后的数据进行图像缩放处理,然后,对图像缩放处理后的数据进行人脸检测处理,然后,对人脸检测处理后的数据进行图像抠图处理,然后,对图像抠图处理后的数据进行人脸性别分类处理,最终,可以输出人脸框和性别。
针对目标业务的每个功能,可以对应一个操作节点,在将目标业务拆分为多个功能后,可以获取到与多个功能对应的多个操作节点,在与目标业务对应的初始计算流图中,可以包括多个操作节点以及各操作节点的功能类型。
例如,将目标业务拆分为视频解码功能,图像缩放功能,人脸检测功能,图像抠图功能,人脸性别分类功能后,可以获取到与视频解码功能对应的视频解码操作节点,与图像缩放功能对应的图像缩放操作节点,与人脸检测功能对应的人脸检测操作节点,与图像抠图功能对应的图像抠图操作节点,与人脸性别分类功能对应的人脸性别分类操作节点,即初始计算流图包括视频解码操作节点,图像缩放操作节点,人脸检测操作节点,图像抠图操作节点,人脸性别分类操作节点。又例如,初始计算流图可以包括操作节点1以及操作节点1的功能类型“视频解码功能”、操作节点2以及操作节点2的功能类型“图像缩放功能”、操作节点3以及操作节点3的功能类型“人脸检测功能”、操作节点4以及操作节点4的功能类型“图像抠图功能”、操作节点5以及操作节点5的功能类型“人脸性别分类功能”。为了方便描述,以前面一种情况为例。
示例性的,关于多个操作节点的连接关系,可以基于目标业务的多个功能的关系确定,比如说,参见图2A所示,由于对视频解码处理后的数据进行图像缩放处理,并对视频解码处理后的数据进行图像抠图处理,因此,视频解码操作节点与图像缩放操作节点连接,且视频解码操作节点与图像缩放操作节点连接。由于对图像缩放后的数据进行人脸检测处理,因此,图像缩放操作节点与人脸检测操作节点连接。由于对人脸检测后的数据进行图像抠图处理,因此,人脸检测操作节点与图像抠图操作节点连接。由于对图像抠图后的数据进行人脸性别分类处理,因此,图像抠图操作节点与人脸性别分类操作节点连接。
综上所述,可以获取到视频解码操作节点,图像缩放操作节点,人脸检测操作节点,图像抠图操作节点,人脸性别分类操作节点之间的连接关系,至此,得到与目标业务对应的初始计算流图,参见图2B所示,为初始计算流图的示例。
示例性的,初始计算流图还可以包括子图,且子图由至少一个操作节点组成,比如说,可以将视频解码操作节点和图像缩放操作节点合并为一个子图1,即初始计算流图包括子图1,人脸检测操作节点,图像抠图操作节点,人脸性别分类操作节点,且子图1包括视频解码操作节点和图像缩放操作节点。综上所述,初始计算流图是一个分层结构,在初始计算流图的第一层,包括子图1,人脸检测操作节点,图像抠图操作节点,人脸性别分类操作节点,在初始计算流图的第二层,包括视频解码操作节点和图像缩放操作节点。
示例性的,针对初始计算流图来说,该初始计算流图中的各操作节点之间的连接关系可以包括顺序执行关系,比如说,操作节点1与操作节点2连接,操作节点2与操作节点3连接,操作节点3与操作节点5连接等。
针对初始计算流图来说,该初始计算流图中的各操作节点之间的连接关系可以包括判断执行关系,比如说,操作节点1与操作节点2连接,且操作节点1与操作节点3连接,针对操作节点1来说,当满足条件A时,操作节点1的输出与操作节点2连接,当满足条件B时,操作节点1的输出与操作节点3连接。
针对初始计算流图来说,该初始计算流图中的各操作节点之间的连接关系可以包括循环执行关系,比如说,操作节点1与操作节点2连接,操作节点2又与操作节点1连接,即,操作节点1的输出与操作节点2连接,操作节点2的输出又与操作节点1连接,操作节点1的输出又与操作节点2连接,以此类推,一直到满足预设条件时,跳出上述操作节点1与操作节点2的连接关系。
当然,顺序执行关系,判断执行关系和循环执行关系只是连接关系的几个示例,对此连接关系不做限制,只要各操作节点之间具有连接关系即可。
示例性的,为了得到初始计算流图,可以采用如下方式:
方式一、将目标业务拆分为多个功能,对此拆分方式不做限制,只要多个功能组合起来能够实现目标业务即可。然后,获取与多个功能对应的多个操作节点,即通过操作节点的名称可以体现与该操作节点对应的功能。然后,基于目标业务的多个功能的关系确定多个操作节点的连接关系,比如说,对功能1的输出数据进行功能2的处理时,则功能1对应的操作节点与功能2对应的操作节点连接。然后,基于多个操作节点以及多个操作节点的连接关系生成与目标业务对应的初始计算流图,该初始计算流图包括多个操作节点,各操作节点的功能类型(可以通过操作节点的名称体现该操作节点的功能类型),以及多个操作节点的连接关系,参见图2B所示,为初始计算流图的示意图。
示例性的,可以识别出目标业务中的关键步骤,基于这些关键步骤将目标业务拆分为多个功能,目标业务中的每个关键步骤表示目标业务的一个功能。
示例性的,初始计算流图是用于描述目标业务处理的数据流图。
示例性的,本实施例中的计算流图也可以称为数据流图,或计算图等。
方式二、接收用户输入的与目标业务对应的计算流图配置文件,计算流图配置文件包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系,基于计算流图配置文件生成与目标业务对应的初始计算流图,该初始计算流图包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系,参见图2B所示,为初始计算流图的示意图。
示例性的,用户可以将目标业务拆分为多个功能,获取与多个功能对应的多个操作节点,并基于目标业务的多个功能的关系确定多个操作节点的连接关系。然后,用户可以向设备输入计算流图配置文件,该计算流图配置文件包括多个操作节点,以及多个操作节点的连接关系。设备在接收到该计算流图配置文件后,就可以基于该计算流图配置文件生成初始计算流图。
方式三、接收用户输入的与目标业务对应的初始计算流图,该初始计算流图包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系。
示例性的,用户可以直接生成与目标业务对应的初始计算流图,并向设备输入初始计算流图,即,设备可以直接接收用户输入的该初始计算流图。比如说,用户可以借助可视化图编辑器来拖拽式编程自动生成初始计算流图,并向设备输入该初始计算流图,从而降低开发者的配置工作。
当然,方式一,方式二和方式三只是获取初始计算流图的几个示例,对此初始计算流图的获取方式不做限制,只要能够得到初始计算流图即可。
步骤1012,根据该初始计算流图获取目标计算流图;或者,对该初始计算流图进行优化,并根据优化后的计算流图获取目标计算流图。
在一种可能的实施方式中,在得到初始计算流图后,可以根据该初始计算流图获取目标计算流图,例如,将该初始计算流图作为目标计算流图。
在另一种可能的实施方式中,在得到初始计算流图后,可以对该初始计算流图进行优化,得到优化后的计算流图,并根据优化后的计算流图获取目标计算流图,例如,可以将优化后的计算流图作为目标计算流图。
当然,上述方式只是获取目标计算流图的几个示例,对此目标计算流图的获取方式不做限制,只要能够基于初始计算流图得到目标计算流图即可,该目标计算流图可以包括多个操作节点,各操作节点的功能类型(可以通过操作节点的名称体现操作节点的功能类型),以及多个操作节点的连接关系。
示例性的,对该初始计算流图进行优化,得到优化后的计算流图,可以包括但不限于:对初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,得到优化后的计算流图。优化处理包括但不限于如下处理的至少一种:拆分处理,合并处理,内存共享处理,硬件加速处理,执行顺序调整处理。
示例性的,将初始计算流图作为候选计算流图1,基于候选计算流图1获取与目标业务对应的待执行程序1(获取方式参见后续基于目标计算流图获取待执行程序的方式),在硬件平台部署待执行程序1,确定待执行程序1的性能开销(如计算性能开销,存储性能开销,带宽性能开销的至少一种)。对候选计算流图1进行优化处理,得到优化后的候选计算流图2,基于候选计算流图2获取待执行程序2,在硬件平台部署待执行程序2,确定待执行程序2的性能开销。
示例性的,若待执行程序2的性能开销小于待执行程序1的性能开销,则将候选计算流图2作为目标计算流图。或者,若待执行程序2的性能开销大于待执行程序1的性能开销,则将候选计算流图1作为目标计算流图。
在对候选计算流图1进行优化处理,得到候选计算流图2时,可以对候选计算流图1进行拆分处理,得到候选计算流图2;或,对候选计算流图1进行合并处理,得到候选计算流图2;或,对候选计算流图1进行内存共享处理,得到候选计算流图2;或,对候选计算流图1进行硬件加速处理,得到候选计算流图2;或,对候选计算流图1进行执行顺序调整处理,得到候选计算流图2。
在对候选计算流图1进行优化处理,得到候选计算流图2时,还可以对候选计算流图1进行拆分处理,合并处理,内存共享处理,硬件加速处理,执行顺序调整处理中的至少两种优化处理,得到候选计算流图2。为了方便描述,后续以对候选计算流图1进行拆分处理和内存共享处理为例进行说明。
例如,先对候选计算流图1进行拆分处理,得到拆分处理后的计算流图,对拆分处理后的计算流图进行内存共享处理,得到候选计算流图2。
又例如,先对候选计算流图1进行内存共享处理,得到内存共享处理后的计算流图,对内存共享处理后的计算流图进行拆分处理,得到候选计算流图2。
又例如,先对候选计算流图1进行拆分处理,得到拆分处理后的计算流图(将该计算流图记为计算流图A),基于计算流图A获取待执行程序A,在硬件平台部署待执行程序A,确定待执行程序A的性能开销。若待执行程序A的性能开销小于待执行程序1的性能开销,则对计算流图A进行内存共享处理,得到候选计算流图2。或者,若待执行程序A的性能开销大于待执行程序1的性能开销,则对候选计算流图1进行内存共享处理,得到候选计算流图2。
在一种可能的实施方式中,对初始计算流图进行拆分处理是指:对初始计算流图中的部分或者全部操作节点进行拆分处理,比如说,将初始计算流图中的一个操作节点拆分成至少两个操作节点。对初始计算流图进行合并处理是指:对初始计算流图中的部分操作节点进行合并处理,比如说,将初始计算流图中的至少两个操作节点合并为一个操作节点。对初始计算流图进行内存共享处理是指:对初始计算流图中的部分操作节点共享相同内存,比如说,对初始计算流图中的至少两个操作节点使用相同内存,即至少两个操作节点占用同一内存空间。对初始计算流图进行硬件加速处理是指:对初始计算流图中的一个或者多个操作节点进行硬件加速,即通过硬件实现该操作节点的处理功能。
在一种可能的实施方式中,对初始计算流图进行执行顺序调整处理,可以是指:调整初始计算流图中的操作节点的连接关系(调整操作节点的连接关系时,实质也是对执行顺序进行调整),和/或,调整初始计算流图中的操作节点的执行顺序。比如说,初始计算流图中的操作节点1与操作节点2连接,操作节点1与操作节点3连接,将其调整为操作节点1与操作节点2不连接,操作节点1与操作节点3连接,操作节点2与操作节点3连接。又例如,初始计算流图中的各操作节点的执行顺序依次为:操作节点1,操作节点2和操作节点3,将其调整为执行顺序依次为:操作节点2,操作节点3和操作节点1。
当然,上述只是对初始计算流图进行优化的几个示例,对此优化方式不做限制,关于各种优化方式的具体实现方式,本文不做限制。
在一种可能的实施方式中,对该初始计算流图进行优化,得到优化后的计算流图,可以包括但不限于如下方式:基于用于部署待执行程序的硬件平台的硬件能力,对该初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,得到优化后的计算流图。优化处理包括但不限于如下处理的至少一种:拆分处理,合并处理,内存共享处理,硬件优化加速处理,执行顺序调整处理。
示例性的,待执行程序是基于目标计算流图获取的,具体获取方式参见后续实施例,在此不再赘述。在得到待执行程序后,可以将待执行程序部署到硬件平台(如CPU(Central Processing Unit,中央处理器),GPU(Graphics Processing Unit,图形处理器),ARM(Advanced RISC Machines,高级精简指令集处理器),FPGA(Field ProgrammableGate Array,现场可编程逻辑门阵列)等,对此硬件平台的类型不做限制),在硬件平台运行待执行程序,从而通过待执行程序实现目标业务的业务处理。在此基础上,为了对初始计算流图进行优化,可以获取硬件平台的硬件能力(如计算能力,存储能力,带宽能力的至少一种),基于该硬件平台的硬件能力,在保证计算精度的情况下,可以对初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,得到优化后的计算流图。
比如说,将初始计算流图作为候选计算流图1,基于候选计算流图1获取待执行程序1,在硬件平台部署待执行程序1,确定待执行程序1的性能开销。若待执行程序1的性能开销已经超出硬件平台的硬件能力范围(如计算性能开销大于硬件平台的计算能力,或存储性能开销大于硬件平台的存储能力,或带宽性能开销大于硬件平台的带宽能力),则需要对候选计算流图1进行优化处理,得到优化后的候选计算流图2。若待执行程序1的性能开销未超出硬件平台的硬件能力范围,则可以直接将候选计算流图1作为目标计算流图,或者,也可以对候选计算流图1进行优化处理,得到优化后的候选计算流图2。
在得到候选计算流图2,基于候选计算流图2获取待执行程序2,在硬件平台部署待执行程序2,确定待执行程序2的性能开销。若待执行程序2的性能开销已经超出硬件平台的硬件能力范围,则不能将候选计算流图2作为目标计算流图,继续对候选计算流图2进行优化处理,得到优化后的候选计算流图。若待执行程序2的性能开销未超出硬件平台的硬件能力范围,则可以将候选计算流图2作为目标计算流图,或者,也可以对候选计算流图2进行优化处理。
步骤102,根据目标计算流图获取与目标业务对应的待执行程序,并根据目标计算流图获取与该待执行程序对应的配置文件。示例性的,该待执行程序包括多个可执行文件,多个可执行文件与目标计算流图中的多个操作节点的功能类型相对应。该配置文件包括多个可执行文件的输入输出关系,多个可执行文件的输入输出关系基于多个操作节点的连接关系确定。
在一种可能的实施方式中,可以采用如下方式获取待执行程序和配置文件:
步骤1021,基于目标计算流图中的每个操作节点的功能类型,确定与该操作节点对应的可执行文件,该可执行文件为用于实现该功能类型的可执行文件。
示例性的,针对目标计算流图中的每个操作节点,可以基于该操作节点的功能类型,从算子库中选取用于实现该功能类型的可执行文件,并将选取的可执行文件确定为与该操作节点对应的可执行文件。其中,该算子库可以包括预先存储的多个可执行文件,各可执行文件用于实现至少一种功能类型。
在一种可能的实施方式中,可以维护算子库,该算子库包括预先存储的多个可执行文件(也可以称为库文件),针对每个可执行文件来说,用于实现至少一种功能类型,例如,算子库包括可执行文件1和可执行文件2,可执行文件1用于实现功能类型1和功能类型2,可执行文件2用于实现功能类型3。
针对算子库来说,可以包括但不限于:用于实现图像处理功能(如图像滤波、几何图像变换、色彩转换等)的可执行文件,用于实现机器学习功能(如人脸检测,人体检测、车辆检测、人脸性别分类等)的可执行文件,用于实现视频分析功能(如运动估计、目标跟踪等)的可执行文件,用于实现模式识别功能(如特征提取、目标检测等)的可执行文件,用于实现深度学习模型推理功能的可执行文件等。当然,上述只是可执行文件的示例,对此不做限制。
示例性的,在步骤1021中,针对目标计算流图中的每个操作节点来说,可以先确定该操作节点的功能类型,例如,通过该操作节点的名称确定出该操作节点的功能类型。然后,可以从算子库中选取用于实现该功能类型的可执行文件,该可执行文件就是与该操作节点对应的可执行文件。
例如,参见图2B所示,假设目标计算流图包括视频解码操作节点,图像缩放操作节点,人脸检测操作节点,图像抠图操作节点,人脸性别分类操作节点,则可以确定视频解码操作节点的功能类型为视频解码功能,确定图像缩放操作节点的功能类型为图像缩放功能,确定人脸检测操作节点的功能类型为人脸检测功能,确定图像抠图操作节点的功能类型为图像抠图功能,确定人脸性别分类操作节点的功能类型为人脸性别分类功能。
从算子库中选取用于实现视频解码功能的可执行文件a1,从算子库中选取用于实现图像缩放功能的可执行文件a2,从算子库中选取用于实现人脸检测功能的可执行文件a3,从算子库中选取用于实现图像抠图功能的可执行文件a4,从算子库中选取用于实现人脸性别分类功能的可执行文件a5。
针对不同功能类型的可执行文件来说,可以是同一个可执行文件,也可以是不同的可执行文件,例如,用于实现视频解码功能的可执行文件a1与用于实现图像缩放功能的可执行文件a2可以相同,也可以不同。为了方便描述,后续以可执行文件a1-可执行文件a5是不同的可执行文件为例进行说明。
在上述实施例中,可执行文件指的是可以由操作***进行加载执行的二进制文件,在不同的操作***环境下,可执行文件的呈现方式不一样,可以包括代码段、数据段、堆栈段和扩展段等内容,代码段存放计算机的执行指令,即CPU要执行的操作指令,数据段存放CPU要用到的数据,堆栈段存放与寄存器有关的信息等。可执行文件是用于执行一定功能的模块,或者模块群。
本实施例中,可执行文件是用于实现指定功能的代码文件,比如说,用于实现视频解码功能的可执行文件a1,就是能够实现视频解码功能的代码文件,关于如何通过可执行文件a1实现视频解码功能,本实施例中不做限制。
在一种可能的实施方式中,设备本身包含大量可执行文件,将这些可执行文件存储到算子库中。除了设备本身提供的可执行文件,还面向用户提供可执行文件的注册能力,即用户能够将可执行文件存储到算子库中。综上所述,针对算子库中存储的可执行文件,可以是设备本身提供的,也可以是用户提供的。
示例性的,由于设备面向用户提供可执行文件的注册能力,因此,用户可以通过用户终端向设备发送注册消息。基于此,可以接收用户终端发送的注册消息,该注册消息包括代码文件,即,用于实现至少一种功能类型的代码文件,如用于实现视频解码功能的代码文件等。然后,将该代码文件转换为用于实现至少一种功能类型的可执行文件,比如说,对该代码文件进行编译,将该代码文件编译成能够被硬件平台运行的可执行文件,当代码文件用于实现视频解码功能时,则转换后的可执行文件也用于实现视频解码功能,即可执行文件的功能类型与代码文件的功能类型相同。然后,将该可执行文件存储到算子库中。
比如说,用户按照设备的接口要求完成代码文件的开发,如开发具有视频解码功能的代码文件,并通过用户终端向设备发送注册消息,该注册消息包括该代码文件。例如,用户按照设备的接口要求,实现代码文件的初始化(Initialize),代码文件的创建(Create)以及代码文件的主处理(Process)等三个接口函数,在实现初始化,创建以及主处理等三个接口函数后,可以可以得到代码文件。
设备在得到代码文件后,可以利用动态库自动编译工具,对代码文件进行编译,得到能够被硬件平台运行的可执行文件。关于对代码文件进行编译的过程,本文不做限制,只要编译得到的可执行文件能够被硬件平台运行即可。
在得到可执行文件后,就可以将该可执行文件存储到算子库中,并按照可执行文件的注册格式,添加该可执行文件的文件信息,如该可执行文件的文件名称,该可执行文件的功能类型,该可执行文件的输入参数信息等。
步骤1022,基于目标计算流图中的多个操作节点的连接关系,确定目标计算流图中的多个操作节点对应的多个可执行文件的输入输出关系。
示例性的,在得到目标计算流图中的每个操作节点对应的可执行文件之后,就可以得到多个可执行文件,并基于多个操作节点的连接关系确定多个可执行文件的输入输出关系。比如说,参见图2B所示,在目标计算流图中,视频解码操作节点与图像缩放操作节点连接,视频解码操作节点与图像抠图操作节点连接,图像缩放操作节点与人脸检测操作节点连接,人脸检测操作节点与图像抠图操作节点连接,图像抠图操作节点与人脸性别分类操作节点连接,在此基础上,多个可执行文件的输入输出关系包括:可执行文件a1的输入是空(即可执行文件a1是首个文件),可执行文件a1的输出是可执行文件a2和可执行文件a4;可执行文件a2的输入是可执行文件a1,可执行文件a2的输出是可执行文件a3;可执行文件a3的输入是可执行文件a2,可执行文件a3的输出是可执行文件a4;可执行文件a4的输入是可执行文件a1和可执行文件a3,可执行文件a4的输出是可执行文件a5;可执行文件a5的输入是可执行文件a4,可执行文件a5的输出是空,即可执行文件a5是最后一个文件。
步骤1023,基于目标计算流图中的多个操作节点对应的多个可执行文件获取与目标业务对应的待执行程序,并基于所述多个可执行文件的输入输出关系获取与该待执行程序对应的配置文件。
比如说,待执行程序可以包括可执行文件a1,可执行文件a2,可执行文件a3,可执行文件a4,可执行文件a5。配置文件可以包括可执行文件a1,可执行文件a2,可执行文件a3,可执行文件a4,可执行文件a5的输入输出关系,比如说,可执行文件a1的输出是可执行文件a2和可执行文件a4,可执行文件a2的输出是可执行文件a3,可执行文件a3的输出是可执行文件a4,可执行文件a4的输出是可执行文件a5,参见图2C所示,为配置文件的示意图。
步骤103,通过待执行程序和配置文件对待处理数据进行业务处理,得到与目标业务匹配的业务处理结果。示例性的,针对待执行程序内的每个可执行文件来说,对本可执行文件的输入数据进行处理,得到数据处理结果,并基于配置文件中的输入输出关系,将该可执行文件的该数据处理结果输出给与该可执行文件具有输出关系的下一个可执行文件。
比如说,参见图2C所示,在得到待处理数据后,将待处理数据输入给可执行文件a1,并通过可执行文件a1对待处理数据进行处理,得到数据A,并将数据A输出给与可执行文件a1具有输出关系的可执行文件a2和可执行文件a4。通过可执行文件a2对数据A进行处理,得到数据B,并将数据B输出给与可执行文件a2具有输出关系的可执行文件a3。通过可执行文件a3对数据B进行处理,得到数据C,并将数据C输出给与可执行文件a3具有输出关系的可执行文件a4。由于可执行文件a4的输入数据为数据A和数据C,因此,通过可执行文件a4对数据A和数据C进行处理,得到数据D,并将数据D输出给与可执行文件a4具有输出关系的可执行文件a5。通过可执行文件a5对数据D进行处理,得到与目标业务匹配的业务处理结果,并输出与目标业务匹配的业务处理结果。
在一种可能的实施方式中,在得到待执行程序后,可以在硬件平台部署该待执行程序,并在硬件平台运行该待执行程序。在得到该配置文件后,将该配置文件发送给硬件平台。综上所述,硬件平台可以按照该配置文件中各可执行文件的输入输出关系,生成各可执行文件的执行顺序,并基于各可执行文件的执行顺序执行待执行程序中的各可执行文件。比如说,硬件平台在接收到待处理数据后,将待处理数据作为待执行程序的输入数据,通过待执行程序内的各可执行文件依次对数据进行处理,即数据流按照各可执行文件的执行顺序进行流动,经过每个可执行文件时分别进行相关的处理计算,输出结果传递到下个可执行文件,以此类推,一直到完成处理,得到业务处理结果。
在一种可能的实施方式中,待执行程序可以包括但不限于:数据处理子程序,模型推理子程序,后处理子程序;基于此,通过待执行程序对和配置文件待处理数据进行业务处理,得到与目标业务匹配的业务处理结果,可以包括但不限于如下方式:基于配置文件中的输入输出关系,确定数据处理子程序的输出是模型推理子程序,模型推理子程序的输入是数据处理子程序;以及,确定模型推理子程序的输出是后处理子程序,后处理子程序的输入是模型推理子程序。然后,将待处理数据输入给数据处理子程序;数据处理子程序对待处理数据进行预处理,将预处理完成后的数据输入给模型推理子程序;模型推理子程序对数据进行模型推理,将模型推理完成后的数据输入给后处理子程序;后处理子程序对数据进行后处理,得到与目标业务匹配的业务处理结果。
比如说,参见图2D所示,为执行调度的一个流程示意图,可以将待处理数据输入给数据处理子程序,数据处理子程序用于对待处理数据进行预处理,如完成编解码、缩放等操作。数据处理子程序将预处理完成后的数据输入给模型推理子程序,模型推理子程序对数据进行模型推理,如进行人脸检测、人脸性别分类等操作。模型推理子程序将模型推理完成后的数据输入给后处理子程序,后处理子程序对数据进行后处理操作,得到与目标业务匹配的业务处理结果。
在一种可能的实施方式中,通过待执行程序和配置文件对待处理数据进行业务处理之前,若目标计算流图还包括与操作节点对应的网络参数,则针对待执行程序中与该操作节点对应的可执行文件,还可以在该可执行文件中加载该网络参数,并将加载网络参数后的可执行文件添加到待执行程序中,即,针对待执行程序中的可执行文件来说,可以是加载网络参数后的可执行文件。
示例性的,在获得目标计算流图(初始计算流图)时,目标计算流图中除了包括多个操作节点和多个操作节点的连接关系,针对每个操作节点,还可能包括与该操作节点对应的网络参数,或未包括与该操作节点对应的网络参数。
比如说,视频解码操作节点对应视频解码功能,目标计算流图中可能包括与视频解码操作节点对应的网络参数,该网络参数表示视频图像的解码参数,例如,采用解码方式1还是解码方式2对视频图像进行解码等。视频解码操作节点对应的可执行文件a1支持解码方式1和解码方式2,若网络参数表示采用解码方式1,则可执行文件a1可以采用解码方式1对视频图像进行解码,若网络参数表示采用解码方式2,则可执行文件a1可以采用解码方式2对视频图像进行解码。图像缩放操作节点对应图像缩放功能,目标计算流图中可能包括与图像缩放操作节点对应的网络参数,该网络参数表示视频图像的缩放参数,例如,输入缩放参数为1920*1680,输出缩放参数为960*720。基于此,图像缩放操作节点对应的可执行文件a2可以将1920*1680的视频图像缩放为960*720的视频图像。人脸检测操作节点对应人脸检测功能,目标计算流图中可能未包括与人脸检测功能对应的网络参数。又例如,人脸性别分类操作节点对应人脸性别分类功能,目标计算流图中可能未包括与人脸性别分类功能对应的网络参数。
图像抠图操作节点对应图像抠图功能,目标计算流图可能包括与图像抠图操作节点对应的网络参数,网络参数表示视频图像的抠图参数,例如,抠图参数可以为抠图坐标,如抠图左上角坐标,抠图宽度和抠图高度,或抠图左上角坐标和抠图右下角坐标等。基于此,图像抠图操作节点对应的可执行文件a4可以从视频图像中选取出与该抠图坐标匹配的子图像,从视频图像截取该子图像。
在另一种可能的实施方式中,通过待执行程序和配置文件对待处理数据进行业务处理之前,针对待执行程序中需要加载网络模型的可执行文件,还可以从模型池中获取与该可执行文件对应的网络模型,并在该可执行文件中加载该网络模型,并将加载该网络模型后的可执行文件添加到待执行程序中,即,针对待执行程序中的可执行文件来说,可以是加载网络模型后的可执行文件。
示例性的,针对待执行程序中的每个可执行文件来说,该可执行文件可能需要加载网络模型,也可能不需要加载网络模型。若需要加载网络模型,则从模型池中获取与该可执行文件对应的网络模型,并在该可执行文件中加载该网络模型,即待执行程序中的该可执行文件加载了该网络模型。
例如,视频解码操作节点对应视频解码功能,视频解码操作节点对应的可执行文件a1不需要加载网络模型。图像缩放操作节点对应图像缩放功能,图像缩放操作节点对应的可执行文件a2不需要加载网络模型。图像抠图操作节点对应图像抠图功能,图像抠图操作节点对应的可执行文件a4不需要加载网络模型。
人脸检测操作节点对应人脸检测功能,人脸检测操作节点对应的可执行文件a3需要加载网络模型,即,加载用于实现人脸检测功能的网络模型,如人脸检测模型,该人脸检测模型是基于机器学习算法训练出的机器学习网络模型。通过在可执行文件a3中加载人脸检测模型,可执行文件a3可以实现人脸检测功能。人脸性别分类操作节点对应人脸性别分类功能,人脸性别分类操作节点对应的可执行文件a5需要加载网络模型,即,加载用于实现人脸性别分类功能的网络模型,如人脸性别分类模型,该人脸性别分类模型是基于机器学习算法训练出的机器学习网络模型。通过在可执行文件a5中加载人脸性别分类模型,可执行文件a5可以实现人脸性别分类,即基于用户的人脸确定出用户的性别。
在另一种可能的实施方式中,通过待执行程序和配置文件对待处理数据进行业务处理之前,若目标计算流图还包括与操作节点对应的网络参数,且该操作节点对应的可执行文件是需要加载网络模型的可执行文件,则还可以在该可执行文件中加载该网络参数,并从模型池中获取与该可执行文件对应的网络模型,并在该可执行文件中加载该网络模型,并将加载该网络参数和该网络模型后的可执行文件添加到待执行程序中,即,针对待执行程序中的可执行文件来说,加载了网络参数和网络模型,该实施方式的实现过程参见上述实施例。
在上述实施例中,需要从模型池中获取与可执行文件对应的网络模型,在从模型池中获取与可执行文件对应的网络模型之前,还可以获取已经完成训练的机器学习网络模型,并对机器学习网络模型进行指定处理,得到处理后的网络模型,将处理后的网络模型存储在模型池中。示例性的,指定处理可以包括但不限于如下处理的至少一种:量化处理,封装处理,编译处理和加密处理。
在对机器学***台信息,模型版本信息的至少一种进行封装。
示例性的,以机器学习网络模型是神经网络(如卷积神经网络等)模型为例,可以利用样本数据训练神经网络模型内各神经网络参数,如卷积层参数(如卷积核参数)、池化层参数、激励层参数、全连接层参数等,对此不做限制。
显然,通过训练神经网络模型内的各神经网络参数,可以使神经网络模型拟合出输入和输出的映射关系,对神经网络模型的训练过程不做限制。在神经网络模型训练完成后,则可以得到已经完成训练的神经网络模型。
示例性的,在得到已经完成训练的机器学习网络模型后,可以对机器学习网络模型进行量化处理。比如说,将浮点数表示的模型参数,输入特征和输出特征,使用定点值近似表示,从而提高机器学习网络模型的运算速度,对机器学习网络模型进行压缩。例如,机器学习网络模型包括大量参数,这些参数是浮点数类型,浮点数类型的参数会占用大量存储空间,浮点数类型的参数的运算会消耗大量计算资源,如果在不影响准确率的情况下,可以采用定点数类型的参数进行计算,则能够提高计算速度,节约计算资源,节省存储空间,由此引入量化技术,量化即通过减少表示每个权重所需的比特数来压缩机器学习网络模型,基于量化技术,能够将浮点数类型的参数转换为定点数类型的参数。
示例性的,在得到已经完成训练的机器学***台也是多种多样,为了便于硬件平台识别机器学***台上执行机器学***台能够推理的机器学***台有关,比如说,若硬件平台是FPGA,则可以将机器学习网络模型封装为FPGA能够推理的机器学习网络模型。
在对机器学***台信息,模型版本信息的至少一种进行封装。比如说,将模型标识,模型业务解析信息,运行平台信息,模型版本信息的至少一种打包封装在机器学***台通过解析机器学***台信息,模型版本信息等,既保证了模型信息的安全性,又便于跨平台的推理部署。
示例性的,在得到已经完成训练的机器学***台进行针对性的优化编译,以提高推理效率。
示例性的,在得到已经完成训练的机器学习网络模型后,可以对机器学习网络模型进行加密处理,从而得到机器学习网络模型的安全性。
示例性的,在得到已经完成训练的机器学***台上进行模型推理的网络模型。
综上所述,可以得到处理后的网络模型,并将处理后的网络模型存储在模型池中,处理后的网络模型可以是人体检测模型(即用于实现人体检测的网络模型),可以是人脸检测模型(即用于实现人脸检测的网络模型),可以是车辆检测模型,可以是人脸性别分类模型等,对此网络模型的类型不做限制。
示例性的,上述执行顺序只是为了方便描述给出的示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
由以上技术方案可见,本申请实施例中,可以基于与目标业务对应的目标计算流图获取待执行程序和配置文件,通过待执行程序和配置文件对待处理数据进行业务处理,目标计算流图包括多个操作节点及各操作节点的功能类型,待执行程序包括与多个操作节点对应的多个可执行文件,配置文件包括多个可执行文件的输入输出关系,这些可执行文件能够实现机器学***台上。应用开发框架可以涉及机器学***台的硬件资源情况,进行针对性优化,平衡资源使用和业务处理效果,最大化的利用硬件资源。
以下结合具体应用场景,对本申请实施例的上述技术方案进行说明。
本申请实施例中提出一种应用开发框架(应用开发和推理框架),涉及利用机器学***台(如CPU、GPU、ARM、FPGA等)。该应用开发框架可以运行机器学***台设备的运行,可以结合硬件资源情况对计算流图进行合理的优化,最大化的利用设备资源,平衡效率和推理效果。用户可以快速添加或者利用已有的通用图像处理和机器学习算法快速搭建业务应用。
该应用开发框架可以为开发者提供业务应用编程接口、业务应用模块注册、机器学习模型注册以及公共算子库,使其可以在无需了解底层算法细节的前提下,进行基于机器学习模型的推理构建和场景应用开发。该应用开发框架将机器学习(感知)模型的推理计算、图像处理和计算视觉的通用算法抽象成模块组件,将整个业务应用的数据流处理构建成一个模块化组件图,通过维护和修改这个数据流的计算图来解决业务应用问题。例如,可以将视音频数据流输入到计算流图中,通过构建包含视频解码、人脸检测、目标跟踪等功能模块的计算流图,来完成视频人脸检测和跟踪任务,实时输出人脸位置框。
该应用开发框架支持在不同的设备(如嵌入式、移动设备、工作站以及服务器等)和硬件平台(如CPU、GPU、ARM、FPGA等)上运行,包含异构和非异构平台,是一个跨平台的处理框架。开发者可以不用关注不同硬件平台的运行环境,专注于算法模块和模型的开发,快速的将现有的或者新的机器学***台的处理。
参见图3A所示,为应用开发框架的组网示意图,应用开发框架可以包括但不限于算子开发及注册模块,模型封装导入模块,计算流图构建模块,计算流图优化模块,计算流图执行模块,私有算子库,公开算子库和模型池。算子开发及注册模块和模型封装导入模块属于算子与模型注册层,计算流图构建模块属于可视化业务图构建层,计算流图优化模块和计算流图执行模块属于计算流图引擎层,私有算子库,公开算子库和模型池属于框架资源管理层。
应用开发框架以操作节点(操作节点也可以称为算子)为中心,操作节点是最基本的计算单元,内部实现了对数据流运算操作的封装,对外提供了一种最底层的功能。计算流图是一个表征数据流计算流程的有向图,数据流从计算流图的输入节点(即计算流图的首个操作节点)进入,在计算流图的各个操作节点流动,最后汇聚在输出节点。计算流图中的每个节点可以是操作节点,也可以是子图,而子图内又包含了一个完整的计算流图,实现了一些固定计算的组合,便于在不同的图内复用,以快速搭建大规模模块化的应用。
参见图3A所示,应用开发框架本身可以将大量可执行文件存储到公共算子库中。在此基础上,算子开发及注册模块用于向用户提供可执行文件的注册能力,用户按照算子开发及注册模块的接口要求完成代码文件(即定制私有代码文件)的开发,并向算子开发及注册模块输入注册消息,该注册消息包括该代码文件。算子开发及注册模块从注册消息中解析出代码文件,将该代码文件转换为可执行文件,例如,利用动态库自动编译工具对代码文件进行编译,得到能够被硬件平台运行的可执行文件。算子开发及注册模块将该可执行文件存储到私有算子库或者公开算子库中,并按照可执行文件的注册格式,添加该可执行文件的文件信息,如该可执行文件的文件名称,功能类型,输入参数信息等。
算子开发及注册模块的应用接口要求包括:每个新增的可执行文件按照算子开发及注册模块定义的通用接口要求,需要实现算子开发及注册模块初始化、算子开发及注册模块创建以及算子开发及注册模块主处理等三个接口函数。
参见图3A所示,应用开发框架本身可以将网络模型存储到模型池中。在此基础上,模型封装导入模块用于向用户提供网络模型的导入能力,因此,用户将已经完成训练的机器学习网络模型输入给模型封装导入模块,模型封装导入模块获取已经完成训练的机器学习网络模型,并对该机器学习网络模型进行指定处理,得到处理后的网络模型,并将处理后的网络模型存储在模型池中。
参见图3B所示,模型封装导入模块对机器学***台上进行模型推理的模型表达文件(处理后的网络模型)。模型推理是指:将模型部署到需要对数据进行分类预测的领域,从而识别出已知的模式或对象。
由于用户训练的机器学***台也是多种多样,因此,为了便于应用开发框架能够识别模型信息,并在相应的硬件平台上完成模型推理和结果解析,可以通过模型封装将各种不同训练框架的模型转换成不同硬件平台上可以推理的模型表达文件。此外,在封装阶段还可以将模型标识、模型业务解析信息、运行平台信息、模型版本信息等一并打包封装在模型表达文件中,从而通过对应的解析协议就可以快速的识别出模型的用途、运行平台,既保证了模型信息的安全性,又便于跨平台的推理部署。
由于应用开发框架不对模型训练框架做特殊要求,因此,可以通过模型转换编译将模型转成一种通用的模型交换格式(如ONNX),即,针对不同的硬件平台对机器学习网络模型进行针对性的优化编译,以提高推理效率。
参见图3A所示,计算流图构建模块可以获取与目标业务对应的初始计算流图,该初始计算流图可以包括多个操作节点,多个操作节点的连接关系。
例如,计算流图构建模块将目标业务拆分为多个功能,获取与多个功能对应的多个操作节点,基于目标业务的多个功能的关系确定多个操作节点的连接关系,基于多个操作节点以及多个操作节点的连接关系生成初始计算流图。比如说,计算流图构建模块识别出目标业务中的关键步骤,对应到可用的操作节点或者子图中,最终生成初始计算流图来描述整个业务处理的数据流图。
又例如,计算流图构建模块接收用户输入的与目标业务对应的计算流图配置文件,该计算流图配置文件可以包括多个操作节点,以及多个操作节点的连接关系,基于该计算流图配置文件生成与目标业务对应的初始计算流图。
又例如,计算流图构建模块接收用户输入的与目标业务对应的初始计算流图。比如说,用户可以借助可视化图编辑器来拖拽式编程自动生成初始计算流图,降低开发者的配置工作。开发者可以借助拖拽图形化的操作节点、配置操作节点的网络参数以及连接各操作节点来编排和修改业务流程。
比如说,参见图2A所示,针对用于实现人脸检测和性别检测的目标业务,可以将目标业务拆分为视频解码功能,图像缩放功能,人脸检测功能,图像抠图功能,人脸性别分类功能。参见图2B所示,为目标业务对应的初始计算流图。
参见图3A所示,计算流图优化模块可以对初始计算流图进行优化,得到优化后的计算流图,将优化后的计算流图作为目标计算流图。例如,对初始计算流图的操作节点和/或操作节点的连接关系进行优化,得到优化后的计算流图。
例如,计算流图优化模块基于硬件平台的硬件能力(如计算能力,存储能力,带宽能力的至少一种),在保证计算精度的情况下,对初始计算流图的操作节点进行拆分处理,合并处理,内存共享处理,硬件加速处理的至少一种。
计算流图优化模块还可以对初始计算流图的操作节点的连接关系进行执行顺序调整处理,比如说,针对数据并行处理,对操作节点的连接关系的执行顺序做调整,如不同操作节点的流水并行等,对此执行顺序调整处理不做限制。
通过以上优化步骤,最终寻找到最佳的目标计算流图。
参见图3A所示,针对目标计算流图中的每个操作节点,计算流图执行模块基于该操作节点的功能类型,从公共算子库和/或私有算子库中选取用于实现该功能类型的可执行文件,即与该操作节点对应的可执行文件。基于目标计算流图中的多个操作节点的连接关系,确定多个可执行文件的输入输出关系。基于多个可执行文件获取与目标业务对应的待执行程序,基于多个可执行文件的输入输出关系获取与待执行程序对应的配置文件,即得到待执行程序和配置文件。
计算流图执行模块通过待执行程序和配置文件对待处理数据进行业务处理,得到与目标业务匹配的业务处理结果。比如说,将待执行程序部署到硬件平台,并将配置文件发送给硬件平台。硬件平台按照该配置文件中各可执行文件的输入输出关系,生成待执行程序中的各可执行文件的执行顺序。在接收到待处理数据后,将待处理数据作为待执行程序的输入数据,通过待执行程序内的各可执行文件依次对数据进行处理,即数据流按照各可执行文件的执行顺序进行流动,经过各可执行文件时分别进行相关的处理计算,输出结果传递到下个可执行文件,以此类推,一直到完成处理,得到业务处理结果。
参见图2D所示,应用程序可以将待处理数据输入给待执行程序,数据处理子程序启动,并且调用预处理接口,进行数据预处理,如完成编解码、缩放等,预处理完成后将数据传送给模型推理子程序。模型推理子程序调用推理接口将数据和加载好的模型结合完成推理计算,在得到输出结果后,将推理结果返回给后处理子程序。后处理子程序完成数据的后处理操作,最终将后处理的结果返回给应用程序,至此,完成了执行计算流图的执行过程。
在通过待执行程序和配置文件对待处理数据进行业务处理之前,若目标计算流图包括与操作节点对应的网络参数,则针对待执行程序中与该操作节点对应的可执行文件,可以在该可执行文件中加载该网络参数,将加载网络参数后的可执行文件添加到待执行程序中。和/或,针对待执行程序中需要加载网络模型的可执行文件,可以从模型池中获取与该可执行文件对应的网络模型,在该可执行文件中加载该网络模型,并将加载该网络模型后的可执行文件添加到待执行程序中。
参见图3A所示,针对公共算子库和私有算子库来说,可以包括但不限于:用于实现图像处理功能(如图像滤波、几何图像变换、色彩转换等)的可执行文件,用于实现机器学习功能(如人脸检测,人体检测、车辆检测、人脸性别分类等)的可执行文件,用于实现视频分析功能(如运动估计、目标跟踪等)的可执行文件,用于实现模式识别功能(如特征提取、目标检测等)的可执行文件,用于实现深度学习模型推理功能的可执行文件等。针对模型池来说,可以包括但不限于人体检测模型、车辆检测模型等常用的模型。
考虑到用户使用安全性等方面,应用开发框架可以支持对计算流图协议、算子库和模型进行加密,用户在使用时会自动进行解密操作。
由以上技术方案可见,本实施例提出一种基于计算流图的机器学***台框架,可以运行在各自嵌入式平台、工作站、服务器等设备中,能够针对平台的特性进行针对性的优化,充分利用硬件平台的资源。支持端边云统一的应用开发框架,实现一次可执行文件和模型的开发之后,可以在所有平台上具有平滑迁移的能力。
基于与上述方法同样的申请构思,本申请实施例中还提出一种业务处理装置,如图4所示,为所述装置的结构图,所述装置包括:
获取模块41,用于获取与目标业务对应的目标计算流图;其中,所述目标计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;根据所述目标计算流图获取与目标业务对应的待执行程序,并根据所述目标计算流图获取与所述待执行程序对应的配置文件;其中,所述待执行程序包括多个可执行文件,所述多个可执行文件与所述多个操作节点的功能类型相对应;所述配置文件包括所述多个可执行文件的输入输出关系,所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定;
处理模块42,用于通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述待执行程序内的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果,并基于所述配置文件中的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
示例性的,所述获取模块41获取与目标业务对应的目标计算流图时具体用于:获取与目标业务对应的初始计算流图;其中,所述初始计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;
根据所述初始计算流图获取所述目标计算流图;或者,对所述初始计算流图进行优化,并根据优化后的计算流图获取所述目标计算流图。
示例性的,所述获取模块41对所述初始计算流图进行优化时具体用于:
对所述初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,得到优化后的计算流图;其中,所述优化处理包括如下处理的至少一种:拆分处理,合并处理,内存共享处理,硬件加速处理,执行顺序调整处理。
示例性的,所述获取模块41根据所述目标计算流图获取与目标业务对应的待执行程序时具体用于:基于所述目标计算流图中的每个操作节点的功能类型,确定与该操作节点对应的可执行文件,所述可执行文件为用于实现所述功能类型的可执行文件;基于所述目标计算流图中的多个操作节点对应的多个可执行文件,获取与目标业务对应的待执行程序。
示例性的,所述获取模块41基于所述目标计算流图中的每个操作节点的功能类型,确定与该操作节点对应的可执行文件时具体用于:
针对目标计算流图中的每个操作节点,基于该操作节点的功能类型,从算子库中选取用于实现所述功能类型的可执行文件;其中,所述算子库包括预先存储的多个可执行文件,各可执行文件用于实现至少一种功能类型;
将选取的可执行文件确定为与该操作节点对应的可执行文件。
示例性的,所述待执行程序包括数据处理子程序,模型推理子程序,后处理子程序;所述处理模块42通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果时具体用于:
基于所述配置文件中的输入输出关系,确定数据处理子程序的输出是模型推理子程序,模型推理子程序的输入是数据处理子程序;以及,确定模型推理子程序的输出是后处理子程序,后处理子程序的输入是模型推理子程序;
将待处理数据输入给数据处理子程序;所述数据处理子程序对待处理数据进行预处理,将预处理完成后的数据输入给模型推理子程序;所述模型推理子程序对数据进行模型推理,将模型推理完成后的数据输入给后处理子程序;所述后处理子程序对数据进行后处理,得到与所述目标业务匹配的业务处理结果。
示例性的,所述处理模块42通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果之前还用于:
若所述目标计算流图还包括与操作节点对应的网络参数,针对所述待执行程序中与所述操作节点对应的可执行文件,在该可执行文件中加载所述网络参数,将加载所述网络参数后的可执行文件添加到所述待执行程序中;或,
针对所述待执行程序中需要加载网络模型的可执行文件,从模型池中获取与该可执行文件对应的网络模型,在该可执行文件中加载所述网络模型,将加载所述网络模型后的可执行文件添加到所述待执行程序中。
基于与上述方法同样的申请构思,本申请实施例中还提出一种业务处理设备,本申请实施例提供的业务处理设备,从硬件层面而言,业务处理设备的硬件架构示意图可以参见图5所示。业务处理设备可以包括:处理器51和机器可读存储介质52,所述机器可读存储介质52存储有能够被处理器51执行的机器可执行指令;所述处理器51用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,处理器51用于执行机器可执行指令,以实现如下步骤:
获取与目标业务对应的目标计算流图;其中,所述目标计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;
根据所述目标计算流图获取与目标业务对应的待执行程序,并根据所述目标计算流图获取与所述待执行程序对应的配置文件;其中,所述待执行程序包括多个可执行文件,所述多个可执行文件与所述多个操作节点的功能类型相对应;所述配置文件包括所述多个可执行文件的输入输出关系,所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定;
通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述待执行程序内的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果,并基于所述配置文件中的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,其中,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法。
例如,所述计算机指令被处理器执行时,能够实现如下步骤:
获取与目标业务对应的目标计算流图;其中,所述目标计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;
根据所述目标计算流图获取与目标业务对应的待执行程序,并根据所述目标计算流图获取与所述待执行程序对应的配置文件;其中,所述待执行程序包括多个可执行文件,所述多个可执行文件与所述多个操作节点的功能类型相对应;所述配置文件包括所述多个可执行文件的输入输出关系,所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定;
通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述待执行程序内的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果,并基于所述配置文件中的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
示例性的,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种业务处理方法,其特征在于,所述方法包括:
获取与目标业务对应的初始计算流图,其中,所述初始计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;
对所述初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,得到优化后的计算流图,并根据优化后的计算流图获取目标计算流图;其中,所述目标计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;其中,若优化处理包括拆分处理和内存共享处理,则对所述初始计算流图进行拆分处理,得到拆分处理后的计算流图,基于所述初始计算流图获取第一待执行程序,基于拆分处理后的计算流图获取第二待执行程序;若所述第二待执行程序的性能开销小于所述第一待执行程序的性能开销,则对拆分处理后的计算流图进行内存共享处理,得到所述优化后的计算流图;或者,若所述第二待执行程序的性能开销大于所述第一待执行程序的性能开销,则对所述初始计算流图进行内存共享处理,得到所述优化后的计算流图;
根据所述目标计算流图获取与目标业务对应的待执行程序,并根据所述目标计算流图获取与所述待执行程序对应的配置文件;其中,所述待执行程序包括多个可执行文件,所述多个可执行文件与所述多个操作节点的功能类型相对应;所述配置文件包括所述多个可执行文件的输入输出关系,所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定;
通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述待执行程序内的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果,并基于所述配置文件中的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
2.根据权利要求1所述的方法,其特征在于,
所述根据所述目标计算流图获取与目标业务对应的待执行程序,包括:
基于所述目标计算流图中的每个操作节点的功能类型,确定与该操作节点对应的可执行文件,所述可执行文件为用于实现所述功能类型的可执行文件;
基于所述目标计算流图中的多个操作节点对应的多个可执行文件,获取与目标业务对应的待执行程序。
3.根据权利要求2所述的方法,其特征在于,所述基于所述目标计算流图中的每个操作节点的功能类型,确定与该操作节点对应的可执行文件,包括:
针对目标计算流图中的每个操作节点,基于该操作节点的功能类型,从算子库中选取用于实现所述功能类型的可执行文件;其中,所述算子库包括预先存储的多个可执行文件,各可执行文件用于实现至少一种功能类型;
将选取的可执行文件确定为与该操作节点对应的可执行文件。
4.根据权利要求3所述的方法,其特征在于,所述基于该操作节点的功能类型,从算子库中选取用于实现所述功能类型的可执行文件之前,还包括:
接收用户终端发送的注册消息,所述注册消息包括代码文件;
将所述代码文件转换为用于实现至少一种功能类型的可执行文件;
将所述可执行文件存储到所述算子库中。
5.根据权利要求1所述的方法,其特征在于,所述待执行程序包括数据处理子程序,模型推理子程序,后处理子程序;
所述通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果,包括:
基于所述配置文件中的输入输出关系,确定数据处理子程序的输出是模型推理子程序,模型推理子程序的输入是数据处理子程序;以及,确定模型推理子程序的输出是后处理子程序,后处理子程序的输入是模型推理子程序;
将待处理数据输入给数据处理子程序;所述数据处理子程序对待处理数据进行预处理,将预处理完成后的数据输入给模型推理子程序;所述模型推理子程序对数据进行模型推理,将模型推理完成后的数据输入给后处理子程序;所述后处理子程序对数据进行后处理,得到与所述目标业务匹配的业务处理结果。
6.根据权利要求1所述的方法,其特征在于,
所述通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果之前,所述方法还包括:
若所述目标计算流图还包括与操作节点对应的网络参数,针对所述待执行程序中与所述操作节点对应的可执行文件,在该可执行文件中加载所述网络参数,将加载所述网络参数后的可执行文件添加到所述待执行程序中;或,
针对所述待执行程序中需要加载网络模型的可执行文件,从模型池中获取与该可执行文件对应的网络模型,在该可执行文件中加载所述网络模型,将加载所述网络模型后的可执行文件添加到所述待执行程序中。
7.根据权利要求6所述的方法,其特征在于,
所述从模型池中获取与该可执行文件对应的网络模型之前,还包括:
获取已经完成训练的机器学习网络模型;
对所述机器学习网络模型进行指定处理,得到处理后的网络模型;
将所述处理后的网络模型存储在所述模型池中。
8.根据权利要求7所述的方法,其特征在于,所述指定处理包括如下处理的至少一种:量化处理,封装处理,编译处理和加密处理;
在对机器学***台信息,模型版本信息的至少一种进行封装。
9.一种业务处理装置,其特征在于,所述装置包括:
获取模块,用于获取与目标业务对应的初始计算流图,其中,所述初始计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;对所述初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,得到优化后的计算流图,并根据优化后的计算流图获取目标计算流图;其中,所述目标计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;其中,若优化处理包括拆分处理和内存共享处理,则对所述初始计算流图进行拆分处理,得到拆分处理后的计算流图,基于所述初始计算流图获取第一待执行程序,基于拆分处理后的计算流图获取第二待执行程序;若所述第二待执行程序的性能开销小于所述第一待执行程序的性能开销,则对拆分处理后的计算流图进行内存共享处理,得到所述优化后的计算流图;或者,若所述第二待执行程序的性能开销大于所述第一待执行程序的性能开销,则对所述初始计算流图进行内存共享处理,得到所述优化后的计算流图;
以及,根据所述目标计算流图获取与目标业务对应的待执行程序,并根据所述目标计算流图获取与所述待执行程序对应的配置文件;其中,所述待执行程序包括多个可执行文件,所述多个可执行文件与所述多个操作节点的功能类型相对应;所述配置文件包括所述多个可执行文件的输入输出关系,所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定;
处理模块,用于通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述待执行程序内的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果,并基于所述配置文件中的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
10.一种业务处理设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下的步骤:
获取与目标业务对应的初始计算流图,其中,所述初始计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;
对所述初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,得到优化后的计算流图,并根据优化后的计算流图获取目标计算流图;其中,所述目标计算流图至少包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;其中,若优化处理包括拆分处理和内存共享处理,则对所述初始计算流图进行拆分处理,得到拆分处理后的计算流图,基于所述初始计算流图获取第一待执行程序,基于拆分处理后的计算流图获取第二待执行程序;若所述第二待执行程序的性能开销小于所述第一待执行程序的性能开销,则对拆分处理后的计算流图进行内存共享处理,得到所述优化后的计算流图;或者,若所述第二待执行程序的性能开销大于所述第一待执行程序的性能开销,则对所述初始计算流图进行内存共享处理,得到所述优化后的计算流图;
根据所述目标计算流图获取与目标业务对应的待执行程序,并根据所述目标计算流图获取与所述待执行程序对应的配置文件;其中,所述待执行程序包括多个可执行文件,所述多个可执行文件与所述多个操作节点的功能类型相对应;所述配置文件包括所述多个可执行文件的输入输出关系,所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定;
通过所述待执行程序和所述配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述待执行程序内的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果,并基于所述配置文件中的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010954140.8A CN112099848B (zh) | 2020-09-11 | 2020-09-11 | 一种业务处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010954140.8A CN112099848B (zh) | 2020-09-11 | 2020-09-11 | 一种业务处理方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099848A CN112099848A (zh) | 2020-12-18 |
CN112099848B true CN112099848B (zh) | 2024-03-05 |
Family
ID=73751897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010954140.8A Active CN112099848B (zh) | 2020-09-11 | 2020-09-11 | 一种业务处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099848B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113722065B (zh) * | 2021-08-20 | 2023-08-18 | 中国电子科技集团公司第十四研究所 | 一种基于子图匹配的面向嵌入式异构硬件的资源调度方法 |
CN113961267B (zh) * | 2021-10-15 | 2023-08-25 | 杭州海康威视数字技术股份有限公司 | 一种业务处理方法、装置及设备 |
CN115687224A (zh) * | 2022-09-09 | 2023-02-03 | 杭州海康机器人股份有限公司 | 一种异步处理流程生成方法及装置 |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814029A (zh) * | 2010-04-20 | 2010-08-25 | 中国科学院对地观测与数字地球科学中心 | 遥感影像处理***中处理功能可快速扩展的构建方法 |
CN104408062A (zh) * | 2014-10-29 | 2015-03-11 | 中国建设银行股份有限公司 | 一种证券文件处理方法及装置 |
CN106250987A (zh) * | 2016-07-22 | 2016-12-21 | 无锡华云数据技术服务有限公司 | 一种机器学***台 |
CN106775617A (zh) * | 2016-11-09 | 2017-05-31 | 深圳市中润四方信息技术有限公司 | 一种应用软件的业务逻辑配置方法及配置*** |
CN107577458A (zh) * | 2017-08-18 | 2018-01-12 | 深圳怡化电脑股份有限公司 | 一种金融自助终端业务流程开发方法及装置 |
CN107632825A (zh) * | 2017-08-18 | 2018-01-26 | 深圳怡化电脑股份有限公司 | 一种业务软件开发方法及装置 |
CN108432208A (zh) * | 2016-12-15 | 2018-08-21 | 华为技术有限公司 | 一种业务编排方法、装置及服务器 |
CN108984155A (zh) * | 2018-05-17 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 数据处理流程设定方法和装置 |
CN109918084A (zh) * | 2019-03-12 | 2019-06-21 | 浪潮通用软件有限公司 | 一种业务管理***的数据映射方法 |
CN110007902A (zh) * | 2019-03-12 | 2019-07-12 | 中国平安财产保险股份有限公司 | 业务处理流程配置的方法及装置 |
CN110717584A (zh) * | 2019-09-30 | 2020-01-21 | 上海寒武纪信息科技有限公司 | 神经网络编译方法、编译器、计算机设备及可读存储介质 |
CN110766164A (zh) * | 2018-07-10 | 2020-02-07 | 第四范式(北京)技术有限公司 | 用于执行机器学习过程的方法和*** |
CN110928529A (zh) * | 2019-11-06 | 2020-03-27 | 第四范式(北京)技术有限公司 | 辅助算子开发的方法和*** |
CN111369081A (zh) * | 2018-12-06 | 2020-07-03 | 北京嘀嘀无限科技发展有限公司 | 一种流程配置方法、装置、电子设备及存储介质 |
CN111382347A (zh) * | 2018-12-28 | 2020-07-07 | 广州市百果园信息技术有限公司 | 一种对象特征的处理和信息推送方法、装置和设备 |
CN111488211A (zh) * | 2020-04-09 | 2020-08-04 | 北京嘀嘀无限科技发展有限公司 | 基于深度学习框架的任务处理方法、装置、设备及介质 |
CN112368675A (zh) * | 2018-06-06 | 2021-02-12 | 起元技术有限责任公司 | 更新可执行图 |
CN113169990A (zh) * | 2018-11-30 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 具有动态卸载的深度学习推理的分割 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11263554B2 (en) * | 2019-03-04 | 2022-03-01 | Walmart Apollo, Llc | Systems and methods for a machine learning framework |
US11914606B2 (en) * | 2019-03-04 | 2024-02-27 | Walmart Apollo, Llc | Systems and methods for a machine learning framework |
-
2020
- 2020-09-11 CN CN202010954140.8A patent/CN112099848B/zh active Active
Patent Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814029A (zh) * | 2010-04-20 | 2010-08-25 | 中国科学院对地观测与数字地球科学中心 | 遥感影像处理***中处理功能可快速扩展的构建方法 |
CN104408062A (zh) * | 2014-10-29 | 2015-03-11 | 中国建设银行股份有限公司 | 一种证券文件处理方法及装置 |
CN106250987A (zh) * | 2016-07-22 | 2016-12-21 | 无锡华云数据技术服务有限公司 | 一种机器学***台 |
CN106775617A (zh) * | 2016-11-09 | 2017-05-31 | 深圳市中润四方信息技术有限公司 | 一种应用软件的业务逻辑配置方法及配置*** |
CN108432208A (zh) * | 2016-12-15 | 2018-08-21 | 华为技术有限公司 | 一种业务编排方法、装置及服务器 |
CN109324791A (zh) * | 2017-08-18 | 2019-02-12 | 深圳怡化电脑股份有限公司 | 金融自助终端业务流程开发方法、装置及终端设备 |
CN107577458A (zh) * | 2017-08-18 | 2018-01-12 | 深圳怡化电脑股份有限公司 | 一种金融自助终端业务流程开发方法及装置 |
CN107632825A (zh) * | 2017-08-18 | 2018-01-26 | 深圳怡化电脑股份有限公司 | 一种业务软件开发方法及装置 |
CN108984155A (zh) * | 2018-05-17 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 数据处理流程设定方法和装置 |
CN112368675A (zh) * | 2018-06-06 | 2021-02-12 | 起元技术有限责任公司 | 更新可执行图 |
CN110766164A (zh) * | 2018-07-10 | 2020-02-07 | 第四范式(北京)技术有限公司 | 用于执行机器学习过程的方法和*** |
CN113169990A (zh) * | 2018-11-30 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 具有动态卸载的深度学习推理的分割 |
CN111369081A (zh) * | 2018-12-06 | 2020-07-03 | 北京嘀嘀无限科技发展有限公司 | 一种流程配置方法、装置、电子设备及存储介质 |
CN111382347A (zh) * | 2018-12-28 | 2020-07-07 | 广州市百果园信息技术有限公司 | 一种对象特征的处理和信息推送方法、装置和设备 |
CN110007902A (zh) * | 2019-03-12 | 2019-07-12 | 中国平安财产保险股份有限公司 | 业务处理流程配置的方法及装置 |
CN109918084A (zh) * | 2019-03-12 | 2019-06-21 | 浪潮通用软件有限公司 | 一种业务管理***的数据映射方法 |
CN110717584A (zh) * | 2019-09-30 | 2020-01-21 | 上海寒武纪信息科技有限公司 | 神经网络编译方法、编译器、计算机设备及可读存储介质 |
CN110928529A (zh) * | 2019-11-06 | 2020-03-27 | 第四范式(北京)技术有限公司 | 辅助算子开发的方法和*** |
CN111488211A (zh) * | 2020-04-09 | 2020-08-04 | 北京嘀嘀无限科技发展有限公司 | 基于深度学习框架的任务处理方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
《深度神经网络数据并行训练加速策略研究》;叶俊贤;《中国优秀硕士学位论文全文数据库信息科技辑》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112099848A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210390653A1 (en) | Learning robotic tasks using one or more neural networks | |
US11868895B2 (en) | Dynamic processing element array expansion | |
CN112099848B (zh) | 一种业务处理方法、装置及设备 | |
Wang et al. | Computation offloading in multi-access edge computing using a deep sequential model based on reinforcement learning | |
US10157045B2 (en) | Systems and methods for automatically generating code for deep learning systems | |
US20210090327A1 (en) | Neural network processing for multi-object 3d modeling | |
CN111401406B (zh) | 一种神经网络训练方法、视频帧处理方法以及相关设备 | |
US20190392253A1 (en) | Object recognition with reduced neural network weight precision | |
CN112099882B (zh) | 一种业务处理方法、装置及设备 | |
US20230082597A1 (en) | Neural Network Construction Method and System | |
WO2018021942A2 (ru) | Распознавание лиц с помощью искусственной нейронной сети | |
WO2022068623A1 (zh) | 一种模型训练方法及相关设备 | |
US11586903B2 (en) | Method and system of controlling computing operations based on early-stop in deep neural network | |
CN108171328B (zh) | 一种神经网络处理器和采用其执行的卷积运算方法 | |
CN113159273B (zh) | 一种神经网络的训练方法及相关设备 | |
US11144291B1 (en) | Loop-oriented neural network compilation | |
CN110717584A (zh) | 神经网络编译方法、编译器、计算机设备及可读存储介质 | |
CN111931901A (zh) | 一种神经网络构建方法以及装置 | |
CN116187391A (zh) | 神经网络模型的处理方法及装置 | |
CN112668381A (zh) | 用于识别图像的方法和设备 | |
US20240054671A1 (en) | Method and system for learned morphology-aware inverse kinematics | |
Viswanatha et al. | Implementation of Smart Security System in Agriculture fields Using Embedded Machine Learning | |
CN113435565A (zh) | 神经网络模型的处理方法、推理方法及其装置和电子设备 | |
WO2022127603A1 (zh) | 一种模型处理方法及相关装置 | |
Sarwar Murshed et al. | Efficient deployment of deep learning models on autonomous robots in the ROS environment |
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 |