CN111290762A - 一种深度学习网络的部署方法、装置及终端设备 - Google Patents

一种深度学习网络的部署方法、装置及终端设备 Download PDF

Info

Publication number
CN111290762A
CN111290762A CN202010063539.7A CN202010063539A CN111290762A CN 111290762 A CN111290762 A CN 111290762A CN 202010063539 A CN202010063539 A CN 202010063539A CN 111290762 A CN111290762 A CN 111290762A
Authority
CN
China
Prior art keywords
target
deep learning
learning network
parameter
scheduling
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
CN202010063539.7A
Other languages
English (en)
Other versions
CN111290762B (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.)
Shenzhen Intellifusion Technologies Co Ltd
Original Assignee
Shenzhen Intellifusion Technologies Co 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 Shenzhen Intellifusion Technologies Co Ltd filed Critical Shenzhen Intellifusion Technologies Co Ltd
Priority to CN202010063539.7A priority Critical patent/CN111290762B/zh
Publication of CN111290762A publication Critical patent/CN111290762A/zh
Application granted granted Critical
Publication of CN111290762B publication Critical patent/CN111290762B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • 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

Abstract

本申请适用于计算机技术领域,提供了一种深度学习网络的部署方法、装置及终端设备,该方法包括:获取深度学习网络、用于调用所述深度学习网络中目标核函数的初始调度参数和参数预测网络;根据所述初始调度参数和所述参数预测网络,确定所述目标核函数的目标调度参数;基于所述目标调度参数部署所述深度学习网络。本申请通过自动寻找最优的核函数的调度参数然后对深度学习网络进行部署,在部署过程中,省去了开发者的反复调试过程,不需要人为干预,降低了开发难度,提高了工作效率。

Description

