CN110598855A - 深度学习模型生成方法、装置、设备及存储介质 - Google Patents

深度学习模型生成方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110598855A
CN110598855A CN201910897445.7A CN201910897445A CN110598855A CN 110598855 A CN110598855 A CN 110598855A CN 201910897445 A CN201910897445 A CN 201910897445A CN 110598855 A CN110598855 A CN 110598855A
Authority
CN
China
Prior art keywords
deep learning
learning model
file
source file
model
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.)
Granted
Application number
CN201910897445.7A
Other languages
English (en)
Other versions
CN110598855B (zh
Inventor
谭志鹏
刘耀勇
蒋燚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201910897445.7A priority Critical patent/CN110598855B/zh
Publication of CN110598855A publication Critical patent/CN110598855A/zh
Priority to PCT/CN2020/117196 priority patent/WO2021057807A1/zh
Application granted granted Critical
Publication of CN110598855B publication Critical patent/CN110598855B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/041Abduction
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种深度学习模型生成方法、装置、设备及存储介质,属于深度学习领域。该方法包括:根据深度学习模型的模型文件生成第一源文件,模型文件包含所述深度学习模型中的权值矩阵;获取深度学习模型对应的第二源文件;对第一源文件和第二源文件进行编译,生成深度学习模型对应的目标文件。采用本申请实施例提供的方法,通过预先根据深度学习模型中的权值矩阵生成第一源文件,从而在编译过程中,同时对第一源文件以及神经网络结构对应的第二源文件进行编译,生成深度学习模型对应的目标文件,在深度学习模型的编译阶段即可完成权值矩阵的数据加载,后续模型推理过程中不需要重新加载权值矩阵,进而提高了深度学习模型推理的效率。

Description

深度学习模型生成方法、装置、设备及存储介质
技术领域
本申请实施例涉及深度学习领域,特别涉及一种深度学习模型生成方法、装置、设备及存储介质。
背景技术
深度学习的网络结构是多层神经网络的一种,其模型中大部分数据是权值矩阵的数值。深度学习模型为了完成模型推理,会采用合适的数据结构来定义神经网络结构。
深度学习模型进行模型推理时,首先需要把模型加载到深度学习模型所采用的神经网络结构中,模型加载的一般做法,是把模型当做文件,在运行神经网络结构的代码时把模型文件加载到内存中,再从内存拷贝数据到神经网络结构中。
上述过程中,在神经网络结构运行时需要拷贝所有权值矩阵的数据,这种内存拷贝非常耗时,严重影响深度学习模型推理的效率。
发明内容
本申请实施例提供了一种深度学习模型生成方法、装置、设备及存储介质。
所述技术方案如下:
一方面,本申请实施例提供了一种深度学习模型生成方法,所述方法包括:
根据深度学习模型的模型文件生成第一源文件,所述模型文件包含所述深度学习模型中的权值矩阵;
获取所述深度学习模型对应的第二源文件,所述第二源文件为所述深度学习模型所采用神经网络结构的源文件;
对所述第一源文件和所述第二源文件进行编译,生成所述深度学习模型对应的目标文件。
另一方面,本申请实施例提供了一种深度学习模型生成装置,所述装置包括:
第一生成模块,用于根据深度学习模型的模型文件生成第一源文件,所述模型文件包含所述深度学习模型中的权值矩阵;
第一获取模块,用于获取所述深度学习模型对应的第二源文件,所述第二源文件为所述深度学习模型所采用神经网络结构的源文件;
第二生成模块,用于对所述第一源文件和所述第二源文件进行编译,生成所述深度学习模型对应的目标文件。
另一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如上述方面所述的深度学习模型生成方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如上述方面所述的深度学习模型生成方法。
另一方面,还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述方面所述的深度学习模型生成方法。
本申请实施例提供的技术方案的有益效果至少包括:
本申请实施例中,通过预先根据深度学习模型中的权值矩阵生成第一源文件,从而在编译过程中,同时对第一源文件以及神经网络结构对应的第二源文件进行编译,生成深度学习模型对应的目标文件;相较于相关技术中需要在推理阶段将模型文件中的权值矩阵加载至神经网络结构,本申请实施例中,在深度学习模型的编译阶段即可完成权值矩阵的数据加载,后续模型推理过程中不需要重新加载权值矩阵,进而提高了深度学习模型推理的效率。
附图说明
图1示出了神经网络数据结构示意图;
图2示出了相关技术中深度学习模型推理过程中数据加载过程的实施示意图;
图3是本申请一个示例性实施例示出的深度学习模型生成方法的流程图;
图4是本申请另一个示例性实施例示出的深度学习模型生成方法的流程图;
图5是本申请一个示例性实施例示出的深度学习模型生成方法的流程图;
图6是本申请一个示例性实施例示出的深度学习模型生成过程的实施示意图;
图7是本申请另一个示例性实施例示出的深度学习模型生成方法的流程图;
图8示出了本申请一个示例性实施例提供的深度学习模型生成装置的结构框图;
图9示出了本申请一个示例性实施例提供的计算机设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
为了便于理解,下面对本申请实施例中涉及的一些名词进行简单介绍。
深度学习模型推理:利用经过训练之后的深度学习模型,对未知样本进行猜测和推断的过程称之为深度学习模型推理。更具体地说,经过训练的深度学习模型可以将其学到的知识应用于数字世界的任务,如图像识别、语音识别和垃圾邮件过滤等,深度学习模型基于其训练的内容对获得的未知样本进行推导,用深度学习领域的术语来说就是推理。
源文件:源文件是指用汇编语言或高级语言编写的代码文件,计算机无法直接识别源文件中的代码。
目标文件:目标文件是指源文件经过编译程序编译后产生的能被中央处理器(Central Processing Unit,CPU)直接识别的二进制文件,其中包含机器代码、代码在运行时使用的数据和调试信息等。
规则文件:由于神经网络结构的代码由多个源文件组成,因此需要规则文件向编译系统描述编译这些源文件的方式。
张量(Tensor):在深度学习领域,张量的核心是一个数据容器,其可以是任意维的数组,包含名称和内存指针,该内存指针指向需要加载的数据的地址。
深度学习模型在进行推理前,需要把深度学习模型加载到所采用的神经网络结构中,其中加载的数据大部分为深度学习模型的权值矩阵。深度学习模型为了完成推理,会采用合适的数据结构来定义神经网络,一般的定义方式如图1所示,神经网络中含有多个算子,每个算子通过Tensor将各种数据统一封装并输入神经网络。
相关技术中,通常是将深度学习模型作为文件保存,如图2所示,在深度学习模型推理时需要先将模型文件21加载到内存中,且由于神经网络22中Tensor23的内存指针指向对应的权值矩阵24的内存地址,因此在模型推理的运行过程中需要根据内存地址将权值矩阵24的数据拷贝到Tensor23中。另外,如果深度学习模型所采用的神经网络结构运行的是图形处理器(Graphics Processing Unit,GPU)版本、数字信号处理器(Digital SignalProcessor,DSP)版本等特殊版本,还需要在运行时将深度学习模型的数据从CPU拷贝到GPU或DSP中。
由于神经网络结构对于运行效率极其敏感,因此这种数据拷贝会严重降低运行效率,尤其对于数据量较大的模型,会严重影响深度学习模型的推理效率。
为了提高深度学习模型的推理效率,本申请实施例提供的深度学习模型生成方法中,将数据拷贝放在深度学习模型编译时完成。首先将深度学习模型文件中权值矩阵的数据生成第一源文件,与深度学习模型所采用的神经网络结构的源文件即第二源文件同时编译,生成深度学习模型对应的目标文件,在此基础上进行深度学习模型推理。
相较于相关技术中提供的深度学习模型加载方法,本申请实施例中,通过将深度学习模型的权值矩阵生成第一源文件,使得数据加载这一步在深度学习模型的编译过程中完成,深度学习模型推理时不需要再进行模型文件打开和数据拷贝的工作,极大提高了神经网络结构的运行效率,进而提高了深度学习模型的推理效率。
本申请实施例提供的深度学习模型生成方法可以用于个人计算机或者服务器等具有较强数据处理能力的计算机设备中。通过深度学习模型生成方法得到的深度学习模型可以实现成为应用程序或应用程序的一部分,并被安装到终端中,使其具备深度学习能力,或者,通过深度学习模型生成方法得到的深度学习模型可以应用于应用程序后台服务器,从而由服务器为终端中的应用程序提供深度学习模型推理服务。为了方便表述,本申请各个实施例以深度学习模型生成方法应用于计算机设备为例进行说明。
请参考图3,其示出了本申请的一个实施例示出的深度学习模型生成方法的流程图。本实施例以深度学习模型生成方法用于计算机设备为例进行说明,该方法包括:
步骤301,根据深度学习模型的模型文件生成第一源文件,模型文件包含深度学习模型中的权值矩阵。
其中,该深度学习模型可以是用于进行图像识别(对输入图像中包含的对象进行识别)、进行语音识别(对输入语音进行内容识别)、进行视频描述信息生成(根据输入的视频生成视频描述信息)的模型,本申请实施例并不对深度学习模型的用途进行说明。
深度学习模型的数据加载主要是其权值矩阵的数值加载,在一种可能的实施方式中,计算机设备在对深度学习模型所采用的神经网络结构进行编译之前,首先将模型文件中权值矩阵的数值生成第一源文件,以便后续编译神经网络结构时直接利用此源文件完成数据加载。
步骤302,获取深度学习模型对应的第二源文件,第二源文件为深度学习模型所采用神经网络结构的源文件。
在一种可能的实施方式中,在对深度学习模型所采用的神经网络结构进行编译前,计算机设备需要先获取神经网络结构的代码,该神经网络结构的代码即保存在第二源文件中。
其中,深度学习模型所采用的神经网络结构可以为卷积神经网络(ConvolutionalNeural Networks,CNN)、递归神经网络(Recursive Neural Network,RNN)或长短期记忆网络(Long Short-Term Memory,LSTM)等等,本申请实施例对此并不进行限定。
步骤303,对第一源文件和第二源文件进行编译,生成深度学习模型对应的目标文件。
相关技术中,由于并未预先生成深度学习模型对应的第一源文件,因此计算机设备直接对神经网络结构的源文件进行编译,从而生成目标文件。。
而本申请实施例中,由于预先生成了第一源文件,因此第一源文件和第二源文件准备完成后,计算机设备通过编译系统,按照一定的规则对第一源文件和第二源文件同时进行编译。编译过程中,模型文件中各个权值矩阵的数值从第一源文件加载到第二源文件,编译结束之前即完成模型文件的数据加载。编译完成后生成深度学习模型对应的目标文件,该目标文件的内容是第一源文件和第二源文件中的代码经过编译所得到的机器代码,能够被计算机设备直接识别,后续模型推理在此基础上进行。
综上所述,本申请实施例中,通过预先根据深度学习模型中的权值矩阵生成第一源文件,从而在编译过程中,同时对第一源文件以及神经网络结构对应的第二源文件进行编译,生成深度学习模型对应的目标文件;相较于相关技术中需要在推理阶段将模型文件中的权值矩阵加载至神经网络结构,本申请实施例中,在深度学习模型的编译阶段即可完成权值矩阵的数据加载,后续模型推理过程中不需要重新加载权值矩阵,进而提高了深度学习模型推理的效率。
请参考图4,其示出了本申请的另一个实施例示出的深度学习模型生成方法的流程图。本实施例以深度学习模型生成方法用于计算机设备为例进行说明,该方法包括:
步骤401,编译规则文件对应源代码的过程中,运行规则文件中的目标脚本,规则文件用于向编译系统描述编译源文件的方式。
由于深度学习模型所采用的神经网络结构的代码是由多个源文件组成的,因此需要利用规则文件向编译系统描述编译这些源文件的方式。在一种可能的实施方式中,规则文件的源代码中添加有运行目标脚本的代码,该目标脚本用于将深度学习模型中的权值矩阵的数值生成第一源文件,该目标脚本可以是Shell脚本。
示意性的,在规则文件的源代码中添加运行目标脚本prepare.sh的代码,编译规则文件源代码的过程中,即运行该目标脚本。在Android系统中,规则文件可以为Android.mk。
步骤402,根据模型文件,通过目标脚本生成第一源文件。
在一种可能的实施方式中,目标脚本运行过程中即读取模型文件中的数据,从而根据读取到的数据生成第一源文件。
可选的,在图4的基础上,如图5所示,步骤402包括下述步骤402A和402B。
步骤402A,对于模型文件中的各个权值矩阵,通过目标脚本生成各个权值矩阵对应的静态数组。
计算机设备运行目标脚本的目的是将模型文件的权值矩阵的数值保存为静态数组,静态数组在声明时已经确定了子数组的大小,即数组元素的个数固定不变,因此静态数组与权值矩阵是一一对应的,方便后续编译神经网络结构时的数据加载。
示意性的,在规则文件的源代码中添加运行目标脚本prepare.sh的代码,编译生成规则文件时运行prepare.sh,将模型文件的权值矩阵的数值分别对应生成静态数组,编译完成时所有的权值矩阵的数值以静态数组的形式保存在第二源文件中。
在一种可能的实施方式中,根据权值矩阵生成静态数组可以包括如下步骤:
一,根据权值矩阵的矩阵尺寸和数据类型,通过目标脚本设置静态数组,静态数组的数组大小根据矩阵尺寸确定,且静态数组的数组类型与数据类型相同。
由于第二源文件编译时直接加载静态数组,所以静态数组的大小和数据类型需要与其对应的权值矩阵一致。可选的,目标脚本中静态数组的大小根据与其对应的权值矩阵的矩阵尺寸确定,静态数组的数据类型与权值矩阵的数据类型相同。
示意性的,对于一个矩阵尺寸为32*3*3*3,数据类型为浮点型的权值矩阵,计算机设备在设置相应的静态数组时,将该静态数组的大小设置为32*3*3*3,数据类型设置为浮点型。
二,根据权值矩阵的矩阵名称,通过目标脚本生成静态数组的数组名称。
为了便于后续编译过程中将静态数组加载至正确的Tensor,需要根据权值矩阵的矩阵名称为静态数组设置唯一的名称。
在一种可能的实施方式中,目标脚本中设置有预设命名规则,目标脚本即根据该预设命名规则,基于权值矩阵的矩阵名称生成相应的数组名称。
示意性的,对于深度学习模型中一个名称为MobilenetV1/Conv2d_0/weights,矩阵尺寸为32*3*3*3的浮点型权值矩阵,其对应生成的静态数组的数组名称则为MobilenetV1_Conv2d_0_weights[32*3*3*3]。
三,根据权值矩阵中包含的权值数据,通过目标脚本生成静态数组的数组值。
将静态数组的名称和数据类型设置完成后,需要进一步将权值矩阵中包含权值数据加载至与其对应的静态数组中。本申请实施例中,通过运行目标脚本,将权值矩阵中包含的权值数据全部加载到对应的静态数组中。
示意性的,对于一个名称为MobilenetV1_Conv2d_0_weights[32*3*3*3]的静态数组,根据名称找到大小为32*3*3*3的浮点型权值矩阵MobilenetV1/Conv2d_0/weights={0.31435529,xxx,...,xxx},完成权值数据添加后,最终生成的静态数组为floatMobilenetV1_Conv2d_0_weights[32*3*3*3]={0.31435529,xxx,...,xxx}。
步骤402B,根据各个权值矩阵对应的静态数组生成第一源文件。
可选的,当模型文件中所有的权值矩阵都转换为静态数组后,目标脚本以源文件格式保存全部静态数组,从而生成第一源文件。
如图7所示,当计算机设备根据模型文件71中权值矩阵74的权值数据生成静态数组后,将静态数组保存为第一源文件75,并保存在第二源文件所在的目录下。
示意性的,如果深度学习采用C++工程,则生成的第一源文件保存为Model.cpp。
步骤403,获取深度学习模型对应的第二源文件,第二源文件为深度学习模型所采用神经网络结构的源文件。
本步骤的实施方式可以参考上述步骤302,本实施例在此不再赘述。
步骤404,对第一源文件和第二源文件进行编译,生成深度学习模型对应的目标文件。
计算机设备利用编译系统对第一源文件和第二源文件进行编译,生成深度学习模型对应的目标文件。为了确保第一源文件中的静态数组能够被正确加载至神经网络结构中的Tensor中,在一种可能的实施方式中,编译过程中,计算机设备(中的编译系统)根据第二源文件中目标Tensor对应的内存指针,将目标Tensor指向第一源文件中的目标静态数组,目标静态数组与目标Tensor具有相同的名称。
可选的,神经网络结构在编译时通过Tensor加载深度学习模型的数据。为了方便计算机设备准确查找到加载至Tensor的数据,Tensor的名称被设置为与对应的静态数组的名称一致。如图6所示,神经网络62中的Tensor66指向对应的第一源文件65中的静态数组。
示意性的,对于一个名称为MobilenetV1_Conv2d_0_weights[32*3*3*3]的Tensor,在计算机设备编译第一源文件和第二源文件的过程中,其内存指针指向第一源文件中名称同样为MobilenetV1_Conv2d_0_weights[32*3*3*3]的静态数组,并将该静态数组中的数据加载到此Tensor中。
通过上述步骤401至404完成深度学习模型编译后,计算机设备即可通过下述步骤405,利用深度学习模型进行推理。
步骤405,当接收到深度学习模型推理请求时,将目标文件加载至内存,并执行目标文件进行深度学习模型推理。
示意性的,如图6所示,计算机设备接收到深度学习模型的推理请求时,先将由第一源文件65和第二源文件编译得到的目标文件63加载至内存,然后运行该目标文件63进行深度学习模型推理。由于在编译阶段已经将Tensor66的内存指针指向了静态数组(即完成数据加载),所以不需要再进行模型文件打开和拷贝的工作,可以直接开始推理,从而提高了推理效率。
本申请实施例中,通过运行目标脚本将模型文件中的权值矩阵的数值生成静态数组,并保存为第一源文件,计算机设备根据规则文件对第一源文件和第二源文件进行编译的时候将静态数组的数据加载到Tensor中,使得数据加载的工作在编译阶段完成,可以直接进行模型推理,进而提高了深度学习模型推理的效率。
由于神经网络结构复杂多样,因此计算机程序可以根据当前采取的神经网络结构和深度学习模型的类型选择不同的深度学习模型生成方法。对于模型文件数据量较大或运行版本需要额外数据拷贝工作的情况,可以采取本申请实施例的方法生成深度学习模型,从而提高模型推理的效率;对于模型文件数据量较小且数据拷贝工作量较小的情况,可以采取相关技术中深度学习模型的加载方法,以便灵活地变更模型文件中的权值矩阵。
可选的,在图3的基础上,如图8所示,步骤301之前还可以包括如下步骤。
步骤300a,获取模型文件的数据量。
在一种可能的实施方式中,在对深度学习模型进行编译前,计算机设备获取当前深度学习模型的数据量(即模型文件的数据量),并将此数据量与事先设置的阈值进行比较。若数据量大于阈值,则执行步骤300b;若数据量小于阈值,则采用相关技术提供方法对深度学习模型进行编译(无需生成第一源文件)。
示意性的,该阈值为100MB,即当模型文件大于100MB时,计算机设备需要根据模型文件生成第一源文件。
步骤300b,若数据量大于阈值,则执行根据深度学习模型的模型文件生成第一源文件的步骤。
若模型文件的数据量大于阈值,则采用本申请实施例的深度学习模型生成方法,继续执行根据深度学习模型的模型文件生成第一源文件的步骤及后续步骤。若模型文件的数据量小于阈值,则可以选择相关技术中的深度学习模型加载方法。
步骤300c,获取深度学习模型所采用神经网络结构的运行版本。
除了根据模型文件的数据量进行判断之外,计算机设备也可以根据深度学习模型所采用的神经网络结构的运行版本,选择合适的深度学习模型生成方法。
其中,神经网络结构的运行版本用于指示执行深度学习模型的硬件,运行版本包括CPU运行版本、GPU运行版本和DSP运行版本中的至少一种。
步骤300d,若运行版本属于预设运行版本,则执行根据深度学习模型的模型文件生成第一源文件的步骤,预设运行版本包括GPU运行版本和DSP运行版本中的至少一种。
在一种可能的实施方式中,计算机设备中预先设置需要采用本申请实施例的深度学习模型生成方法的运行版本,若判断当前运行版本是否属于预设运行版本,若属于,则选择本申请实施例的深度学习模型生成方法。
由于GPU运行版本或DSP运行版本的深度学习模型在运行时,不仅需要将模型文件的数据拷贝到内存中,还要进一步将数据从CPU拷贝到至GPU或者DSP中,严重影响深度学习模型推理的效率,因此,计算机设备设置的预设运行版本包括GPU运行版本和DSP运行版本中的至少一种。
需要说明的是,上述步骤300a至300b与步骤300c至300d可以择一执行,也可以同时执行,本申请实施例对此不做限定。
本申请实施例中,对深度学习模型进行编译之前,根据模型文件的数据量或神经网络结构的运行版本选择合适的编译方式,有助于提高深度学习模型推理的效率和灵活性。
图8是本申请一个示例性实施例提供的深度学习模型生成装置的结构框图,该装置可以设置于上述实施例所述的计算机设备,如图8所示,该装置包括:
第一生成模块801,用于根据深度学习模型的模型文件生成第一源文件,所述模型文件包含所述深度学习模型中的权值矩阵;
第一获取模块802,用于获取所述深度学习模型对应的第二源文件,所述第二源文件为所述深度学习模型所采用神经网络结构的源文件;
第二生成模块803,用于对所述第一源文件和所述第二源文件进行编译,生成所述深度学习模型对应的目标文件。
可选的,所述第一生成模块801,包括:
运行单元,用于编译规则文件对应源代码的过程中,运行所述规则文件中的目标脚本,所述规则文件用于向编译系统描述编译源文件的方式;
第一生成单元,用于根据所述模型文件,通过所述目标脚本生成所述第一源文件。
可选的,所述第一生成单元还用于:
对于所述模型文件中的各个权值矩阵,通过所述目标脚本生成各个所述权值矩阵对应的静态数组;
根据各个所述权值矩阵对应的所述静态数组生成所述第一源文件。
可选的,所述第一生成单元还用于:
根据所述权值矩阵的矩阵尺寸和数据类型,通过所述目标脚本设置所述静态数组,所述静态数组的数组大小根据所述矩阵尺寸确定,且所述静态数组的数组类型与数据类型相同;
根据所述权值矩阵的矩阵名称,通过所述目标脚本生成所述静态数组的数组名称;
根据所述权值矩阵中包含的权值数据,通过所述目标脚本生成所述静态数组的数组值。
可选的,所述第一生成单元还用于:
编译过程中,根据所述第二源文件中目标Tensor对应的内存指针,将所述目标Tensor指向所述第一源文件中的目标静态数组,所述目标静态数组与所述目标Tensor具有相同的名称。
可选的,所述装置还包括:
推理模块,用于当接收到深度学习模型推理请求时,将所述目标文件加载至内存,并执行所述目标文件进行深度学习模型推理。
可选的,所述装置还包括:
第二获取模块,用于获取所述模型文件的数据量;若所述数据量大于阈值,则执行所述根据深度学习模型的模型文件生成第一源文件的步骤;
和/或,
第三获取模块,用于获取所述深度学习模型所采用神经网络结构的运行版本;若所述运行版本属于预设运行版本,则执行所述根据深度学习模型的模型文件生成第一源文件的步骤,所述预设运行版本包括GPU运行版本和DSP运行版本中的至少一种。
需要说明的是:上述实施例提供的深度学习模型生成装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的深度学习模型生成装置与深度学习模型生成方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图9,其示出了本申请一个示例性实施例提供的计算机设备的结构示意图。具体来讲:所述计算机设备900包括中央处理单元(CPU)901、包括随机存取存储器(RAM)902和只读存储器(ROM)903的系统存储器904,以及连接系统存储器904和中央处理单元901的系统总线905。所述计算机设备900还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)906,和用于存储操作系统913、应用程序914和其他程序模块915的大容量存储设备907。
所述基本输入/输出系统906包括有用于显示信息的显示器908和用于用户输入信息的诸如鼠标、键盘之类的输入设备909。其中所述显示器908和输入设备909都通过连接到系统总线905的输入输出控制器910连接到中央处理单元901。所述基本输入/输出系统906还可以包括输入输出控制器910以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器910还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备907通过连接到系统总线905的大容量存储控制器(未示出)连接到中央处理单元901。所述大容量存储设备907及其相关联的计算机可读介质为计算机设备900提供非易失性存储。也就是说,所述大容量存储设备907可以包括诸如硬盘或者CD-ROI驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器904和大容量存储设备907可以统称为存储器。
存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元901执行,一个或多个程序包含用于实现上述深度学习模型生成方法的指令,中央处理单元901执行该一个或多个程序实现上述各个方法实施例提供的方法。
根据本申请的各种实施例,所述计算机设备900还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备900可以通过连接在所述系统总线905上的网络接口单元911连接到网络912,或者说,也可以使用网络接口单元911来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本申请实施例提供的方法中由计算机设备所执行的步骤。
本申请实施例还提供一种计算机可读存储介质,该可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任一实施例所述的深度学习模型生成方法。
本申请还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述各个方法实施例提供的深度学习模型生成方法。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任一方法实施例所述的深度学习模型生成方法。
可选的,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种深度学习模型生成方法,其特征在于,所述方法包括:
根据深度学习模型的模型文件生成第一源文件,所述模型文件包含所述深度学习模型中的权值矩阵;
获取所述深度学习模型对应的第二源文件,所述第二源文件为所述深度学习模型所采用神经网络结构的源文件;
对所述第一源文件和所述第二源文件进行编译,生成所述深度学习模型对应的目标文件。
2.根据权利要求1所述的方法,其特征在于,所述根据深度学习模型的模型文件生成第一源文件,包括:
编译规则文件对应源代码的过程中,运行所述规则文件中的目标脚本,所述规则文件用于向编译系统描述编译源文件的方式;
根据所述模型文件,通过所述目标脚本生成所述第一源文件。
3.根据权利要求2所述的方法,其特征在于,所述根据所述模型文件,通过所述目标脚本生成所述第一源文件,包括:
对于所述模型文件中的各个权值矩阵,通过所述目标脚本生成各个所述权值矩阵对应的静态数组;
根据各个所述权值矩阵对应的所述静态数组生成所述第一源文件。
4.根据权利要求3所述的方法,其特征在于,所述通过所述目标脚本生成各个所述权值矩阵对应的静态数组,包括:
根据所述权值矩阵的矩阵尺寸和数据类型,通过所述目标脚本设置所述静态数组,所述静态数组的数组大小根据所述矩阵尺寸确定,且所述静态数组的数组类型与数据类型相同;
根据所述权值矩阵的矩阵名称,通过所述目标脚本生成所述静态数组的数组名称;
根据所述权值矩阵中包含的权值数据,通过所述目标脚本生成所述静态数组的数组值。
5.根据权利要求3所述的方法,其特征在于,所述对所述第一源文件和所述第二源文件进行编译,生成所述深度学习模型对应的目标文件,包括:
编译过程中,根据所述第二源文件中目标张量Tensor对应的内存指针,将所述目标Tensor指向所述第一源文件中的目标静态数组,所述目标静态数组与所述目标Tensor具有相同的名称。
6.根据权利要求1至5任一所述的方法,其特征在于,所述对所述第一源文件和所述第二源文件进行编译,生成所述深度学习模型对应的目标文件之后,所述方法还包括:
当接收到深度学习模型推理请求时,将所述目标文件加载至内存,并执行所述目标文件进行深度学习模型推理。
7.根据权利要求1至5任一所述的方法,其特征在于,所述根据深度学习模型的模型文件生成第一源文件之前,所述方法还包括:
获取所述模型文件的数据量;若所述数据量大于阈值,则执行所述根据深度学习模型的模型文件生成第一源文件的步骤;
和/或,
获取所述深度学习模型所采用神经网络结构的运行版本;若所述运行版本属于预设运行版本,则执行所述根据深度学习模型的模型文件生成第一源文件的步骤,所述预设运行版本包括图形处理器GPU运行版本和数字信号处理器DSP运行版本中的至少一种。
8.一种深度学习模型生成装置,其特征在于,所述装置包括:
第一生成模块,用于根据深度学习模型的模型文件生成第一源文件,所述模型文件包含所述深度学习模型中的权值矩阵;
第一获取模块,用于获取所述深度学习模型对应的第二源文件,所述第二源文件为所述深度学习模型所采用神经网络结构的源文件;
第二生成模块,用于对所述第一源文件和所述第二源文件进行编译,生成所述深度学习模型对应的目标文件。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如权利要求1至7任一所述的深度学习模型生成方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如权利要求1至7任一所述的深度学习模型生成方法。
CN201910897445.7A 2019-09-23 2019-09-23 深度学习模型生成方法、装置、设备及存储介质 Active CN110598855B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910897445.7A CN110598855B (zh) 2019-09-23 2019-09-23 深度学习模型生成方法、装置、设备及存储介质
PCT/CN2020/117196 WO2021057807A1 (zh) 2019-09-23 2020-09-23 深度学习模型生成方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910897445.7A CN110598855B (zh) 2019-09-23 2019-09-23 深度学习模型生成方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110598855A true CN110598855A (zh) 2019-12-20
CN110598855B CN110598855B (zh) 2023-06-09

