
1.本技术涉及机器翻译技术领域,更具体的说,是涉及一种模型参数调用方法、装置、设备及可读存储介质。
背景技术:2.随着深度学习的发展,越来越多的智能硬件设备可以基于神经网络模型实现某种服务,比如,一些可集成翻译功能的扫描词典笔,智能台灯等可以基于机器翻译模型实现翻译服务。在基于神经网络模型实现某种服务之前,需要将智能硬件设备存储内存中存储的模型参数调入智能硬件设备的运行内存中。目前,多采用将智能硬件设备存储内存中存储的模型参数一次性全部调入智能硬件设备的运行内存中的方式。
3.针对实现某些服务(如翻译服务)的神经网络模型,模型参数量的提升将明显地提升对应的服务效果,但是,在一些场景中,出于成本等方面的考虑,智能硬件设备一般运行内存配置较小。由于智能硬件设备运行内存配置较小,对于模型参数量大于智能硬件设备运行内存的神经网络模型,由于无法将智能硬件设备存储内存中存储的模型参数一次性全部调入智能硬件设备的运行内存中,导致智能硬件设备将无法适配模型参数量大的神经网络模型。
4.因此,如何提供一种模型参数调用方法,以实现在运行内存配置较小的智能硬件设备上适配模型参数量大的神经网络模型,成为本领域技术人员亟待解决的技术问题。
技术实现要素:5.鉴于上述问题,本技术提出了一种模型参数调用方法、装置、设备及可读存储介质。具体方案如下:
6.一种模型参数调用方法,所述模型包括多个参数调度单元,各个参数调度单元的计算串行执行,所述方法应用于采用所述模型的设备,所述设备包括存储内存及运行内存,所述存储内存中存储有所述模型的全部参数调度单元的参数,所述方法包括:
7.在执行各个参数调度单元的计算时,将所述存储内存中存储的所述模型的全部参数调度单元的参数按需调入所述运行内存中,使得所述运行内存中存储有n个参数调度单元的参数;所述n为大于等于2的整数,所述n个参数调度单元的参数所占存储空间小于或等于所述设备的运行内存,所述n个参数调度单元的参数中包括正在执行的目标参数调度单元的参数,以及与所述目标参数调度单元相邻的下一参数调度单元的参数。
8.可选地,在执行各个参数调度单元的计算之前,所述方法还包括:
9.确定所述模型的各个参数调度单元;
10.对所述模型进行初始化,将所述模型的全部参数调度单元的参数存储至设备的存储内存中,将所述模型的前n个参数调度单元的参数调入所述设备的运行内存中,所述n为大于等于2的整数,所述前n个参数调度单元的参数所占存储空间小于或等于所述设备的运行内存。
11.可选地,所述确定模型的各个参数调度单元,包括:
12.将所述模型的多个子网络作为一个参数调度单元。
13.可选地,所述确定模型的各个参数调度单元,包括:
14.将所述模型的一个子网络作为一个参数调度单元。
15.可选地,执行目标参数调度单元的计算的过程,包括:
16.从设备的运行内存中获取所述目标参数调度单元的参数;
17.基于所述目标参数调度单元的参数执行所述目标参数调度单元的计算,并在所述设备的运行内存中没有与所述目标参数调度单元相邻的下一参数调度单元的参数时,更新所述设备的运行内存。
18.可选地,当所述设备的运行内存中存储有2个参数调度单元的参数,所述设备的运行内存中包括所述目标参数调度单元的参数,以及与所述目标参数调度单元相邻的上一参数调度单元的参数时;
19.所述更新所述设备的运行内存,包括:
20.将与所述目标参数调度单元相邻的下一参数调度单元的参数,从所述设备的存储内存调入所述设备的运行内存中,覆盖掉与所述目标参数调度单元相邻的上一参数调度单元的参数。
21.可选地,当所述设备的运行内存中存储有2个以上的参数调度单元的参数,所述设备的运行内存中包括所述目标参数调度单元的参数,以及在所述目标参数调度单元之前执行计算的多个参数调度单元的参数时;
22.所述更新所述设备的运行内存,包括:
23.将与所述目标参数调度单元相邻的下一参数调度单元的参数,从所述设备的存储内存调入所述设备的运行内存中,覆盖掉在所述目标参数调度单元之前执行计算的至少一个参数调度单元中最先执行计算的一个参数调度单元的参数。
24.一种模型参数调用装置,所述模型包括多个参数调度单元,各个参数调度单元的计算串行执行,所述装置应用于采用所述模型的设备,所述设备包括存储内存及运行内存,所述存储内存中存储有所述模型的全部参数调度单元的参数,所述装置包括:
25.计算执行模块,用于在执行各个参数调度单元的计算时,将所述存储内存中存储的所述模型的全部参数调度单元的参数按需调入所述运行内存中,使得所述运行内存中存储有n个参数调度单元的参数;所述n为大于等于2的整数,所述n个参数调度单元的参数所占存储空间小于或等于所述设备的运行内存,所述n个参数调度单元的参数中包括正在执行的目标参数调度单元的参数,以及与所述目标参数调度单元相邻的下一参数调度单元的参数。
26.可选地,所述装置还包括:
27.参数调度单元确定模块,用于在执行各个参数调度单元的计算之前,确定所述模型的各个参数调度单元;
28.初始化模块,用于对所述模型进行初始化,将所述模型的全部参数调度单元的参数存储至设备的存储内存中,将所述模型的前n个参数调度单元的参数调入所述设备的运行内存中,所述n为大于等于2的整数,所述前n个参数调度单元的参数所占存储空间小于或等于所述设备的运行内存。
29.可选地,所述参数调度单元确定模块,包括:
30.第一确定模块,用于将所述模型的多个子网络作为一个参数调度单元。
31.可选地,所述参数调度单元确定模块,包括:
32.第二确定模块,用于将所述模型的一个子网络作为一个参数调度单元。
33.可选地,所述计算执行模块,包括:
34.目标参数调度单元的计算执行模块;
35.所述目标参数调度单元的计算执行模块,包括:
36.获取子模块,用于从设备的运行内存中获取所述目标参数调度单元的参数;
37.运行内存更新子模块,用于基于所述目标参数调度单元的参数执行所述目标参数调度单元的计算,并在所述设备的运行内存中没有与所述目标参数调度单元相邻的下一参数调度单元的参数时,更新所述设备的运行内存。
38.可选地,所述运行内存更新子模块,包括:
39.第一运行内存更新子模块,用于当所述设备的运行内存中存储有2个参数调度单元的参数,所述设备的运行内存中包括所述目标参数调度单元的参数,以及与所述目标参数调度单元相邻的上一参数调度单元的参数时;将与所述目标参数调度单元相邻的下一参数调度单元的参数,从所述设备的存储内存调入所述设备的运行内存中,覆盖掉与所述目标参数调度单元相邻的上一参数调度单元的参数。
40.可选地,所述运行内存更新子模块,包括:
41.第二运行内存更新子模块,用于当所述设备的运行内存中存储有2个以上的参数调度单元的参数,所述设备的运行内存中包括所述目标参数调度单元的参数,以及在所述目标参数调度单元之前执行计算的多个参数调度单元的参数时;将与所述目标参数调度单元相邻的下一参数调度单元的参数,从所述设备的存储内存调入所述设备的运行内存中,覆盖掉在所述目标参数调度单元之前执行计算的至少一个参数调度单元中最先执行计算的一个参数调度单元的参数。
42.一种模型参数调用设备,包括存储器和处理器;
43.所述存储器,用于存储程序;
44.所述处理器,用于执行所述程序,实现如上所述的模型参数调用方法的各个步骤。
45.一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上所述的模型参数调用方法的各个步骤。
46.借由上述技术方案,本技术公开了一种模型参数调用方法、装置、设备及可读存储介质。该方案中,模型包括多个参数调度单元,各个参数调度单元的计算串行执行,方法应用于采用模型的设备,设备包括存储内存及运行内存,存储内存中存储有模型的全部参数调度单元的参数,在模型执行各个参数调度单元的计算时,将存储内存中存储的模型的全部参数调度单元的参数按需调入运行内存中,使得运行内存中存储有n个参数调度单元的参数,n为大于等于2的整数,n个参数调度单元的参数所占存储空间小于或等于设备的运行内存,n个参数调度单元的参数中包括正在执行的目标参数调度单元的参数,以及与目标参数调度单元相邻的下一参数调度单元的参数。通过上述方案,可以实现设备的运行内存的动态复用,保证运行内存中存储有正在执行的目标参数调度单元的参数,以及与目标参数调度单元相邻的下一参数调度单元的参数,从而不影响正在执行的目标参数调度单元的计
算并为待执行的目标参数调度单元准备好所需参数,从而使得在运行内存配置较小的智能硬件设备上适配模型参数量大的神经网络模型。
附图说明
47.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
48.图1为本技术实施例公开的一种模型的结构示意图;
49.图2为本技术实施例公开的模型执行目标参数调度单元的计算的方法的流程示意图;
50.图3为本技术实施例提供的一种transformer结构示意图;
51.图4为transformer模型参数调用过程中,psram与sram之间的参数传输示意图;
52.图5为本技术实施例公开的一种模型参数调用装置结构示意图;
53.图6为本技术实施例提供的一种模型参数调用设备的硬件结构框图。
具体实施方式
54.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
55.为了实现在运行内存配置较小的智能硬件设备上适配模型参数量大的神经网络模型,本案发明人进行研究,现有的一种思路为:采用参数共享、模型量化、adaptivesoftmax等方式,减少神经网络模型的模型参数量,以实现在运行内存配置较小的智能硬件设备上适配模型参数量大的神经网络模型,但是上述思路会影响神经网络模型的效果。
56.鉴于上述思路存在的问题,本案发明人进行了深入研究,最终提出了一种模型参数调用方法。
57.接下来,通过下述实施例对本技术提供的模型参数调用方法进行介绍。
58.需要说明的是,本技术提供的模型参数调用方法,适用于特定结构的模型,该特定结构的模型包括多个参数调度单元,各个参数调度单元的计算串行执行,该特定结构的模型可以有多种,比如,机器翻译当前最常用的模型结构transformer。
59.为便于理解,参照图1,图1为本技术实施例公开的一种模型的结构示意图。如图1所示,该模型中包括参数调度单元1、参数调度单元2、
……
、参数调度单元m,参数调度单元1、参数调度单元2、参数调度单元3、
……
、参数调度单元m的计算是串行计算的,即模型的输入首先进入参数调度单元1,参数调度单元1的计算开始执行,参数调度单元1的计算执行完毕之后,才会执行参数调度单元2的计算,参数调度单元2的计算执行完毕之后,才会执行参数调度单元3的计算,
……
,直至参数调度单元m的计算执行完毕之后,得到整个模型的输出。
60.进一步需要说明的是,本技术提供的模型参数调度方法,应用于采用上述特定结
构的模型的设备,该设备包括存储内存及运行内存,存储内存及运行内存可以采用各种形式的存储器实现,比如sram(static random-access memory,静态随机存取存储器)、psram(pseudo static random-access memory,伪静态随机存取存储器)、flash存储器等,对此,本技术不进行任何限定。考虑到各种存储器的成本以及带宽,在本技术中,作为一种可实施方式,设备的存储内存可以采用psram、运行内存可以采用sram。
61.在本技术中,可以先加载模型至设备中,具体的,可以先确定模型的各个参数调度单元,再对模型进行初始化,将模型的全部参数调度单元的参数存储至设备的存储内存中,将所述模型的前n个参数调度单元的参数调入所述设备的运行内存中,所述n为大于等于2的整数,所述前n个参数调度单元的参数所占存储空间小于所述设备的运行内存。n的取值为2时,可以使运行内存的占用最小。
62.需要说明的是,模型一般由多个子网络构成,因此,在本技术中可以以模型的子网络为划分单元,将模型的各个子网络进行划分,得到模型的各个参数调度单元。作为一种可实施方式,可以将模型的多个子网络作为一个参数调度单元。考虑到运行内存的占用最小化,作为另一种可实施方式,还可以将模型的每个子网络作为一个参数调度单元。
63.设备的运行内存可以作为共享内存(sharedmemory),在所述模型执行各个参数调度单元的计算时,将所述存储内存中存储的所述模型的全部参数调度单元的参数按需调入所述运行内存中,使得所述运行内存中存储有n个参数调度单元的参数;所述n为大于等于2的整数,所述n个参数调度单元的参数所占存储空间小于或等于所述设备的运行内存,所述n个参数调度单元的参数中包括正在执行的目标参数调度单元的参数,以及与所述目标参数调度单元相邻的下一参数调度单元的参数。
64.通过上述方案,可以实现设备的运行内存的动态复用,保证运行内存中存储有正在执行的目标参数调度单元的参数,以及与目标参数调度单元相邻的下一参数调度单元的参数,从而不影响正在执行的目标参数调度单元的计算并为待执行的目标参数调度单元准备好所需参数,从而使得在运行内存配置较小的智能硬件设备上适配模型参数量大的神经网络模型。
65.在本技术的另一个实施例中,对执行目标参数调度单元的计算过程进行了详细介绍,需要说明的是,模型中的每个参数调度单元的计算过程都是采用下述方式进行的。
66.参照图2,图2为本技术实施例公开的模型执行目标参数调度单元的计算的方法的流程示意图,该方法可以包括:
67.步骤s201:从设备的运行内存中获取所述目标参数调度单元的参数。
68.在上述实施例中已经指出,在执行各个参数调度单元的计算时,将所述存储内存中存储的所述模型的全部参数调度单元的参数按需调入所述运行内存中,使得所述运行内存中存储有n个参数调度单元的参数,所述n个参数调度单元的参数中包括正在执行的目标参数调度单元的参数,因此,在执行目标参数调度单元的计算时,可以从设备的运行内存中获取目标参数调度单元的参数。
69.步骤s202:基于所述目标参数调度单元的参数执行所述目标参数调度单元的计算,并在所述设备的运行内存中没有与所述目标参数调度单元相邻的下一参数调度单元的参数时,更新所述设备的运行内存。
70.在从设备的运行内存中获取目标参数调度单元的参数之后,即可基于目标参数调
度单元的参数执行目标参数调度单元的计算,与此同时,在所述设备的运行内存中没有与所述目标参数调度单元相邻的下一参数调度单元的参数时,更新所述设备的运行内存,以保证所述n个参数调度单元的参数中包括与所述目标参数调度单元相邻的下一参数调度单元的参数。在所述设备的运行内存中有与所述目标参数调度单元相邻的下一参数调度单元的参数时,则无需对设备的运行内存进行更新操作。
71.作为一种可实施方式,当所述设备的运行内存中存储有2个参数调度单元的参数,所述设备的运行内存中包括所述目标参数调度单元的参数,以及与所述目标参数调度单元相邻的上一参数调度单元的参数时;
72.所述更新所述设备的运行内存,包括:
73.将与所述目标参数调度单元相邻的下一参数调度单元的参数,从所述设备的存储内存调入所述设备的运行内存中,覆盖掉与所述目标参数调度单元相邻的上一参数调度单元的参数。
74.作为另一种可实施方式,当所述设备的运行内存中存储有2个以上的参数调度单元的参数,所述设备的运行内存中包括所述目标参数调度单元的参数,以及在所述目标参数调度单元之前执行计算的多个参数调度单元的参数时;
75.所述更新所述设备的运行内存,包括:
76.将与所述目标参数调度单元相邻的下一参数调度单元的参数,从所述设备的存储内存调入所述设备的运行内存中,覆盖掉在所述目标参数调度单元之前执行计算的至少一个参数调度单元中最先执行计算的一个参数调度单元的参数。
77.为了更好地理解本技术提供的模型参数调用方法,在本技术中,以机器翻译当前最常用的模型结构transformer为例,来进行方案阐述。
78.参阅图3,图3为本技术实施例提供的一种transformer结构示意图。如图3所示,transformer由编码器和解码器两部分组成,其中,编码器和解码器层又由若干个相同结构网络层组织,以标准的transformer基础网络结构为例,其包含6层编码器,6层解码器,每层编码器、解码器分别包含多个子网络模块,具体的,如图所示,每层编码器包含一个多头注意力网络和一个前向反馈网络,每层解码器包含一个掩蔽多头注意力网络,一个多头注意力网络以及一个前向反馈网络。
79.transformer中编码器、解码器以及编码器、解码器中的每一层的每一个子网络模块之间都是串行执行的,即必须上一个子网络模块执行完成后才可以执行下一个子网络模块,transformer的这种串行执行的特点,使得其可以适配本技术提供的模型参数调用方法。
80.假如集成翻译功能的智能硬件设备运行内存为sram,存储内存为psram,该硬件设备基于transformer模型实现翻译服务,transformer模型中每个子网络作为一个参数调度单元。
81.首先对transformer模型初始化,将所有模型参数都存储在psram中,将编码器第一层的两个子网络(多头注意力网络和前向反馈网络)所需的参数加载进sram中。当一句翻译请求开始后,便可以进行编码器第一层第一个子网络多头注意力网络的计算,当该子网络计算完成后,即可进行第二个子网络前向反馈网络的计算,与此同时,将编码器第二层第一个子网络多头注意力网络对应的参数从psram中转移至sram中,覆盖掉编码器第一层第
一个子网络多头注意力网络对应的参数,以此类推,直到该句翻译结束。
82.为便于理解,请参阅图4,图4为transformer模型参数调用过程中,psram与sram之间的参数传输示意图。
83.下面对本技术实施例公开的一种模型参数调用装置进行描述,下文描述的模型参数调用装置与上文描述的模型参数调用方法可相互对应参照。
84.参照图5,图5为本技术实施例公开的一种模型参数调用装置结构示意图。所述模型包括多个参数调度单元,各个参数调度单元的计算串行执行,所述装置应用于采用所述模型的设备,所述设备包括存储内存及运行内存,所述存储内存中存储有所述模型的全部参数调度单元的参数,如图5所示,该模型参数调用装置可以包括:
85.计算执行模块11,用于在执行各个参数调度单元的计算时,将所述存储内存中存储的所述模型的全部参数调度单元的参数按需调入所述运行内存中,使得所述运行内存中存储有n个参数调度单元的参数;所述n为大于等于2的整数,所述n个参数调度单元的参数所占存储空间小于或等于所述设备的运行内存,所述n个参数调度单元的参数中包括正在执行的目标参数调度单元的参数,以及与所述目标参数调度单元相邻的下一参数调度单元的参数。
86.作为一种可实施方式,所述装置还包括:
87.参数调度单元确定模块,用于在执行各个参数调度单元的计算之前,确定所述模型的各个参数调度单元;
88.初始化模块,用于对所述模型进行初始化,将所述模型的全部参数调度单元的参数存储至设备的存储内存中,将所述模型的前n个参数调度单元的参数调入所述设备的运行内存中,所述n为大于等于2的整数,所述前n个参数调度单元的参数所占存储空间小于或等于所述设备的运行内存。
89.作为一种可实施方式,所述参数调度单元确定模块,包括:
90.第一确定模块,用于将所述模型的多个子网络作为一个参数调度单元。
91.作为一种可实施方式,所述参数调度单元确定模块,包括:
92.第二确定模块,用于将所述模型的一个子网络作为一个参数调度单元。
93.作为一种可实施方式,所述计算执行模块,包括:
94.目标参数调度单元的计算执行模块;
95.所述目标参数调度单元的计算执行模块,包括:
96.获取子模块,用于从设备的运行内存中获取所述目标参数调度单元的参数;
97.运行内存更新子模块,用于基于所述目标参数调度单元的参数执行所述目标参数调度单元的计算,并在所述设备的运行内存中没有与所述目标参数调度单元相邻的下一参数调度单元的参数时,更新所述设备的运行内存。
98.作为一种可实施方式,所述运行内存更新子模块,包括:
99.第一运行内存更新子模块,用于当所述设备的运行内存中存储有2个参数调度单元的参数,所述设备的运行内存中包括所述目标参数调度单元的参数,以及与所述目标参数调度单元相邻的上一参数调度单元的参数时;将与所述目标参数调度单元相邻的下一参数调度单元的参数,从所述设备的存储内存调入所述设备的运行内存中,覆盖掉与所述目标参数调度单元相邻的上一参数调度单元的参数。
100.作为一种可实施方式,所述运行内存更新子模块,包括:
101.第二运行内存更新子模块,用于当所述设备的运行内存中存储有2个以上的参数调度单元的参数,所述设备的运行内存中包括所述目标参数调度单元的参数,以及在所述目标参数调度单元之前执行计算的多个参数调度单元的参数时;将与所述目标参数调度单元相邻的下一参数调度单元的参数,从所述设备的存储内存调入所述设备的运行内存中,覆盖掉在所述目标参数调度单元之前执行计算的至少一个参数调度单元中最先执行计算的一个参数调度单元的参数。
102.参照图6,图6为本技术实施例提供的一种模型参数调用设备的硬件结构框图,参照图6,模型参数调用设备的硬件结构可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;
103.在本技术实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;
104.处理器1可能是一个中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
105.存储器3可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
106.其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:
107.在执行各个参数调度单元的计算时,将所述存储内存中存储的所述模型的全部参数调度单元的参数按需调入所述运行内存中,使得所述运行内存中存储有n个参数调度单元的参数;所述n为大于等于2的整数,所述n个参数调度单元的参数所占存储空间小于或等于所述设备的运行内存,所述n个参数调度单元的参数中包括正在执行的目标参数调度单元的参数,以及与所述目标参数调度单元相邻的下一参数调度单元的参数。
108.可选的,所述程序的细化功能和扩展功能可参照上文描述。
109.本技术实施例还提供一种可读存储介质,该可读存储介质可存储有适于处理器执行的程序,所述程序用于:
110.在执行各个参数调度单元的计算时,将所述存储内存中存储的所述模型的全部参数调度单元的参数按需调入所述运行内存中,使得所述运行内存中存储有n个参数调度单元的参数;所述n为大于等于2的整数,所述n个参数调度单元的参数所占存储空间小于或等于所述设备的运行内存,所述n个参数调度单元的参数中包括正在执行的目标参数调度单元的参数,以及与所述目标参数调度单元相邻的下一参数调度单元的参数。
111.可选的,所述程序的细化功能和扩展功能可参照上文描述。
112.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
113.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
114.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。