一种深度学习网络的部署方法、装置及终端设备
技术领域
本申请属于计算机技术领域,尤其涉及一种深度学习网络的部署方法、装置及终端设备。
背景技术
随着深度学习算法和大数据的不断发展,人工智能已经逐渐渗透到各行各业,展示了其强大的优势,深度学习网络的应用也在不断发展,随着深度学习网络的应用越来越广泛,深度学习网络在硬件平台上的部署也在不断发展。
现有的深度学习网络的部署方法,要想达到非常好的使用性能,需要开发人员反复的手动调试试验,耗费精力大,部署周期长。
发明内容
本申请实施例提供了一种深度学习网络的部署方法、装置及终端设备,可以解决深度学习网络的部署效率低的问题。
第一方面,本申请实施例提供了一种深度学习网络的部署方法,包括:
处理器获取深度学习网络、用于调用所述深度学习网络中目标核函数的初始调度参数和参数预测网络;
根据所述初始调度参数和所述参数预测网络,确定所述目标核函数的目标调度参数;
基于所述目标调度参数将所述深度学习网络部署到硬件平台。
第二方面,本申请实施例提供了一种深度学习网络的部署装置,包括:
数据获取模块,用于处理器获取深度学习网络、用于调用所述深度学习网络中目标核函数的初始调度参数和参数预测网络;
数据计算模块,用于根据所述初始调度参数和所述参数预测网络,确定所述目标核函数的目标调度参数;
模型部署模块,用于基于所述目标调度参数将所述深度学习网络部署到硬件平台。
第三方面,本申请实施例提供了一种终端设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述的深度学习网络的部署方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的深度学习网络的部署方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的深度学习网络的部署方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:现有技术通过开发者人为编写程序后拷贝到目标平台上运行,通过不断的修改尝试来确定最优的调度参数,然后再将深度学习网络部署到目标平台上。现有技术对于深度学习网络部署时的调优要求门槛较高,首先需要开发者具备硬件平台上汇编级开发能力,其次在部署过程中反复尝试,费时费力,工作效率低。本申请在对深度学习网络进行硬件部署时,处理器通过初始调度参数和参数预测模型,最终确定一组目标调度参数,实现了最优的调度参数的自动查找,根据最优的调度参数部署深度学习网络。本申请通过自动寻找最优的调度参数然后进行部署,在部署过程中,省去了开发者的反复调试过程,不需要人为干预,降低了开发难度,提高了工作效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的现有技术中优化方法的流程示意图;
图2是本申请一实施例提供的深度学习网络的部署方法的应用场景示意图;
图3是本申请一实施例提供的深度学习网络的部署方法的流程示意图;
图4是本申请一实施例提供的目标调度参数的获取方法的流程示意图;
图5是本申请一实施例提供的步骤202的具体计算目标调度参数方法的流程示意图;
图6是本申请另一实施例提供的目标调度参数的获取方法的流程示意图;
图7是本申请一实施例提供的深度学习网络的部署的具体流程示意图;
图8是本申请一实施例提供的创建运行时通道的方法的流程示意图;
图9是本申请一实施例提供的通过RPC通道传输数据的流程示意图
图10是本申请一实施例提供的深度学习网络的部署装置的结构示意图;
图11是本申请一实施例提供的终端设备的结构示意图;
图12是本申请一实施例提供的计算机的部分结构的框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
随着深度学习网络的发展,深度学习网络的应用越来越广泛,将深度学习网络部署到硬件平台上是深度学习网络应用的关键,目前针对深度学习网络任务的硬件也层出不穷,将深度学习网络部署到硬件平台上,必须解决以下两个问题:
1、根据深度学习网络结构,在硬件平台上开发相应的核函数(kernel)。
2、根据硬件平台的硬件特性,针对不同的kernel进行性能优化。
如图1所示,现有技术在主机和目标平台之间没有建立数据传输的通道,对深度学习网络进行部署时,需要在主机上编写代码,通过交叉编译后,使用U盘或硬盘拷贝到目标平台,然后需要开发人员通过串口、adb等登陆到目标平台对编译的代码进行运行和测试,然后通过在主机上更改调试参数再到目标平台上运行,反复调试修改后对部署的深度学习网络进行优化。现有技术中对深度学习网络的部署和优化需要开发人员具有编程能力,且优化过程需要的周期较长,需要开发人员投入较大精力。
图2为本申请实施例提供的深度学习网络的部署方法的应用场景示意图,上述深度学习网络的部署方法可以用于将深度学习网络部署到目标平台上,其中,目标平台可以是CPU,GPU,硬件加速器等。本地主机10用于对深度学习网络中核函数的调度参数进行配置,并根据当前调度参数下的核函数生成执行程序发送至目标平台20上进行运行,本地主机10通过获取核函数在目标平台20上的运行速度得到最优的调度参数,最后本地主机10根据最优的调度参数编写深度学习网络的部署程序发送到目标平台20上,完成对深度学习网络的部署。
以下结合图2对本申请实施例的深度学习网络的部署方法进行详细说明。
图3示出了本申请提供的深度学习网络的部署方法的示意性流程图,参照图3,对该部署方法的详述如下:
S101,处理器获取深度学习网络、用于调用所述深度学习网络中目标核函数的初始调度参数和参数预测网络。
在本实施例中,深度学习网络、用于调用所述深度学习网络中目标核函数的初始调度参数和参数预测网络,以上网络和参数处理器均可以从外部设备中获得。
处理器可以从前端框架中获取深度学习网络,通过前端框架可以训练出深度学习模型,其中,前端框架可以是Tensorflow框架、Pytorch框架、Caffe框架、Keras框架、mxnet框架或onnx框架,例如,mxnet框架训练出的是mobilenet v1.0模型。
参数预测网络用于根据初始调度参数计算第二组调度参数,再根据第二组调度参数计算第三组调度参数,直到达到预设的计算次数,得到第N组调度参数,经过计算处理后从N组调度参数中选择一组作为核函数的最优的调度参数。
初始调度参数是从参数集中选取的一组参数,参数集中存储有核函数的多组调度参数,从里边选取一组作为初始调度参数,例如,如果深度学习网络的部署方法是由处理器实现的,则参数集存储在处理器中。
其中,深度学习网络中存在各种各样的核函数,要想将核函数部署到硬件上,需要设置相应的核函数调用参数,也可以说是核函数的执行参数,告诉编译器运行时如何启动核函数,用于说明内核函数中的线程数量,以及线程是如何组织的等等,核函数的调用参数可以是一组调用参数,一组调用参数中包括几个参数。
作为举例,一个运行在nvidia gpu的核函数kernel的一组调度参数为Dg、Db、Ns、S,其中,参数Dg用于定义整个grid(网格)的维度和尺寸,即一个grid有多少个block(线程块);参数Db用于定义一个block的维度和尺寸,即一个block有多少个thread(线路);参数Ns是一个可选参数,用于设置每个block除了静态分配的shared Memory(共享存储)以外,最多能动态分配的shared memory大小,单位为byte(字节);参数S是一个cudaStream_t(定义流)类型的可选参数,初始值为零,表示该核函数处在哪个流之中。
可选的,上述深度学习网络的部署方法还可以包括基于上述初始调度参数训练所述参数预测网络的步骤,其中,所述目标核函数对应多组调度参数。
具体的,上述基于所述初始调度参数训练所述参数预测网络,可以包括:
将每组所述调度参数作为一个初始调度参数;
基于所有的初始调度参数,训练上述参数预测网络。
在本实施例中,可以先创建一个初始计算网络,将上述参数集中选取调度参数组成初始调度参数,参数集中可以组成多组初始调度参数,将上述初始调度参数作为训练数据,输入到初始计算网络中,利用优化算法,通过调整初始计算网络中的参数,最后得到参数预测网络。
S102,根据所述初始调度参数和所述参数预测网络,确定所述目标核函数的目标调度参数。
其中,经过优化的目标核函数的目标调度参数经过转换最后以log文件的形式保存。
需要说明的是,由于深度学习网络中有多个核函数,我们需要对每一个核函数进行调度参数优化,而目标调度参数可以为最优的核函数的调度参数。
如图4所示,在一种可能的实现方式中,步骤S102的实现过程可以包括:
S201,基于所述参数预测网络对所述初始调度参数进行迭代计算,得到每次迭代计算后的所述目标核函数的候选调度参数。
具体的,将一组初始调度参数输入参数预测网络输出多组调度参数;从多组调度参数中选择一组作为候选调度参数,将候选调度参数输入参数预测网络,重复以上步骤,直到达到预设迭代次数,得到多个候选调度参数。
可选的,从多组调度参数中选择一组作为候选调度参数可以包括:
根据调度参数的预设范围,从多组调度参数中选择一组作为候选调度参数。
其中,预设范围为预先设置的核函数的调度参数所满足的范围。
可选的,从多组调度参数中选择一组作为候选调度参数可以包括:
选取候选调度参数时,可以先改变调度参数中的一个参数,记录核函数的运行时间的变化,接着改变另一个参数记录核函数的运行时间变化,从中寻找参数改变对核函数运行时间的变化规律,进而为后续选择候选调度参数提供依据。
作为举例,假设预设迭代次数为N,初始调度参数为(A、B、C),将初始调度参数输入参数预测网络,得到的输出值为(a1、a2、b1、b2、c1、c2),从(a1、a2、b1、b2、c1、c2)中选取(a1、b2、c1)作为第一候选调度参数,将第一候选调度参数(a1、b2、c1)输入参数预测网络,得到的输出值为(a3、a4、b3、b4、c3、c4),从(a3、a4、b3、b4、c3、c4)中选取(a3、b3、c3)作为第二候选调度参数,…..,依次类推,得到N组候选调度参数。
在本实施例中,利用参数预测网络,通过迭代算法可以不断更新核函数的调度参数,并且可以自动获取一组候选调度参数,实现获取调度参数的自动化。
如图5所示,S202,根据所述多个候选调度参数对应的所述目标核函数在目标平台上的运行速度,确定所述目标调度参数。
在一种可能的实现方式中,步骤S202的实现过程可以包括:
S2021,根据所述候选调度参数,确定所述目标核函数在所述目标平台上运行的执行代码。
在本实施例中,执行代码编译完成后,通过RPC(Remote Procedure Call-进程间通信方式)通道将执行代码传输至目标平台上运行。
可选的,目标核函数在目标平台上运行的执行代码可以由编译器编辑,一组候选调度参数编辑一组对应的执行代码。
S2022,获取所述执行代码在所述目标平台上运行的运行时间。
在本实施例中,目标核函数的执行代码在目标平台上运行可以得到一个运行时间,通过RPC通道将运行时间传输至处理器。由于一组候选调度参数会生成一组执行代码,每生成一次执行代码都要在目标平台上运行一次,所以会得到与候选调度参数的个数相同的个数的运行时间。
S2023,将所述运行时间最短时对应的所述候选调度参数作为所述目标调度参数。
在本实施例中,目标核函数在目标平台上运行时间最短,说明此时的核函数的调度速度最快,此时对应的调度参数是最优的。
在一种可能的实现方式中,在步骤102之前,上述方法还可以包括:
创建优化目标核函数的任务,其中,上述任务将目标核函数的调度参数作为求解目标。
如图6所示,作为举例:参数预测网络输出参数,从输出的参数中选择一组参数作为候选调度参数,依据上述候选调度参数利用编译器编辑目标核函数在目标平台上的执行代码,将执行代码通过RPC通道传至目标平台运行,得到核函数的运行速度,处理器通过RPC通道在目标平台上查找运行速度最快时核函数对应的候选调度参数作为目标调度参数。
本申请实施例中,通过参数预测网络对初始调度参数进行迭代计算,能自动获取核函数的候选调度参数,不用开发人员手动设置调整,并通过RPC通道实现处理器与目标平台之间的数据自动传输,提高了调试效率,节省人力成本。
如图7所示,S103,基于所述目标调度参数将所述深度学习网络部署到硬件平台。
在一种可能的实现方式中,步骤S103的实现过程可以包括:
S301,生成所述深度学习网络对应的计算图。
其中,计算图可以看作是一种用来描述function(函数)的语言,图中的节点node代表function的输入(可以是常数、向量、张量等),图中的边代表这个function操作,创建计算节点链接成一个计算图。深度学习网络计算图的生成可以从外部获取也可以是处理器自动生成的。
S302,根据所述目标调度参数,确定所述计算图中的所述目标核函数对应的目标程序代码。
在本实施例中,根据目标调度参数的log文件,得到计算图中核函数对应的低级别的循环程序,其中,低级别的循环程序就是核函数的中间表述,等效于LLVM编译器的bc、ll文件(ll文件为llvm编译器生成的一种中间文件)等。
在一种可能的实现方式中,在步骤S301之后还可以包括:
对所述计算图进行合并和数据变换等高级别的优化,得到优化后的计算图。
其中,步骤S302还可以包括:
根据所述目标调度参数,确定优化后的计算图中的所述目标核函数对应的目标程序代码。
在本实施例中,为了更高效的执行程序,简化计算程序,通常将计算图中的operator(关键字)合并,它能减少线程之间的切换,减少消息的序列化/反序列化,减少数据在缓冲区的交换,减少了延迟的同时提高整体的吞吐量,另外,为了进一步提高计算效率,简化计算程序,还可以对计算图中的数据进行变换,例如,将4×3×3的矩阵变换成3×3×4的矩阵。
S303,根据所述目标程序代码,确定适应于所述目标平台的部署程序,所述处理器将所述部署程序发送给所述目标平台。
在本实施例中,目标平台的部署程序包括主控代码、核函数的可执行程序的文件以及计算图的程序代码等。
具体的,可以先根据目标调度参数的log文件和计算图,生成计算图和目标程序代码的部署程序,其中,目标程序代码的部署程序要适用于目标平台上硬件的后端框架,将计算图的程序保存为json文件,将目标核函数的目标调用参数的程序保存为params文件;然后编写主控代码,并调用json文件和params文件,对主控代码进行交叉编译得到适应于目标平台的部署程序;最后将部署程序和json文件和params文件下发到目标平台上运行,其中,部署程序以动态链接库或静态链接库的形式发布到目标平台,主控代码主要负责运行深度学习网络。
本申请实施例中,本申请通过参数预测网络自动获取候选调度参数,通过将候选调度参数下的核函数在目标平台上运行,得到运行最快时对应的调度参数作为目标调度参数,通过获取的目标调度参数部署深度学习网络,因为目标调度参数使最优的核函数的调度参数,所以部署到目标平台的深度学习网络的运行速度也是最快的,不用再经过开发人员的反复调试,提高了深度学习网络的部署效率。
如图8所示,在一种可能的实现方式中,在步骤S101之前或之后,还包括:
S1101,创建所述处理器与目标平台进行数据传输的运行时通道。
其中,运行时通道可以是RPC通道,相应的在目标平台上安装运行时API。
在本实施例中,创建处理器与目标平台进行数据传输的运行时通道,可以实现与目标平台之间的数据传输,提高了测试速度,通过运行时通道使得处理器与目标平台有了直接交互通道,不用再拷贝代码到目标平台,实现了处理器与目标平台之间数据自动传输,简化了深度学习网络的调试过程,加速了调试进程。
如图9所示,作为举例,如果深度学习网络的部署方法可以是由本地主机实现的,在本地主机上编写的深度学习网络中的核函数的调用程序代码,通过交叉编译后可以通过RPC通道传输至目标平台上进行测试,测试的结果也可以通过RPC通道传输至本地主机。
为了便于理解,下面以一个具体实施例说明:
以mxnet框架训练出的mobilenet v1.0模型为例,rk3288开发板的mali T764 GPU为目标硬件,按照上述部署方法,具体的部署步骤如下:
步骤A,在rk3288开发板上安装rpc app,该app中集成了mali T764 GPU的OpenCL库以及运行时API,通过rpc实现本地主机与目标硬件的数据传输。
步骤B,将mxnet训练得到的深度学习网络mobilenet-symbol.json和mobilenet.params文件转换为高级计算图,并从计算图中提取网络中的19个卷积层、1个dense层(全连接层),对19个卷积层和1个dense层的调用参数进行优化,将优化后的调用参数以log文件保存。
步骤C,使用步骤B中的log文件对计算图进行编译,可得到深度学习网络的相关可执行文件,保存为动态库形式,并将计算图为json文件,将深度学习网络中的调度参数分别保存为params文件。
步骤D,编写深度学习网络的主控代码,加载步骤C中产生的文件,创建运行时计算图,也就是运行顺序,对输入数据进行预处理,调用深度学习网络的运行接口,交叉编译主控代码得到深度学习网络的可执行程序。
步骤E,将步骤D中的可执行程序、步骤C中的json和params文件下发到开发板上,执行程序,即可将深度学习网络在mali T764 GPU上运行起来。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的深度学习网络的部署方法,图10示出了本申请实施例提供的深度学习网络的部署装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图10,该装置100可以包括:数据获取模块110、数据计算模块120和模型部署模块130。
其中,数据获取模块110,用于处理器获取深度学习网络、用于调用所述深度学习网络中目标核函数的初始调度参数和参数预测网络;
数据计算模块120,用于根据所述初始调度参数和所述参数预测网络,确定所述目标核函数的目标调度参数;
模型部署模块130,用于基于所述目标调度参数将所述深度学习网络部署到硬件平台。
在一种可能的实现方式中,该装置100还可以包括:
通道训练模块,用于创建所述处理器与目标平台进行数据传输的运行时通道
在一种可能的实现方式中,该装置100还包括:
预测网络创建模块,用于基于所述初始调度参数训练所述参数预测网络,其中,所述目标核函数对应多组调度参数。
在一种可能的实现方式中,预测网络训练模块可以具体用于:
将每组所述调度参数作为一个所述初始调度参数;
基于所有的所述初始调度参数,训练所述参数预测网络。
在一种可能的实现方式中,数据计算模块120可以包括:
参数计算单元,用于基于所述参数预测网络对所述初始调度参数进行迭代计算,得到每次迭代计算后的所述目标核函数的候选调度参数;
参数确定单元,用于根据多个候选调度参数对应的所述目标核函数在目标平台上的运行速度,确定所述目标调度参数。
在一种可能的实现方式中,参数确定单元可以用于:
根据所述候选调度参数,确定所述目标核函数在所述目标平台上运行的执行代码;
获取所述执行代码在所述目标平台上运行的运行时间;
将所述运行时间最短时对应的所述候选调度参数作为所述目标调度参数。
在一种可能的实现方式中,模型部署模块130可以用于:
生成所述深度学习网络对应的计算图;
根据所述目标调度参数,确定所述计算图中的所述目标核函数对应的目标程序代码;
根据所述目标程序代码,确定适应于所述目标平台的部署程序,所述处理器将所述部署程序发送给所述目标平台。
在一种可能的实现方式中,模型部署模块130还可以用于:
对所述计算图进行operator合并和数据变换,得到优化后的计算图。
在一种可能的实现方式中,模型部署模块130还可以用于:
根据所述目标调度参数,确定优化后的计算图中的所述目标核函数对应的目标程序代码。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种终端设备,参见图11,该终端设400可以包括:至少一个处理器410、存储器420以及存储在所述存储器420中并可在所述至少一个处理器410上运行的计算机程序,所述处理器410执行所述计算机程序时实现上述任意各个方法实施例中的步骤,例如图3所示实施例中的步骤S101至步骤S103。或者,处理器410执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如图10所示模块110至130的功能。
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器420中,并由处理器410执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序段,该程序段用于描述计算机程序在终端设备400中的执行过程。
本领域技术人员可以理解,图11仅仅是终端设备的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如输入输出设备、网络接入设备、总线等。
处理器410可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器420可以是终端设备的内部存储单元,也可以是终端设备的外部存储设备,例如插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。所述存储器420用于存储所述计算机程序以及终端设备所需的其他程序和数据。所述存储器420还可以用于暂时地存储已经输出或者将要输出的数据。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请实施例提供的深度学习网络的部署方法可以应用于计算机、平板电脑、笔记本电脑、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
以所述终端设备为计算机为例。图12示出的是与本申请实施例提供的计算机的部分结构的框图。参考图12,计算机包括:通信电路510、存储器520、输入单元530、显示单元540、音频电路550、无线保真(wireless fidelity,WiFi)模块560、处理器570以及电源580等部件。
下面结合图12对计算机的各个构成部件进行具体的介绍:
通信电路510可用于收发信息或通话过程中,信号的接收和发送,特别地,将图像采集设备发送的图像样本接收后,给处理器570处理;另外,将图像采集指令发送给图像采集设备。通常,通信电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,通信电路510还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communication,GSM)、通用分组无线服务(GeneralPacket Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long TermEvolution,LTE))、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器520可用于存储软件程序以及模块,处理器570通过运行存储在存储器520的软件程序以及模块,从而执行计算机的各种功能应用以及数据处理。存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元530可用于接收输入的数字或字符信息,以及产生与计算机的用户设置以及功能控制有关的键信号输入。具体地,输入单元530可包括触控面板531以及其他输入设备532。触控面板531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板531上或在触控面板531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器570,并能接收处理器570发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板531。除了触控面板531,输入单元530还可以包括其他输入设备532。具体地,其他输入设备532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元540可用于显示由用户输入的信息或提供给用户的信息以及计算机的各种菜单。显示单元540可包括显示面板541,可选的,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板541。进一步的,触控面板531可覆盖显示面板541,当触控面板531检测到在其上或附近的触摸操作后,传送给处理器570以确定触摸事件的类型,随后处理器570根据触摸事件的类型在显示面板541上提供相应的视觉输出。虽然在图12中,触控面板531与显示面板541是作为两个独立的部件来实现计算机的输入和输入功能,但是在某些实施例中,可以将触控面板531与显示面板541集成而实现计算机的输入和输出功能。
音频电路550可提供用户与计算机之间的音频接口。音频电路550可将接收到的音频数据转换后的电信号,传输到扬声器由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路550接收后转换为音频数据,再将音频数据输出处理器570处理后,经通信电路510以发送给比如另一计算机,或者将音频数据输出至存储器520以便进一步处理。
WiFi属于短距离无线传输技术,计算机通过WiFi模块560可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图12示出了WiFi模块560,但是可以理解的是,其并不属于计算机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器570是计算机的控制中心,利用各种接口和线路连接整个计算机的各个部分,通过运行或执行存储在存储器520内的软件程序和/或模块,以及调用存储在存储器520内的数据,执行计算机的各种功能和处理数据,从而对计算机进行整体监控。可选的,处理器570可包括一个或多个处理单元;优选的,处理器570可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器570中。
计算机还包括给各个部件供电的电源580(比如电池),优选的,电源580可以通过电源管理系统与处理器570逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述深度学习网络的部署方法各个实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述深度学习网络的部署方法各个实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种深度学习网络的部署方法,其特征在于,包括:
处理器获取深度学习网络、用于调用所述深度学习网络中目标核函数的初始调度参数和参数预测网络;
根据所述初始调度参数和所述参数预测网络,确定所述目标核函数的目标调度参数;
基于所述目标调度参数将所述深度学习网络部署到硬件平台。
2.如权利要求1所述的深度学习网络的部署方法,其特征在于,所述方法还包括:
创建所述处理器与目标平台进行数据传输的运行时通道。
3.如权利要求1所述的深度学习网络的部署方法,其特征在于,所述方法还包括基于所述初始调度参数训练所述参数预测网络的步骤;其中,所述目标核函数对应多组调度参数;
所述基于所述初始调度参数训练所述参数预测网络,包括:
将每组所述调度参数作为一个所述初始调度参数;
基于所有的所述初始调度参数,训练所述参数预测网络。
4.如权利要求1至3任一项所述的深度学习网络的部署方法,其特征在于,所述根据所述初始调度参数和所述参数预测网络,确定所述目标核函数的目标调度参数,包括:
基于所述参数预测网络对所述初始调度参数进行迭代计算,得到每次迭代计算后的所述目标核函数的候选调度参数;
根据多个候选调度参数对应的所述目标核函数在目标平台上的运行速度,确定所述目标调度参数。
5.如权利要求4所述的深度学习网络的部署方法,其特征在于,所述根据多个候选调度参数对应的所述目标核函数在目标平台上的运行速度,确定所述目标调度参数,包括:
根据所述候选调度参数,确定所述目标核函数在所述目标平台上运行的执行代码;
获取所述执行代码在所述目标平台上运行的运行时间;
将所述运行时间最短时对应的所述候选调度参数作为所述目标调度参数。
6.如权利要求1至3任一项所述的深度学习网络的部署方法,其特征在于,所述基于所述目标调度参数将所述深度学习网络部署到硬件平台,包括:
生成所述深度学习网络对应的计算图;
根据所述目标调度参数,确定所述计算图中的所述目标核函数对应的目标程序代码;
根据所述目标程序代码,确定适应于所述目标平台的部署程序,所述处理器将所述部署程序发送给所述目标平台。
7.如权利要求6所述的深度学习网络的部署方法,其特征在于,在生成所述深度学习网络对应的计算图之后,所述基于所述目标调度参数将所述深度学习网络部署到硬件平台还包括:
对所述计算图进行合并和数据变换,得到优化后的计算图;
根据所述目标调度参数,确定所述计算图中的所述目标核函数对应的目标程序代码,包括:
根据所述目标调度参数,确定优化后的计算图中的所述目标核函数对应的目标程序代码。
8.一种深度学习网络的部署装置,其特征在于,包括:
数据获取模块,用于处理器获取深度学习网络、用于调用所述深度学习网络中目标核函数的初始调度参数和参数预测网络;
数据计算模块,用于根据所述初始调度参数和所述参数预测网络,确定所述目标核函数的目标调度参数;
模型部署模块,用于基于所述目标调度参数将所述深度学习网络部署到硬件平台。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机计算机程序时实现如权利要求1至7任一项所述的深度学习网络的部署方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机计算机程序,其特征在于,所述计算机计算机程序被处理器执行时实现如权利要求1至7任一项所述的深度学习网络的部署方法。
CN202010063539.7A 2020-01-19 2020-01-19 一种深度学习网络的部署方法、装置及终端设备 Active CN111290762B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010063539.7A CN111290762B (zh) 2020-01-19 2020-01-19 一种深度学习网络的部署方法、装置及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010063539.7A CN111290762B (zh) 2020-01-19 2020-01-19 一种深度学习网络的部署方法、装置及终端设备

