CN111753948B - 模型处理方法及相关设备 - Google Patents
模型处理方法及相关设备 Download PDFInfo
- Publication number
- CN111753948B CN111753948B CN202010584720.2A CN202010584720A CN111753948B CN 111753948 B CN111753948 B CN 111753948B CN 202010584720 A CN202010584720 A CN 202010584720A CN 111753948 B CN111753948 B CN 111753948B
- Authority
- CN
- China
- Prior art keywords
- model
- hardware computing
- operator
- neural network
- computing device
- 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
-
- 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)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开一种模型处理方法及相关设备,其中,根据预设算子结构将第一神经网络模型转换成第二神经网络模型,统一模型结构格式,其中,终端侧设备的至少一个硬件计算设备可推理运算第二神经网络模型;再将第二神经网络模型的算子分配给至少一个硬件计算设备中的至少一个设备,以使硬件计算设备运行所分配的算子;模型部署时,无需考虑神经网络模型的网络框架,有效提升模型的部署效率;另外,第二神经网络模型可以被分配给至少一个硬件计算设备进行运行,可以有效提高模型运行效率。
Description
技术领域
本发明涉及模型技术领域,尤其涉及一种模型处理方法及相关设备。
背景技术
CPU(Central Processing Unit,中央处理器)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。中央处理器主要包括两个部分,即控制器、运算器,其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。
GPU(Graphics Processing Unit,图形处理器),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。GPU的生产商主要有NVIDIA和ATI。
DSP(Digital Signal Processor,数字信号处理)芯片是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。
NPU(Neural-network Processing Unit,嵌入式神经网络处理器)采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
神经网络作为引领当前人工智能(ArtificialIntelligence,简称AI)发展方向的关键技术,该技术在人脸识别、图像分类、模型处理、视频分析、语音识别、机器翻译等许多领域都取得了显著的效果,神经网络正在迅速被各互联网厂商所采用用于无人驾驶、语音助手、同声翻译等领域。
在终端侧设备上,会集成多个硬件计算设备(如CPU,GPU,DSP,NPU等),这些硬件计算设备都可以进行神经网络模型推理运算。现有技术中存在多种神经网络框架,例如TensorFlow、keras、PyTorch、MXNet、Caffe2等,每一种神经网络框架都有对应的框架模型结构。
现有技术中,神经网络模型的训练工作在PC端进行,当将训练完成的神经网络模型部署到终端侧设备上时,需要开发者针对不同神经网络模型的神经网络框架分别进行部署,导致神经网络模型的部署效率十分低下。另外,一种神经网络模型只能部署在一种硬件计算设备上面进行运行,导致模型运行效率也十分低下,例如,神经网络模型M要么部署在CPU上,要么部署在GPU上,无法同时在CPU和GPU上进行部署。
发明内容
本发明实施例提供了一种模型处理方法及相关设备,可以提高模型部署效率和模型运行效率。
第一方面,本发明实施例提供了一种模型处理方法,应用于终端侧设备,所述终端侧设备包括至少一个硬件计算设备,所述方法包括:
获取第一神经网络模型;
根据所述第一神经网络模型和预设算子结构进行模型转换,得到第二神经网络模型,所述至少一个硬件计算设备可推理运算所述第二神经网络模型;
将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,以使所述硬件计算设备运行所分配的算子。
在一种可能的实现方式中,所述根据所述第一神经网络模型和预设算子结构进行模型转换,得到第二神经网络模型,包括:
根据所述第一神经网络模型和第一算子列表,确定所述终端侧设备可运行所述第一神经网络模型,所述第一算子列表保存有所述终端侧设备的可支持算子名称和算子描述的对应关系;
根据所述第一神经网络模型和所述预设算子结构得到所述第二神经网络模型。
在一种可能的实现方式中,所述将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,包括:
对所述第二神经网络模型进行模型优化,得到优化模型;
将所述优化模型的算子分配给所述至少一个硬件计算设备中的至少一个设备。
在一种可能的实现方式中,所述将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,包括:
根据模型运行需求信息将所述第二神经网络模型的算子分配所述至少一个硬件计算设备中的至少一个设备。
在一种可能的实现方式中,所述根据模型运行需求信息将所述第二神经网络模型的算子分配所述至少一个硬件计算设备中的至少一个设备,包括:
遍历所述第二神经网络模型的算子以及所述终端侧设备的至少一个硬件计算设备;根据当前遍历的硬件计算设备的第二算子列表,确定当前遍历的硬件计算设备可运行当前遍历的算子,获取当前遍历的硬件计算设备的执行能力信息,所述第二算子列表保存有所述当前遍历的硬件计算设备的可支持算子名称和算子描述的对应关系;
根据遍历得到的所述执行能力信息和模型运行需求信息,确定所述第二神经网络模型的每个算子的硬件计算设备属性,算子的硬件计算设备属性为满足所述模型运行需求信息确定的模型运行需求的硬件计算设备;
根据所述硬件计算设备属性将所述第二神经网络模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备。
在一种可能的实现方式中,所述根据所述硬件计算设备属性将所述第二神经网络模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备,包括:
根据所述硬件计算设备属性对所述第二神经网络模型进行模型优化,得到优化模型;
根据所述硬件计算设备属性将所述优化模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备。
在一种可能的实现方式中,所述方法还包括:
对所述第二神经网络模型或所述优化模型进行序列化处理,得到序列化模型文件;
保存所述序列化模型文件。
在一种可能的实现方式中,所述方法还包括:
对所述序列化模型文件进行反序列化处理,得到所述第二神经网络模型或所述优化模型;
根据所述硬件计算设备属性将所述第二神经网络模型的算子或所述优化模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备。
在一种可能的实现方式中,所述方法还包括:
获取经所述硬件计算设备编译后的模型;
保存所述编译后的模型。
在一种可能的实现方式中,所述方法还包括:
获取硬件计算设备在运行所分配的算子的过程中的运行性能参数,所述运行性能参数包括算子运行时间、算子运行内存或算子运行过程事件;
保存所述运行性能参数。
在一种可能的实现方式中,所述方法还包括:
获取所述硬件计算设备运行所分配的算子后得到的算子运行结果;
整合所述算子运行结果得到模型运行结果。
第二方面,本发明实施例提供了一种模型处理装置,应用于终端侧设备,所述终端侧设备包括至少一个硬件计算设备,所述装置包括:
第一获取模块,用于获取第一神经网络模型;
转换模块,用于根据所述第一神经网络模型和预设算子结构进行模型转换,得到第二神经网络模型,所述至少一个硬件计算设备可推理运算所述第二神经网络模型;
分配模块,用于将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,以使所述硬件计算设备运行所分配的算子。
在一种可能的实现方式中,所述装置还包括:
第二获取模块,用于获取所述硬件计算设备运行所分配的算子后得到的算子运行结果;
整合模块,用于整合所述算子运行结果得到模型运行结果。
第三方面,本发明实施例提供了一种终端侧设备,包括第二方面所述的模型处理装置和至少一个硬件计算设备,其中,
所述硬件计算设备,用于运行所述模型处理装置分配的算子。
第四方面,本发明实施例提供了一种模型处理设备,包括:处理器和存储器;
所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如第一方面所述的模型处理方法。
第五方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如第一方面所述的模型处理方法。
本发明实施例中,根据预设算子结构将第一神经网络模型转换成第二神经网络模型,统一模型结构格式,其中,终端侧设备的至少一个硬件计算设备可推理运算第二神经网络模型;再将第二神经网络模型的算子分配给至少一个硬件计算设备中的至少一个设备,以使硬件计算设备运行所分配的算子;模型部署时,无需考虑神经网络模型的网络框架,有效提升模型的部署效率;另外,第二神经网络模型可以被分配给至少一个硬件计算设备进行运行,可以有效提高模型运行效率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种AI异构框架的示意图;
图2是本发明实施例提供的一种AI异构框架的运行示意图;
图3是本发明实施例提供的一种模型处理方法的流程示意图;
图4是本发明实施例提供的一种步骤302的流程示意图;
图5是本发明实施例提供的一种步骤303的流程示意图;
图6是本发明实施例提供的一种模型量化的流程示意图;
图7是本发明实施例提供的一种模型编译的流程示意图;
图8是本发明实施例提供的一种模型序列化的流程示意图;
图9是本发明实施例提供的一种模型反序列化的流程示意图;
图10是本发明实施例提供的一种模型性能监控的流程示意图;
图11是本发明实施例提供的一种模型处理设备的结构示意图;
图12是本发明实施例提供的一种模型处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
应当理解,本申请的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本发明中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本发明所描述的实施例可以与其它实施例相结合。
本申请实施例的技术方案可以应用于终端侧设备,本申请中的终端侧设备,具体可以是终端设备,该终端设备也可以称为终端(Terminal)、用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等。这里的终端设备具体可以是电脑、手机(mobile phone)、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端/电视、机顶盒、物联网(The Internet of Things,IOT)设备等等。
终端侧设备具有至少一个硬件计算设备,硬件计算设备可以是内置在终端侧设备中,也可以是通过外接的方式与终端侧设备的其余部分连接。硬件计算设备可以运行神经网络模型的算子。硬件计算设备包括CPU(Central Processing Unit,中央处理器),GPU(Graphics Processing Unit,图形处理器),DSP(Digital Signal Processor,数字信号处理)芯片,NPU(Neural-network Processing Unit,嵌入式神经网络处理器)等,还可以是其他能运行算子的设备(处理器或芯片),不做特别限定。其中,CPU可以采用Contex-A系列的CPU,而CPU可以采用Mali公司的GPU,DSP可以采用Cadence公司的VDSP,NPU可以采用Imagination公司的PowerVR 2NX NNA加速器、PowerVR 3NX NNA等。
神经网络(Neural Networks,NN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统。神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。将实现同一种功能的所有神经元归为以功能名称命名的算子,以图像处理算子为例,图像处理算子是对图像进行处理时所用到的算子,其包括全局特征描述算子和局部特征描述算子。因此,一般地,神经网络模型包括2个以上的算子,实际应用中,神经网络模型输入终端侧设备时表现为应用程序。
现有技术中,神经网络模型要部署在终端侧设备上时,由于神经网络模型的网络框架不同,部署时需要依据网络框架的不同分别进行部署,导致模型部署效率低下。另外,一种神经网络模型只能部署在一种硬件计算设备上面进行运行,导致模型运行效率也十分低下,例如,神经网络模型M要么部署在CPU上,要么部署在GPU上,无法同时在CPU和GPU上进行部署。基于上述现有技术中存在的不足,本申请实施例提出一种模型处理方法,可以有效提升模型部署效率,以及模型运行效率。
具体地,本申请实施例为实现模型处理方法,提供了一种用于终端侧设备的AI架构,该AI架构可以实现终端侧设备的AI异构,终端侧设备上具体的AI异构框架可以参考图1,图1是本发明实施例提供的一种AI异构框架的示意图,其中,AI异构,是指对于某一神经网络模型,通过AI异构可以将其部署在至少一个硬件计算设备上进行运行。本申请实施例中,终端侧设备包括硬件计算设备1、硬件计算设备2、……硬件计算设备5五个硬件计算设备。
图1中,不同的应用程序(如应用程序1、应用程序2、……)对应不同的神经网络模型,不同的神经网络模型对应的神经网络框架不同,因此,AI架构针对不同的神经网络框架,提供统一的模型推理接口,也即AI应用接口。而AI架构根据功能的不同,可以包括以下的核心模块:
张量(Tensor):用于张量定义及实现张量相关功能。其中,张量是不随其他因素变化的用以表示世间万物的量。“张量”在不同的运用场景下有不同的定义。第一种,张量是多维数组,这个定义常见于各种人工智能软件,使用张量的目的是把向量、矩阵推向更高的维度。第二种,张量是某种几何对象,不会随着坐标系的改变而改变。第三种,张量是向量和余向量(covector)通过张量积(tensor product)组合而成的。第四种,张量是多重线性映射。不难得出,本申请所指张量为第一种定义下的张量。
算子层(Layer):用于算子层定义及实现算子层相关功能。
图(Graph):用于图定义及实现图相关功能。
网络(Network):用于网络定义及实现网络相关功能。
模型解析器(Parser):用于实现模型解析功能,将AI应用接口输入的模型转换成AI架构所定义的模型。本申请实施例中,可以支持的神经网络模型的网络框架有TensorFlow、TensorFlow Lite、caffe、ONNX、keras、PyTorch、MXNet等,当然,基于本申请实施例的方法可以实现适用其他更多的网络框架,也在本申请的保护范围之内。具体地说,利用本申请实施例的AI架构,在终端侧设备上,可以输入上述网络框架中的任意一种框架的神经网络模型,并完成将该神经网络模型部署在终端侧设备上至少一个硬件计算设备上,最终实现该模型在终端侧设备上的高效推理运算。
模型优化(Optimizations)模块:用于实现模型优化功能。
模型量化(Quantizer)模块:用于实现模型量化功能。模型量化即以较低的推理精度损失将连续取值(或者大量可能的离散取值)的浮点型模型权重或流经模型的张量数据定点近似(通常为int8)为有限多个(或较少的)离散值的过程。
模型序列化(Serializer)模块:用于实现模型序列化,序列化是将数据结构或对象按照序列化协议转换成二进制串的过程。模型序列化是模型部署的第一步,如何把模型存储起来,以供后续的模型预测使用,是模型部署的首先要考虑的问题。序列化方法包括:跨平台跨语言通用序列化方法、模型本身提供的自定义序列化方法、语言级通用序列化方法和用户自定义序列化方法。
其中,跨平台跨语言通用序列化方法,主要使用三种格式:XML,JSON,和Protobuf,前两种是文本格式,人和机器都可以理解,后一种是二进制格式,只有机器能理解,但在存储传输解析上有很大的速度优势。而模型本身提供的自定义序列化方法的序列化格式可以是文本或者二进制格式语言专有或者跨语言跨平台自定义格式。语言级通用序列化方法包括利用Python中的pickle模块的序列化方法、利用Python中的joblib模块的序列化方法、R–rda序列化方法。joblib是scikit-learn的外带库,对于大数据而言,joblib比pickle更加高效,但是joblib只能将对象存储在磁盘文件中,不能保存为字符串。而rda是RData的简称。
另外,当其他序列化方法都无法达到要求时,用户可以使用自定义序列化格式,以满足自己的特殊部署需求:部署性能、模型大小、环境要求等等。
模型反序列化(Deserializer)模块:用于将序列化后的模型进行反序列化,得到序列化前的模型。反序列化是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。
性能分析(Profiling)模块:用于在模型运行时进行性能监控,监控模型运行的相关参数。
异常处理(Exception)模块:用于监控程序异常并进行异常处理。例如,监控在程序运行异常,则控制程序停止运行,也可以对异常情况进行处理,以恢复程序运行。
运行时(Runtime)模块:用于运行时管理。运行时就是程序运行的时候。任何语言要运行都需要自己的运行时,Java程序的运行时叫Java Runtime,Android程序的运行时叫Android Runtime,一个程序要在一个硬件或者平台上运行,就必须要有一个中间层用来把程序语言转换为机器能听懂的机器语言。运行时库就是程序运行的时候所需要依赖的库。
执行队列(ExecutionFrame):即模型执行模块。
计时器(WallClockTimer):即计时器模块。
另外,图1中,AI架构还提供一个AI后端接口,用于与不同的硬件计算设备的后端实现进行通信。终端侧设备中的不同硬件计算设备的后端实现不同。
参考图2,图2是本发明实施例提供的一种AI异构框架的运行示意图;神经网络模型也即应用程序,通过AI应用接口传入AI架构,传入的模型经过模型解析器解析,再经过模型优化模块进行模型优化,之后优化后的模型被加载到运行时模块中,然后通过模型执行模块运行在支持的后端硬件计算设备上,将模型的算子分配给至少一个硬件计算设备进行运行,硬件计算设备对分配的算子进行编译后进行运行,完成后返回在硬件计算设备上的运行结果,通过整合运行模型的硬件计算设备的运行结果,得到模型运行结果。
其中,在硬件计算设备上运行模型时,需要用户输入模型的输入数据时,用户输入数据后,可以直接通过运行时模块再次运行模型,然后通过模型执行模块运行在支持的硬件计算设备上,运行完成后返回运行结果。
图2中,AI架构还可以对模型解析后得到的模型进行模型量化,量化后的模型被加载到运行时模块,再经过序列化处理,将序列化后的模型保存起来。模型量化模块可以将较大的模型转化成较小的模型,提高模型运行效率,又能保持模型推理精度。
另外,图2中,AI架构还可以获取硬件计算设备的编译结果,整合得到完整模型的编译结果,并将模型的编译结果保存起来,这样,下次运行模型时,可以跳过编译环节,直接进行模型运行,提高模型运行效率。AI架构还可以对经过模型优化后的模型进行序列化,然后将序列化后的模型保存起来。
上述序列化后的优化模型,可以对其进行反序列化处理,然后将反序列化后的优化模型加载到运行时模块中进行运行,通过模型执行模块运行在支持的硬件计算设备上,运行完成后返回运行结果。
最后,AI架构还提供性能监控功能,在模型通过运行时模块进行运行的过程中,性能分析模块可以对模型运行过程中的性能进行监控,包括监控模型的占用内存、模型运行时间以及模型运行过程中发生的事件等等。
综上,利用AI架构完成模型部署时,无需考虑神经网络模型的网络构架,有效提升部署效率,另外,可以将神经网络模型分配给终端侧设备的至少一个硬件计算设备进行运行,有效提高了模型的运行效率。
基于上述关于AI架构的实施例描述,本申请实施例还提供了一种模型处理方法,该模型处理方法应用于终端侧设备,终端侧设备包括至少一个硬件计算设备,请参见图3,是本发明实施例提供的一种模型处理方法的流程示意图;模型处理方法包括:
301、获取第一神经网络模型;
具体地,第一神经网络模型为待部署的模型,该模型的网络框架可以是现有技术的网络框架中的任意一种,不做特别限定。本申请实施例,以处理一个第一神经网络模型的过程进行说明。参考图1,在终端侧设备,可以设置一个通用的应用接口,以对接获取不同网络框架的第一神经网络模型。
302、根据第一神经网络模型和预设算子结构进行模型转换,得到第二神经网络模型,至少一个硬件计算设备可推理运算第二神经网络模型;
具体地,预设算子结构可以根据需要进行设置,可以是现有算子结构中的任意一种,不做特别限定,还可以是终端侧设备自定义的一种算子结构。将第一神经网络模型的算子转换成预设算子结构后得到第二神经网络模型,且终端侧设备的至少一个硬件计算设备可以推理运行该第二神经网络模型。
303、将第二神经网络模型的算子分配给至少一个硬件计算设备中的至少一个设备,以使硬件计算设备运行所分配的算子。
具体地,对第二神经网络模型的算子进行分配,将算子分配给终端侧设备的至少一个硬件计算设备,完成模型部署,之后,硬件计算设备运行所分配的算子,实现模型运行在终端侧设备上。
利用图3的方法,当开发者使用不同的框架将模型训练完成后,在模型部署时,无需考虑神经网络模型的网络框架,仅需要一次部署,有效提升模型的部署效率;另外,第二神经网络模型可以被分配给至少一个硬件计算设备进行运行,可以有效提高模型运行效率;其中,通过多用硬件计算设备且采用合理的分配方法,能够合理且高效的将神经网络模型的计算任务分配到终端侧设备不同的硬件计算设备上运行,从而使神经网络模型在端侧推理的效率达到最优。
在一个可能的实施例中,步骤302包括:
3021、根据第一神经网络模型和第一算子列表,确定终端侧设备可运行第一神经网络模型,第一算子列表保存有终端侧设备的可支持算子名称和算子描述的对应关系;
具体地,终端侧设备可以支持的算子,也即终端侧设备上所有的硬件计算设备可以支持的算子,获取所有硬件计算设备的第二算子列表,第二算子列表保存有硬件计算设备的可支持算子名称和算子描述的对应关系,算子描述包括算子的运算数据类型等信息,整合所有的第二算子列表可以得到第一算子列表。接着,依据第一算子列表的算子名称和算子描述,对比第一神经网络模型的算子和相应的算子描述,可以确定终端侧设备是否可以运行第一神经网络模型的算子,也即是否可以运行第一神经网络模型。
3022、根据第一神经网络模型和预设算子结构得到第二神经网络模型。
具体地,确定终端侧设备可以运行第一神经网络模型后,根据第一神经网络模型和预设算子结构进行算子结构转换,得到第二神经网络模型。
若根据第一算子列表判断终端侧设备无法运行第一神经网络模型,则停止处理第一神经网络模型。进一步,可以输出处理失败信息,以供用户查看,可以在终端侧设备上输出该信息,例如显示输出或者声音输出,还可以是光学输出,例如通过指示灯指示该处理失败信息,如双闪红灯对应模型处理失败信息。
参考图1和图2,上述步骤3021和步骤3022为模型解析的过程,实际上,参考图4,图4是本发明实施例提供的一种步骤302的流程示意图;终端侧设备在解析模型时,对输入的模型的每个算子进行判断。首先,根据输入的模型,获取模型的第一个算子;根据第一算子列表判断终端侧设备是否支持该算子,若支持,则将该算子转换成预设算子结构,并获取输入模型的下一个算子;若判断为不支持,则结束处理输入的模型。接着,判断该下一个算子是否为模型中的最后一个算子,若不是最后一个算子,则按照第一个算子的处理流程进行处理,否则,将所有转换成功的算子,根据终端侧设备的网络结构,重新构建新的网络,得到第二神经网络模型。
在一个可能的实施例中,步骤303在分配算子时,可以是采用随机分配方式进行算子分配,将算子分配给支持该算子的硬件计算设备中的任意一个,这种分配方式,无法有效提升模型运行效率。在另一个可能的实施例中,可以默认以模型运行效率优先为准则进行算子分配,即以模型运行时间最短为目标,对第二神经网络模型的每个算子分配运行其的硬件计算设备,以使神经网络模型的运行效率达到最优。在完成了硬件计算设备分配后,即完成模型运行优化后,将第二神经网络模型的算子分配给对应的硬件计算设备进行运行。其中,硬件计算设备运行算子之前,需要对算子进行编译之后,再进行算子运算。
特别指出的,不管是随机分配方式,还是模型运行效率优先分配方式,在完成算子分配后,将算子的硬件计算设备属性设置成对应分配的硬件计算设备。
在一个可能的实施例中,步骤303包括:
根据模型运行需求信息将第二神经网络模型的算子分配至少一个硬件计算设备中的至少一个设备。
具体地,为了满足不同应用场景的模型运行需求,可以根据用户设定的模型运行需求信息将第二神经网络模型的算子分配至少一个硬件计算设备中的至少一个设备。例如,对于人脸解锁等对运行速度要求较高的模型,需要满足模型运行速度的需求,因此,模型运行需求信息为模型运行时间最短。而对于在后台运行的模型,对于反应时间要求较弱,对于运行能耗的要求较高,因此,模型运行需求信息为模型运行能耗最低。对于银行等对数据精度要求较高的应用场景,模型运行需求信息为模型输出数据的精度最高。
在一个可能的实施例中,根据模型运行需求信息进行算子分配时,具体包括:
3031、遍历第二神经网络模型的算子以及终端侧设备的至少一个硬件计算设备;根据当前遍历的硬件计算设备的第二算子列表,确定当前遍历的硬件计算设备可运行当前遍历的算子,获取当前遍历的硬件计算设备的执行能力信息,第二算子列表保存有当前遍历的硬件计算设备的可支持算子名称和算子描述的对应关系;
具体地,遍历第二神经网络模型的算子,以第一个算子为例,假设终端侧设备具有4个不同的硬件计算设备,分别为硬件计算设备A、硬件计算设备B、硬件计算设备C和硬件计算设备D。遍历终端侧设备的硬件计算设备时,先获取硬件计算设备A,判断硬件计算设备A是否支持第一个算子,具体可以根据硬件计算设备A的第二算子列表来进行判断,第二算子列表中保存有硬件计算设备A所支持的算子名称和算子描述的对应关系。判断硬件计算设备A支持第一个算子时,则获取硬件计算设备A的执行能力信息;否则,获取硬件计算设备B,对硬件计算设备B进行如硬件计算设备A一样的处理流程,直到硬件计算设备D。假设硬件计算设备A、硬件计算设备B、硬件计算设备C和硬件计算设备D均支持第一个算子的运算,则可以得到4个执行能力信息。按照第一个算子的处理过程处理第二神经网络模型的其余算子,可以得到对应每个算子的执行能力信息,假设具有20个算子,每个算子有4个执行能力信息,则总的可以得到80个执行能力信息。
其中,硬件计算设备的执行能力信息可以包括运行时间,运行能耗,数据精度等。
3032、根据遍历得到的执行能力信息和模型运行需求信息,确定第二神经网络模型的每个算子的硬件计算设备属性,算子的硬件计算设备属性为满足模型运行需求信息确定的模型运行需求的硬件计算设备;
具体地,根据模型运行需求信息和上述得到的执行能力信息,可以确定运行每个算子最优的硬件计算设备,将该硬件计算设备设置为对应算子的硬件计算设备属性。其中,模型运行需求信息确定了模型运行需求,假设第一个算子对应有4个执行能力信息,一个执行能力信息分别对应一个硬件计算设备,根据该模型运行需求可以从4个硬件计算设备中确定运行第一个算子的硬件计算设备。以模型运行需求为模型运行时间最短为例,则为每个算子选择硬件计算设备时,选择算子运行时间最短的硬件计算设备作为运行算子的硬件计算设备。不同的模型运行需求信息下,确定运行算子的硬件计算设备的结果不同。
3033、根据硬件计算设备属性将第二神经网络模型的算子分配给与硬件计算设备属性对应的硬件计算设备。
具体地,在为第二神经网络模型的每个算子确定运行算子的硬件计算设备后,即完成了模型运行优化后,可以根据算子的硬件计算设备属性,将第二神经网络模型的算子分配给与硬件设备属性对应的硬件计算设备进行运行。其中,硬件计算设备运行算子之前,需要对算子进行编译之后,再进行算子运算。
根据用户设置的模型运行需求信息,进行算子的合理分配,以满足用户不同的模型运行需求,实用性强。
在一个可能的实施例中,步骤3033包括:
S1、根据硬件计算设备属性对第二神经网络模型进行模型优化,得到优化模型;
具体地,在得到每个算子的硬件计算设备属性后,可以根据硬件计算设备属性对第二神经网络模型进行模型优化处理,得到优化模型。模型优化处理的方法包括但不限于现有技术中的模型优化方法,模型优化处理方法可以包括模型剪枝、算子优化等,对算子优化方法举例来说,例如当相邻两个算子的硬件计算设备属性不同时,为了克服两个不同的硬件计算设备处理的数据类型不同,在这两个算子之间添加一个拷贝兼容算子层,该算子层用于进行数据转换,以使两个不同的硬件计算设备可以顺利完成数据传递。例如,相邻两个算子对应的硬件计算设备分别为硬件计算设备A和硬件计算设备B,硬件计算设备A的处理数据类型为整型数据,硬件计算设备B的处理数据类型为实型数据,则拷贝兼容算子层的作用为将整型数据转换成实型数据。其中,该拷贝兼容算子层可以由上述相邻的两个算子对应的硬件计算设备中的任意一个来运行,不做特别限定。又例如,相邻两个算子为加法算子和减法算子,可以利用加减算子来代替上述两个算子,减少算子个数,以提升模型运行效率。
S2、根据硬件计算设备属性将优化模型的算子分配给与硬件计算设备属性对应的硬件计算设备。
具体地,在得到优化模型后,再根据硬件计算设备属性将优化模型的算子分配给与硬件计算设备属性对应的硬件计算设备。同样地,硬件计算设备在运行所分配的算子之前,需要先对算子进行编译。
在对第二神经网络模型进行运行优化后,还可以进一步对模型进行优化,得到优化模型,再运行该优化模型,双重优化,以帮助达到最优的模型运行效率。
参考图4和图5,图5是本发明实施例提供的一种步骤303的流程示意图;终端侧设备在执行步骤303时,在得到解析后的第二神经网络模型,先获取第二神经网络模型的第一个算子,再获取终端侧设备支持的后端硬件计算设备,遍历所有硬件计算设备。先获取第一个硬件计算设备,判断第一个硬件计算设备是否支持该算子,若支持,则获取并记录该硬件计算设备对该算子的执行能力信息,再判断是否为最后一个硬件计算设备;若判断不支持该算子,则进入判断是否为最后一个硬件计算设备,若不是最后一个硬件计算设备,则获取下一个硬件计算设备;对下一个硬件计算设备做如第一个硬件计算设备的处理,直到最后一个硬件计算设备。根据记录的关于第一个算子的所有执行能力信息,评选出该算子最优的硬件计算设备,该硬件计算设备为执行该算子的设备;并将算子的硬件计算设备属性设置为最优的硬件计算设备。接着,判断是否是模型的最后一个算子,若不是最后一个算子,则获取第二神经网络模型的下一个算子,对下一个算子做如第一个算子一样的处理,直到第二神经网络模型的最后一个算子。得到第二神经网络模型所有的算子的硬件计算设备属性后,根据该硬件计算设备属性,对第二神经网络模型进行切割,如果相邻两个算子的硬件计算设备属性不同,则在它们之间添加一个拷贝兼容算子层,根据硬件计算设备属性对模型进行优化处理,生成优化模型。
在一个可能的实施例中,除了可以在完成模型运行优化之后,对第二神经网络模型进行优化之外,还可以在进行模型运行优化之前,先进行模型优化处理。即步骤303包括:
3034、对第二神经网络模型进行模型优化,得到优化模型;
具体地,本实施例中,模型优化方法可以采用现有的模型优化方法,例如,模型优化方法包括模型量化,算子优化(添加兼容层、剪枝等)等。
3035、将优化模型的算子分配给至少一个硬件计算设备中的至少一个设备。
具体地,例如,在模型解析后,先第二神经网络模型进行模型量化,再对量化后模型进行算子分配,也即上述的模型运行优化。算子分配的具体描述参考上述步骤303的相关描述,不再赘述。完成算子分配后,每个算子的硬件计算设备属性可以确定。
特别指出的是,上述“3034”、“3035”旨在对不同步骤进行区分,不对步骤的执行顺序进行限定。
在一个可能的实施例中,参考图6,图6是本发明实施例提供的一种模型量化的流程示意图;模型量化的过程为:
首先,用户可以根据需要设定想要的量化模型。模型量化时,首先,先判断终端侧设备是否支持用户设定的量化模型,若支持,则加载需要量化的模型文件,否则,停止模型量化。再读取模型的第一个算子,将该算子按照用户指定的量化模型进行量化,得到量化后的算子。再判断该算子是否是模型的最后一个算子,若不是,则继续获取模型的下一个算子,对下一个算子进行如第一个算子一样的处理,若是最后一个算子,则根据所有量化后的算子生成对应的量化模型。
实际应用中,终端侧也可以提供一个可支持的量化模型选择列表,供用户进行选择。这样,模型量化时,可以省略判断终端侧设备是否支持用户设定的量化模型这一步,可以在一定程度上提升模型的量化效率。
参考图2,在模型优化(如模型运行优化或者生成优化模型)后,模型被加载到运行时模块进行编译,以使模型顺利运行。此时编译的模型,可以是确定了算子的硬件计算设备属性的第二神经网络模型,或者是优化模型。参考图7,图7是本发明实施例提供的一种模型编译的流程示意图;模型编译的过程如下:
获取需要编译的模型的第一个算子,再获取该算子的硬件计算设备属性,判断该硬件计算设备属性对应的硬件计算设备的状态是否正常,设备状态正常时,则将算子、算子的输入属性、输出属性传入对应的硬件计算设备的后端实现,以使硬件计算设备开始算子编译,得到算子编译结果。若硬件计算设备的状态不是正常的,则停止模型编译。接着,判断该算子是否是模型的最后一个算子,若不是最后一个算子,则继续获取模型的下一个算子,对下一个算子进行如第一个算子一样的处理,直到模型的最后一个算子,可以生成模型编译后的算子编译结果列表,其包含了模型所有算子的编译结果。后续模型运行过程中,可以直接根据算子编译结果列表进行模型运行。
其中,算子的输入属性为算子的输入数据的属性,例如输入数据的数据类型等,同理,输出属性为算子的输出数据的属性,例如输出数据的数据类型等等。
在一个可能的实施例中,方法还包括:
S3、获取硬件计算设备运行所分配的算子后得到的算子运行结果;
具体地,每个硬件计算设备运行所分配的算子后,可以得到相应的算子运行结果。
S4、整合算子运行结果得到模型运行结果。
具体地,通过对运行模型的硬件计算设备的算子运行结果进行整合,可以得到模型最终的运行结果。
在一个可能的实施例中,方法还包括:
S5、获取经硬件计算设备编译后的模型;
具体地,此处所指的硬件计算设备,为分配了算子的硬件计算设备,其数目可以是一个,或两个以上。这里的模型是确定了算子的硬件计算设备属性的第二神经网络模型,或者是优化模型。而编译后的模型也即上述算子编译结果列表,也即对上述第二神经网络模型,或者是优化模型进行编译后得到的算子编译结果列表。
S6、保存编译后的模型。
具体地,可以将编译后的模型保存在内存中,以供后续模型运行时进行调用。特别地,编译后的模型为二进制数据,无需序列化,可以直接保存,在后续运行时无需再次进行编译,以节省模型运行时间,提高模型运行效率。
在一个可能的实施例中,方法还包括:
S7、对第二神经网络模型或优化模型进行序列化处理,得到序列化模型文件;
具体地,这里的模型是确定了算子的硬件计算设备属性的第二神经网络模型,或者是优化模型。可以采用现有技术中的序列化方法对模型进行序列化,得到序列化模型文件。
S8、保存序列化模型文件。
具体地,通过保存序列化模型文件,以供用户需要时进行获取。
参考图8,图8是本发明实施例提供的一种模型序列化的流程示意图;本发明实施例中,模型序列化的过程如下:
先获取需要序列化的模型的第一个算子,根据Flatbuffers协议定义的模型数据结构,对算子以及算子对应的输入、输出属性进行序列化处理,得到算子序列化后的文件。再判断该算子是否是模型的最后一个算子,若不是,则继续获取模型的下一个算子,对该下一个算子进行如第一个算子的处理,直到模型的最后一个算子,则根据模型所有算子的序列化文件可以得到模型的序列化文件,完成对模型的序列化处理。
在一个可能的实施例中,方法还包括:
S9、对序列化模型文件进行反序列化处理,得到第二神经网络模型或优化模型;
具体地,在运行模型时,可以对序列化模型文件进行反序列化处理,以得到序列化之前的模型,例如确定了算子的硬件计算设备属性的第二神经网络模型,或者是优化模型。
S10、根据硬件计算设备属性将第二神经网络模型的算子或优化模型的算子分配给与硬件计算设备属性对应的硬件计算设备。
具体地,根据反序列化处理后的模型的算子的硬件计算设备属性,将算子分配给与属性对应的硬件计算设备,完成模型运行。
以上通过序列化模型后进行保存,再通过反序列化将模型恢复,并在终端侧设备上运行恢复的模型,可以快速调用模型,提升模型调用速度。
参考图9,图9是本发明实施例提供的一种模型反序列化的流程示意图;本发明实施例中,模型反序列化的过程如下:
加载序列化的模型文件,先读取文件的第一行,将该行的内容,按照Flatbuffers协议定义的模型数据结构进行反序列化处理,得到反序列化后的数据。接着判断该行是否是模型文件的最后一行,若不是最后一行,则继续读取模型文件的下一行,对下一行进行如第一行的处理,直到模型文件的最后一行。将所有反序列化后的数据生成对应的模型,即序列化之前的模型。
在一个可能的实施例中,方法还包括:
S11、获取硬件计算设备在运行所分配的算子的过程中的运行性能参数,运行性能参数包括算子运行时间、算子运行内存或算子运行过程事件;
具体地,利用以上方法完成算子分配后,运行模型时,硬件计算设备在运行所分配的算子,本发明实施例还获取硬件计算设备在运行算子的过程中的运行性能参数,其中,运行性能参数包括算子运行时间、算子运行内存或算子运行过程事件,即算子运行过程中发生的事件,如异常事件、拷贝事件等等。本发明实施例中,同时获取以上三种运行性能参数,以更全面分析模型运行性能。
S12、保存运行性能参数。
具体地,利用步骤S9可以获得每个算子的运行性能参数,对模型所有算子的运行性能参数(即模型运行性能参数)进行保存,以根据模型运行性能参数对模型的运行性能进行分析等。模型运行性能参数可以是以算子名称、算子对应的硬件计算设备、算子运行时间、算子运行内存、算子运行过程事件的对应关系、以文本格式进行保存。保存文本中,可以是以表格的形式进行保存,以模型具有10个算子为例,可以建立表1的模型运行性能参数表。
表1
模型 | 算子 | 硬件计算设备 | 算子运行时间 | 算子运行内存 | 运行过程事件 |
模型A | 算子1 | 硬件计算设备1 | 100ns | 500KB | 拷贝 |
模型A | 算子2 | 硬件计算设备2 | 20ns | 120KB | 拷贝 |
模型A | 算子3 | 硬件计算设备1 | 500ns | 1200KB | 拷贝 |
模型A | 算子4 | 硬件计算设备3 | 800ns | 1600KB | 拷贝 |
模型A | 算子5 | 硬件计算设备3 | 150ns | 400KB | 异常 |
模型A | 算子6 | 硬件计算设备1 | 200ns | 800KB | 拷贝 |
模型A | 算子7 | 硬件计算设备1 | 320ns | 1100KB | 异常 |
模型A | 算子8 | 硬件计算设备4 | 900ns | 1900KB | 异常 |
模型A | 算子9 | 硬件计算设备5 | 180ns | 380KB | 拷贝 |
模型A | 算子10 | 硬件计算设备1 | 750ns | 1580KB | 拷贝 |
参考图10,图10是本发明实施例提供的一种模型性能监控的流程示意图;本发明实施例中,模型性能监控的过程如下:
加载模型文件,再创建性能分析监视器,监视硬件计算设备执行算子,可以监控并记录每个算子的算子运行内存、算子运行时间、算子运行过程中的事件;开始执行模型,获取第一个算子,执行算子,再判断是否是模型的最后一个算子,若不是最后一个算子,则继续获取下一个算子,对下一个算子做如第一个算子的处理,直到模型的最后一个算子,这样,这记录到模型运行过程中,所有算子的性能运行参数,可以根据记录的参数进行统计分析。
实际应用时,当用户需要对一定数量的神经网络模型的运行性能进行评估时,可以依次将其输入终端侧设备进行运行,利用AI架构的性能监控功能,获得每个模型对应的模型运行性能参数,则用户根据这些参数可以对这些神经网络模型进行性能分析,选择用户需要的模型。
同样地,上述“S1”、“S2”、“S3”、“S4”、“S5”、“S6”、“S7”、“S8”、“S9”、“S10”、“S11”、“S12”旨在对不同步骤进行区分,不对步骤的执行顺序进行限定。
基于上述模型处理方法实施例的描述,本发明实施例还提供一种模型处理设备。
请参见图11,是本发明实施例提供的一种模型处理设备的结构示意图。如图11所示,上述的模型处理装置可以应用于所述模型处理设备110,所述模型处理设备110可以包括:处理器111,网络接口114和存储器115,此外,所述模型处理设备110还可以包括:用户接口113,和至少一个通信总线112。其中,通信总线112用于实现这些组件之间的连接通信。其中,用户接口113可以包括显示屏(Display)、键盘(Keyboard),可选用户接口113还可以包括标准的有线接口、无线接口。网络接口114可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器115可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器115可选的还可以是至少一个位于远离前述处理器111的存储装置。如图11所示,作为一种计算机存储介质的存储器115中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
其中,处理器111包括CPU(Central Processing Unit,中央处理器),GPU(Graphics Processing Unit,图形处理器),DSP(Digital Signal Processor,数字信号处理)芯片,NPU(Neural-network Processing Unit,嵌入式神经网络处理器)等,还可以是其他能接收并处理模型的设备(处理器或芯片),不做特别限定。
在图11所示的模型处理设备110中,网络接口114可提供网络通讯功能;而用户接口113主要用于为用户提供输入的接口;而处理器111可以用于调用存储器115中存储的设备控制应用程序,以实现:
获取第一神经网络模型;
根据所述第一神经网络模型和预设算子结构进行模型转换,得到第二神经网络模型,所述至少一个硬件计算设备可推理运算所述第二神经网络模型;
将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,以使所述硬件计算设备运行所分配的算子。
本发明实施例中,根据预设算子结构将第一神经网络模型转换成第二神经网络模型,统一模型结构格式,其中,终端侧设备的至少一个硬件计算设备可推理运算第二神经网络模型;再将第二神经网络模型的算子分配给至少一个硬件计算设备中的至少一个设备,以使硬件计算设备运行所分配的算子;模型部署时,无需考虑神经网络模型的网络框架,有效提升模型的部署效率;另外,第二神经网络模型可以被分配给至少一个硬件计算设备进行运行,可以有效提高模型运行效率。
在一种可能的实现方式中,处理器111在执行所述根据所述第一神经网络模型和预设算子结构进行模型转换,得到第二神经网络模型,具体执行以下步骤:
根据所述第一神经网络模型和第一算子列表,确定所述终端侧设备可运行所述第一神经网络模型,所述第一算子列表保存有所述终端侧设备的可支持算子名称和算子描述的对应关系;
根据所述第一神经网络模型和所述预设算子结构得到所述第二神经网络模型。
在一种可能的实现方式中,处理器111在执行所述将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,具体执行以下步骤:
对所述第二神经网络模型进行模型优化,得到优化模型;
将所述优化模型的算子分配给所述至少一个硬件计算设备中的至少一个设备。
在一种可能的实现方式中,处理器111在执行所述将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,具体执行以下步骤:
根据模型运行需求信息将所述第二神经网络模型的算子分配所述至少一个硬件计算设备中的至少一个设备。
在一种可能的实现方式中,处理器111在执行根据模型运行需求信息将所述第二神经网络模型的算子分配所述至少一个硬件计算设备中的至少一个设备,具体执行以下步骤:
遍历所述第二神经网络模型的算子以及所述终端侧设备的至少一个硬件计算设备;根据当前遍历的硬件计算设备的第二算子列表,确定当前遍历的硬件计算设备可运行当前遍历的算子,获取当前遍历的硬件计算设备的执行能力信息,所述第二算子列表保存有所述当前遍历的硬件计算设备的可支持算子名称和算子描述的对应关系;
根据遍历得到的所述执行能力信息和模型运行需求信息,确定所述第二神经网络模型的每个算子的硬件计算设备属性,算子的硬件计算设备属性为满足所述模型运行需求信息确定的模型运行需求的硬件计算设备;
根据所述硬件计算设备属性将所述第二神经网络模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备。
在一种可能的实现方式中,处理器111在执行所述根据所述硬件计算设备属性将所述第二神经网络模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备,具体执行以下步骤:
根据所述硬件计算设备属性对所述第二神经网络模型进行模型优化,得到优化模型;
根据所述硬件计算设备属性将所述优化模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备。
在一种可能的实现方式中,处理器111还执行以下步骤:
对所述第二神经网络模型或所述优化模型进行序列化处理,得到序列化模型文件;
保存所述序列化模型文件。
在一种可能的实现方式中,处理器111还执行以下步骤:
对所述序列化模型文件进行反序列化处理,得到所述第二神经网络模型或所述优化模型;
根据所述硬件计算设备属性将所述第二神经网络模型的算子或所述优化模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备。
在一种可能的实现方式中,处理器111还执行以下步骤:
获取经所述硬件计算设备编译后的模型;
保存所述编译后的模型。
在一种可能的实现方式中,处理器111还执行以下步骤:
获取硬件计算设备在运行所分配的算子的过程中的运行性能参数,所述运行性能参数包括算子运行时间、算子运行内存或算子运行过程事件;
保存所述运行性能参数。
在一种可能的实现方式中,处理器111还执行以下步骤:
获取所述硬件计算设备运行所分配的算子后得到的算子运行结果;
整合所述算子运行结果得到模型运行结果。
应当理解,本发明实施例中所描述的模型处理设备110可执行前文所述模型处理方法,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本发明实施例还提供了一种计算机存储介质,且所述计算机程序包括程序指令,当所述处理器执行所述程序指令时,能够执行前文所述模型处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本发明所涉及的计算机存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
基于上述模型处理方法实施例的描述,本发明实施例还公开了一种模型处理装置,参考图12,图12是本发明实施例提供的一种模型处理装置的结构示意图,应用于终端侧设备,终端侧设备包括至少一个硬件计算设备,装置包括:
第一获取模块121,用于获取第一神经网络模型;
转换模块122,用于根据第一神经网络模型和预设算子结构进行模型转换,得到第二神经网络模型,至少一个硬件计算设备可推理运算第二神经网络模型;
分配模块123,用于将第二神经网络模型的算子分配给至少一个硬件计算设备中的至少一个设备,以使硬件计算设备运行所分配的算子。
当开发者使用不同的框架将模型训练完成后,在模型部署时,无需考虑神经网络模型的网络框架,仅需要一次部署,有效提升模型的部署效率;另外,第二神经网络模型可以被分配给至少一个硬件计算设备进行运行,可以有效提高模型运行效率。
在一个可能的实施例中,转换模块包括:
第一子模块,用于根据第一神经网络模型和第一算子列表,确定终端侧设备可运行第一神经网络模型,第一算子列表保存有终端侧设备的可支持算子名称和算子描述的对应关系;
第二子模块,用于根据第一神经网络模型和预设算子结构得到第二神经网络模型。
在一个可能的实施例中,分配模块具体用于:
根据模型运行需求信息将第二神经网络模型的算子分配至少一个硬件计算设备中的至少一个设备。
在一个可能的实施例中,分配模块具体包括:
第三子模块,用于遍历第二神经网络模型的算子以及终端侧设备的至少一个硬件计算设备;根据当前遍历的硬件计算设备的第二算子列表,确定当前遍历的硬件计算设备可运行当前遍历的算子,获取当前遍历的硬件计算设备的执行能力信息,第二算子列表保存有当前遍历的硬件计算设备的可支持算子名称和算子描述的对应关系;
第四子模块,用于根据遍历得到的执行能力信息和模型运行需求信息,确定第二神经网络模型的每个算子的硬件计算设备属性,算子的硬件计算设备属性为满足模型运行需求信息确定的模型运行需求的硬件计算设备;
第五子模块,用于根据硬件计算设备属性将第二神经网络模型的算子分配给与硬件计算设备属性对应的硬件计算设备。
在一个可能的实施例中,第五子模块具体用于:
S1、根据硬件计算设备属性对第二神经网络模型进行模型优化,得到优化模型;
S2、根据硬件计算设备属性将优化模型的算子分配给与硬件计算设备属性对应的硬件计算设备。
在一个可能的实施例中,分配模块包括:
第六子模块,用于对第二神经网络模型进行模型优化,得到优化模型;
第七子模块,用于将优化模型的算子分配给至少一个硬件计算设备中的至少一个设备。
在一个可能的实施例中,装置还包括:
序列化模块,用于对第二神经网络模型或优化模型进行序列化处理,得到序列化模型文件;
其中,第二神经网络模型或优化模型的算子已确定硬件计算设备属性。
保存模块,用于保存序列化模型文件。
在一个可能的实施例中,装置还包括:
反序列化模块,用于对序列化模型文件进行反序列化处理,得到第二神经网络模型或优化模型;
分配模块,还用于根据硬件计算设备属性将反序列化处理得到第二神经网络模型的算子或优化模型的算子,分配给与硬件计算设备属性对应的硬件计算设备。
在一个可能的实施例中,装置还包括:
第三获取模块,用于获取经硬件计算设备编译后的模型;
保存模块,还用于保存编译后的模型。
在一个可能的实施例中,装置还包括:
第四获取模块,用于获取硬件计算设备在运行所分配的算子的过程中的运行性能参数,运行性能参数包括算子运行时间、算子运行内存或算子运行过程事件;
保存模块,还用于保存运行性能参数。
在一个可能的实施例中,装置还包括:
第二获取模块,用于获取硬件计算设备运行所分配的算子后得到的算子运行结果;
整合模块,用于整合算子运行结果得到模型运行结果。
值得指出的是,其中,模型处理装置的具体功能实现方式可以参见上述模型处理方法的描述,这里不再进行赘述。所述的模型处理装置中的各个单元或模块可以分别或全部合并为一个或若干个另外的单元或模块来构成,或者其中的某个(些)单元或模块还可以再拆分为功能上更小的多个单元或模块来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元或模块是基于逻辑功能划分的,在实际应用中,一个单元(或模块)的功能也可以由多个单元(或模块)来实现,或者多个单元(或模块)的功能由一个单元(或模块)实现。
基于上述模型处理装置实施例的描述,本发明实施例还公开了一种终端侧设备,包括所述的模型处理装置和至少一个硬件计算设备,其中,
硬件计算设备,用于运行模型处理装置分配的算子。
当开发者使用不同的框架将模型训练完成后,在模型部署时,无需考虑神经网络模型的网络框架,仅需要一次部署,有效提升模型的部署效率;另外,第二神经网络模型可以被分配给至少一个硬件计算设备进行运行,可以有效提高模型运行效率。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (16)
1.一种模型处理方法,其特征在于,应用于终端侧设备,所述终端侧设备包括至少一个硬件计算设备,所述方法包括:
获取第一神经网络模型;
根据所述第一神经网络模型和预设算子结构进行模型转换,得到第二神经网络模型,所述至少一个硬件计算设备可推理运算所述第二神经网络模型;
将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,以使所述硬件计算设备运行所分配的算子;
对确定了每个算子的硬件计算设备属性的所述第二神经网络模型进行序列化处理,得到序列化模型文件;
保存所述序列化模型文件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一神经网络模型和预设算子结构进行模型转换,得到第二神经网络模型,包括:
根据所述第一神经网络模型和第一算子列表,确定所述终端侧设备可运行所述第一神经网络模型,所述第一算子列表保存有所述终端侧设备的可支持算子名称和算子描述的对应关系;
根据所述第一神经网络模型和所述预设算子结构得到所述第二神经网络模型。
3.根据权利要求1所述的方法,其特征在于,所述将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,包括:
对所述第二神经网络模型进行模型优化,得到优化模型;
将所述优化模型的算子分配给所述至少一个硬件计算设备中的至少一个设备。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,包括:
根据模型运行需求信息将所述第二神经网络模型的算子分配所述至少一个硬件计算设备中的至少一个设备。
5.根据权利要求4所述的方法,其特征在于,所述根据模型运行需求信息将所述第二神经网络模型的算子分配所述至少一个硬件计算设备中的至少一个设备,包括:
遍历所述第二神经网络模型的算子以及所述终端侧设备的至少一个硬件计算设备;根据当前遍历的硬件计算设备的第二算子列表,确定当前遍历的硬件计算设备可运行当前遍历的算子,获取当前遍历的硬件计算设备的执行能力信息,所述第二算子列表保存有所述当前遍历的硬件计算设备的可支持算子名称和算子描述的对应关系;
根据遍历得到的所述执行能力信息和模型运行需求信息,确定所述第二神经网络模型的每个算子的硬件计算设备属性,算子的硬件计算设备属性为满足所述模型运行需求信息确定的模型运行需求的硬件计算设备;
根据所述硬件计算设备属性将所述第二神经网络模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备。
6.根据权利要求5所述的方法,其特征在于,所述根据所述硬件计算设备属性将所述第二神经网络模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备,包括:
根据所述硬件计算设备属性对所述第二神经网络模型进行模型优化,得到优化模型;
根据所述硬件计算设备属性将所述优化模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
对所述优化模型进行序列化处理,得到序列化模型文件;
保存所述序列化模型文件。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
对所述序列化模型文件进行反序列化处理,得到所述第二神经网络模型或所述优化模型;
根据所述硬件计算设备属性将所述第二神经网络模型的算子或所述优化模型的算子分配给与所述硬件计算设备属性对应的硬件计算设备。
9.根据权利要求1、2、3、5、6、7或8所述的方法,其特征在于,所述方法还包括:
获取经所述硬件计算设备编译后的模型;
保存所述编译后的模型。
10.根据权利要求1、2、3、5、6、7或8所述的方法,其特征在于,所述方法还包括:
获取硬件计算设备在运行所分配的算子的过程中的运行性能参数,所述运行性能参数包括算子运行时间、算子运行内存或算子运行过程事件;
保存所述运行性能参数。
11.根据权利要求1、2、3、5、6、7或8所述的方法,其特征在于,所述方法还包括:
获取所述硬件计算设备运行所分配的算子后得到的算子运行结果;
整合所述算子运行结果得到模型运行结果。
12.一种模型处理装置,其特征在于,应用于终端侧设备,所述终端侧设备包括至少一个硬件计算设备,所述装置包括:
第一获取模块,用于获取第一神经网络模型;
转换模块,用于根据所述第一神经网络模型和预设算子结构进行模型转换,得到第二神经网络模型,所述至少一个硬件计算设备可推理运算所述第二神经网络模型;
分配模块,用于将所述第二神经网络模型的算子分配给所述至少一个硬件计算设备中的至少一个设备,以使所述硬件计算设备运行所分配的算子;
序列化模块,用于对确定了每个算子的硬件计算设备属性的所述第二神经网络模型进行序列化处理,得到序列化模型文件;
保存模块,用于保存所述序列化模型文件。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取所述硬件计算设备运行所分配的算子后得到的算子运行结果;
整合模块,用于整合所述算子运行结果得到模型运行结果。
14.一种终端侧设备,其特征在于,包括权利要求12或13所述的模型处理装置和至少一个硬件计算设备,其中,
所述硬件计算设备,用于运行所述模型处理装置分配的算子。
15.一种模型处理设备,其特征在于,包括:处理器和存储器;
所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1-11任一项所述的模型处理方法。
16.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-11任一项所述的模型处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010584720.2A CN111753948B (zh) | 2020-06-23 | 2020-06-23 | 模型处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010584720.2A CN111753948B (zh) | 2020-06-23 | 2020-06-23 | 模型处理方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111753948A CN111753948A (zh) | 2020-10-09 |
CN111753948B true CN111753948B (zh) | 2022-11-01 |
Family
ID=72676670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010584720.2A Active CN111753948B (zh) | 2020-06-23 | 2020-06-23 | 模型处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111753948B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112101529B (zh) * | 2020-10-14 | 2024-06-21 | 杭州海康威视数字技术股份有限公司 | 一种用于神经网络模型推理跨平台的部署方法及架构 |
CN112328674B (zh) * | 2020-11-17 | 2024-05-14 | 深圳力维智联技术有限公司 | 跨数据格式的模型转化加速方法及装置 |
CN112381211B (zh) * | 2020-11-20 | 2023-04-28 | 西安电子科技大学 | 基于异构平台执行深度神经网络的系统及方法 |
US12003792B2 (en) * | 2020-12-08 | 2024-06-04 | Tencent America LLC | Adaptation of 2D video for streaming to heterogenous client end-points |
CN112734040A (zh) * | 2021-01-22 | 2021-04-30 | 中国人民解放军军事科学院国防科技创新研究院 | 一种嵌入式人工智能计算框架及应用方法 |
CN113052305B (zh) * | 2021-02-19 | 2022-10-21 | 展讯通信(上海)有限公司 | 神经网络模型的运行方法、电子设备和存储介质 |
CN113065665A (zh) * | 2021-03-04 | 2021-07-02 | 山东英信计算机技术有限公司 | 一种模型算子对比方法、系统及存储介质 |
CN113221908B (zh) * | 2021-06-04 | 2024-04-16 | 深圳龙岗智能视听研究院 | 一种基于深度卷积神经网络的数字识别方法及设备 |
EP4383774A1 (en) * | 2021-08-17 | 2024-06-12 | Huawei Technologies Co., Ltd. | Artificial intelligence ai model transmission method and apparatus |
US20230214638A1 (en) * | 2021-12-30 | 2023-07-06 | AiM Future Inc. | Apparatus for enabling the conversion and utilization of various formats of neural network models and method thereof |
CN114091674A (zh) * | 2022-01-19 | 2022-02-25 | 北京华品博睿网络技术有限公司 | 一种基于cpu设备的模型推理加速方法和系统 |
CN114997397B (zh) * | 2022-08-01 | 2022-10-21 | 北京健康有益科技有限公司 | 一种模型转换方法、装置、终端设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766939A (zh) * | 2017-11-07 | 2018-03-06 | 维沃移动通信有限公司 | 一种数据处理方法、装置及移动终端 |
CN108764487A (zh) * | 2018-05-29 | 2018-11-06 | 北京百度网讯科技有限公司 | 用于生成模型的方法和装置、用于识别信息的方法和装置 |
CN109919308A (zh) * | 2017-12-13 | 2019-06-21 | 腾讯科技(深圳)有限公司 | 一种神经网络模型部署方法、预测方法及相关设备 |
CN110163345A (zh) * | 2019-05-09 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 一种神经网络处理方法、装置、设备及介质 |
CN111260049A (zh) * | 2020-01-15 | 2020-06-09 | 中山德著智能科技有限公司 | 一种基于国产嵌入式系统的神经网络实现方法 |
CN111291882A (zh) * | 2018-12-06 | 2020-06-16 | 北京百度网讯科技有限公司 | 一种模型转换的方法、装置、设备和计算机存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11790250B2 (en) * | 2019-05-09 | 2023-10-17 | Intel Corporation | Using computational cost and instantaneous load analysis for intelligent deployment of neural networks on multiple hardware executors |
-
2020
- 2020-06-23 CN CN202010584720.2A patent/CN111753948B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766939A (zh) * | 2017-11-07 | 2018-03-06 | 维沃移动通信有限公司 | 一种数据处理方法、装置及移动终端 |
CN109919308A (zh) * | 2017-12-13 | 2019-06-21 | 腾讯科技(深圳)有限公司 | 一种神经网络模型部署方法、预测方法及相关设备 |
CN108764487A (zh) * | 2018-05-29 | 2018-11-06 | 北京百度网讯科技有限公司 | 用于生成模型的方法和装置、用于识别信息的方法和装置 |
CN111291882A (zh) * | 2018-12-06 | 2020-06-16 | 北京百度网讯科技有限公司 | 一种模型转换的方法、装置、设备和计算机存储介质 |
CN110163345A (zh) * | 2019-05-09 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 一种神经网络处理方法、装置、设备及介质 |
CN111260049A (zh) * | 2020-01-15 | 2020-06-09 | 中山德著智能科技有限公司 | 一种基于国产嵌入式系统的神经网络实现方法 |
Non-Patent Citations (1)
Title |
---|
移动智能终端基于神经网络的人工智能技术与应用;解谦等;《信息通信技术与政策》;20191215(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111753948A (zh) | 2020-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111753948B (zh) | 模型处理方法及相关设备 | |
CN112529169B (zh) | 数据处理方法、模型优化装置和模型执行装置 | |
CN111104120B (zh) | 神经网络编译方法、系统及相应异构计算平台 | |
CN111880807A (zh) | 深度学习编译方法、装置、设备及存储介质 | |
CN113850389B (zh) | 一种量子线路的构建方法及装置 | |
CN115576699A (zh) | 数据处理方法、装置、ai芯片、电子设备及存储介质 | |
CN114492781A (zh) | 一种硬件加速器及数据处理方法、系统、设备、介质 | |
CN116795647A (zh) | 一种数据库异构资源管理与调度方法、装置、设备及介质 | |
CN115358404A (zh) | 基于机器学习模型推理的数据处理方法、装置及设备 | |
CN115438768A (zh) | 模型推理方法、装置、计算机设备及存储介质 | |
CN116633804A (zh) | 网络流量检测模型的建模方法、防护方法及相关设备 | |
CN114912619B (zh) | 一种量子计算任务调度方法、装置及量子计算机操作系统 | |
CN113704687B (zh) | 一种张量计算运行方法、装置及运算系统 | |
CN108564170B (zh) | 一种基于noc的可重构神经网络运算方法和电路 | |
Delestrac et al. | Demystifying the TensorFlow eager execution of deep learning inference on a CPU-GPU tandem | |
CN116432710B (zh) | 机器学习模型构建方法、机器学习框架及相关设备 | |
CN114662683A (zh) | 神经网络cpu加速方法、系统、设备和计算机可读存储介质 | |
WO2022102860A1 (ko) | 행렬곱 연산량 감소 방법 및 장치 | |
CN116341628B (zh) | 分布式训练的梯度稀疏化方法、系统、设备及存储介质 | |
WO2024140412A1 (zh) | 排序算子的编译方法和装置 | |
CN116432721B (zh) | 数据处理方法、机器学习框架及相关设备 | |
CN116432763A (zh) | 机器学习模型运行方法、机器学习框架及相关设备 | |
CN115543328A (zh) | 对运行于人工智能芯片上的神经网络模型进行转换的编译方法及其相关产品 | |
CN118428457A (zh) | 一种可配置的算法组件封装及组合建模方法 | |
CN117370020A (zh) | 基于dpu的存算分离架构下数据处理方法、系统及存储介质 |
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 |