CN112099882B - 一种业务处理方法、装置及设备 - Google Patents
一种业务处理方法、装置及设备 Download PDFInfo
- Publication number
- CN112099882B CN112099882B CN202010955576.9A CN202010955576A CN112099882B CN 112099882 B CN112099882 B CN 112099882B CN 202010955576 A CN202010955576 A CN 202010955576A CN 112099882 B CN112099882 B CN 112099882B
- Authority
- CN
- China
- Prior art keywords
- target
- executed
- program
- flow graph
- initial
- 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 11
- 238000012545 processing Methods 0.000 claims abstract description 224
- 238000000034 method Methods 0.000 claims abstract description 107
- 230000008569 process Effects 0.000 claims abstract description 62
- 230000006870 function Effects 0.000 claims description 152
- 238000004364 calculation method Methods 0.000 claims description 82
- 238000010586 diagram Methods 0.000 claims description 71
- 238000005457 optimization Methods 0.000 claims description 22
- 238000003860 storage Methods 0.000 claims description 22
- 230000001133 acceleration Effects 0.000 claims description 16
- 239000000758 substrate Substances 0.000 claims 2
- 239000000523 sample Substances 0.000 claims 1
- 238000010801 machine learning Methods 0.000 description 82
- 238000001514 detection method Methods 0.000 description 52
- 238000011161 development Methods 0.000 description 42
- 238000004422 calculation algorithm Methods 0.000 description 30
- 238000004458 analytical method Methods 0.000 description 16
- 238000013528 artificial neural network Methods 0.000 description 13
- 238000012549 training Methods 0.000 description 13
- 238000010276 construction Methods 0.000 description 10
- 238000005538 encapsulation Methods 0.000 description 10
- 238000012805 post-processing Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000008676 import Effects 0.000 description 7
- 238000013139 quantization Methods 0.000 description 7
- 238000003062 neural network model Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000011176 pooling Methods 0.000 description 5
- 230000005284 excitation Effects 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000013145 classification model Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification 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
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 108091028043 Nucleic acid sequence Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006378 damage Effects 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
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Security & Cryptography (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是本申请一种实施方式中的业务处理方法的流程图;
图2是本申请另一种实施方式中的业务处理方法的流程图;
图3A是本申请一种实施方式中的目标业务的拆分示意图;
图3B是本申请一种实施方式中的计算流图的示意图;
图3C是本申请一种实施方式中的待执行程序的示意图;
图3D是本申请一种实施方式中的执行调度的流程示意图;
图4A是本申请一种实施方式中的应用开发框架的示意图;
图4B是本申请一种实施方式中的模型封装导入的处理示意图;
图4C和图4D是本申请一种实施方式中的输入输出关系的示意图;
图4E是本申请一种实施方式中的目标业务的升级示意图;
图5是本申请一种实施方式中的业务处理装置的结构图;
图6是本申请一种实施方式中的业务处理设备的结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在介绍本申请的技术方案之前,先介绍与本申请实施例有关的概念。
机器学习:机器学习是实现人工智能的一种途径,用于研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身性能。深度学习属于机器学习的子类,是一种使用数学模型对真实世界中的特定问题进行建模,以解决该领域内相似问题的过程。神经网络是深度学习的实现方式,为了方便描述,本文以神经网络为例,介绍神经网络的结构和功能,对于机器学习的其它子类,与神经网络的结构和功能类似。
神经网络:神经网络包括但不限于卷积神经网络(简称CNN)、循环神经网络(简称RNN)、全连接网络等,神经网络的结构单元包括但不限于卷积层(Conv)、池化层(Pool)、激励层、全连接层(FC)等,对此不做限制。
在实际应用中,可以根据不同需求,将一个或多个卷积层,一个或多个池化层,一个或多个激励层,以及一个或多个全连接层进行组合构建神经网络。
在卷积层中,通过使用卷积核对输入数据特征进行卷积运算,使输入数据特征增强,该卷积核可以是m*n大小的矩阵,卷积层的输入数据特征与卷积核进行卷积,可以得到卷积层的输出数据特征,卷积运算实际是一个滤波过程。
在池化层中,通过对输入数据特征(如卷积层的输出)进行取最大值、取最小值、取平均值等操作,从而利用局部相关性的原理,对输入数据特征进行子抽样,减少处理量,并保持特征不变性,池化层运算实际是一个降采样过程。
在激励层中,可以使用激活函数(如非线性函数)对输入数据特征进行映射,从而引入非线性因素,使得神经网络通过非线性的组合增强表达能力。
该激活函数可以包括但不限于ReLU(Rectified Linear Units,整流线性单元)函数,该ReLU函数用于将小于0的特征置0,而大于0的特征保持不变。
在全连接层中,用于将输入给本全连接层的所有数据特征进行全连接处理,从而得到一个特征向量,且该特征向量中可以包括多个数据特征。
在一种可能的实施方式中,在得到目标业务对应的初始待执行程序后,将初始待执行程序下发给硬件平台,硬件平台基于初始待执行程序对待处理数据进行业务处理,得到业务处理结果。在某些应用场景下,可能需要对目标业务对应的待执行程序进行升级,得到升级后的目标待执行程序,在将目标待执行程序下发给硬件平台之前,需要先中断硬件平台的业务,从硬件平台删除初始待执行程序,然后才能将目标待执行程序下发给硬件平台,由硬件平台基于目标待执行程序对待处理数据进行业务处理,得到业务处理结果。
显然,在上述升级过程中,需要中断硬件平台的业务,无法实现升级过程的无缝切换,无法支持待执行程序的热升级,升级过程需要停止目标业务。
与上述方式不同的是,本实施例中,当目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序时,只需要获取与目标待执行程序对应的目标配置文件,并将目标配置文件发送给硬件平台即可,硬件平台可以基于目标配置文件实现业务处理,在待执行程序的升级过程中,不需要中断硬件平台的业务,支持待执行程序的热升级,即,在不影响目标业务的前提下,将目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序。
以下结合具体实施例,对本申请实施例的技术方案进行说明。
本申请实施例中提出一种业务处理方法,参见图1所示,为业务处理方法的流程示意图,该方法可以应用于任意设备,该方法可以包括以下步骤:
步骤101,当目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序时,获取与目标待执行程序对应的目标配置文件。目标待执行程序包括多个可执行文件,目标配置文件包括多个可执行文件的输入输出关系。
步骤102,将目标配置文件发送给硬件平台,由硬件平台基于该目标配置文件对待处理数据进行业务处理,得到与目标业务匹配的业务处理结果。
示例性的,在硬件平台基于该目标配置文件对待处理数据进行业务处理的过程中,针对目标待执行程序中的每个可执行文件,可以对本可执行文件的输入数据进行处理,得到数据处理结果。然后,硬件平台可以基于目标配置文件中的多个可执行文件的输入输出关系,将该可执行文件的数据处理结果输出给与该可执行文件具有输出关系的下一个可执行文件,由下一个可执行文件对本可执行文件的输入数据进行处理,得到数据处理结果,以此类推。
在一种可能的实施方式中,本实施例中提出一种应用开发框架,各用户可以基于应用开发框架实现自身的业务,为了区分方便,将该业务称为目标业务,如人脸检测业务,人体检测业务,车辆检测业务等,对此目标业务不做限制。
当用户基于应用开发框架实现目标业务时,可以获取目标业务对应的待执行程序,为了区分方便,将该待执行程序记为初始待执行程序,并获取与初始待执行程序对应的配置文件,为了区分方便,将该配置文件记为初始配置文件,将初始待执行程序和初始配置文件下发给硬件平台,以使硬件平台基于初始待执行程序和初始配置文件对待处理数据进行业务处理,得到与业务处理结果。
比如说,针对初始待执行程序中的每个可执行文件,对本可执行文件的输入数据(首个可执行文件的输入数据是待处理数据,非首个可执行文件的输入数据是其它可执行文件的数据处理结果)进行处理,得到数据处理结果。然后,硬件平台可以基于初始配置文件中的多个可执行文件的输入输出关系,将该可执行文件的数据处理结果输出给与该可执行文件具有输出关系的下一个可执行文件,由下一个可执行文件对本可执行文件的输入数据进行处理,以此类推。
在后续过程中,可能需要对目标业务对应的初始待执行程序进行升级,得到升级后的目标待执行程序,即,目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序,在此基础上,可以获取目标业务对应的目标待执行程序,并获取与目标待执行程序对应的目标配置文件,该目标待执行程序包括多个可执行文件,该目标配置文件包括多个可执行文件的输入输出关系。
示例性的,在得到目标业务对应的目标待执行程序后,针对该目标待执行程序中的每个可执行文件,可以判断硬件平台是否已存储有该可执行文件。如果否,则可以将该可执行文件发送给硬件平台,如果是,则可以禁止将该可执行文件发送给硬件平台,即不再将该可执行文件发送给硬件平台。
显然,在上述方式中,不是直接将目标待执行程序发送给硬件平台,而是分析硬件平台是否已存储有该目标待执行程序的每个可执行文件,针对每个可执行文件,基于分析结果确定是否将该可执行文件发送给硬件平台。
当然,在得到目标待执行程序后,也可以直接将目标待执行程序发送给硬件平台,即,将目标待执行程序包括的多个可执行文件发送给硬件平台。
示例性的,在得到目标待执行程序对应的目标配置文件后,可以将目标配置文件发送给硬件平台。经过上述处理,硬件平台可以得到目标待执行程序的所有可执行文件(即得到目标待执行程序)和目标配置文件,继而基于目标待执行程序和目标配置文件对待处理数据进行业务处理,得到与业务处理结果。
比如说,针对目标待执行程序中的每个可执行文件,对本可执行文件的输入数据(首个可执行文件的输入数据是待处理数据,非首个可执行文件的输入数据是其它可执行文件的数据处理结果)进行处理,得到数据处理结果。然后,硬件平台可以基于目标配置文件中的多个可执行文件的输入输出关系,将该可执行文件的数据处理结果输出给与该可执行文件具有输出关系的下一个可执行文件,由下一个可执行文件对本可执行文件的输入数据进行处理,以此类推
在后续过程中,可能仍然需要对目标业务对应的待执行程序进行升级,为了区分方便,将升级前的待执行程序记为初始待执行程序,将升级后的执行程序记为目标待执行程序,即,目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序,在此基础上,可以获取目标业务对应的目标待执行程序,并获取目标配置文件,实现过程参见上述实施例,在此不再重复赘述。
由以上技术方案可见,本申请实施例中,当目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序时,只需要获取与目标待执行程序对应的目标配置文件,并将目标配置文件发送给硬件平台,硬件平台就可以基于目标配置文件实现业务处理,在待执行程序的升级过程中,不需要中断硬件平台的业务,实现升级过程的无缝切换,支持待执行程序的热升级,即,在不影响目标业务的前提下,将目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序,在升级过程中不用停止目标业务。在上述方式中,目标待执行程序包括多个可执行文件,目标配置文件包括多个可执行文件的输入输出关系,基于这些可执行文件能够实现机器学习,在基于多个可执行文件对待处理数据进行业务处理时,能够使用机器学习技术实现各种类型的业务处理。
本申请实施例中提出一种业务处理方法,参见图2所示,为业务处理方法的流程示意图,该方法可以应用于任意设备,该方法可以包括以下步骤:
步骤201,获取与目标业务对应的目标计算流图,该目标计算流图至少可以包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系。
步骤202,根据目标计算流图获取与目标业务对应的初始待执行程序,并根据目标计算流图获取与该初始待执行程序对应的初始配置文件。该初始待执行程序包括多个可执行文件,多个可执行文件与目标计算流图中的多个操作节点的功能类型相对应。该初始配置文件包括多个可执行文件的输入输出关系,多个可执行文件的输入输出关系基于多个操作节点的连接关系确定。
步骤203,将初始待执行程序和初始配置文件发送给硬件平台,以使硬件平台通过初始待执行程序和初始配置文件对待处理数据进行业务处理,得到与目标业务匹配的业务处理结果。示例性的,针对初始待执行程序内的每个可执行文件来说,对本可执行文件的输入数据进行处理,得到数据处理结果;硬件平台基于初始配置文件中的输入输出关系,将该可执行文件的该数据处理结果输出给与该可执行文件具有输出关系的下一个可执行文件,以此类推。
步骤204,在需要对目标业务对应的待执行程序进行升级(如将初始待执行程序升级为目标待执行程序)时,获取与目标业务对应的变化后的目标计算流图(如目标待执行程序对应的目标计算流图),该目标计算流图可以包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系。
在一种可能的实施方式中,可以采用如下方式获取变化后的目标计算流图:
步骤2041,获取与目标业务对应的初始计算流图,该初始计算流图至少可以包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系。
示例性的,可以将目标业务拆分为多个功能,以目标业务为用于实现人脸检测和性别检测的业务为例进行说明,参见图3A所示,为目标业务的示意图,可以将用于实现人脸检测和性别检测的目标业务拆分为视频解码功能,图像缩放功能,人脸检测功能,图像抠图功能,人脸性别分类功能。
基于目标业务的上述功能,目标业务的处理过程可以依次为,针对输入数据(如视频图像),先对该输入数据进行视频解码处理,然后,对视频解码处理后的数据进行图像缩放处理,然后,对图像缩放处理后的数据进行人脸检测处理,然后,对人脸检测处理后的数据进行图像抠图处理,然后,对图像抠图处理后的数据进行人脸性别分类处理,最终,可以输出人脸框和性别。
针对目标业务的每个功能,可以对应一个操作节点,在将目标业务拆分为多个功能后,可以获取到与多个功能对应的多个操作节点,在与目标业务对应的初始计算流图中,可以包括多个操作节点以及各操作节点的功能类型。
例如,将目标业务拆分为视频解码功能,图像缩放功能,人脸检测功能,图像抠图功能,人脸性别分类功能后,可以获取到与视频解码功能对应的视频解码操作节点,与图像缩放功能对应的图像缩放操作节点,与人脸检测功能对应的人脸检测操作节点,与图像抠图功能对应的图像抠图操作节点,与人脸性别分类功能对应的人脸性别分类操作节点,即初始计算流图包括视频解码操作节点,图像缩放操作节点,人脸检测操作节点,图像抠图操作节点,人脸性别分类操作节点。又例如,初始计算流图可以包括操作节点1以及操作节点1的功能类型“视频解码功能”、操作节点2以及操作节点2的功能类型“图像缩放功能”、操作节点3以及操作节点3的功能类型“人脸检测功能”、操作节点4以及操作节点4的功能类型“图像抠图功能”、操作节点5以及操作节点5的功能类型“人脸性别分类功能”。为了方便描述,以前面一种情况为例。
示例性的,关于多个操作节点的连接关系,可以基于目标业务的多个功能的关系确定,比如说,参见图3A所示,由于对视频解码处理后的数据进行图像缩放处理,并对视频解码处理后的数据进行图像抠图处理,因此,视频解码操作节点与图像缩放操作节点连接,且视频解码操作节点与图像缩放操作节点连接。由于对图像缩放后的数据进行人脸检测处理,因此,图像缩放操作节点与人脸检测操作节点连接。由于对人脸检测后的数据进行图像抠图处理,因此,人脸检测操作节点与图像抠图操作节点连接。由于对图像抠图后的数据进行人脸性别分类处理,因此,图像抠图操作节点与人脸性别分类操作节点连接。
综上所述,可以获取到视频解码操作节点,图像缩放操作节点,人脸检测操作节点,图像抠图操作节点,人脸性别分类操作节点之间的连接关系,至此,得到与目标业务对应的初始计算流图,参见图3B所示,为初始计算流图的示例。
示例性的,针对初始计算流图来说,该初始计算流图中的各操作节点之间的连接关系可以包括顺序执行关系,比如说,操作节点1与操作节点2连接,操作节点2与操作节点3连接,操作节点3与操作节点4连接等。
针对初始计算流图来说,该初始计算流图中的各操作节点之间的连接关系可以包括判断执行关系,比如说,操作节点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对应的操作节点连接。然后,基于多个操作节点以及多个操作节点的连接关系生成与目标业务对应的初始计算流图,该初始计算流图包括多个操作节点,各操作节点的功能类型(可以通过操作节点的名称体现该操作节点的功能类型),以及多个操作节点的连接关系,参见图3B所示,为初始计算流图的示意图。
示例性的,可以识别出目标业务中的关键步骤,基于这些关键步骤将目标业务拆分为多个功能,目标业务中的每个关键步骤表示目标业务的一个功能。
示例性的,初始计算流图是用于描述目标业务处理的数据流图。
示例性的,本实施例中的计算流图也可以称为数据流图,或计算图等。
方式二、接收用户输入的与目标业务对应的计算流图配置文件,该计算流图配置文件可以包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系,基于计算流图配置文件生成与目标业务对应的初始计算流图,该初始计算流图包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系,参见图3B所示,为初始计算流图的示意图。
示例性的,用户可以将目标业务拆分为多个功能,获取与多个功能对应的多个操作节点,并基于目标业务的多个功能的关系确定多个操作节点的连接关系。然后,用户可以向设备输入计算流图配置文件,该计算流图配置文件包括多个操作节点,以及多个操作节点的连接关系。设备在接收到该计算流图配置文件后,就可以基于该计算流图配置文件生成初始计算流图。
方式三、接收用户输入的与目标业务对应的初始计算流图,该初始计算流图包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系。
示例性的,用户可以直接生成与目标业务对应的初始计算流图,并向设备输入初始计算流图,即,设备可以直接接收用户输入的该初始计算流图。比如说,用户可以借助可视化图编辑器来拖拽式编程自动生成初始计算流图,并向设备输入该初始计算流图,从而降低开发者的配置工作。
当然,方式一,方式二和方式三只是获取初始计算流图的几个示例,对此初始计算流图的获取方式不做限制,只要能够得到初始计算流图即可。
步骤2042,根据该初始计算流图获取目标计算流图;或者,对该初始计算流图进行优化,并根据优化后的计算流图获取目标计算流图。
示例性的,在得到初始计算流图后,可以根据该初始计算流图获取目标计算流图,例如,将该初始计算流图作为目标计算流图。或者,在得到初始计算流图后,对该初始计算流图进行优化,得到优化后的计算流图,根据优化后的计算流图获取目标计算流图,例如,将优化后的计算流图作为目标计算流图。
当然,上述方式只是获取目标计算流图的几个示例,对此目标计算流图的获取方式不做限制,只要能够基于初始计算流图得到目标计算流图即可。
示例性的,对该初始计算流图进行优化,得到优化后的计算流图,可以包括但不限于:对初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,得到优化后的计算流图。优化处理包括但不限于如下处理的至少一种:拆分处理,合并处理,内存共享处理,硬件加速处理,执行顺序调整处理。
示例性的,将初始计算流图作为候选计算流图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进行优化处理。
步骤205,当目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序时,根据目标计算流图获取与目标业务对应的目标待执行程序,并根据目标计算流图获取与目标待执行程序对应的目标配置文件。示例性的,该目标待执行程序包括多个可执行文件,多个可执行文件与目标计算流图中的多个操作节点的功能类型相对应。该目标配置文件包括多个可执行文件的输入输出关系,多个可执行文件的输入输出关系基于多个操作节点的连接关系确定。
示例性的,可以采用如下方式获取目标待执行程序和目标配置文件:
步骤2051,基于目标计算流图中的每个操作节点的功能类型,确定与该操作节点对应的可执行文件,该可执行文件为用于实现该功能类型的可执行文件。
针对目标计算流图中的每个操作节点来说,可以基于该操作节点的功能类型,从算子库中选取用于实现该功能类型的可执行文件,并将选取的可执行文件确定为与该操作节点对应的可执行文件。其中,该算子库可以包括预先存储的多个可执行文件,各可执行文件用于实现至少一种功能类型。
在一种可能的实施方式中,可以维护算子库,该算子库包括预先存储的多个可执行文件(也可以称为库文件),针对每个可执行文件来说,用于实现至少一种功能类型,例如,算子库包括可执行文件1和可执行文件2,可执行文件1用于实现功能类型1和功能类型2,可执行文件2用于实现功能类型3。
针对算子库来说,可以包括但不限于:用于实现图像处理功能(如图像滤波、几何图像变换、色彩转换等)的可执行文件,用于实现机器学习功能(如人脸检测,人体检测、车辆检测、人脸性别分类等)的可执行文件,用于实现视频分析功能(如运动估计、目标跟踪等)的可执行文件,用于实现模式识别功能(如特征提取、目标检测等)的可执行文件,用于实现深度学习模型推理功能的可执行文件等。当然,上述只是可执行文件的示例,对此不做限制。
示例性的,在步骤2051中,针对目标计算流图中的每个操作节点来说,可以先确定该操作节点的功能类型,例如,可以通过该操作节点的名称确定出该操作节点的功能类型。然后,可以从算子库中选取用于实现该功能类型的可执行文件,该可执行文件就可以是与该操作节点对应的可执行文件。
例如,参见图3B所示,可以确定视频解码操作节点的功能类型为视频解码功能,确定图像缩放操作节点的功能类型为图像缩放功能,确定人脸检测操作节点的功能类型为人脸检测功能,确定图像抠图操作节点的功能类型为图像抠图功能,确定人脸性别分类操作节点的功能类型为人脸性别分类功能。
从算子库中选取用于实现视频解码功能的可执行文件a1,从算子库中选取用于实现图像缩放功能的可执行文件a2,从算子库中选取用于实现人脸检测功能的可执行文件a3,从算子库中选取用于实现图像抠图功能的可执行文件a4,从算子库中选取用于实现人脸性别分类功能的可执行文件a5。
针对不同功能类型的可执行文件来说,可以是同一个可执行文件,也可以是不同的可执行文件,例如,用于实现视频解码功能的可执行文件a1与用于实现图像缩放功能的可执行文件a2可以相同,也可以不同。为了方便描述,后续以可执行文件a1-可执行文件a5是不同的可执行文件为例进行说明。
在上述实施例中,可执行文件指的是可以由操作***进行加载执行的二进制文件,在不同的操作***环境下,可执行文件的呈现方式不一样,可以包括代码段、数据段、堆栈段和扩展段等内容,代码段存放计算机的执行指令,即CPU要执行的操作指令,数据段存放CPU要用到的数据,堆栈段存放与寄存器有关的信息等。可执行文件是用于执行一定功能的模块,或者模块群。
本实施例中,可执行文件是用于实现指定功能的代码文件,比如说,用于实现视频解码功能的可执行文件a1,就是能够实现视频解码功能的代码文件,关于如何通过可执行文件a1实现视频解码功能,本实施例中不做限制。
在一种可能的实施方式中,设备本身包含大量可执行文件,将这些可执行文件存储到算子库中。除了设备本身提供的可执行文件,还面向用户提供可执行文件的注册能力,即用户能够将可执行文件存储到算子库中。综上所述,针对算子库中存储的可执行文件,可以是设备本身提供的,也可以是用户提供的。
示例性的,由于设备面向用户提供可执行文件的注册能力,因此,用户可以通过用户终端向设备发送注册消息。基于此,可以接收用户终端发送的注册消息,该注册消息包括代码文件,即,用于实现至少一种功能类型的代码文件,如用于实现视频解码功能的代码文件等。然后,将该代码文件转换为用于实现至少一种功能类型的可执行文件,比如说,对该代码文件进行编译,将该代码文件编译成能够被硬件平台运行的可执行文件,当代码文件用于实现视频解码功能时,则转换后的可执行文件也用于实现视频解码功能,即可执行文件的功能类型与代码文件的功能类型相同。然后,将该可执行文件存储到算子库中。
比如说,用户按照设备的接口要求完成代码文件的开发,如开发具有视频解码功能的代码文件,并通过用户终端向设备发送注册消息,该注册消息包括该代码文件。例如,用户按照设备的接口要求,实现代码文件的初始化(Initialize),代码文件的创建(Create)以及代码文件的主处理(Process)等三个接口函数,在实现初始化,创建以及主处理等三个接口函数后,可以可以得到代码文件。
设备在得到代码文件后,可以利用动态库自动编译工具,对代码文件进行编译,得到能够被硬件平台运行的可执行文件。关于对代码文件进行编译的过程,本文不做限制,只要编译得到的可执行文件能够被硬件平台运行即可。
在得到可执行文件后,就可以将该可执行文件存储到算子库中,并按照可执行文件的注册格式,添加该可执行文件的文件信息,如该可执行文件的文件名称,该可执行文件的功能类型,该可执行文件的输入参数信息等。
步骤2052,基于目标计算流图中的多个操作节点的连接关系,确定目标计算流图中的多个操作节点对应的多个可执行文件的输入输出关系。
示例性的,在得到目标计算流图中的每个操作节点对应的可执行文件之后,就可以得到多个可执行文件,并基于多个操作节点的连接关系确定多个可执行文件的输入输出关系。比如说,参见图3B所示,在目标计算流图中,视频解码操作节点与图像缩放操作节点连接,视频解码操作节点与图像抠图操作节点连接,图像缩放操作节点与人脸检测操作节点连接,人脸检测操作节点与图像抠图操作节点连接,图像抠图操作节点与人脸性别分类操作节点连接,在此基础上,多个可执行文件的输入输出关系包括:可执行文件a1的输入是空(即可执行文件a1是首个文件),可执行文件a1的输出是可执行文件a2和可执行文件a4;可执行文件a2的输入是可执行文件a1,可执行文件a2的输出是可执行文件a3;可执行文件a3的输入是可执行文件a2,可执行文件a3的输出是可执行文件a4;可执行文件a4的输入是可执行文件a1和可执行文件a3,可执行文件a4的输出是可执行文件a5;可执行文件a5的输入是可执行文件a4,可执行文件a5的输出是空,即可执行文件a5可以是最后一个文件。
步骤2053,基于目标计算流图中的多个操作节点对应的多个可执行文件获取与目标业务对应的目标待执行程序,并基于所述多个可执行文件的输入输出关系获取与该目标待执行程序对应的目标配置文件。
比如说,目标待执行程序包括可执行文件a1-可执行文件a5,且目标配置文件包括可执行文件a1-可执行文件a5的输入输出关系,比如说,可执行文件a1的输出是可执行文件a2和可执行文件a4,可执行文件a2的输出是可执行文件a3,可执行文件a3的输出是可执行文件a4,可执行文件a4的输出是可执行文件a5,参见图3C所示,为目标配置文件的一个示意图。
步骤206,将目标配置文件发送给硬件平台,针对目标待执行程序中的每个可执行文件,判断硬件平台是否已存储有该可执行文件,如果否,则将该可执行文件发送给硬件平台,如果是,则禁止将该可执行文件发送给硬件平台。
比如说,假设目标待执行程序包括可执行文件a1-可执行文件a5,硬件平台已存储有可执行文件a1-可执行文件a4,基于此,则只需要将目标配置文件和可执行文件a5发送给硬件平台,不再发送其它的可执行文件。
示例性的,判断硬件平台是否已存储有该可执行文件,可以包括:
方式一、针对目标待执行程序中的每个可执行文件,若初始待执行程序包括该可执行文件,则确定硬件平台已存储有该可执行文件;或者,若初始待执行程序未包括该可执行文件,则确定硬件平台未存储有该可执行文件。
例如,假设目标待执行程序包括可执行文件a1-可执行文件a5,针对可执行文件a1,判断初始待执行程序是否包括可执行文件a1,若是,确定硬件平台已存储有可执行文件a1,若否,确定硬件平台未存储有可执行文件a1,以此类推。
方式二、获取硬件平台的能力子集,该能力子集包括硬件平台已存储的各可执行文件的信息(如可执行文件的标识)。针对目标待执行程序中的每个可执行文件,判断该能力子集是否包括该可执行文件的信息;若是,则确定硬件平台已存储有该可执行文件;若否,则确定硬件平台未存储有该可执行文件。
比如说,从硬件平台获取能力子集,该能力子集包括可执行文件a1,可执行文件a2,可执行文件a3,可执行文件a4,该能力子集表示硬件平台已存储这些可执行文件。假设目标待执行程序包括可执行文件a1-可执行文件a5,则确定硬件平台已存储有可执行文件a1-可执行文件a4,但未存储有可执行文件a5。
方式三、针对目标待执行程序中的每个可执行文件,向硬件平台发送针对该可执行文件的查询消息,并接收硬件平台返回的针对该可执行文件的响应消息。若该响应消息携带第一标识,则基于该响应消息确定硬件平台已存储有该可执行文件。若该响应消息携带第二标识,则基于该响应消息确定硬件平台未存储有该可执行文件。示例性的,该第一标识用于表示硬件平台已存储有该可执行文件,该第二标识用于表示硬件平台未存储有该可执行文件。
当然,上述方式只是几个示例,对此不做限制,只要能够确定硬件平台是否已存储有目标待执行程序中的每个可执行文件即可。
步骤207,硬件平台基于目标待执行程序和目标配置文件对待处理数据进行业务处理,得到与目标业务匹配的业务处理结果。示例性的,针对目标待执行程序中的每个可执行文件来说,对本可执行文件的输入数据进行处理,得到数据处理结果;硬件平台基于目标配置文件中的输入输出关系,将该可执行文件的数据处理结果输出给与该可执行文件具有输出关系的下一个可执行文件。
比如说,参见图3C所示,在得到待处理数据后,硬件平台基于目标配置文件将待处理数据输入给可执行文件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进行处理,得到与目标业务匹配的业务处理结果,硬件平台输出与目标业务匹配的业务处理结果。
在一种可能的实施方式中,硬件平台可以按照目标配置文件中各可执行文件的输入输出关系,生成各可执行文件的执行顺序,并基于各可执行文件的执行顺序执行目标待执行程序中的各可执行文件。比如说,硬件平台在接收到待处理数据后,将待处理数据作为目标待执行程序的输入数据,通过目标待执行程序内的各可执行文件依次对数据进行处理,即数据流按照各可执行文件的执行顺序进行流动,经过每个可执行文件时分别进行相关的处理计算,输出结果传递到下个可执行文件,以此类推,一直到完成处理,得到业务处理结果。
在一种可能的实施方式中,目标待执行程序可以包括数据处理子程序,模型推理子程序,后处理子程序;基于目标配置文件中的输入输出关系,确定数据处理子程序的输出是模型推理子程序,模型推理子程序的输入是数据处理子程序,确定模型推理子程序的输出是后处理子程序,后处理子程序的输入是模型推理子程序。因此,将待处理数据输入给数据处理子程序;数据处理子程序对待处理数据进行预处理,将预处理完成后的数据输入给模型推理子程序;模型推理子程序对数据进行模型推理,将模型推理完成后的数据输入给后处理子程序;后处理子程序对数据进行后处理,得到与目标业务匹配的业务处理结果。
比如说,参见图3D所示,为执行调度的一个流程示意图,可以将待处理数据输入给数据处理子程序,数据处理子程序用于对待处理数据进行预处理,如完成编解码、缩放等操作。数据处理子程序将预处理完成后的数据输入给模型推理子程序,模型推理子程序对数据进行模型推理,如进行人脸检测、人脸性别分类等操作。模型推理子程序将模型推理完成后的数据输入给后处理子程序,后处理子程序对数据进行后处理操作,得到与目标业务匹配的业务处理结果。
在一种可能的实施方式中,针对目标待执行程序中的每个可执行文件,若该可执行文件具有对应的网络参数(例如,目标计算流图还包括与操作节点对应的网络参数,则与该操作节点对应的可执行文件具有对应的网络参数),则在该可执行文件中加载该网络参数,并将加载网络参数后的可执行文件更新到目标待执行程序中,即,目标待执行程序中的可执行文件已加载网络参数。
示例性的,在获得目标计算流图(初始计算流图)时,目标计算流图中除了包括多个操作节点和多个操作节点的连接关系,针对每个操作节点,还可能包括与该操作节点对应的网络参数,或未包括与该操作节点对应的网络参数。
比如说,目标计算流图可能包括与视频解码操作节点对应的网络参数,该网络参数表示视频图像的解码参数,例如,采用解码方式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可以实现人脸检测功能。人脸性别分类操作节点对应的可执行文件a5需要加载网络模型,即,加载用于实现人脸性别分类功能的网络模型,如人脸性别分类模型,该人脸性别分类模型是基于机器学习算法训练出的机器学习网络模型。通过加载人脸性别分类模型,可执行文件a5可以实现人脸性别分类,即基于用户的人脸确定出用户的性别。
在另一种可能的实施方式中,还可以在可执行文件中加载网络参数,并从模型池中获取与该可执行文件对应的网络模型,在该可执行文件中加载该网络模型,将加载该网络参数和该网络模型后的可执行文件添加到目标待执行程序中,即,可执行文件加载了网络参数和网络模型,实现过程参见上述实施例。
在上述实施例中,需要从模型池中获取与可执行文件对应的网络模型,在从模型池中获取与可执行文件对应的网络模型之前,还可以获取已经完成训练的机器学习网络模型,并对机器学习网络模型进行指定处理,得到处理后的网络模型,将处理后的网络模型存储在模型池中。示例性的,指定处理可以包括但不限于如下处理的至少一种:量化处理,封装处理,编译处理和加密处理。
在对机器学***台信息,模型版本信息的至少一种进行封装。
示例性的,以机器学习网络模型是神经网络(如卷积神经网络等)模型为例,可以利用样本数据训练神经网络模型内各神经网络参数,如卷积层参数(如卷积核参数)、池化层参数、激励层参数、全连接层参数等,对此不做限制。
显然,通过训练神经网络模型内的各神经网络参数,可以使神经网络模型拟合出输入和输出的映射关系,对神经网络模型的训练过程不做限制。在神经网络模型训练完成后,则可以得到已经完成训练的神经网络模型。
示例性的,在得到已经完成训练的机器学习网络模型后,可以对机器学习网络模型进行量化处理。比如说,将浮点数表示的模型参数,输入特征和输出特征,使用定点值近似表示,从而提高机器学习网络模型的运算速度,对机器学习网络模型进行压缩。例如,机器学习网络模型包括大量参数,这些参数是浮点数类型,浮点数类型的参数会占用大量存储空间,浮点数类型的参数的运算会消耗大量计算资源,如果在不影响准确率的情况下,可以采用定点数类型的参数进行计算,则能够提高计算速度,节约计算资源,节省存储空间,由此引入量化技术,量化即通过减少表示每个权重所需的比特数来压缩机器学习网络模型,基于量化技术,能够将浮点数类型的参数转换为定点数类型的参数。
示例性的,在得到已经完成训练的机器学***台也是多种多样,为了便于硬件平台识别机器学***台上执行机器学***台能够推理的机器学***台有关,比如说,若硬件平台是FPGA,则可以将机器学习网络模型封装为FPGA能够推理的机器学习网络模型。
在对机器学***台信息,模型版本信息的至少一种进行封装。比如说,将模型标识,模型业务解析信息,运行平台信息,模型版本信息的至少一种打包封装在机器学***台通过解析机器学***台信息,模型版本信息等,既保证了模型信息的安全性,又便于跨平台的推理部署。
示例性的,在得到已经完成训练的机器学***台进行针对性的优化编译,以提高推理效率。
示例性的,在得到已经完成训练的机器学习网络模型后,可以对机器学习网络模型进行加密处理,从而得到机器学习网络模型的安全性。
示例性的,在得到已经完成训练的机器学***台上进行模型推理的网络模型。
综上所述,可以得到处理后的网络模型,并将处理后的网络模型存储在模型池中,处理后的网络模型可以是人体检测模型(即用于实现人体检测的网络模型),可以是人脸检测模型(即用于实现人脸检测的网络模型),可以是车辆检测模型,可以是人脸性别分类模型等,对此网络模型的类型不做限制。
示例性的,上述执行顺序只是为了方便描述给出的示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
以下结合具体应用场景,对本申请实施例的上述技术方案进行说明。
本申请实施例中提出一种应用开发框架(应用开发和推理框架),涉及利用机器学***台(如CPU、GPU、ARM、FPGA等)。该应用开发框架可以运行机器学***台设备的运行,可以结合硬件资源情况对计算流图进行合理的优化,最大化的利用设备资源,平衡效率和推理效果。用户可以快速添加或者利用已有的通用图像处理和机器学习算法快速搭建业务应用。
该应用开发框架可以为开发者提供业务应用编程接口、业务应用模块注册、机器学习模型注册以及公共算子库,使其可以在无需了解底层算法细节的前提下,进行基于机器学习模型的推理构建和场景应用开发。该应用开发框架将机器学习(感知)模型的推理计算、图像处理和计算视觉的通用算法抽象成模块组件,将整个业务应用的数据流处理构建成一个模块化组件图,通过维护和修改这个数据流的计算图来解决业务应用问题。例如,可以将视音频数据流输入到计算流图中,通过构建包含视频解码、人脸检测、目标跟踪等功能模块的计算流图,来完成视频人脸检测和跟踪任务,实时输出人脸位置框。
该应用开发框架支持在不同的设备(如嵌入式、移动设备、工作站以及服务器等)和硬件平台(如CPU、GPU、ARM、FPGA等)上运行,包含异构和非异构平台,是一个跨平台的处理框架。开发者可以不用关注不同硬件平台的运行环境,专注于算法模块和模型的开发,快速的将现有的或者新的机器学***台的处理。
参见图4A所示,为应用开发框架的组网示意图,应用开发框架可以包括但不限于算子开发及注册模块,模型封装导入模块,计算流图构建模块,计算流图优化模块,计算流图执行模块,私有算子库,公开算子库和模型池。算子开发及注册模块和模型封装导入模块属于算子与模型注册层,计算流图构建模块属于可视化业务图构建层,计算流图优化模块和计算流图执行模块属于计算流图引擎层,私有算子库,公开算子库和模型池属于框架资源管理层。
应用开发框架以操作节点(操作节点也可以称为算子)为中心,操作节点是最基本的计算单元,内部实现了对数据流运算操作的封装,对外提供了一种最底层的功能。计算流图是一个表征数据流计算流程的有向图,数据流从计算流图的输入节点(即计算流图的首个操作节点)进入,在计算流图的各个操作节点流动,最后汇聚在输出节点。计算流图中的每个节点可以是操作节点,也可以是子图,而子图内又包含了一个完整的计算流图,实现了一些固定计算的组合,便于在不同的图内复用,以快速搭建大规模模块化的应用。
可以利用计算流图来串联组合不同的可执行文件(可执行文件也可以称为功能模块),以完成一个***级的智能算法应用,可执行文件可以是一些底层通用的功能模块,如视频的解码,图像的缩放、运动目标的提取等,通过将这些通用的可执行文件抽象成一个个包含相同数据流和接口的模块,就可以将整个智能算法描述成一个模块化的组件图。上层用户可以根据各自的应用场景和需求,自由组合这些可执行文件,完成对场景的智能算法应用开发。
参见图4A所示,应用开发框架本身可以将大量可执行文件存储到公共算子库中。在此基础上,算子开发及注册模块用于向用户提供可执行文件的注册能力,用户按照算子开发及注册模块的接口要求完成代码文件(即定制私有代码文件)的开发,并向算子开发及注册模块输入注册消息,该注册消息包括该代码文件。算子开发及注册模块从注册消息中解析出代码文件,将该代码文件转换为可执行文件,例如,利用动态库自动编译工具对代码文件进行编译,得到能够被硬件平台运行的可执行文件。算子开发及注册模块将该可执行文件存储到私有算子库或者公开算子库中,并按照可执行文件的注册格式,添加该可执行文件的文件信息,如该可执行文件的文件名称,功能类型,输入参数信息等。
算子开发及注册模块的应用接口要求包括:每个新增的可执行文件按照算子开发及注册模块定义的通用接口要求,需要实现算子开发及注册模块初始化、算子开发及注册模块创建以及算子开发及注册模块主处理等三个接口函数。
参见图4A所示,应用开发框架本身可以将网络模型存储到模型池中。在此基础上,模型封装导入模块用于向用户提供网络模型的导入能力,因此,用户将已经完成训练的机器学习网络模型输入给模型封装导入模块,模型封装导入模块获取已经完成训练的机器学习网络模型,并对该机器学习网络模型进行指定处理,得到处理后的网络模型,并将处理后的网络模型存储在模型池中。
参见图4B所示,模型封装导入模块对机器学***台上进行模型推理的模型表达文件(处理后的网络模型)。模型推理是指:将模型部署到需要对数据进行分类预测的领域,从而识别出已知的模式或对象。
由于用户训练的机器学***台也是多种多样,因此,为了便于应用开发框架能够识别模型信息,并在相应的硬件平台上完成模型推理和结果解析,可以通过模型封装将各种不同训练框架的模型转换成不同硬件平台上可以推理的模型表达文件。此外,在封装阶段还可以将模型标识、模型业务解析信息、运行平台信息、模型版本信息等一并打包封装在模型表达文件中,从而通过对应的解析协议就可以快速的识别出模型的用途、运行平台,既保证了模型信息的安全性,又便于跨平台的推理部署。
由于应用开发框架不对模型训练框架做特殊要求,因此,可以通过模型转换编译将模型转成一种通用的模型交换格式(如ONNX),即,针对不同的硬件平台对机器学习网络模型进行针对性的优化编译,以提高推理效率。
参见图4A所示,计算流图构建模块可以获取与目标业务对应的初始计算流图,例如,将目标业务拆分为多个功能,获取与多个功能对应的多个操作节点,基于目标业务的多个功能的关系确定多个操作节点的连接关系,基于多个操作节点以及多个操作节点的连接关系生成初始计算流图。然后,计算流图优化模块对初始计算流图进行优化,得到优化后的计算流图,将优化后的计算流图作为目标计算流图。例如,对初始计算流图的操作节点和/或操作节点的连接关系进行优化,得到优化后的计算流图。例如,计算流图优化模块基于硬件平台的硬件能力(如计算能力,存储能力,带宽能力的至少一种),在保证计算精度的情况下,对初始计算流图的操作节点进行拆分处理,合并处理,内存共享处理,硬件加速处理的至少一种,最终寻找到最佳的目标计算流图。
计算流图构建模块获取与目标业务对应的初始计算流图的过程中,比如说,计算流图构建模块识别出目标业务中的关键步骤,对应到可用的操作节点或者子图中,最终生成初始计算流图来描述整个业务处理的数据流图。
又例如,计算流图构建模块接收用户输入的与目标业务对应的计算流图配置文件,利用计算流图配置文件来描述整个业务处理的流程,计算流图配置文件可以是Json、Xml等数据格式,用户可以手动编写计算流图配置文件,计算流图配置文件包括多个操作节点,各操作节点的功能类型,以及多个操作节点的连接关系,基于该计算流图配置文件生成与目标业务对应的初始计算流图。
又例如,计算流图构建模块接收用户输入的与目标业务对应的初始计算流图。比如说,用户可以借助可视化图编辑器来拖拽式编程自动生成初始计算流图,降低开发者的配置工作。开发者可以借助拖拽图形化的操作节点、配置操作节点的网络参数以及连接各操作节点来编排和修改业务流程。
示例性的,初始计算流图/目标计算流图定义了一些操作节点,初始计算流图/目标计算流图包括每个操作节点的输入输出信息(如上述网络参数等),操作节点的信息(如操作节点的名称等),操作节点之间的连接关系。操作节点的输入输出信息描述了目标业务所需的外部输入信息和目标业务产生的输出信息,操作节点的信息描述了目标业务所需要的所有可执行文件(即计算模块),操作节点之间的连接关系包含目标业务的业务逻辑和执行过程等。
参见图4A所示,针对目标计算流图中的每个操作节点,计算流图执行模块基于该操作节点的功能类型,可以从公共算子库和/或私有算子库中选取用于实现该功能类型的可执行文件,即与该操作节点对应的可执行文件。基于目标计算流图中的多个操作节点的连接关系,可以确定多个可执行文件的输入输出关系。基于多个可执行文件获取与目标业务对应的初始待执行程序或目标待执行程序,基于多个可执行文件的输入输出关系获取初始配置文件或目标配置文件。
计算流图执行模块通过初始待执行程序和初始配置文件(或目标待执行程序和目标配置文件)对待处理数据进行业务处理,得到业务处理结果。比如说,将初始待执行程序(或目标待执行程序)部署到硬件平台,并将初始配置文件(或目标配置文件)发送给硬件平台。硬件平台按照该初始配置文件(或目标配置文件)中各可执行文件的输入输出关系,生成初始待执行程序(或目标待执行程序)中的各可执行文件的执行顺序。在接收到待处理数据后,将待处理数据作为初始待执行程序(或目标待执行程序)的输入数据,通过初始待执行程序(或目标待执行程序)内的各可执行文件依次对数据进行处理,即数据流按照各可执行文件的执行顺序进行流动,经过各可执行文件时分别进行相关的处理计算,输出结果传递到下个可执行文件,以此类推,一直到完成处理。
参见图4C所示,是初始配置文件中多个可执行文件的输入输出关系的示意图,每个计算模块对应一个可执行文件,每个可执行文件都包含通用的用户接口,例如,计算模块一是图像缩放模块,即用于实现图像缩放功能的可执行文件,计算模块二是人体检测模块,即用于实现人体检测功能的可执行文件,计算模块三是性别分类模块,即用于实现性别分类功能的可执行文件,计算模块四是衣服颜色分类模块,即用于实现衣服颜色分类功能的可执行文件,计算模块五是判断过滤模块,即用于实现判断过滤功能的可执行文件。在输入图像后,按照上述连接关系依次执行,可以完成人体性别颜色分类任务。
参见图4D所示,是目标配置文件中多个可执行文件的输入输出关系的示意图,每个计算模块对应一个可执行文件,每个可执行文件都包含通用的用户接口,在图4C的基础上,增加了计算模块六,且去除了计算模块一。
基于此,可以将目标配置文件发送给硬件平台,通过目标配置文件替换硬件平台中的初始配置文件,由于初始配置文件未包括计算模块六,因此,将计算模块六对应的可执行文件发送给硬件平台,显然,硬件平台包括计算模块二至计算模块六,硬件平台可以基于目标配置文件和各计算模块实现业务处理。
在一种可能的实施方式中,目标业务(即智能算法应用)是一些计算模块的固定组合,如果要更换目标业务的计算模块,则需要将目标业务的全部计算模块替换掉。与上述方式不同的是,本实施例中,只需要将初始配置文件更新为目标配置文件,并下发额外增加的计算模块即可,就可以完成目标业务的升级,在升级过程中,传输的数据规模更小,可以快速完成目标业务的升级。
在一种可能的实施方式中,参见图4E所示,为了对目标业务进行升级,可以获取计算流图配置文件,并基于计算流图配置文件获取到目标计算流图,基于目标计算流图获取目标待执行程序和目标配置文件,该目标待执行程序包括多个可执行文件,该目标配置文件包括所述多个可执行文件的输入输出关系,参见图4D所示的目标配置文件,图4D通过计算模块表示可执行文件。
然后,确定是否存在需要新增的可执行文件(即目标待执行程序包括且硬件平台未包括的可执行文件),如计算模块六。如果存在,则将该可执行文件和目标配置文件发送给硬件平台。硬件平台可以为该可执行文件创建一个线程,并为该可执行文件分配计算资源(如内存等),该线程用于执行该可执行文件的相关操作。如果不存在,则将目标配置文件发送给硬件平台。在可执行文件的线程创建完成,且计算资源分配完成后,硬件平台可以切换到新的处理流程来运行,即硬件平台基于目标配置文件和目标待执行程序进行业务处理。
示例性的,硬件平台还可以对之前已创建的无效计算模块(目标配置文件中不再使用的计算模块,如计算模块一)进行销毁,回收计算资源。
基于上述处理,在升级过程中,可以不用停止原有智能算法的分析,避免智能算法升级配置过程中先销毁原有智能算法应用-重启设备-然后再创建新的智能应用的繁琐流程,解决智能应用在升级过程中分析不能中断的需求。
由以上技术方案可见,本申请实施例中,通过可执行文件能够实现机器学***台上。应用开发框架可以涉及机器学***台的硬件资源情况,进行针对性优化,平衡资源使用和业务处理效果,最大化的利用硬件资源。本实施例提出一种基于计算流图的机器学***台框架,可以运行在各自嵌入式平台、工作站、服务器等设备中,能够针对平台的特性进行针对性的优化,充分利用硬件平台的资源。支持端边云统一的应用开发框架,实现一次可执行文件和模型的开发之后,可以在所有平台上具有平滑迁移的能力。
上述方式可以利用计算图对不同的计算模块进行组合和重配置,以快速部署和切换升级新的智能算法应用,通过组合通用计算模块来完成一个完整的智能算法应用,能够解决计算设备(边缘嵌入式计算设备、云端服务器等)每次迭代升级或者更换智能算法应用时,升级更新效率低,且无法实现热升级等问题。提出一种基于计算图协议的智能应用算法构建和重配置方法,解决了固定算法模块组合带来的单一性,通过修改重配置智能算法的计算图协议,快速生成新的智能应用组合,灵活响应用户需求,提升产品的可扩展性,适用于所有云边端的智能计算设备。在更新算法时,只需要向硬件平台下发更新后的配置文件和可执行文件就可以实现任务的动态修改,减少传输压力。支持用户实现智能算法的热升级,即在不影响配置前算法运行的前提下,逐步完成新增模块的创建和无效模块的销毁,实现新老算法应用无缝切换。
基于与上述方法同样的申请构思,本申请实施例中还提出一种业务处理装置,如图5所示,为所述装置的结构图,所述装置包括:获取模块51,用于当目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序时,获取与所述目标待执行程序对应的目标配置文件;其中,所述目标待执行程序包括多个可执行文件,所述目标配置文件包括所述多个可执行文件的输入输出关系;
处理模块52,用于将所述目标配置文件发送给硬件平台,由硬件平台基于所述目标配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述目标待执行程序中的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果;所述硬件平台基于所述目标配置文件中的所述多个可执行文件的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
示例性的,所述处理模块52还用于:针对所述目标待执行程序中的每个可执行文件,判断所述硬件平台是否已存储有该可执行文件,如果否,则将该可执行文件发送给所述硬件平台。例如,所述处理模块52判断所述硬件平台是否已存储有该可执行文件时具体用于:若所述初始待执行程序包括所述目标待执行程序中的该可执行文件,则确定所述硬件平台已存储有该可执行文件;或,若所述初始待执行程序未包括所述目标待执行程序中的该可执行文件,则确定所述硬件平台未存储有该可执行文件。又例如,所述处理模块52判断所述硬件平台是否已存储有该可执行文件时具体用于:获取所述硬件平台的能力子集,所述能力子集包括所述硬件平台已存储的各可执行文件的信息,并判断所述能力子集是否包括该可执行文件的信息;若是,则确定所述硬件平台已存储有该可执行文件;若否,则确定所述硬件平台未存储有该可执行文件。
所述获取模块51还用于:获取与目标业务对应的目标计算流图;其中,所述目标计算流图包括多个操作节点,各操作节点的功能类型,及所述多个操作节点的连接关系;根据所述目标计算流图获取所述目标待执行程序;其中,所述目标待执行程序中的多个可执行文件与所述多个操作节点的功能类型相对应;
所述获取模块51获取与目标待执行程序对应的目标配置文件时具体用于:根据所述目标计算流图获取所述目标配置文件;其中,所述目标配置文件中的所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定。
基于与上述方法同样的申请构思,本申请实施例中还提出一种业务处理设备,本申请实施例提供的业务处理设备,从硬件层面而言,业务处理设备的硬件架构示意图可以参见图6所示。业务处理设备可以包括:处理器61和机器可读存储介质62,所述机器可读存储介质62存储有能够被处理器61执行的机器可执行指令;所述处理器61用于执行机器可执行指令,以实现本申请上述示例公开的方法。例如,处理器61用于执行机器可执行指令,以实现如下步骤:
当目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序时,获取与目标待执行程序对应的目标配置文件;所述目标待执行程序包括多个可执行文件,所述目标配置文件包括所述多个可执行文件的输入输出关系;
将所述目标配置文件发送给硬件平台,由硬件平台基于所述目标配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;
其中,针对所述目标待执行程序中的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果;所述硬件平台基于所述目标配置文件中的所述多个可执行文件的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,其中,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的方法。
示例性的,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种业务处理方法,其特征在于,所述方法包括:
当目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序时,获取与目标待执行程序对应的目标配置文件;所述目标待执行程序包括多个可执行文件,所述目标配置文件包括所述多个可执行文件的输入输出关系;
将所述目标配置文件发送给硬件平台,由硬件平台基于所述目标配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;
其中,针对所述目标待执行程序中的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果;所述硬件平台基于所述目标配置文件中的所述多个可执行文件的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件;
其中,所述获取与目标待执行程序对应的目标配置文件之前,获取与目标业务对应的初始计算流图,对所述初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,并根据优化后的计算流图获取目标计算流图;所述目标计算流图包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;其中,优化处理包括如下处理的至少一种:拆分处理,合并处理,内存共享处理,硬件加速处理,执行顺序调整处理;对初始计算流图进行拆分处理包括:对初始计算流图中的部分或者全部操作节点进行拆分处理;对初始计算流图进行合并处理包括:对初始计算流图中的部分操作节点进行合并处理;对初始计算流图进行内存共享处理包括:对初始计算流图中的部分操作节点共享相同内存;对初始计算流图进行硬件加速处理包括:对初始计算流图中的一个或者多个操作节点进行硬件加速;对初始计算流图进行执行顺序调整处理包括:调整初始计算流图中的操作节点的连接关系,和/或,调整初始计算流图中的操作节点的执行顺序;
其中,若优化处理包括拆分处理和内存共享处理,则对初始计算流图进行拆分处理,得到拆分处理后的计算流图,基于初始计算流图获取第一待执行程序,基于拆分处理后的计算流图获取第二待执行程序;若所述第二待执行程序的性能开销小于所述第一待执行程序的性能开销,则对拆分处理后的计算流图进行内存共享处理,得到目标计算流图;或者,若所述第二待执行程序的性能开销大于所述第一待执行程序的性能开销,则对初始计算流图进行内存共享处理,得到目标计算流图;
其中,所述获取与目标待执行程序对应的目标配置文件,包括:根据所述目标计算流图获取所述目标配置文件;其中,所述目标配置文件中的所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定。
2.根据权利要求1所述的方法,其特征在于,当目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序时,所述方法还包括:
针对所述目标待执行程序中的每个可执行文件,判断所述硬件平台是否已存储有该可执行文件,如果否,则将该可执行文件发送给所述硬件平台。
3.根据权利要求2所述的方法,其特征在于,
所述判断所述硬件平台是否已存储有该可执行文件,包括:
若所述初始待执行程序包括所述目标待执行程序中的该可执行文件,则确定所述硬件平台已存储有该可执行文件;或,
若所述初始待执行程序未包括所述目标待执行程序中的该可执行文件,则确定所述硬件平台未存储有该可执行文件。
4.根据权利要求2所述的方法,其特征在于,
所述判断所述硬件平台是否已存储有该可执行文件,包括:
获取所述硬件平台的能力子集,所述能力子集包括所述硬件平台已存储的各可执行文件的信息,并判断所述能力子集是否包括该可执行文件的信息;
若是,则确定所述硬件平台已存储有该可执行文件;
若否,则确定所述硬件平台未存储有该可执行文件。
5.根据权利要求1-4任一项所述的方法,其特征在于,
所述根据优化后的计算流图获取目标计算流图之后,所述方法还包括:
根据所述目标计算流图获取所述目标待执行程序;其中,所述目标待执行程序中的多个可执行文件与所述多个操作节点的功能类型相对应。
6.根据权利要求5所述的方法,其特征在于,
所述根据所述目标计算流图获取所述目标待执行程序,包括:基于所述目标计算流图中的每个操作节点的功能类型,确定与该操作节点对应的可执行文件,所述可执行文件为用于实现所述功能类型的可执行文件;基于所述目标计算流图中的多个操作节点对应的多个可执行文件获取所述目标待执行程序。
7.根据权利要求6所述的方法,其特征在于,所述基于所述目标计算流图中的每个操作节点的功能类型,确定与该操作节点对应的可执行文件,包括:
针对目标计算流图中的每个操作节点,基于该操作节点的功能类型,从算子库中选取用于实现所述功能类型的可执行文件;其中,所述算子库包括预先存储的多个可执行文件,各可执行文件用于实现至少一种功能类型;
将选取的可执行文件确定为与该操作节点对应的可执行文件。
8.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
针对所述目标待执行程序中的每个可执行文件,若该可执行文件具有对应的网络参数,则在该可执行文件中加载所述网络参数,并将加载所述网络参数后的可执行文件更新到所述目标待执行程序中;或者,
针对所述目标待执行程序中的每个可执行文件,若该可执行文件需要加载网络模型,则获取与该可执行文件对应的网络模型,在该可执行文件中加载所述网络模型,将加载网络模型后的可执行文件更新到所述目标待执行程序中。
9.一种业务处理装置,其特征在于,所述装置包括:
获取模块,用于当目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序时,获取与所述目标待执行程序对应的目标配置文件;其中,所述目标待执行程序包括多个可执行文件,所述目标配置文件包括所述多个可执行文件的输入输出关系;
处理模块,用于将所述目标配置文件发送给硬件平台,由硬件平台基于所述目标配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;其中,针对所述目标待执行程序中的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果;所述硬件平台基于所述目标配置文件中的所述多个可执行文件的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件;
其中,所述获取模块还用于:获取与目标业务对应的初始计算流图,对所述初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,并根据优化后的计算流图获取目标计算流图;所述目标计算流图包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;其中,优化处理包括如下处理的至少一种:拆分处理,合并处理,内存共享处理,硬件加速处理,执行顺序调整处理;对初始计算流图进行拆分处理包括:对初始计算流图中的部分或者全部操作节点进行拆分处理;对初始计算流图进行合并处理包括:对初始计算流图中的部分操作节点进行合并处理;对初始计算流图进行内存共享处理包括:对初始计算流图中的部分操作节点共享相同内存;对初始计算流图进行硬件加速处理包括:对初始计算流图中的一个或者多个操作节点进行硬件加速;对初始计算流图进行执行顺序调整处理包括:调整初始计算流图中的操作节点的连接关系,和/或,调整初始计算流图中的操作节点的执行顺序;
其中,所述获取模块还用于:若优化处理包括拆分处理和内存共享处理,则对初始计算流图进行拆分处理,得到拆分处理后的计算流图,基于初始计算流图获取第一待执行程序,基于拆分处理后的计算流图获取第二待执行程序;若所述第二待执行程序的性能开销小于所述第一待执行程序的性能开销,则对拆分处理后的计算流图进行内存共享处理,得到目标计算流图;或者,若所述第二待执行程序的性能开销大于所述第一待执行程序的性能开销,则对初始计算流图进行内存共享处理,得到目标计算流图;
所述获取模块获取与目标待执行程序对应的目标配置文件时具体用于:根据所述目标计算流图获取所述目标配置文件;其中,所述目标配置文件中的所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定。
10.一种业务处理设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
所述处理器用于执行机器可执行指令,以实现如下的步骤:
当目标业务对应的待执行程序从初始待执行程序升级为目标待执行程序时,获取与目标待执行程序对应的目标配置文件;所述目标待执行程序包括多个可执行文件,所述目标配置文件包括所述多个可执行文件的输入输出关系;
将所述目标配置文件发送给硬件平台,由硬件平台基于所述目标配置文件对待处理数据进行业务处理,得到与所述目标业务匹配的业务处理结果;
其中,针对所述目标待执行程序中的每个可执行文件,对本可执行文件的输入数据进行处理,得到数据处理结果;所述硬件平台基于所述目标配置文件中的所述多个可执行文件的输入输出关系,将所述可执行文件的所述数据处理结果输出给与所述可执行文件具有输出关系的下一个可执行文件;
其中,所述获取与目标待执行程序对应的目标配置文件之前,获取与目标业务对应的初始计算流图,对所述初始计算流图的操作节点和/或操作节点的连接关系进行优化处理,并根据优化后的计算流图获取目标计算流图;所述目标计算流图包括多个操作节点,各操作节点的功能类型,以及所述多个操作节点的连接关系;其中,优化处理包括如下处理的至少一种:拆分处理,合并处理,内存共享处理,硬件加速处理,执行顺序调整处理;对初始计算流图进行拆分处理包括:对初始计算流图中的部分或者全部操作节点进行拆分处理;对初始计算流图进行合并处理包括:对初始计算流图中的部分操作节点进行合并处理;对初始计算流图进行内存共享处理包括:对初始计算流图中的部分操作节点共享相同内存;对初始计算流图进行硬件加速处理包括:对初始计算流图中的一个或者多个操作节点进行硬件加速;对初始计算流图进行执行顺序调整处理包括:调整初始计算流图中的操作节点的连接关系,和/或,调整初始计算流图中的操作节点的执行顺序;
其中,若优化处理包括拆分处理和内存共享处理,则对初始计算流图进行拆分处理,得到拆分处理后的计算流图,基于初始计算流图获取第一待执行程序,基于拆分处理后的计算流图获取第二待执行程序;若所述第二待执行程序的性能开销小于所述第一待执行程序的性能开销,则对拆分处理后的计算流图进行内存共享处理,得到目标计算流图;或者,若所述第二待执行程序的性能开销大于所述第一待执行程序的性能开销,则对初始计算流图进行内存共享处理,得到目标计算流图;
其中,所述获取与目标待执行程序对应的目标配置文件,包括:根据所述目标计算流图获取所述目标配置文件;其中,所述目标配置文件中的所述多个可执行文件的输入输出关系基于所述多个操作节点的连接关系确定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010955576.9A CN112099882B (zh) | 2020-09-11 | 2020-09-11 | 一种业务处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010955576.9A CN112099882B (zh) | 2020-09-11 | 2020-09-11 | 一种业务处理方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099882A CN112099882A (zh) | 2020-12-18 |
CN112099882B true CN112099882B (zh) | 2023-08-25 |
Family
ID=73751798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010955576.9A Active CN112099882B (zh) | 2020-09-11 | 2020-09-11 | 一种业务处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099882B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110854A (zh) * | 2021-03-29 | 2021-07-13 | 深圳华锐金融技术股份有限公司 | 业务升级方法、装置、计算机设备和存储介质 |
CN113368502B (zh) * | 2021-05-27 | 2024-01-30 | 江苏视博云信息技术有限公司 | 一种云游戏的管理方法、装置及存储介质 |
CN113961267B (zh) * | 2021-10-15 | 2023-08-25 | 杭州海康威视数字技术股份有限公司 | 一种业务处理方法、装置及设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105631334A (zh) * | 2015-12-25 | 2016-06-01 | 北京奇虎科技有限公司 | 应用的安全检测处理方法和*** |
CN108681473A (zh) * | 2018-05-18 | 2018-10-19 | 广州酷狗计算机科技有限公司 | 应用程序生成、运行方法、装置、计算机设备和存储介质 |
CN108958796A (zh) * | 2017-05-23 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 业务请求处理方法及装置、业务请求处理*** |
CN109766387A (zh) * | 2018-12-20 | 2019-05-17 | 平安信托有限责任公司 | 数据处理文件生成方法、装置、计算机设备和存储介质 |
WO2019202216A2 (en) * | 2018-04-18 | 2019-10-24 | Meeshkan Oy | Method for distributed information processing and distributed information processing system |
CN110704290A (zh) * | 2019-09-27 | 2020-01-17 | 百度在线网络技术(北京)有限公司 | 日志分析方法及装置 |
CN111045751A (zh) * | 2019-12-27 | 2020-04-21 | 中国银行股份有限公司 | 多服务配置链式处理方法及装置 |
CN111274580A (zh) * | 2020-01-19 | 2020-06-12 | 湖南第一师范学院 | 基于深度学习的控制流完整性检测方法 |
CN111369081A (zh) * | 2018-12-06 | 2020-07-03 | 北京嘀嘀无限科技发展有限公司 | 一种流程配置方法、装置、电子设备及存储介质 |
CN111443961A (zh) * | 2020-03-24 | 2020-07-24 | 广州华多网络科技有限公司 | 终端设备及其跨进程通信方法 |
CN111625830A (zh) * | 2019-02-27 | 2020-09-04 | 阿里巴巴集团控股有限公司 | 数据处理方法、数据展示方法、***及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020124245A1 (en) * | 2000-08-14 | 2002-09-05 | Alvin Maddux | Method and apparatus for advanced software deployment |
US20130138473A1 (en) * | 2011-11-28 | 2013-05-30 | Sap Ag | Business Process Optimization |
-
2020
- 2020-09-11 CN CN202010955576.9A patent/CN112099882B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105631334A (zh) * | 2015-12-25 | 2016-06-01 | 北京奇虎科技有限公司 | 应用的安全检测处理方法和*** |
CN108958796A (zh) * | 2017-05-23 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 业务请求处理方法及装置、业务请求处理*** |
WO2019202216A2 (en) * | 2018-04-18 | 2019-10-24 | Meeshkan Oy | Method for distributed information processing and distributed information processing system |
CN108681473A (zh) * | 2018-05-18 | 2018-10-19 | 广州酷狗计算机科技有限公司 | 应用程序生成、运行方法、装置、计算机设备和存储介质 |
CN111369081A (zh) * | 2018-12-06 | 2020-07-03 | 北京嘀嘀无限科技发展有限公司 | 一种流程配置方法、装置、电子设备及存储介质 |
CN109766387A (zh) * | 2018-12-20 | 2019-05-17 | 平安信托有限责任公司 | 数据处理文件生成方法、装置、计算机设备和存储介质 |
CN111625830A (zh) * | 2019-02-27 | 2020-09-04 | 阿里巴巴集团控股有限公司 | 数据处理方法、数据展示方法、***及设备 |
CN110704290A (zh) * | 2019-09-27 | 2020-01-17 | 百度在线网络技术(北京)有限公司 | 日志分析方法及装置 |
CN111045751A (zh) * | 2019-12-27 | 2020-04-21 | 中国银行股份有限公司 | 多服务配置链式处理方法及装置 |
CN111274580A (zh) * | 2020-01-19 | 2020-06-12 | 湖南第一师范学院 | 基于深度学习的控制流完整性检测方法 |
CN111443961A (zh) * | 2020-03-24 | 2020-07-24 | 广州华多网络科技有限公司 | 终端设备及其跨进程通信方法 |
Non-Patent Citations (1)
Title |
---|
Android启动优化研究及应用;缪汉威;《中国优秀硕士学位论文全文数据库 (信息科技辑)》(第5期);第I138-800页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112099882A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210390653A1 (en) | Learning robotic tasks using one or more neural networks | |
CN112099882B (zh) | 一种业务处理方法、装置及设备 | |
US20230153620A1 (en) | Dynamic processing element array expansion | |
KR102225822B1 (ko) | 인공지능 수행을 위한 학습 데이터 생성장치 및 방법 | |
CN112099848B (zh) | 一种业务处理方法、装置及设备 | |
CN111401406B (zh) | 一种神经网络训练方法、视频帧处理方法以及相关设备 | |
Cruz et al. | Using convolutional neural networks in robots with limited computational resources: detecting NAO robots while playing soccer | |
US20230082597A1 (en) | Neural Network Construction Method and System | |
WO2018021942A2 (ru) | Распознавание лиц с помощью искусственной нейронной сети | |
US20190114541A1 (en) | Method and system of controlling computing operations based on early-stop in deep neural network | |
CN111104120B (zh) | 神经网络编译方法、***及相应异构计算平台 | |
CN108171328B (zh) | 一种神经网络处理器和采用其执行的卷积运算方法 | |
WO2023093724A1 (zh) | 神经网络模型的处理方法及装置 | |
CN111931901A (zh) | 一种神经网络构建方法以及装置 | |
CN114091554A (zh) | 一种训练集处理方法和装置 | |
CN114936631A (zh) | 一种模型处理方法及装置 | |
CN114746868A (zh) | 编译神经网络模型的方法和装置 | |
CN113065634A (zh) | 一种图像处理方法、神经网络的训练方法以及相关设备 | |
CN111783985A (zh) | 信息处理、模型处理方法及装置、设备、介质 | |
CN117216710A (zh) | 多模态自动标注方法、标注模型的训练方法及相关设备 | |
CN113435565A (zh) | 神经网络模型的处理方法、推理方法及其装置和电子设备 | |
Tiwari et al. | NCS based ultra low power optimized machine learning techniques for image classification | |
CN116710974A (zh) | 在合成数据***和应用程序中使用域对抗学习的域适应 | |
Hornauer et al. | Visual domain adaptation for monocular depth estimation on resource-constrained hardware | |
CN112149836B (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 |