Publications (2)

Publication Number Publication Date
CN111290762A true CN111290762A (zh) 2020-06-16
CN111290762B CN111290762B (zh) 2023-05-12

Family

ID=71025484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010063539.7A Active CN111290762B (zh) 2020-01-19 2020-01-19 一种深度学习网络的部署方法、装置及终端设备

Country Status (1)

Country Link
CN (1) CN111290762B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767059A (zh) * 2020-06-30 2020-10-13 北京百度网讯科技有限公司 深度学习模型的部署方法、装置、电子设备和存储介质
CN111915016A (zh) * 2020-07-10 2020-11-10 深圳云天励飞技术有限公司 一种基于tvm编译器的异构平台的部署方法及装置
CN111966361A (zh) * 2020-09-25 2020-11-20 北京百度网讯科技有限公司 用于确定待部署模型的方法、装置、设备及其存储介质
CN112130896A (zh) * 2020-08-17 2020-12-25 深圳云天励飞技术股份有限公司 神经网络模型迁移方法、装置、电子设备及存储介质
CN113467783A (zh) * 2021-07-19 2021-10-01 中科曙光国际信息产业有限公司 一种人工智能加速器的核函数编译方法和装置
CN114826899A (zh) * 2022-03-16 2022-07-29 青岛海尔科技有限公司 设备控制服务的调试方法和装置、存储介质及电子装置
CN116089050A (zh) * 2023-04-13 2023-05-09 湖南大学 一种异构自适应任务调度方法
CN116126365A (zh) * 2023-04-18 2023-05-16 之江实验室 一种模型部署的方法、系统、存储介质及电子设备