Family

ID=68862253

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910897445.7A Active CN110598855B (zh) 2019-09-23 2019-09-23 深度学习模型生成方法、装置、设备及存储介质

Country Status (2)

Country Link
CN (1) CN110598855B (zh)
WO (1) WO2021057807A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338693A (zh) * 2020-02-22 2020-06-26 深圳市魔数智擎人工智能有限公司 基于模型构建的目标文件生成方法、服务器及存储介质
WO2021057807A1 (zh) * 2019-09-23 2021-04-01 Oppo广东移动通信有限公司 深度学习模型生成方法、装置、设备及存储介质
CN113269323A (zh) * 2020-02-17 2021-08-17 北京达佳互联信息技术有限公司 一种数据处理方法、处理装置、电子设备及存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115080240B (zh) * 2022-06-29 2023-10-10 美的集团(上海)有限公司 语音处理模型的部署方法、电子设备及存储介质
CN117835405A (zh) * 2022-09-23 2024-04-05 维沃移动通信有限公司 人工智能ai模型传输方法、装置、终端及介质
CN116257286B (zh) * 2023-03-13 2023-09-15 北京百度网讯科技有限公司 一种文件处理方法、装置、电子设备及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106951926A (zh) * 2017-03-29 2017-07-14 山东英特力数据技术有限公司 一种混合架构的深度学习系统方法及装置
CN107633295A (zh) * 2017-09-25 2018-01-26 北京地平线信息技术有限公司 用于适配神经网络的参数的方法和装置
CN107958285A (zh) * 2017-11-21 2018-04-24 深圳普思英察科技有限公司 面向嵌入式系统的神经网络的映射方法及装置
US20180136912A1 (en) * 2016-11-17 2018-05-17 The Mathworks, Inc. Systems and methods for automatically generating code for deep learning systems
US20180204117A1 (en) * 2017-01-19 2018-07-19 Google Inc. Dynamic-length stateful tensor array
CN109033309A (zh) * 2018-07-17 2018-12-18 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及存储介质
US20190057036A1 (en) * 2018-10-15 2019-02-21 Amrita MATHURIYA Programmable interface to in-memory cache processor
CN109496294A (zh) * 2018-01-15 2019-03-19 深圳鲲云信息科技有限公司 人工智能处理装置的编译方法及系统、存储介质及终端
WO2019086104A1 (en) * 2017-10-30 2019-05-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Neural network representation
CN109754073A (zh) * 2018-12-29 2019-05-14 北京中科寒武纪科技有限公司 数据处理方法、装置、电子设备和可读存储介质
CN110033086A (zh) * 2019-04-15 2019-07-19 北京异构智能科技有限公司 用于神经网络卷积运算的硬件加速器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110598855B (zh) * 2019-09-23 2023-06-09 Oppo广东移动通信有限公司 深度学习模型生成方法、装置、设备及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180136912A1 (en) * 2016-11-17 2018-05-17 The Mathworks, Inc. Systems and methods for automatically generating code for deep learning systems
US20180204117A1 (en) * 2017-01-19 2018-07-19 Google Inc. Dynamic-length stateful tensor array
CN106951926A (zh) * 2017-03-29 2017-07-14 山东英特力数据技术有限公司 一种混合架构的深度学习系统方法及装置
CN107633295A (zh) * 2017-09-25 2018-01-26 北京地平线信息技术有限公司 用于适配神经网络的参数的方法和装置
WO2019086104A1 (en) * 2017-10-30 2019-05-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Neural network representation
CN107958285A (zh) * 2017-11-21 2018-04-24 深圳普思英察科技有限公司 面向嵌入式系统的神经网络的映射方法及装置
CN109496294A (zh) * 2018-01-15 2019-03-19 深圳鲲云信息科技有限公司 人工智能处理装置的编译方法及系统、存储介质及终端
CN109033309A (zh) * 2018-07-17 2018-12-18 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及存储介质
US20190057036A1 (en) * 2018-10-15 2019-02-21 Amrita MATHURIYA Programmable interface to in-memory cache processor
CN109754073A (zh) * 2018-12-29 2019-05-14 北京中科寒武纪科技有限公司 数据处理方法、装置、电子设备和可读存储介质
CN110033086A (zh) * 2019-04-15 2019-07-19 北京异构智能科技有限公司 用于神经网络卷积运算的硬件加速器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈亮: "AI入门 快速读懂深度学习框架", 《机器人产业》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021057807A1 (zh) * 2019-09-23 2021-04-01 Oppo广东移动通信有限公司 深度学习模型生成方法、装置、设备及存储介质
CN113269323A (zh) * 2020-02-17 2021-08-17 北京达佳互联信息技术有限公司 一种数据处理方法、处理装置、电子设备及存储介质
CN113269323B (zh) * 2020-02-17 2024-03-12 北京达佳互联信息技术有限公司 一种数据处理方法、处理装置、电子设备及存储介质
CN111338693A (zh) * 2020-02-22 2020-06-26 深圳市魔数智擎人工智能有限公司 基于模型构建的目标文件生成方法、服务器及存储介质
CN111338693B (zh) * 2020-02-22 2023-07-14 深圳市魔数智擎人工智能有限公司 基于模型构建的目标文件生成方法、服务器及存储介质

