CN110097179B - 计算机设备、数据处理方法及存储介质 - Google Patents
计算机设备、数据处理方法及存储介质 Download PDFInfo
- Publication number
- CN110097179B CN110097179B CN201810083577.1A CN201810083577A CN110097179B CN 110097179 B CN110097179 B CN 110097179B CN 201810083577 A CN201810083577 A CN 201810083577A CN 110097179 B CN110097179 B CN 110097179B
- Authority
- CN
- China
- Prior art keywords
- original network
- processor
- input data
- data
- current original
- 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
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Abstract
本发明提供了一种计算机设备,包括第一处理器、第二处理器、第一存储器和第二存储器,其中,第一存储器内存储有多个原始网络对应的离线模型及输入数据和能够在第一处理器上运行的运行时系统;运行时系统为基于可信运行环境建立的安全的运行时系统,第一存储器为安全存储介质;运行时系统能够从第一存储器内获取当前原始网络对应的离线模型及输入数据,并控制第二处理器运行当前原始网络对应的离线模型。本发明还提供了一种数据处理方法及存储介质。上述的计算机设备、数据处理方法及存储介质,能够实现在基于TEE等安全的运行时系统对神经网络等重量级数据的处理过程,拓展了神经网络的应用范围,提高了该计算机设备的处理速度及效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种计算机设备、数据处理方法及存储介质。
背景技术
人工神经网络作为一种重量级的数据,其是由大量的节点(或称为神经元)之间相互连接构成。基于人工神经网络数据的特点,在某些只能处理轻量级数据的运行环境中,该人工神经网络数据将无法运行,这将限制神经网络的应用范围。例如,TEE(TrustedExecution Environment,可信执行环境)作为一种安全系统,其能够与其他非安全执行环境(Rich Execution Environment,如安卓系统等)并行的独立的运行环境,且能够与非安全系统提供安全保护,从而提高设备的安全等级。但TEE具有编程接口和编程语言等软件限制,且TEE允许使用的安全内存很少,因此,TEE环境下无法运行Tensorflow,Caffe等重量级的神经网络数据。
发明内容
基于传统的TEE等运行环境无法运行神经网络框架等重量级数据的问题,有必要针对上述技术问题,提供一种计算机设备、数据处理方法及存储介质,该计算机设备能够在TEE等运行环境下运行神经网络数据,提高神经网络数据的通用性,同时提高该计算机设备的运行效率及速度。
一种计算机设备,包括第一处理器、第二处理器、第一存储器和第二存储器,其中,所述第一存储器内存储有多个原始网络对应的离线模型及输入数据和能够在所述第一处理器上运行的运行时系统,所述第二存储器内存储有能够在所述第一处理器或所述第二处理器上运行的操作系统;
所述运行时系统为基于可信运行环境建立的安全的运行时系统,所述第一存储器为安全存储介质;当所述运行时系统在所述第一处理器上运行时,所述运行时系统能够从所述第一存储器内获取当前原始网络对应的离线模型及输入数据,并控制所述第二处理器运行所述当前原始网络对应的离线模型;
其中,所述当前原始网络对应的离线模型中包含原始网络中各个计算节点对应的模型参数、指令以及所述原始网络中的各个计算节点的接口数据。
在其中一个实施例中,所述运行时系统包括:
数据处理装置,所述数据处理装置能够提供离线模型API及输入数据API,用于从所述第一存储器中获取当前原始网络对应的离线模型及输入数据;
设备管理装置,所述设备管理装置能够提供第二处理器驱动API,用于控制所述第二处理器启动或关闭;
任务执行装置,所述任务执行装置能够提供第二处理器运行API,用于控制所述第二处理器运行所述当前原始网络的离线模型及输入数据。
在其中一个实施例中,所述数据处理装置包括离线模型加载模块和输入数据加载模块;
所述离线模型加载模块能够提供离线模型API,用于从所述第一存储器中获取各个所述当前原始网络对应的离线模型,并对所述当前原始网络对应的离线模型进行解析;
所述输入数据加载模块能够提供输入数据API,用于从所述第一存储器中获取所述当前原始网络对应的输入数据。
在其中一个实施例中,所述数据处理装置还包括输入数据预处理模块,所述输入数据预处理模块能够提供数据预处理API,用于对所述当前原始网络的输入数据进行预处理,使所述第二处理器能够运行所述当前原始网络的输入数据,并用于将所述第二处理器获得的输出数据存储至所述第一存储器。
在其中一个实施例中,所述第二处理器的数量为多个,或所述第二处理器包括多个处理模块;
所述任务执行装置还能够提供任务分配API,用于控制多个所述第二处理器,或控制所述第二处理器的多个处理模块。
在其中一个实施例中,所述计算机设备还包括能够在所述运行时系统上运行的安全的应用软件,且所述应用软件能够调用所述离线模型API及输入数据API、所述第二处理器驱动API,以及所述第二处理器运行API。
在其中一个实施例中,所述第一存储器和所述第二存储器在物理上相互独立设置;
或者,所述第一存储器和所述第二存储器集成为一体,且所述第一存储器和所述第二存储器在逻辑上相互独立设置。
本发明还提供了一种数据处理方法,用于所述的计算机设备中,所述方法包括如下步骤:
从第一存储器中获取当前原始网络对应的离线模型及输入数据,所述当前原始网络对应的离线模型中包含所述当前原始网络中各个计算节点对应的模型参数、指令以及所述当前原始网络中的各个计算节点的接口数据;
控制所述计算机设备的第二处理器启动;
控制所述计算机设备的第二处理器根据所述当前原始网络对应的离线模型及输入数据,运行所述当前原始网络,获得所述当前原始网络的输出数据;
将所述当前原始网络的输出数据存储至所述第一存储器中。
本发明还提供了一种数据处理方法,用于所述的计算机设备,所述方法包括如下步骤:
调用离线模型API,从第一存储器中获取当前原始网络对应的离线模型,所述当前原始网络对应的离线模型中包含所述当前原始网络中各个计算节点对应的模型参数、指令以及所述当前原始网络中的各个计算节点的接口数据;
调用输入数据API,获取所述当前原始网络的输入数据;
调用第二处理器驱动API,控制所述计算机设备中的第二处理器启动;
调用第二处理器运行API,控制所述第二处理器根据所述当前原始网络对应的离线模型及输入数据,获得所述当前原始网络的输出数据;
调用第二处理器驱动API,控制第二处理器关闭。
在其中一个实施例中,所述方法还包括如下步骤:
调用数据预处理API,将所述当前原始网络的输出数据存储至所述第一存储器中。
在其中一个实施例中,在所述的调用输入数据API,获取所述当前原始网络的输入数据的步骤之后,所述方法还包括如下步骤:
调用数据预处理API,对获取的所述当前原始网络的输入数据进行预处理,使所述第二处理器能够运行所述输入数据。
此外,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被一个或多个处理器执行时,实现上述任一项中所述的方法的步骤。
本发明的有益效果是:
上述的计算机设备、数据处理方法及存储介质,通过运行时系统的数据处理装置可以直接从第一存储器中获取当前原始网络对应的离线模型及输入数据,从而计算机设备的第二处理器根据其获取的原始网络的离线模型及输入数据运行该当前原始网络。由于当前原始网络的离线模型中仅仅存储了当前原始网络中各个计算节点对应的模型参数、指令以及当前原始网络中的各个计算节点的接口数据等必要的网络结构信息。因而该当前原始网络的离线模型的数据量级远远小于该当前原始网络的数据量级,从而通过运行当前原始网络的离线模型,能够实现在基于TEE等可信执行环境建立的安全的运行时系统对神经网络等重量级数据的处理过程,拓展了神经网络的应用范围。同时,通过在该计算机设备上直接运行该原始网络对应的离线模型,无需对原始网络中的各个计算节点进行编译等处理操作,可以提高该计算机设备的处理速度及效率。
附图说明
图1为一实施例中计算机设备的结构框图;
图2为图1中第一处理器一实施例的结构框图;
图3为图1中运行时系统一实施例的结构框图;
图4为图1中运行时系统另一实施例的结构框图;
图5为图1中计算机设备一实施例的数据处理方法的流程图;
图6为图1中计算机设备另一实施例的数据处理方法的流程图;
图7为一实施例的离线模型生成方法的流程图;
图8为另一实施例的离线模型生成方法的流程图;
图9为一实施例的神经网络的网络结构图;
图10为图9中神经网络的离线模型生成过程示意图;
图11为另一实施例中计算机设备的结构框图;
图12为图11中计算机设备一实施例的数据处理方法的流程图;
图13为图11中计算机设备另一实施例的数据处理方法的流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
如图1所示,本申请一实施例提供了一种计算机设备,该计算机设备100可以包括硬件系统和软件系统,其中,硬件系统可以包括第一处理器110、第二处理器120和存储器130。如图2所示,该第一处理器110用于提供计算和控制能力,其可以包括第一获取模块111、第一运算模块113及第一控制模块112等等,该第一获取模块111可以是IO(Input输入/Output输出)接口等硬件模块,第一运算模块113及第一控制模块112均为硬件模块。例如,第一运算模块113及第一控制模块112可以为数字电路或模拟电路等等。上述硬件电路的物理实现包括但不限于物理器件,物理器件包括但不限于晶体管及忆阻器等等。该第二处理器120也可以用于提供计算和控制能力,其可以包括第二获取模块、第二运算模块及第二控制模块等等,该第二获取模块可以是IO(Input输入/Output输出)接口等硬件模块,第二运算模块及第二控制模块均为硬件模块。第二处理器120的各个结构的连接关系及构成可以与第一处理器中各个结构的连接关系及构成相同,具体可参见上文中的描述,此处不再赘述。可选地,第一处理器或第二处理器可以为CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、DSP(Digital Signal Processing,数字信号处理)等通用处理器或IPU(Intelligence Processing Unit,智能处理器)等神经网络专用处理器。
如图1所示,存储器130用于存储有多个原始网络对应的离线模型及输入数据以及该计算机设备的软件系统。该计算机设备的软件系统可以包括操作系统、计算机程序、应用软件及运行时系统131等能够在第一处理器110或第二处理器120上运行的软件。进一步地,该存储器130还可以用于存储各个原始网络的输出数据(即各个原始网络的计算结果)。更进一步地,该存储器130可以包括用于存储离线模型的第一存储模块、用于存储输入数据的第二存储模块、用于存储输出数据的第三存储模块以及用于存储运行时系统的第四存储模块。或者,存储器130的数量可以为两个以上,例如,存储器130的数量可以为两个,分别标记为第一存储器和第二存储器,其中,第一存储器用于存储原始网络对应的离线模型和输入数据,第二存储器用于存储运行时系统。可选地,该存储器130可以是非易失性存储器,如只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。
应当清楚的是,运行时是指一个程序在运行(或被执行)的状态,运行时表明了在某个时间段内,哪个程序正在程序。运行时系统是指进程级别的虚拟机,其用于表示一种程序的运行环境。具体地,运行时系统可以是通过计算机软件建立的一种软件系统,该软件系统可以在CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、DSP(Digital Signal Processing,数字信号处理)或IPU(IntelligenceProcessing Unit,智能处理器)等处理器上运行,以实现特定的数据数据处理功能。本申请实施例中的运行时系统不同于计算机设备的操作系统,该计算机设备的软件系统可以同时包含上述的运行时系统和操作系统。
如图3所示,本申请实施例中的运行时系统131能够在第一处理器110上运行,该运行时系统131可以包括数据处理装置1310、设备管理装置1314及任务执行装置1315,数据处理装置1310及设备管理装置1314均可以连接至任务执行装置1315。具体地,当第一处理器110运行该运行时系统131时,运行时系统131能够控制第二处理器120运行神经网络等重量级数据,即运行时系统131能够控制第二处理器120根据神经网络的离线模型及输入数据进行计算,获得神经网络的输出数据。其中,数据处理装置1310用于从存储器130中获取当前原始网络对应的离线模型及其输入数据,当前原始网络的离线模型和当前网络的输入数据相对应设置。可选地,当前原始网络对应的离线模型中包含当前原始网络中各个计算节点对应的模型参数、指令以及当前原始网络中的各个计算节点的接口数据等必要的网络结构信息。由于当前原始网络的离线模型中未包含当前原始网络中各个计算节点的中间计算结果、输入数据及输出数据等相关数据,因此,该当前原始网络的离线模型的数据量级远远小于当前原始网络的数据量级,即可以认为该当前原始网络的离线模型为轻量级数据。
具体地,每个计算节点对应的指令可以用于表明该计算节点用于执行何种计算功能,其具体可以包括该原始网络中各个计算节点的计算属性。该当前原始网络的节点接口数据用于表示当前原始网络的各个计算节点的连接关系。具体地,当前原始网络的节点接口数据可以包括各个计算节点的输入数据来源和输出数据来源。例如,如图9所示,X1和X2为当前原始网络对应的输入数据,Y为当前原始网络对应的输出数据,W1~W6分别为当前原始网络中计算节点F1~F3对应的模型参数。当前原始网络的节点接口数据可以包括计算节点F1、F2和F3为起始计算节点,其输入分别为预设的输入数据,计算节点F1的输出数据作为计算节点F4和计算节点F5的输入数据等等。这样,在再次运行该原始网络时,只需获得该当前原始网络的离线模型和输入数据,即可通过运行该当前原始网络对应的离线模型实现该当前原始网络的运行过程。
设备管理装置1314作为第二处理器120的驱动装置,其可以用于控制第二处理器120启动或关闭。其中,当第二处理器120关闭时,第二处理器120不执行任何的任务,当第二处理器120启动时,第二处理器120可以执行计算或控制等任务。本申请实施例中,第二处理器120可以是神经网络加速器,其用于执行当前原始网络的离线模型。任务执行装置1315用于控制第二处理器120运行数据处理装置1310获取的当前原始网络的离线模型及输入数据,以获得当前原始网络的输出数据(即神经网络的计算结果)。应当清楚的是,运行原始网络对应的离线模型是指,使用离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
具体地,当需要在该计算机设备100上运行神经网络等重量级数据时,可以在第一处理器110上运行上述的运行时系统131,以通过该运行时系统131控制第二处理器120运行该神经网络等数据。即,当需要在该计算机设备100上运行神经网络等重量级数据时,可以首先通过数据处理装置1310从存储器130中获取当前原始网络对应的离线模型及输入数据。当完成当前原始网络对应的离线模型及输入数据的加载后,设备管理装置1314可以控制第二处理器120启动。之后,任务执行装置1315可以控制第二处理器120运行当前原始网络的离线模型及输入数据,以实现该当前原始网络的运行过程,获得该当前原始网络的计算结果。
本申请实施例中,由于当前原始网络的离线模型中仅仅存储了当前原始网络中各个计算节点对应的模型参数、指令以及当前原始网络中的各个计算节点的接口数据等必要的网络结构信息。因而该当前原始网络的离线模型的数据量级远远小于该当前原始网络的数据量级,从而通过运行当前原始网络的离线模型,使得计算机设备可以实现对神经网络等重量级数据的处理过程,拓展了神经网络的应用范围。同时,通过在该计算机设备上直接运行该原始网络对应的离线模型,无需对原始网络中的各个计算节点进行编译等处理操作,可以提高该计算机设备的处理速度及效率。
可选地,如图3所示,数据处理装置1310包括离线模型加载模块1311和输入数据加载模块1312。其中,离线模型加载模块1311用于从存储器130中获取当前原始网络对应的离线模型,并对其获取的当前原始网络的离线模型进行解析,以获得当前原始网络中各个计算节点对应的模型参数、指令以及当前原始网络中各个计算节点的接口数据。进一步地,离线模型加载模块1311对当前原始网络的离线模型进行解析的过程,还可以包括对当前原始网络对应的离线模型进行数据预处理(如数据格式转换、归一等预处理)的过程,以便第二处理器120能够执行该当前原始网络的离线模型。
输入数据加载模块1312用于从存储器130中获取输入数据,该输入数据可以是原始网络的起始计算节点对应的输入数据。如图9所示,X1和X2作为原始网络的起始计算节点的输入数据。进一步地,该输入数据可以通过应用软件获得,并存储于存储器130中。该应用软件可以在第一处理器或第二处理器上运行,例如,用户可以通过应用软件的交互界面设置当前原始网络的输入数据,运行时系统可以将该获取的当前原始网络的输入数据存储于存储器130中。
本申请实施例中,离线模型加载模块1311还可以用于实时获取离线模型的加载进度,输入数据加载模块1312还可以用于实时获取输入数据的加载进度。例如,当离线模型加载模块1311完成当前原始网络对应的离线模型的加载(例如,离线模型的数据加载比例为100%),且输入数据加载模块1312完成当前原始网络对应的输入数据的加载之后(例如,输入数据的加载比例为100%),离线模型加载模块1311和输入数据加载模块1312可以向设备管理装置1314发送数据加载完成信号,从而设备管理装置1314可以根据其接收到的数据加载完成信号控制第二处理器120启动。当第二处理器120启动后,设备管理装置1314可以向任务执行装置1315发送启动完成信号,任务执行装置1315可以根据其接收到的启动完成信号,控制第二处理器120运行当前原始网络的离线模型。
在其他实施例中,可以提前控制第二处理器启动,以便进一步提高计算机设备的数据处理速度及效率。并且,由于离线模型的数据量级大于输入数据的数据量级,离线模型的所需的加载时间可能大于输入数据的加载时间,因此,若离线模型加载模块1311已完成的数据加载比例大于或等于第一预设比例(如80%),时,即可向设备管理装置1314发送加载完成信号,以提前启动第二处理器120。进一步地,若离线模型加载模块1311已完成的数据加载比例大于或等于第一预设比例(如80%),且输入数据加载模块1312已完成的数据加载比例大于或等于第二预设比例(如80%),则离线模型加载模块1311和输入数据加载模块1312可以向设备管理装置1314发送数据加载完成信号,从而设备管理装置1314可以根据其接收到的数据加载完成信号控制第二处理器120启动。
可选地,如图4所示,数据处理装置1310还可以包括输入数据预处理模块1313,输入数据预处理模块1313用于对输入数据进行预处理(如数据格式转换、归一化等预处理),以使第二处理器120能够运行输入数据。此时,输入数据加载模块1312完成输入数据的记载后,输入数据加载模块1312可以向输入数据预处理模块1313发送输入数据加载完成信号,输入数据预处理模块1313可以向根据其接收到的输入数据加载完成信号,对当前原始网络对应的输入数据进行归一化、格式转换等数据预处理操作。设备管理装置1314可以根据其接收到的离线模型加载模块1311传送的离线模型加载完成信号,以及输入数据预处理模型1314传送的预处理完成信号,控制第二处理器120启动。
同时,输入数据预处理模块1313还用于将第二处理器120获得的输出数据存储至存储器130,具体地,当第二处理器120完成当前原始网络的离线模型及输入数据的执行过程之后,该第二处理器120可以将当前原始网络的输出数据(即计算结果)传送至输入数据预处理模块1313,输入数据预处理模块1313可以对当前原始网络的输出数据进行数据格式转换等预处理,之后可以将该当前原始网络的输出数据存储至存储器130中。
在一个实施例中,该计算机设备100的软件系统还包括应用软件和操作系统(如安卓操作系统、微软操作系统、Linux操作系统等),应用软件能够在操作系统或上述的运行时系统上运行,操作系统及上述的运行时系统为各种应用软件提供了可执行环境。具体地,操作系统和应用软件也可以存储于存储器130中,该操作系统可以在第一处理器110或第二处理器120上运行。
该运行时系统131的各个装置可以提供应用软件能够调用的安全API(Application Programming Interface,应用软件接口),从而使得应用软件能够通过运行时系统131获取当前原始网络的离线模型及输入数据,并控制第二处理器120运行上述当前原始网络的离线模型,获得当前原始网络的输出数据。具体地,数据处理装置1310能够提供离线模型API及输入数据API,进一步地,离线模型加载模块1311能够提供离线模型API,输入数据加载模块1312能够提供输入数据API。当需要运行神经网络等重量级数据时,应用软件可以调用该数据处理装置1310的离线模型API,从而使得离线模型加载模块1311可以从存储器130中获取该当前原始网络对应的离线模型。当完成当前原始网络对应的离线模型的加载后,应用软件可以调用数据处理装置1310的输入数据API,从而可以使得输入数据加载模块1312可以从存储器130中获取当前原始网络对应的输入数据。进一步地,该当前原始网络的输入数据可以通过应用软件获得。例如,用户可以通过应用软件的交互显示界面手动设置当前原始网络对应的输入数据。当然,在其他实施例中,应用软件还可以同时调用上述的离线模型API和输入数据API,从而可以同时对当前原始网络的离线模型和输入数据进行加载,此处仅用于举例说明,并不用于对其具体地执行顺序进行限定。
进一步地,数据处理装置1310的输入数据预处理模块1313还能够提供数据预处理API。当完成当前原始网络的输入数据加载后,应用软件可以调用数据预处理API,从而使得数据预处理模块1313能够对当前原始网络的输入数据进行预处理,使得第二处理器能够运行上述的当前原始网络的输入数据。
设备管理装置1314能够提供第二处理器驱动API,任务执行装置1315能够提供第二处理器运行API。当完成当前原始网络的离线模型及输入数据的加载之后,应用软件可以通过调用该任务执行装置1315提供的第二处理器驱动API,启动第二处理器120。当第二处理器120启动后,应用软件可以调用任务执行装置1315提供的第二处理器运行API,以控制第二处理器120执行当前原始网络对应的离线模型及输入数据,获得当前原始网络的输出数据。当完成当前原始网络对应的离线模型的执行过程之后,应用软件可以通过调用该第二处理器驱动API,关闭第二处理器120。
更进一步地,在完成当前原始网络的离线模型的执行过程之后,应用软件还可以调用数据预处理API,使得输入数据预处理模块1313能够对当前原始网络的输出数据进行数据预处理,并将当前原始网络的输出数据存储至存储器130中。
再进一步地,第二处理器120的数量可以为多个,任务执行装置1315还可以能够提供任务分配API,任务执行装置1315可以用于控制多个第二处理器120,以实现多个第二处理器120之间的任务分配及调度。具体地,应用软件可以通过调用任务执行装置1315提供的任务分配API,从多个第二处理器120中选定执行当前任务的目标第二处理器。当完成当前原始网络的离线模型及输入数据的加载之后,应用软件可以通过调用该目标第二处理器对应的第二处理器驱动API,启动该目标第二处理器。当目标第二处理器启动后,应用软件可以调用任务执行装置1315提供的该目标第二处理器对应的第二处理器运行API,以控制该目标第二处理器执行当前原始网络对应的离线模型及输入数据。当完成当前原始网络对应的离线模型的执行过程之后,可以通过调用该目标第二处理器对应的第二处理器驱动API,关闭该目标第二处理器。
可选地,在其他实施例中,该第二处理器120可以为多核处理器,即该第二处理器120可以包括多个处理模块。任务执行装置1315可以用于控制多个第二处理器120的多个处理模块,以实现多个第二处理器120的多个处理模块之间的任务分配及调度。具体地,应用软件可以通过调用任务执行装置1315提供的任务分配API,从第二处理器120中的多个处理模块中选定执行当前任务的目标处理模块。当完成当前原始网络的离线模型及输入数据的加载之后,应用软件可以通过调用该目标处理模块对应的第二处理器驱动API,启动该目标处理模块。当目标处理模块启动后,应用软件可以调用该目标处理模块对应的第二处理器运行API,以控制该目标处理模块执行当前原始网络对应的离线模型及输入数据。当完成当前原始网络对应的离线模型的执行过程之后,可以通过调用目标处理模块对应的第二处理器驱动API,关闭该目标处理模块。
作为进一步地改进,运行时系统131可以是基于可信运行环境建立的安全的运行时系统。例如,运行时系统131可以是基于TEE(Trusted Execution Environment,可信执行环境)建立的运行时系统。具体地,TEE可以构建一个隔离于操作系统等非安全软件系统的运行时系统,从而实现软件隔离,保障原始网络的离线模型及输入数据和输出数据的安全性。上述的应用软件可以是TA等安全的应用,该TA等安全的应用软件可以运行于基于TEE构建的运行时系统。
存储器130的存储空间可以分为安全存储空间和非安全存储空间。具体地,用于存储当前原始网络的离线模型及输入数据的存储空间为安全的存储空间,用于存储操作系统及应用软件等软件系统的存储空间为非安全存储空间,运行时系统可以存储于存储器的安全存储空间或非安全存储空间。当然,该存储器130也可以为安全存储器。从而,上述的运行时系统、TA以及安全存储空间构成一个完整的TEE运行环境。
在其他实施例中,存储器130的数量可以为两个以上,其中一个存储器130可以作为安全存储空间,用于存储当前原始网络的离线模型及输入数据。其中一个存储器130可以作为非安全存储空间,用于存储操作系统及应用软件等软件系统。又进一步地,操作系统及应用软件等也可以存储于安全的存储空间中。
应当清楚的是,本申请实施例中的安全存储空间是指可信的(Trusted)存储空间,该安全存储空间可以是加密的存储空间,具体可以采用对称加密算法、非对称加密算法或随机加密算法(如采用随机密码生成器获得密码)。当然,安全的存储区间还可以是通过指纹等进行加密的存储空间。上述安全的运行时系统131以及应用软件也可以通过加密算法获得。或者,安全存储空间可以是通过可信度量方法获得的安全存储空间,上述安全的运行时系统131以及应用软件也可以通过可信度量方法获得。
当然,该第一处理器110还可以是安全芯片,如TPM(Trusted Platform Module,可信平台模块)、TCM(Trusted Cryptography Module,可信密码模块)或TPCM(TrustedPlatform Control Module,可信平台控制模块)等。进一步地,第二处理器120也可以是TPM、TCM或TPCM等安全芯片。
可选地,本申请实施例的计算机设备还可以仅包括处理器和存储器,其中,该处理器是多核处理器。具体地,该处理器可以包括多个处理模块。例如,该处理器包括第一处理模块和第二处理模块,其中,运行时系统可以在第一处理模块上运行。进一步地,上述运行时系统可以包括数据处理装置、设备管理装置和任务执行装置等结构,其中,数据处理装置用于从存储器中获取当前原始网络对应的离线模型及输入数据,当前原始网络对应的离线模型中包含原始网络中各个计算节点对应的模型参数、指令以及原始网络中的各个计算节点的接口数据。设备管理装置用于控制第二处理模块启动或关闭,任务执行装置用于控制第二处理模块运行当前原始网络的离线模型及输入数据。更进一步地,该运行时系统的其他结构与上述实施例中的运行时系统的架构相同,具体可参见上文的描述,此处不再赘述。
如图5所示,本申请实施例还提供了一种数据处理方法,用于图1所示的计算机设备中,通过离线模型实现对神经网络等重量级数据的处理过程,提高了计算机设备的数据处理速度及效率。具体地,上述方法包括如下步骤:
S110、控制数据处理装置从存储器中获取当前原始网络对应的离线模型及输入数据,当前原始网络对应的离线模型中包含原始网络中各个计算节点对应的模型参数及指令。具体地,当第一处理器110运行该运行时系统131时,可以通过运行时系统131的数据处理装置1310从存储器中读取当前原始网络对应的离线模型及输入数据。进一步地,可以通过数据处理装置1310的离线模型加载模块1311从存储器130中获取当前原始网络对应的离线模型。通过输入数据加载模块1312从存储器130中获取输入数据,该输入数据可以是原始网络的起始计算节点对应的输入数据。
S120、通过设备管理装置控制计算机设备的第二处理器启动。具体地,可以通过运行时系统131的设备管理装置1314控制第二处理器启动或关闭。即,当离线模型加载模块1311完成当前原始网络对应的离线模型的加载,且输入数据加载模块1312完成当前原始网络对应的输入数据的加载之后,离线模型加载模块1311和输入数据加载模块1312可以向设备管理装置1314发送数据加载完成信号,从而设备管理装置1314可以根据其接收到的数据加载完成信号控制第二处理器120启动。
S130、通过任务执行装置控制计算机设备的第二处理器根据当前原始网络对应的离线模型及输入数据,运行当前原始网络,获得当前原始网络的输出数据。具体地,可以通过运行时系统131的任务执行装置1315控制第二处理器120运行当前原始网络的离线模型。应当清楚的是,运行原始网络对应的离线模型是指,使用离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
S140、通过数据处理装置将当前原始网络的输出数据存储至存储器中。具体地,可以通过数据处理装置1310将当前原始网络的输出数据存储至存储器130中。进一步地,该数据处理装置1310能够对当前原始网络的输出数据进行数据格式转换等预处理操作,之后,再将其存储至存储器130中。可选地,数据处理装置1310的输入数据处理模块1313能够对当前原始网络的输出数据进行数据格式转换等预处理操作,之后,再将其存储至存储器130中。
可选地,在完成当前原始网络对应的离线模型及输入数据的加载之后,还可以对获取的离线模型及输入数据进行预处理,以便第二处理器能够执行获取的离线模型及输入数据。具体地,上述步骤S110还可以包括如下步骤:
S111、对获取的当前原始网络对应的离线模型进行解析,以获得当前原始网络中各个计算节点对应的模型参数、指令及当前原始网络中各个计算节点的接口数据。进一步地,具体地,可以通过离线模型加载模块1311对获取的当前原始网络的离线模型进行解析,以获得当前原始网络中各个计算节点对应的模型参数、指令以及当前原始网络中各个计算节点的接口数据。更进一步地,还可以通过离线模型加载模块1311对解析后的数据进行数据格式转换、归一化等预处理操作。
S112、对获取的当前原始网络的输入数据进行预处理,如对输入数据进行数据格式转换、归一化等预处理操作。具体地,可以通过输入数据预处理模块1313对输入数据进行预处理(如数据格式转换、归一化等预处理),以使第二处理器120能够运行输入数据。
进一步地,上述方法还可以包括如下步骤:
实时获取当前原始网络对应的离线模型的加载进度;具体地,离线模型加载模块1311可以实时获取当前网络对应的离线模型的加载进度,该离线模型的加载进度可以采用数据比例或剩余时长等进行表示。
若当前原始网络对应的离线模型的加载进度大于或等于第一预设比例,则执行所述的控制计算机设备的第二处理器启动的步骤。具体地,该第一预设比例可以为80%~100%。例如,当离线模型加载模块1311完成当前原始网络对应的离线模型的加载(例如,离线模型的数据加载比例为100%),离线模型加载模块1311可以向设备管理装置1314发送数据加载完成信号,从而设备管理装置1314可以根据其接收到的数据加载完成信号控制第二处理器120启动。或者,若离线模型加载模块1311已完成的数据加载比例大于或等于第一预设比例(如80%)时,即可向设备管理装置1314发送加载完成信号,以提前启动第二处理器120。
由于离线模型的数据量级大于输入数据的数据量级,离线模型的所需的加载时间可能大于输入数据的加载时间,因此,可以仅仅依据离线模型的加载进度判断是否启动第二处理器120。进一步地,输入数据加载模块1312还可以实时获得输入数据的加载进度,若离线模型加载模块1311已完成的数据加载比例大于或等于第一预设比例(如80%),且输入数据加载模块1312已完成的数据加载比例大于或等于第二预设比例(如80%),则离线模型加载模块1311和输入数据加载模块1312可以向设备管理装置1314发送数据加载完成信号,从而设备管理装置1314可以根据其接收到的数据加载完成信号控制第二处理器120启动。
可选地,本申请实施例中还可以包含离线模型的生成过程,该离线模型的生成过程可以在云端服务器或神经网络专用处理器上运行,并将其获得的原始网络的离线模型存储至存储器130中。该云端服务器或神经网络专用处理器为能够执行神经网络等重量级数据的处理器,其可以不包含于上述的计算机设备中。具体地,如图7所示,在上述步骤S110之前,上述方法包括如下步骤:
S100、获取原始网络的模型数据集及模型结构参数,具体地,可以通过云端服务器或神经网络专用处理器的获取模块获取原始网络的模型数据集及模型结构参数,通过该原始网络的模型数据集及模型结构参数可以获得该原始网络的网络结构图。其中,模型数据集包括原始网络中各个计算节点对应的模型参数等数据,图9所示的神经网络中的W1~W6即用于表示计算节点的模型参数。模型结构参数包括原始网络中多个计算节点的连接关系及各个计算节点的计算属性,其中,计算节点之间的连接关系用于表示计算节点之间是否有数据传递,例如,当多个计算节点之间具有数据流的传递时,则可以说明多个计算节点之间具有连接关系。进一步地,计算节点的连接关系可以包括输入关系和输出关系等等。如图9所示,计算节点F1输出作为计算节点F4和F5的输入,则可以说明计算节点F1和计算节点F4之间具有连接关系,计算节点F1和计算节点F4之间具有连接关系。再如,计算节点F1和计算节点F2之间没有数据传递,则可以说明计算节点F1和计算节点F2之间不存在连接关系。
各个计算节点的计算属性可以包括相应计算节点的计算类型及计算参数,其中计算节点的计算类型是指该计算节点用于完成何种计算,如计算节点的计算类型可以包括加法运算、减法运算及卷积运算等等,相应的,该计算节点可以是用于实现加法运算的计算节点、用于实现减法运算的计算节点或用于实现卷积运算的计算节点等等。计算节点的计算参数可以是完成该计算节点对应的计算类型所需的必要参数。例如,计算节点的计算类型可以是用于实现加法运算的计算节点,相应的,该计算节点的计算参数可以为加法运算中的加数,该加法运算中的被加数可以作为输入数据通过获取模块获取,或者,该加法运算中的被加数可以是该计算节点的上一计算节点的输出数据等等。
可选地,该原始网络可以为基于TensorFlow、MXNet、Caffe和PyTorch等深度学习系统,针对CPU、GPU或DSP等通用处理器建立的人工神经网络。该原始网络还可以是针对IPU等智能处理器建立的人工神经网络。例如,当该原始网络为基于Caffe建立的神经网络时,则可以获取该Caffe网络的模型数据集(caffemodel)及模型结构参数(prototxt)。其中,模型数据集(caffemodel)中包含该Caffe网络的模型参数等数据,模型结构参数(prototxt)中包含该Caffe网络的各个计算节点的计算属性以及多个计算节点之间的连接关系等。
S101、根据原始网络的模型数据集和模型结构参数运行原始网络,获得原始网络中各个计算节点对应的指令。具体地,云端服务器或神经网络专用处理器的运算模块可以根据原始网络的模型数据集和模型结构参数运行该原始网络,并获得原始网络中各个计算节点对应的指令。进一步地,云端服务器或神经网络专用处理器的获取模块还可以获取该原始网络的输入数据,云端服务器或神经网络专用处理器的运算模块可以根据原始网络的输入数据、网络模型数据集和模型结构参数运行原始网络,获得该原始网络中各个计算节点对应的指令。更进一步地,上述运行该原始网络获得各个计算节点的指令的过程实质上是编译的过程,该编译过程可以通过云端服务器或神经网络专用处理器或虚拟设备实现。即云端服务器或神经网络专用处理器或虚拟设备根据原始网络的模型数据集和模型结构参数运行原始网络。其中,虚拟设备指的是在存储器的内存空间中虚拟出一段处理器运行空间。
应当清楚的是,本实施例中的运行原始网络是指,云端服务器或神经网络专用处理器使用人工神经网络模型数据运行某种机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
S103、根据原始网络的各个计算节点对应的模型参数及指令,生成原始网络对应的离线模型,并将所述原始网络对应的离线模型存储至非易失性存储器中。具体地,云端服务器或神经网络专用处理器的控制模块可以根据原始网络的各个计算节点对应的模型参数和指令,生成该原始网络对应的离线模型,例如,该云端服务器或神经网络专用处理器控制模块可以将原始网络的各个计算节点对应的模型参数和指令存储至非易失性的第二存储器中,以实现离线模型的生成及存储。其中,针对原始网络的每个计算节点,该计算节点的模型参数及指令一一对应进行存储。这样,当再次运行该原始网络时,可以直接从非易失性存储器中获取该原始网络对应的离线模型,并根据与其对应的离线模型运行原始网络,无需在线对该原始网络的各个计算节点进行编译获得指令,提高了系统的运行速度及效率。
应当清楚的是,本实施例中,直接运行该原始网络对应的离线模型是指,使用离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
可选地,如图8所示,上述步骤S102可以包括:
S104、根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序。具体地,云端服务器或神经网络专用处理器的运算模块可以根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序,进一步地,云端服务器或神经网络专用处理器的运算模块可以根据原始网络中各个计算节点的连接关系,获得原始网络中各个计算节点的执行顺序。例如,如图9所示,计算节点F4的输入数据为计算节点F1的输出数据以及计算节点F2的输出数据,计算节点F6的输入数据为计算节点F4的输出数据以及计算节点F5的输出数据。因此,图9所示的神经网络中各个计算节点的执行顺序可以为F1-F2-F3-F4-F5-F6或F1-F3-F2-F5-F4-F6等等。当然,计算节点F1、F2和F3可以并行执行,计算节点F4和F5也可以并行执行,此处仅举例说明,并不具体限定其执行顺序。
S105、按照原始网络中各个计算节点的执行顺序运行原始网络,分别获得原始网络中各个计算节点对应的指令。具体地,云端服务器或神经网络专用处理器的运算模块可以根据原始网络中各个计算节点的执行顺序运行该原始网络,以获得原始网络中各个计算节点对应的指令,即云端服务器或神经网络专用处理器可以将原始网络的模型数据集等数据进行编译获得各个计算节点对应的指令,通过各个计算节点对应的指令可以获知该计算节点用于实现何种计算功能,即可以获得该计算节点的计算类型及计算参数等计算属性。
进一步地,如图8所示,上述步骤S103还包括:
S106、根据原始网络的模型数据集和模型结构参数,获得原始网络的内存分配方式。具体地,云端服务器或神经网络专用处理器的运算模块可以根据原始网络的模型数据集和模型结构参数,获得原始网络的内存分配方式。进一步地,云端服务器或神经网络专用处理器可以根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序,并根据原始网络中各个计算节点的执行顺序确定当前网络的内存分配方式。例如,按各个计算节点的执行顺序将各个计算节点在运行过程中的相关数据保存至一个栈内。其中,内存分配方式是指确定原始网络中各个计算节点相关的数据(包括输入数据、输出数据、模型参数及中间结果数据等等)在内存空间(如第一存储器)上的存储位置。例如,可以采用数据表存储各个计算节点相关的数据(输入数据、输出数据、模型参数及中间结果数据等等)和内存空间的映射关系。
S107、根据原始网络的内存分配方式,将原始网络运行过程中的相关数据存储至第一存储器中,其中,原始网络运行过程中的相关数据包括原始网络的各个计算节点对应的模型参数、指令、输入数据、中间计算结果及输出数据等等。例如,如图9所示,X1和X2表示该神经网络的输入数据,Y表示该神经网络的输出数据,云端服务器或神经网络专用处理器可以将该神经网络的输出数据转换为控制机器人或不同数字接口的控制命令。W1~W6用于表示计算节点F1、F2和F3对应的模型参数,计算节点F1~F5的输出数据可以作为中间计算结果。云端服务器或神经网络专用处理器可以根据已确定的内存分配方式,将原始网络运行过程中的相关数据存储至第一存储器,如内存储器或缓存等易失性存储器,其具体的存储方式可参见图10中左半部分存储空间。
S108、从第一存储器中获取原始网络的各个计算节点对应的模型参数及指令,并将原始网络的各个计算节点对应的模型参数及指令存储于第二存储器中,生成离线模型。其中,第二存储器可以为外部存储器等非易失性存储器。该离线模型的生成过程具体可参见图10所示,图10中右半部分的存储空间内存储的即为原始网络的对应的离线模型。
如图9和图10所示,下面结合附图说明上述的离线模型生成过程:
首先,云端服务器或神经网络专用处理器可以获得该原始网络的模型数据集、模型结构参数以及输入数据,从而根据该原始网络的模型数据集和模型结构参数可以获得该原始网络的网络结构图,如图9所示。
其次,云端服务器或神经网络专用处理器可以根据原始网络的模型结构参数,获得原始网络各个计算节点的连接关系,并根据各个计算节点的连接关系获得原始网络中各个计算节点的执行顺序,以及原始网络在运行过程中的内存分配方式,从而可以获得原始网络在运行过程中相关数据的存储位置。如图10中左半部分存储空间所示,原始网络在运行过程中的相关数据可以按照各个计算节点执行顺序存储在一个栈中。
最后,云端服务器或神经网络专用处理器可以将原始网络的各个计算节点对应的模型参数及指令存储于非易失性的第二存储器中,生成离线模型,该离线模型的存储方式可参见图10中右半部分存储空间所示。并且,该离线模型仅仅包含运行该原始网络所必需的模型参数及指令等数据,而不需对原始网络运行过程中的输入数据、输出数据或中间计算结果等进行存储,从而可以减小第二存储器中的存储空间的消耗。
此外,如图6所示,本申请实施例还提供了一种数据处理方法,用于图1所示的计算机设备中,通过离线模型实现对神经网络等重量级数据的处理过程,提高了计算机设备的数据处理效率及速度。具体地,上述方法包括如下步骤:
S210、调用离线模型API,获取当前原始网络对应的离线模型,具体地,应用软件可以调用离线模型加载模块1311提供的离线模型API,从而使得离线模型加载模块1311能够从存储器130中读取当前原始网络对应的离线模型。其中,当前原始网络对应的离线模型中包含当前原始网络中各个计算节点对应的模型参数、指令以及当前原始网络中的各个计算节点的接口数据;其中,离线模型的生成过程可参见上文中的描述。
S210、调用输入数据API,获取当前原始网络的输入数据。具体地,应用软件可以调用输入数据加载模块1312提供的输入数据API,通过输入数据加载模块1312从存储器130中获取当前原始网络的输入数据。进一步地,应用软件还可以调用输入数据预处理模块1313提供的数据预处理API,通过输入数据预处理模块1313对输入数据加载模块1312获取的输入数据进行数据格式转换、归一化等预处理操作,以使第二处理器120能够运行上述的当前原始网络的输入数据。
S220、调用第二处理器驱动API,控制计算机设备中的第二处理器启动。具体地,应用软件能够调用设备管理模块1314提供的第二处理器驱动API,通过设备管理模块1314控制第二处理器120启动。
S230、调用第二处理器运行API,控制第二处理器根据当前原始网络对应的离线模型及输入数据,获得当前原始网络的输出数据。具体地,应用软件能够调用任务执行装置1315提供的第二处理器运行API,通过任务执行装置1315控制第二处理器120根据当前原始网络对应的离线模型及输入数据,获得当前原始网络的输出数据。
S240、调用第二处理器驱动API,控制第二处理器关闭。具体地,应用软件能够调用设备管理模块1314提供的第二处理器驱动API,通过设备管理模块1314控制第二处理器120关闭。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。
此外,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被一个或多个处理器执行时,实现上述的方法的步骤。该计算机存储介质可以包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
上述的计算机设备、数据处理方法及存储介质,通过数据处理装置可以直接从存储器中获取当前原始网络对应的离线模型及输入数据,从而该计算机设备的第二处理器可以根据其获取的原始网络的离线模型及输入数据运行该当前原始网络,获得当前原始网络的输出数据。由于每个原始网络对应的离线模型中仅包含原始网络中各个计算节点对应的模型参数、指令以及原始网络中各个计算节点的接口数据,因而,原始网络的离线模型的数据量级远远小于该原始网络的数据量级,从而通过在计算机设备上运行该当前原始网络对应的离线模型,可以实现计算机设备对重量级的神经网络数据的处理过程。同时,通过在该计算机设备上直接运行该当前原始网络对应的离线模型,无需对当前原始网络中的各个计算节点进行编译等处理操作,可以提高该计算机设备的处理速度及效率。
本申请的其他实施例中,如图11所示,计算机设备200可以包括第一处理器210、第二处理器220、第一存储器230和第二存储器240,其中,第一存储器230内存储有多个原始网络对应的离线模型及输入数据和能够在第一处理器230上运行的运行时系统,第二存储器240内存储有能够在第一处理器或第二处理器上运行的操作系统。具体地,上述第一存储器230和第二存储器240可以是物理上相互独立的两个存储器。或者,第一存储器230和第二存储器240可以集成为一个整体,第一存储器230和第二存储器240为在逻辑上相互独立的两个存储空间。
进一步地,第一处理器210的数量可以为两个以上。例如,第一处理器210的数量为两个,其中一个第一处理器210用于运行上述安全的运行时系统231,另一个第一处理器210用于运行操作系统。或者,上述的第一处理器210可以是多核处理器,其可以包括两个以上的处理模块,其中一个处理模块可以用于运行上述的运行时系统231,其中一个处理模块用于运行上述的操作系统。这样,可以通过硬件上的隔离将计算机设备划分为安全运行环境和非安全运行环境。更进一步地,上述第一处理器210可以使用TCM、TPM或TPCM等安全芯片实现。
上述的运行时系统为基于可信运行环境建立的安全的运行时系统,例如,运行时系统231可以是基于TEE(Trusted Execution Environment,可信执行环境)建立的运行时系统。具体地,TEE可以构建一个隔离于操作系统等非安全软件系统的运行时系统,从而实现软件隔离,保障原始网络的离线模型及输入数据和输出数据的安全性。进一步地,该安全的运行时系统231可以通过加密算法获得,也可以通过可信度量获得。第一存储器230为安全存储介质。当运行时系统231在第一处理器210上运行时,运行时系统231能够从第一存储器230内获取当前原始网络对应的离线模型及输入数据,并控制第二处理器220运行当前原始网络对应的离线模型。
应当清楚的是,本申请实施例中的安全是指可信(Trusted),其可以采用预设的加密算法实现,例如,可以采用对称加密算法、非对称加密算法或随机加密算法(如采用随机密码生成器获得密码)。当然,还可以是通过指纹等进行加密。或者,安全也可以通过可信度量方法实现。
可选地,该运行时系统231可以提供应用软件能够调用的安全API(ApplicationProgramming Interface,应用软件接口),API主要包含了密钥管理、密码算法及安全存储等。上述运行时系统231可以包括数据处理装置、设备管理装置和任务执行装置,其结构与上述的运行时系统131的结构类似,可参见图3和图4所示。其中,数据处理装置能够提供离线模型API及输入数据API,用于从第一存储器230中获取当前原始网络对应的离线模型及输入数据,当前原始网络对应的离线模型中包含原始网络中各个计算节点对应的模型参数、指令以及原始网络中的各个计算节点的接口数据。设备管理装置能够提供第二处理器驱动API,用于控制第二处理器220启动或关闭。任务执行装置能够提供第二处理器运行API,用于控制第二处理器220运行当前原始网络的离线模型及输入数据。
进一步地,数据处理装置包括离线模型加载模块和输入数据加载模块。离线模型加载模块能够提供离线模型API,用于从第一存储器230中获取各个当前原始网络对应的离线模型,并对当前原始网络对应的离线模型进行解析。输入数据加载模块能够提供输入数据API,用于从第一存储器230中获取当前原始网络对应的输入数据。
更进一步地,数据处理装置还包括输入数据预处理模块,输入数据预处理模块能够提供数据预处理API,用于对输入数据加载模块获取的输入数据进行预处理,使第二处理器220能够运行当前原始网络的输入数据,并用于将第二处理器220获得的输出数据存储至第一存储器230。
可选地,第二处理器220的数量为多个,或第二处理器220包括多个处理模块;任务执行装置还能够提供任务分配API,用于控制多个第二处理器220,或控制第二处理器220的多个处理模块。
进一步地,计算机设备还包括能够在运行时系统231上运行的安全的应用软件(TA,Trusted Application),且应用软件能够调用离线模型API及输入数据API、第二处理器驱动API,以及第二处理器运行API。该安全的应用软件可以通过加密算法实现,也可以通过可信度量的方式实现。
应当清楚的是,本申请实施例中的数据处理装置、设备管理装置以及任务执行装置的工作原理,与上述实施例中的各个装置的工作原理基本一致,具体可参见前文中的描述。
如图12所示,本申请实施例还提供了一种数据处理方法,用于如图11所示的计算机设备中,方法包括如下步骤:
S310、从第一存储器中获取当前原始网络对应的离线模型及输入数据,其中,当前原始网络对应的离线模型中包含当前原始网络中各个计算节点对应的模型参数、指令以及当前原始网络中的各个计算节点的接口数据。具体地,当第一处理器运行上述安全的运行时系统231时,安全的运行时系统231可以从安全的第一存储器230中获取当前原始网络对应的离线模型及输入数据。可选地,当第一处理器210运行该运行时系统231时,可以通过运行时系统231的数据处理装置从第一存储器230中读取当前原始网络对应的离线模型及输入数据。进一步地,可以通过数据处理装置的离线模型加载模块从第一存储器230中获取当前原始网络对应的离线模型。通过输入数据加载模块从第一存储器230中获取输入数据,该输入数据可以是原始网络的起始计算节点对应的输入数据。
S320、控制计算机设备的第二处理器启动。具体地,上述安全的运行时系统231可以控制计算机设备的第二处理器220启动。可选地,运行时系统231的设备管理装置可以控制第二处理器启动或关闭。当离线模型加载模块完成当前原始网络对应的离线模型的加载,离线模型加载模块可以向设备管理装置发送数据加载完成信号,从而设备管理装置可以根据其接收到的数据加载完成信号控制第二处理器220启动。
S330、控制计算机设备的第二处理器根据当前原始网络对应的离线模型及输入数据,运行当前原始网络,获得当前原始网络的输出数据。具体地,上述运行时系统231可以控制计算机设备的第二处理器220运行离线模型及其对应的输入数据,以获得当前原始网络的输出数据。可选地,可以通过运行时系统231的任务执行装置控制第二处理器220运行当前原始网络的离线模型。
应当清楚的是,运行原始网络对应的离线模型是指,使用离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
S340、将当前原始网络的输出数据存储至第一存储器中。即运行时系统231能够将当前原始网络的输出数据存储至安全的第一存储器230中。可选地,可以通过运行时系统231的数据处理装置将当前原始网络的输出数据存储至第一存储器230中。进一步地,该数据处理装置能够对当前原始网络的输出数据进行数据格式转换等预处理操作,之后,再将其存储至第一存储器230中。更进一步地,数据处理装置的输入数据处理模块能够对当前原始网络的输出数据进行数据格式转换等预处理操作,之后,再将其存储至第一存储器230中。
如图13所示,本申请实施例还提供了一种数据处理方法,用于如图11所示的计算机设备中,上述方法可以包括如下步骤:
S410、调用离线模型API,从第一存储器中获取当前原始网络对应的离线模型。具体地,安全的应用软件(TA)可以调用离线模型API,从而使得离线模型加载模块能够从第一存储器230中读取当前原始网络对应的离线模型。其中,当前原始网络对应的离线模型中包含当前原始网络中各个计算节点对应的模型参数、指令以及当前原始网络中的各个计算节点的接口数据。
S420、调用输入数据API,获取当前原始网络的输入数据;具体地,安全的应用软件可以调用输入数据API,通过输入数据加载模块从第一存储器230中获取当前原始网络的输入数据。
S430、调用第二处理器驱动API,控制计算机设备中的第二处理器启动;具体地,安全的应用软件能够调用第二处理器驱动API,以通过设备管理模块控制第二处理器220启动。
S440、调用第二处理器运行API,控制第二处理器根据当前原始网络对应的离线模型及输入数据,获得当前原始网络的输出数据。具体地,安全的应用软件能够调用第二处理器运行API,以通过任务执行装置控制第二处理器220根据当前原始网络对应的离线模型及输入数据,获得当前原始网络的输出数据。
S450、调用第二处理器驱动API,控制第二处理器关闭。具体地,安全的应用软件能够调用第二处理器驱动API,以通过设备管理模块控制第二处理器220关闭。
进一步地,上述方法还包括如下步骤:
调用数据预处理API,将当前原始网络的输出数据存储至第一存储器中。具体地,安全的应用软件能够调用运行时系统231提供的数据预处理API,以通过数据处理装置的输入数据预处理模块对输出数据进行数据格式转换、归一化等预处理操作,并将当前原始网络的输出数据存储至第一存储器230中。
更进一步地,在调用输入数据API,获取当前原始网络的输入数据的步骤之后,上述方法还包括如下步骤:
调用数据预处理API,对获取的当前原始网络的输入数据进行预处理,使第二处理器能够运行输入数据。具体地,安全的应用软件还可以调用输入数据预处理模块提供的数据预处理API,以通过输入数据预处理模块对输入数据进行数据格式转换、归一化等预处理操作,以使第二处理器220能够运行上述的当前原始网络的输入数据。
可选地,本申请实施例中还可以包含离线模型的生成过程,该离线模型的生成过程可以在云端服务器或神经网络专用处理器上运行,并将其获得的原始网络的离线模型存储至第一存储器230中。该云端服务器或神经网络专用处理器为能够执行神经网络等重量级数据的处理器,其可以不包含于上述的计算机设备中。离线模型的生成过程具体可参见前文中的描述,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。
此外,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被一个或多个处理器执行时,实现图12-13所示的方法的步骤。该计算机存储介质可以包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本申请实施例中,由于当前原始网络的离线模型中仅仅存储了当前原始网络中各个计算节点对应的模型参数、指令以及当前原始网络中的各个计算节点的接口数据等必要的网络结构信息。因而该当前原始网络的离线模型的数据量级远远小于该当前原始网络的数据量级,从而通过运行当前原始网络的离线模型,能够实现在基于TEE等可信执行环境建立的安全的运行时系统对神经网络等重量级数据的处理过程,拓展了神经网络的应用范围。同时,通过在该计算机设备上直接运行该原始网络对应的离线模型,无需对原始网络中的各个计算节点进行编译等处理操作,可以提高该计算机设备的处理速度及效率。
应该理解的是,虽然图5-8以及图12-13的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图5-8及图12-13中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种计算机设备,其特征在于,包括第一处理器、第二处理器、第一存储器和第二存储器,所述第一存储器内存储有多个原始网络对应的离线模型及输入数据和能够在所述第一处理器上运行的运行时系统,所述第二存储器内存储有能够在所述第一处理器或所述第二处理器上运行的操作系统;
所述运行时系统为基于可信运行环境建立的安全的运行时系统,所述第一存储器为安全存储介质;当所述运行时系统在所述第一处理器上运行时,所述运行时系统能够从所述第一存储器内获取当前原始网络对应的离线模型及输入数据,并控制所述第二处理器运行所述当前原始网络对应的离线模型;
其中,所述当前原始网络对应的离线模型中包含原始网络中各个计算节点对应的模型参数、指令以及所述原始网络中的各个计算节点的接口数据,所述原始网络中各个计算节点对应的指令是基于原始网络的输入数据、模型数据集和模型结构参数编译得到的。
2.根据权利要求1所述的计算机设备,其特征在于,所述运行时系统包括:
数据处理装置,所述数据处理装置能够提供离线模型API及输入数据API,用于从所述第一存储器中获取当前原始网络对应的离线模型及输入数据;
设备管理装置,所述设备管理装置能够提供第二处理器驱动API,用于控制所述第二处理器启动或关闭;
任务执行装置,所述任务执行装置能够提供第二处理器运行API,用于控制所述第二处理器运行所述当前原始网络的离线模型及输入数据。
3.根据权利要求2所述的计算机设备,其特征在于,所述数据处理装置包括离线模型加载模块和输入数据加载模块;
所述离线模型加载模块能够提供离线模型API,用于从所述第一存储器中获取各个所述当前原始网络对应的离线模型,并对所述当前原始网络对应的离线模型进行解析;
所述输入数据加载模块能够提供输入数据API,用于从所述第一存储器中获取所述当前原始网络对应的输入数据。
4.根据权利要求3所述计算机设备,其特征在于,所述数据处理装置还包括输入数据预处理模块,所述输入数据预处理模块能够提供数据预处理API,用于对所述当前原始网络的输入数据进行预处理,使所述第二处理器能够运行所述当前原始网络的输入数据,并用于将所述第二处理器获得的输出数据存储至所述第一存储器。
5.根据权利要求2所述的计算机设备,其特征在于,所述第二处理器的数量为多个,或所述第二处理器包括多个处理模块;
所述任务执行装置还能够提供任务分配API,用于控制多个所述第二处理器,或控制所述第二处理器的多个处理模块。
6.根据权利要求2所述的计算机设备,其特征在于,所述计算机设备还包括能够在所述运行时系统上运行的安全的应用软件,且所述应用软件能够调用所述离线模型API及输入数据API、所述第二处理器驱动API,以及所述第二处理器运行API。
7.根据权利要求1-6任一项所述的计算机设备,其特征在于,所述第一存储器和所述第二存储器在物理上相互独立设置;
或者,所述第一存储器和所述第二存储器集成为一体,且所述第一存储器和所述第二存储器在逻辑上相互独立设置。
8.一种数据处理方法,其特征在于,用于如权利要求1-7任一项所述的计算机设备中,所述方法包括如下步骤:
从第一存储器中获取当前原始网络对应的离线模型及输入数据,所述当前原始网络对应的离线模型中包含所述当前原始网络中各个计算节点对应的模型参数、指令以及所述当前原始网络中的各个计算节点的接口数据,所述原始网络中各个计算节点对应的指令是基于原始网络的输入数据、模型数据集和模型结构参数编译得到的;
控制所述计算机设备的第二处理器启动;
控制所述计算机设备的第二处理器根据所述当前原始网络对应的离线模型及输入数据,运行所述当前原始网络,获得所述当前原始网络的输出数据;
将所述当前原始网络的输出数据存储至所述第一存储器中。
9.一种数据处理方法,其特征在于,用于如权利要求6所述的计算机设备,所述方法包括如下步骤:
调用离线模型API,从第一存储器中获取当前原始网络对应的离线模型,所述当前原始网络对应的离线模型中包含所述当前原始网络中各个计算节点对应的模型参数、指令以及所述当前原始网络中的各个计算节点的接口数据,所述原始网络中各个计算节点对应的指令是基于原始网络的输入数据、模型数据集和模型结构参数编译得到的;
调用输入数据API,获取所述当前原始网络的输入数据;
调用第二处理器驱动API,控制所述计算机设备中的第二处理器启动;
调用第二处理器运行API,控制所述第二处理器根据所述当前原始网络对应的离线模型及输入数据,获得所述当前原始网络的输出数据;
调用第二处理器驱动API,控制第二处理器关闭。
10.根据权利要求9所述的数据处理方法,其特征在于,所述方法还包括如下步骤:
调用数据预处理API,将所述当前原始网络的输出数据存储至所述第一存储器中。
11.根据权利要求9所述的数据处理方法,其特征在于,在所述的调用输入数据API,获取所述当前原始网络的输入数据的步骤之后,所述方法还包括如下步骤:
调用数据预处理API,对获取的所述当前原始网络的输入数据进行预处理,使所述第二处理器能够运行所述输入数据。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被一个或多个处理器执行时,实现权利要求8-11任一项中所述的方法的步骤。
Priority Applications (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810083577.1A CN110097179B (zh) | 2018-01-29 | 2018-01-29 | 计算机设备、数据处理方法及存储介质 |
KR1020197037907A KR102569086B1 (ko) | 2017-11-20 | 2018-09-28 | 태스크 병렬 처리 방법, 장치, 시스템, 기억 매체 및 컴퓨터 기기 |
EP18878728.7A EP3614260A4 (en) | 2017-11-20 | 2018-09-28 | METHOD, DEVICE AND SYSTEM FOR PARALLEL PROCESSING OF TASKS, STORAGE MEDIUM AND COMPUTER DEVICE |
EP19210491.7A EP3651020A1 (en) | 2017-11-20 | 2018-09-28 | Computer equipment, data processing method, and storage medium |
PCT/CN2018/108298 WO2019095873A1 (zh) | 2017-11-20 | 2018-09-28 | 任务并行处理方法、装置、系统、存储介质及计算机设备 |
JP2019568198A JP7074777B2 (ja) | 2017-11-20 | 2018-09-28 | タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器 |
US16/575,344 US11221877B2 (en) | 2017-11-20 | 2019-09-18 | Task parallel processing method, apparatus and system, storage medium and computer device |
US16/702,502 US11113103B2 (en) | 2017-11-20 | 2019-12-03 | Task parallel processing method, apparatus and system, storage medium and computer device |
US16/702,491 US11360811B2 (en) | 2017-11-20 | 2019-12-03 | Task parallel processing method, apparatus and system, storage medium and computer device |
US16/705,190 US11113104B2 (en) | 2017-11-20 | 2019-12-05 | Task parallel processing method, apparatus and system, storage medium and computer device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810083577.1A CN110097179B (zh) | 2018-01-29 | 2018-01-29 | 计算机设备、数据处理方法及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110097179A CN110097179A (zh) | 2019-08-06 |
CN110097179B true CN110097179B (zh) | 2020-03-10 |
Family
ID=67442513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810083577.1A Active CN110097179B (zh) | 2017-11-20 | 2018-01-29 | 计算机设备、数据处理方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110097179B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111523657B (zh) * | 2020-04-26 | 2023-06-20 | 云知声智能科技股份有限公司 | 神经网络加速器创建方法及装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488662A (zh) * | 2013-04-01 | 2014-01-01 | 哈尔滨工业大学深圳研究生院 | 基于图形处理单元的自组织映射神经网络聚类方法及系统 |
CN106570559A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种基于神经网络的数据处理方法和装置 |
CN107103113A (zh) * | 2017-03-23 | 2017-08-29 | 中国科学院计算技术研究所 | 面向神经网络处理器的自动化设计方法、装置及优化方法 |
CN107341127A (zh) * | 2017-07-05 | 2017-11-10 | 西安电子科技大学 | 基于OpenCL标准的卷积神经网络加速方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778074B (zh) * | 2014-01-14 | 2019-02-26 | 腾讯科技(深圳)有限公司 | 一种计算任务处理方法及装置 |
US9904976B2 (en) * | 2015-01-16 | 2018-02-27 | Nec Corporation | High performance portable convulational neural network library on GP-GPUs |
EP3451239A4 (en) * | 2016-04-29 | 2020-01-01 | Cambricon Technologies Corporation Limited | APPARATUS AND METHOD FOR PERFORMING RECURRENT NEURONAL NETWORK AND LTSM CALCULATIONS |
CN107330715B (zh) * | 2017-05-31 | 2020-12-22 | 北京京东尚科信息技术有限公司 | 选择图片广告素材的方法和装置 |
-
2018
- 2018-01-29 CN CN201810083577.1A patent/CN110097179B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488662A (zh) * | 2013-04-01 | 2014-01-01 | 哈尔滨工业大学深圳研究生院 | 基于图形处理单元的自组织映射神经网络聚类方法及系统 |
CN106570559A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种基于神经网络的数据处理方法和装置 |
CN107103113A (zh) * | 2017-03-23 | 2017-08-29 | 中国科学院计算技术研究所 | 面向神经网络处理器的自动化设计方法、装置及优化方法 |
CN107341127A (zh) * | 2017-07-05 | 2017-11-10 | 西安电子科技大学 | 基于OpenCL标准的卷积神经网络加速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110097179A (zh) | 2019-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113104B2 (en) | Task parallel processing method, apparatus and system, storage medium and computer device | |
CN111309486B (zh) | 转换方法、装置、计算机设备和存储介质 | |
CN109993287B (zh) | 神经网络处理方法、计算机系统及存储介质 | |
US11361217B2 (en) | Chip and chip-based data processing method | |
JP6892424B2 (ja) | ハイパーパラメータチューニング方法、装置及びプログラム | |
US11789698B2 (en) | Computer processing and outcome prediction systems and methods | |
CN110717584A (zh) | 神经网络编译方法、编译器、计算机设备及可读存储介质 | |
CN110097180B (zh) | 计算机设备、数据处理方法及存储介质 | |
CN112099848B (zh) | 一种业务处理方法、装置及设备 | |
WO2023029632A1 (zh) | 模型训练的方法、服务器、芯片以及系统 | |
De La Banda et al. | The future of optimization technology | |
CN110097179B (zh) | 计算机设备、数据处理方法及存储介质 | |
JP7299846B2 (ja) | ニューラルネットワーク処理方法、コンピュータシステム及び記憶媒体 | |
CN112099882B (zh) | 一种业务处理方法、装置及设备 | |
CN111582464B (zh) | 神经网络处理方法、计算机系统及存储介质 | |
Vecchiola et al. | Gene expression classification with a novel coevolutionary based learning classifier system on public clouds | |
CN112817560B (zh) | 一种基于表函数的计算任务处理方法、系统及计算机可读存储介质 | |
Westerlund et al. | A generalized scalable software architecture for analyzing temporally structured big data in the cloud | |
CN113240430A (zh) | 移动支付验证方法及装置 | |
JP2020198135A (ja) | ハイパーパラメータチューニング方法、装置及びプログラム | |
KR20210115832A (ko) | 시계열 데이터 예측 모델 학습 방법 및 장치, 그리고 이를 이용한 시계열 데이터 예측 장치 | |
US20240070538A1 (en) | Feature interaction using attention-based feature selection | |
Aguayo et al. | Distributed knowledge-based computer-aided control education environment | |
CN110866598A (zh) | block的合并方法、block的划分方法、组合处理装置及编译系统 | |
CN116820470A (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 |