Citations (7)

* 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
CN109711548A (zh) * 2018-12-26 2019-05-03 歌尔股份有限公司 超参数的选取方法、使用方法、装置及电子设备
CN109739979A (zh) * 2018-12-11 2019-05-10 中科恒运股份有限公司 神经网络的调优方法、调优装置及终端
CN109800884A (zh) * 2017-11-14 2019-05-24 阿里巴巴集团控股有限公司 模型参数的处理方法、装置、设备和计算机存储介质
CN109919308A (zh) * 2017-12-13 2019-06-21 腾讯科技(深圳)有限公司 一种神经网络模型部署方法、预测方法及相关设备
CN110245252A (zh) * 2019-06-10 2019-09-17 中国矿业大学 基于遗传算法的机器学习模型自动生成方法
CN110554995A (zh) * 2019-08-13 2019-12-10 武汉中海庭数据技术有限公司 一种深度学习模型的管理方法及系统

Patent Citations (7)

* 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
CN109800884A (zh) * 2017-11-14 2019-05-24 阿里巴巴集团控股有限公司 模型参数的处理方法、装置、设备和计算机存储介质
CN109919308A (zh) * 2017-12-13 2019-06-21 腾讯科技(深圳)有限公司 一种神经网络模型部署方法、预测方法及相关设备
CN109739979A (zh) * 2018-12-11 2019-05-10 中科恒运股份有限公司 神经网络的调优方法、调优装置及终端
CN109711548A (zh) * 2018-12-26 2019-05-03 歌尔股份有限公司 超参数的选取方法、使用方法、装置及电子设备
CN110245252A (zh) * 2019-06-10 2019-09-17 中国矿业大学 基于遗传算法的机器学习模型自动生成方法
CN110554995A (zh) * 2019-08-13 2019-12-10 武汉中海庭数据技术有限公司 一种深度学习模型的管理方法及系统

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767059A (zh) * 2020-06-30 2020-10-13 北京百度网讯科技有限公司 深度学习模型的部署方法、装置、电子设备和存储介质
CN111767059B (zh) * 2020-06-30 2023-03-31 北京百度网讯科技有限公司 深度学习模型的部署方法、装置、电子设备和存储介质
CN111915016A (zh) * 2020-07-10 2020-11-10 深圳云天励飞技术有限公司 一种基于tvm编译器的异构平台的部署方法及装置
CN112130896A (zh) * 2020-08-17 2020-12-25 深圳云天励飞技术股份有限公司 神经网络模型迁移方法、装置、电子设备及存储介质
CN111966361A (zh) * 2020-09-25 2020-11-20 北京百度网讯科技有限公司 用于确定待部署模型的方法、装置、设备及其存储介质
CN111966361B (zh) * 2020-09-25 2024-04-05 北京百度网讯科技有限公司 用于确定待部署模型的方法、装置、设备及其存储介质
CN113467783A (zh) * 2021-07-19 2021-10-01 中科曙光国际信息产业有限公司 一种人工智能加速器的核函数编译方法和装置
CN113467783B (zh) * 2021-07-19 2023-09-12 中科曙光国际信息产业有限公司 一种人工智能加速器的核函数编译方法和装置
CN114826899A (zh) * 2022-03-16 2022-07-29 青岛海尔科技有限公司 设备控制服务的调试方法和装置、存储介质及电子装置
CN114826899B (zh) * 2022-03-16 2024-01-23 青岛海尔科技有限公司 设备控制服务的调试方法和装置、存储介质及电子装置
CN116089050A (zh) * 2023-04-13 2023-05-09 湖南大学 一种异构自适应任务调度方法
CN116126365A (zh) * 2023-04-18 2023-05-16 之江实验室 一种模型部署的方法、系统、存储介质及电子设备