Also Published As

Publication number Publication date
CN110598855B (zh) 2023-06-09
WO2021057807A1 (zh) 2021-04-01

Similar Documents

Publication Publication Date Title
CN110598855B (zh) 深度学习模型生成方法、装置、设备及存储介质
CN113641413B (zh) 目标模型加载更新方法及装置、可读介质和电子设备
CN112307122B (zh) 一种基于数据湖的数据管理系统及方法
CN113296786B (zh) 数据处理方法、装置、电子设备及存储介质
WO2012092211A2 (en) Emulating pointers
CN109196476A (zh) 共享垃圾收集器的不同类型图之间的无缝高性能互操作性
CN111459621B (zh) 云仿真集成与调度方法、装置、计算机设备和存储介质
CN114237714A (zh) 命令包生成方法、装置、电子设备和存储介质
CN111240772A (zh) 一种基于区块链的数据处理方法、装置及存储介质
US8769498B2 (en) Warning of register and storage area assignment errors
CN117289841A (zh) 基于大语言模型的交互方法和装置、存储介质和电子设备
CN106502707B (zh) 代码生成方法及装置
CN112990461B (zh) 构建神经网络模型的方法、装置、计算机设备和存储介质
CN113626035B (zh) 基于tvm面向risc-v设备的神经网络编译方法
CN112269606B (zh) 一种类脑计算机操作系统的应用处理程序动态加载方法
CN112668659A (zh) 模型训练方法、平台和电子设备
CN113467783A (zh) 一种人工智能加速器的核函数编译方法和装置
Strassenburg et al. Efficiently Managing Deep Learning Models in a Distributed Environment.
CN113515465B (zh) 基于区块链技术的软件兼容性测试方法及系统
CN117076335B (zh) 一种模型测试方法、系统、介质及电子设备
US20220067502A1 (en) Creating deep learning models from kubernetes api objects
CN116523052B (zh) 一种快速推理方法、装置及设备
CN113360184A (zh) 多生态间的软件迁移方法、装置、计算机设备及存储介质
CN116932206A (zh) 文件处理方法、装置、计算机设备和存储介质
CN114138276A (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