Also Published As

Publication number Publication date
CN111290762B (zh) 2023-05-12

Similar Documents

Publication Publication Date Title
CN111290762B (zh) 一种深度学习网络的部署方法、装置及终端设备
JP6594534B2 (ja) テキスト情報処理方法およびデバイス
CN106502703B (zh) 一种函数调用方法和装置
CN111880807A (zh) 深度学习编译方法、装置、设备及存储介质
US20220030017A1 (en) Cybersecurity investigation tools utilizing information graphs
Dai et al. Reveal training performance mystery between TensorFlow and PyTorch in the single GPU environment
CN106775638A (zh) 一种对象序列化方法、装置和计算设备
WO2020248511A1 (zh) 一种基于运行时模型实现对终端应用控制的方法
CN112114892A (zh) 深度学习模型的获取方法、加载方法及选取方法
WO2010106429A1 (en) Method, apparatus and computer program product for an instruction predictor for a virtual machine
CN114510339B (zh) 一种计算任务调度方法、装置、电子设备及可读存储介质
US20200226458A1 (en) Optimizing artificial neural network computations based on automatic determination of a batch size
CN115510795A (zh) 一种数据处理方法以及相关装置
CN113392018B (zh) 流量分发方法、装置、存储介质及电子设备
CN104102560A (zh) 系统性能测试的方法及装置
WO2022140710A1 (en) Visual complexity slider for process graphs
CN112990461B (zh) 构建神经网络模型的方法、装置、计算机设备和存储介质
CN112115668A (zh) Fpga布局方法、装置、电子设备和计算机可读介质
CN113961086B (zh) 一种快捷键实现方法、计算设备及存储介质
CN113468010B (zh) 文件处理方法、装置、电子设备和计算机可读存储介质
CN104965737A (zh) 更新数据的获取方法及装置
CN111242081B (zh) 视频检测方法、目标检测网络训练方法、装置及终端设备
CN110960858B (zh) 一种游戏资源的处理方法、装置、设备及存储介质
CN116149978A (zh) 服务接口测试方法、装置、电子设备及存储介质
US11861492B1 (en) Quantizing trained neural networks with removal of normalization

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