CN115113814A - 一种神经网络模型上线方法和相关装置 - Google Patents
一种神经网络模型上线方法和相关装置 Download PDFInfo
- Publication number
- CN115113814A CN115113814A CN202210704144.XA CN202210704144A CN115113814A CN 115113814 A CN115113814 A CN 115113814A CN 202210704144 A CN202210704144 A CN 202210704144A CN 115113814 A CN115113814 A CN 115113814A
- Authority
- CN
- China
- Prior art keywords
- target
- neural network
- learnable
- model
- memory block
- 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
Links
- 238000003062 neural network model Methods 0.000 title claims abstract description 176
- 238000000034 method Methods 0.000 title claims abstract description 122
- 230000015654 memory Effects 0.000 claims abstract description 339
- 230000003068 static effect Effects 0.000 claims abstract description 109
- 238000004364 calculation method Methods 0.000 claims abstract description 69
- 230000008569 process Effects 0.000 claims abstract description 58
- 238000013139 quantization Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 7
- 239000002699 waste material Substances 0.000 abstract description 12
- 238000007667 floating Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 18
- 238000012545 processing Methods 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 12
- 238000013473 artificial intelligence Methods 0.000 description 10
- 238000005457 optimization Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000012549 training Methods 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 7
- 241001672694 Citrus reticulata Species 0.000 description 6
- 238000013507 mapping Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 241000282414 Homo sapiens Species 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种神经网络模型上线方法和相关装置,当神经网络模型在电子设备启动时,以全局静态存储区的存储格式记录多个可学习参数在全局静态存储区中的起始地址。在进行推理计算过程中,当确定使用目标可学习参数时,根据起始地址并按照存储格式从全局静态存储区中读取目标可学习参数,并将其复制到目标空间的模型数据全局内存块中,目标空间为内存中无对齐访问要求的空间,以利用模型数据全局内存块中的目标可学习参数进行推理计算,并在目标可学习参数使用完成后,释放模型数据全局内存块中的目标可学习参数,直到完成推理计算过程。本申请在解决无法保证对齐访问的技术问题的基础上,避免了内存中同时存在两份模型文件,降低内存空间的浪费。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种神经网络模型上线方法和相关装置。
背景技术
近年来,随着神经网络模型的不断发展,将训练得到的神经网络模型部署在电子设备上(即神经网络模型上线)也越来越广泛。在一些场景中,厂家为了降低成本,会对电子设备的芯片进行内存方面的精简,包括去除闪存只保留内存以及降低内存大小等。这些精简对于神经网络模型上线是一个极大的挑战。
在电子设备的芯片无闪存的情况下,神经网络模型上线的流程通常是将神经网络模型的模型文件放到内存的全局静态存储区中,然而由于全局静态存储区的内存访问必须是对齐的,但是模型文件在全局静态存储区中是以字符数组的格式进行存储的,导致无法满足对齐访问的要求,故需要从全局静态存储区中将模型文件复制到内存的堆空间中,然后构建网络进行推理。
然而,这种方式导致要在全局静态存储区和堆空间中保存两份模型文件,浪费稀有的内存空间。
发明内容
为了解决上述技术问题,本申请提供了一种神经网络模型上线方法和相关装置,在解决无法保证对齐访问的技术问题的基础上,避免了内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。
本申请实施例公开了如下技术方案:
一方面,本申请实施例提供一种神经网络模型上线方法,所述方法由电子设备执行,所述电子设备包括内存,所述内存包括全局静态存储区和目标空间,所述全局静态存储区中存储神经网络模型的模型文件,所述模型文件中包括所述神经网络模型对应的多个可学习参数,所述目标空间为所述内存中无对齐访问要求的空间,所述目标空间中设置有模型数据全局内存块,所述方法包括:
当所述神经网络模型在所述电子设备启动时,以所述全局静态存储区的存储格式记录所述多个可学习参数在所述全局静态存储区中的起始地址;
在通过所述神经网络模型进行推理计算过程中,当确定使用所述多个可学习参数中的目标可学习参数时,根据所述起始地址并按照所述存储格式从所述全局静态存储区中读取所述目标可学习参数,并将读取到的所述目标可学习参数复制到所述模型数据全局内存块中;
利用所述模型数据全局内存块中的所述目标可学习参数进行推理计算,并在所述目标可学习参数使用完成后,释放所述模型数据全局内存块中存储的所述目标可学习参数,直到完成所述推理计算过程,以实现所述神经网络模型的上线。
一方面,本申请实施例提供一种神经网络模型上线装置,所述装置部署在电子设备上,所述电子设备包括内存,所述内存包括全局静态存储区和目标空间,所述全局静态存储区中存储神经网络模型的模型文件,所述模型文件中包括所述神经网络模型对应的多个可学习参数,所述目标空间为所述内存中无对齐访问要求的空间,所述目标空间中设置有模型数据全局内存块,所述装置包括记录单元、复制单元、推理单元和释放单元:
所述记录单元,用于当所述神经网络模型在所述电子设备启动时,以所述全局静态存储区的存储格式记录所述多个可学习参数在所述全局静态存储区中的起始地址;
所述复制单元,用于在通过所述神经网络模型进行推理计算过程中,当确定使用所述多个可学习参数中的目标可学习参数时,根据所述起始地址并按照所述存储格式从所述全局静态存储区中读取所述目标可学习参数,并将读取到的所述目标可学习参数复制到所述模型数据全局内存块中;
所述推理单元,用于利用所述模型数据全局内存块中的所述目标可学习参数进行推理计算;
所述释放单元,用于在所述目标可学习参数使用完成后,释放所述模型数据全局内存块中存储的所述目标可学习参数,直到完成所述推理计算过程,以实现所述神经网络模型的上线。
一方面,本申请实施例提供一种电子设备,所述电子设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行前述任一方面所述的方法。
一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行前述任一方面所述的方法。
一方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现前述任一方面所述的方法。
由上述技术方案可以看出,在完成神经网络模型的训练,可以将训练好的神经网络模型上线,即由电子设备使用神经网络模型执行任务,该电子设备包括内存,内存包括全局静态存储区和目标空间,全局静态存储区中存储神经网络模型的模型文件,模型文件中包括神经网络模型对应的多个可学习参数,目标空间为内存中无对齐访问要求的空间。由于无法复用全局静态存储区中的多个可学习参数,本申请在目标空间中设置有模型数据全局内存块,当神经网络模型在电子设备启动时,以全局静态存储区的存储格式记录多个可学习参数在全局静态存储区中的起始地址。在通过神经网络模型进行推理计算过程中,当确定使用多个可学习参数中的目标可学习参数时,可以根据起始地址并按照存储格式从全局静态存储区中读取目标可学习参数,并将读取到的目标可学习参数复制到模型数据全局内存块中,以利用模型数据全局内存块中的目标可学习参数进行推理计算。由于在记录起始地址以及从全局静态存储区中读取目标可学习参数时,采用的是全局静态存储区的存储格式,而非推理计算所需的其他格式(例如浮点格式),从而避免了按照浮点格式进行访问无法保证对齐访问的技术问题。并且,本申请在需要使用某个可学习参数时才将该可学习参数复制到模型数据全局内存块中,并非一次性将多个可学习参数全部复制到模型数据全局内存块中,并且在目标可学习参数使用完成后,释放模型数据全局内存块中存储的目标可学习参数,直到完成推理计算过程,使得内存中最多同时存在一份模型文件和当时需要使用的目标可学习参数,从而避免内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。可见,本申请在解决无法保证对齐访问的技术问题的基础上,避免了内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术成员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种神经网络模型上线方法的应用场景架构图;
图2为本申请实施例提供的一种神经网络模型上线方法的流程图;
图3为本申请实施例提供的一种模型文件的示例图;
图4为本申请实施例提供的一种int8量化原理示例图;
图5为本申请实施例提供的一种神经网络模型上线装置的结构图;
图6为本申请实施例提供的一种终端的结构图;
图7为本申请实施例提供的一种服务器的结构图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
首先对本申请实施例可能涉及的名词进行解释:
闪存(Flash):即Flash Memory,全名叫Flash EEPROM Memory,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器。
内存:内存是电子设备的重要组成部分,可以用于暂时存放计算数据,并且电子设备中所有程序的运行都在内存中进行。内存可以划分成多个区,通常情况下,在不同的场景中,内存的划分方式可能不同。在一种可能的实现方式中,例如在C程序中,内存分成4个区,分别堆空间、栈空间、全局静态存储区和代码区;在另一种可能的实现方式中,例如在C++中,内存分成5个区,分别是堆空间、栈空间、自由存储区、全局静态存储区、常量存储区。当然还有其他划分方式,本申请实施例对此不做限定,本申请实施例主要针对第二种划分方式进行详细介绍。
(1)栈空间:内存由编译器在需要时自动分配和释放。通常用来存储局部变量和函数参数,函数调用后返回的地址。(为运行函数而分配的局部变量、函数参数、函数调用后返回地址等存放在栈区)。栈运算分配内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
(2)堆空间:内存使用new函数进行分配,使用delete函数或delete[]函数释放。如果未能对内存进行正确的释放,会造成内存泄漏。但在程序结束时,会由操作系统自动回收。
(3)自由存储区:使用malloc函数进行分配,使用free函数进行回收。
(4)全局静态存储区:全局变量和静态变量被分配到同一块内存中,C语言中区分初始化和未初始化的,C++中不再区分了。(全局变量、静态数据存放在全局静态存储区)
(5)常量存储区:存储常量,不允许被修改。
全局静态存储区和常量存储区的内存访问必须是对齐的,因为其内存空间里面变量的储存规则是一个字节的变量可以存在任意地址空间,二个字节一定要在2的倍数的地址空间,四个字节一定要4的倍数的地址空间。不对齐的内存访问会在程序启动时报错,导致程序无法启动。
对于用于部署神经网络模型的电子设备,厂家为了降低成本,对电子设备的芯片进行内存方面的精简,包括(1)去除闪存,只保留内存;(2)降低内存大小。这些精简对于神经网络模型上线是一个极大的挑战。其中,电子设备的芯片可以是各种类型的芯片,例如ARM(Advanced RISC Machine)芯片,RISC是精简指令集计算机(Reduced Instruction SetComputer),本申请实施例针对的ARM芯片是无闪存的低内存容量ARM芯片,可用内存容量只有10M左右。
对于正常的芯片即有闪存的芯片,神经网络模型上线的流程为将模型文件存放在闪存中,从闪存中读取模型文件到内存中,构建网络并进行推理。此种情况下,内存中只有一份模型文件。其中,模型文件中包括可学习参数。
而在该无闪存的芯片上线神经网络模型,存在以下问题:由于芯片无闪存,神经网络模型上线的流程通常是将神经网络模型的模型文件放到内存的全局静态存储区中,然而由于全局静态存储区的内存访问必须是对齐的,但是模型文件在全局静态存储区中是以字符数组的格式进行存储的,复用该内存,需要根据指针偏移量将指针偏移到可学习参数的开始位置,并将可学习参数转换成推理计算所需的格式,例如浮点(float)格式。而读取float格式的可学习参数需要地址指针按4对齐,但是按照字符数组的格式进行存储的模型文件,无法保证可学习参数的开始位置的指针所指向的地址是按4对齐的,进而无法保证全局静态存储区的内存访问是对齐的。
因此,在这种情况下,需要将模型文件复制到内存的堆空间中,然后构建网络进行推理。然而,这种方式导致要在全局静态存储区和堆空间中保存两份模型文件,浪费稀有的内存空间。
为了解决上述技术问题,本申请实施例提供一种神经网络模型上线方法,该方法由于在记录起始地址以及从全局静态存储区中读取目标可学习参数时,采用的是全局静态存储区的存储格式,而非推理计算所需的其他格式(例如浮点格式),从而避免了按照浮点格式进行访问无法保证对齐访问的技术问题。并且,本申请在需要使用某个可学习参数时才将该可学习参数复制到模型数据全局内存块中,并非一次性将多个可学习参数全部复制到模型数据全局内存块中,并且在目标可学习参数使用完成后,释放模型数据全局内存块中存储的目标可学习参数,直到完成推理计算过程,使得内存中最多同时存在一份模型文件和当时需要使用的目标可学习参数,从而避免内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。
需要说明的是,本申请实施例提供的方法可以涉及人工智能,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
本申请实施例主要涉及其中的机器学习,机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。在本申请实施例中,可以通过机器学习训练神经网络模型,从而将训练好的神经网络模型进行上线。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服、车联网、自动驾驶、智慧交通等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
本申请实施例提供的神经网络模型上线方法可以应用到上述各种领域,例如在智能家居领域,具体为空调语音控制场景,所使用到的神经网络模型例如可以包括语音唤醒模型、普通话指令识别模型、粤语指令识别模型等,将使用到的神经网络模型部署到空调上,从而实现空调语音控制。
可以理解的是,本申请实施例中使用的电子设备可以是服务器,也可以是终端。服务器可以是提供各种基于人工智能服务的服务器,服务器可以是独立的服务器,也可以是集群中的服务器;终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。
如图1所示,图1示出了一种神经网络模型上线方法的应用场景架构图。在该应用场景中可以包括电子设备,在该应用场景中以电子设备是终端100为例进行介绍。终端100包括内存,包括全局静态存储区和目标空间,全局静态存储区中存储神经网络模型的模型文件,模型文件中包括神经网络模型对应的多个可学习参数,目标空间为内存中无对齐访问要求的空间。无对齐访问要求的空间可以是指内存中进行数据访问无需遵守对齐访问要求的空间,而对齐访问是指所访问的地址空间是被访问的数据格式位宽的整数倍,也就是说,在无对齐访问要求的空间中进行内存访问,所访问的地址空间可以不是被访问的数据格式位宽的整数倍。内存可以被分成多个区,以内存被分为堆空间、栈空间、自由存储区、全局静态存储区、常量存储区为例,目标空间为内存中无对齐访问要求的空间,例如堆空间、栈空间。
可学习参数为神经网络模型在训练过程中需要学习优化的参数,例如权值(weight)、偏置(bias),通常情况下,可学习参数对应于全连接层、卷积层等,即全连接层、卷积层存在对应的可学习参数。在一些情况下,模型文件中还可以包括可学习参数之外的其他参数,其他参数通常对应于神经网络模型的各个层,例如全连接层、卷积层、激活层、softmax层等。
由于在神经网络模型上线过程中,终端100无法复用全局静态存储区中的多个可学习参数,故本申请在目标空间中设置有模型数据全局内存块。其中,模型数据全局内存块是在目标空间中设置的、用于存储所有神经网络模型对应的可学习参数的内存。当神经网络模型在终端100启动时,终端100以全局静态存储区的存储格式记录多个可学习参数在全局静态存储区中的起始地址,以便后续根据该起始地址读取可学习参数。
在通过神经网络模型进行推理计算过程中,终端100会依次使用每个可学习参数构建网络并进行推理计算,当确定使用多个可学习参数中的目标可学习参数时,终端100可以根据起始地址并按照存储格式从全局静态存储区中读取目标可学习参数,并将读取到的目标可学习参数复制到模型数据全局内存块中,以利用模型数据全局内存块中的目标可学习参数进行推理计算。
例如图1中示出的多个可学习参数分别是可学习参数1、可学习参数2、可学习参数3、可学习参数4、……,当确定推理计算过程中需要使用可学习参数1时,则将可学习参数1作为目标可学习参数,复制到模型数据全局内存块中,从而利用可学习参数1构建网络并进行推理计算;当确定推理计算过程中需要使用可学习参数2时,则将可学习参数2作为目标可学习参数,复制到模型数据全局内存块中,从而利用可学习参数2构建网络并进行推理计算,依次类推,直到推理计算完成。
由于在记录起始地址以及从全局静态存储区中读取目标可学习参数时,采用的是全局静态存储区的存储格式,而非推理计算所需的其他格式(例如浮点格式),从而避免了按照浮点格式进行访问无法保证对齐访问的技术问题。并且,本申请在需要使用某个可学习参数时才将该可学习参数复制到模型数据全局内存块中,并非一次性将多个可学习参数全部复制到模型数据全局内存块中,并且在目标可学习参数使用完成后,释放模型数据全局内存块中存储的目标可学习参数,直到完成推理计算过程,使得内存中最多同时存在一份模型文件和当时需要使用的目标可学习参数,从而避免内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。可见,本申请在解决无法保证对齐访问的技术问题的基础上,避免了内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。
接下来,将结合附图对本申请实施例提供的神经网络模型上线方法进行详细介绍。参见图2,图2示出了一种神经网络模型上线方法的流程图,所述方法包括:
S201、当所述神经网络模型在所述电子设备启动时,以所述全局静态存储区的存储格式记录所述多个可学习参数在所述全局静态存储区中的起始地址。
在完成神经网络模型的训练,可以将训练好的神经网络模型上线,即由电子设备使用神经网络模型执行任务。该电子设备包括内存,内存包括全局静态存储区和目标空间,全局静态存储区中存储神经网络模型的模型文件,模型文件中包括神经网络模型对应的多个可学习参数,目标空间为内存中无对齐访问要求的空间,目标空间中设置有模型数据全局内存块,用来临时保存推理计算所需要的可学习参数。
内存可以被划分为多个区,内存被划分为多个区的方式可能不同,但是划分得到的多个区中基本上会包括堆空间和栈空间,而堆空间和栈空间无对齐访问要求,故在一种可能的实现方式中,目标空间可以包括内存中的栈空间或堆空间。当然,若内存被划分的多个区中还可以包括其他无对齐访问要求的空间,目标空间也可以包括该其他空间,本申请实施例对此不作限定。
目标空间中设置有模型数据全局内存块,而模型数据全局内存块也是内存的一部分,通常具有一定的容量(capacity)。由于模型数据全局内存块是为了存储多个可学习参数,因此,为了保证模型数据全局内存块能够存储多个可学习参数,在一种可能的实现方式中,可以根据多个可学习参数的数据量大小确定模型数据全局内存块的目标容量,从而在目标空间中设置有容量为目标容量的模型数据全局内存块。
通过这种方式可以实现根据预测的容量需求设置模型数据全局内存块的容量,从而保证后续使用过程中,模型数据全局内存块的空间充足。
在一些情况下,当目标空间包括堆空间时,由于堆空间比较灵活,在堆空间中可以随意更改模型数据全局内存块的大小,因此,在堆空间设置模型数据全局内存块时,可以随机设置模型数据全局内存块的初始容量,例如将初始容量随机设置为第一容量,第一容量可以是任意数值,例如可以是128*128。
当在可以灵活更改容量的堆空间中设置模型数据全局内存块时,可以随机设置模型数据全局内存块的初始容量,后续可以根据实际需求更改模型数据全局内存块的容量,从而提高模型数据全局内存块的设置效率,另外,根据实际需求调整模型数据全局内存块的容量,使得从而既保证模型数据全局内存块的空间充足,又避免不必要的内存浪费。
当神经网络模型在电子设备启动时,在本申请实施例中,并不会将全局静态存储区中的多个可学习参数全部复制到目标空间中,而是以全局静态存储区的存储格式记录多个可学习参数在全局静态存储区中的起始地址。
其中,全局静态存储区的存储格式可以是字符格式,故为了保证满足全局静态存储区的对齐访问的要求,可以以字符格式记录多个可学习参数在全局静态存储区中的起始地址,以便后续以字符格式读取所需的可学习参数(例如目标可学习参数),从而保证满足全局静态存储区的对齐访问要求。
可学习参数为神经网络模型在训练过程中需要学习优化的参数,例如权值(weight)、偏置(bias),在一些情况下,模型文件中还可以包括可学习参数之外的其他参数。由于不同神经网络模型的网络结构不同,则模型文件中包括的多个可学习参数的数量以及所对应的神经网络模型的网络层也可能有所不同。
假设神经网络模型的网络结构由两个全连接层(分别是全连接层1和全连接层2)、一个激活层和一个softmax层组成,其模型文件结构如图3所示。其中全连接层由其他参数、权值和偏置三部分组成,其他参数可以是任意格式(浮点(float)格式,整型(int)格式,字符(char)格式,或者布尔(bool)格式),权值可以为float格式或者char格式(量化网络,权值是char格式);偏置可以是float格式。激活层和softmax层都只包括其他参数,没有权值和偏置。
可以理解的是,在不同的应用场景下,可能存在不同的任务需求,而不同的任务需求对应需要执行的推理任务不同,从而导致使用的神经网络模型的数量也可能不同。
在一些应用场景下,其任务需求可能只有一种,故可能仅需要一个神经网络模型执行对应的推理任务。例如信息推荐场景中,其任务需求可能只是进行信息推荐,此时神经网络模型可以是信息推荐模型,用于执行信息推荐的推理任务。
在另一应用场景下,其任务需求可能有多种,可能需要多个神经网络模型分别执行对应的推理任务,从而多个神经网络配合满足该应用场景下的任务需求。在这种情况下,神经网络模型的数量可以为多个,不同的神经网络模型用于执行不同的推理任务,多个神经网络模型共同满足目标场景下的任务需求。例如,应用场景为空调语音控制场景,其任务需求可能包括唤醒空调、通过不同的语言例如普通话或粤语控制空调,在这种情况下,所使用到的神经网络模型可以包括语音唤醒模型、普通话指令识别模型、粤语指令识别模型。其中,语音唤醒模型用于执行语音唤醒的推理任务,普通话指令识别模型用于识别普通话的控制指令,粤语指令识别模型用于识别粤语的控制指令,通过这三个神经网络模型共同配合,满足空调语音控制场景下基于语音控制空调的任务需求。
需要说明的是,在本申请实施例中,虽然神经网络模型的数量可以是一个,也可以是多个,但是本申请实施例中设置的模型数据全局内存块是唯一的,即无论加载多少个神经网络模型,都只有一块模型数据全局内存块。
S202、在通过所述神经网络模型进行推理计算过程中,当确定使用所述多个可学习参数中的目标可学习参数时,根据所述起始地址并按照所述存储格式从所述全局静态存储区中读取所述目标可学习参数,并将读取到的所述目标可学习参数复制到所述模型数据全局内存块中。
在通过所述神经网络模型进行推理计算过程中,由于神经网络模型的不同网络层之间的计算是依次进行的,故不同网络层对应的可学习参数也是依次使用的。在确定需要使用某个可学习参数例如目标可学习参数后,可以根据起始地址并按照存储格式从全局静态存储区中读取目标可学习参数,并将读取到的目标可学习参数复制到模型数据全局内存块中。在一种可能的实现方式中,可以通过指针记录起始地址,并读取目标可学习参数。
由于采用的是全局静态存储区的存储格式记录起始地址并读取目标可学习参数,而非推理计算所需的其他格式(例如浮点格式),从而避免了按照浮点格式访问全局静态存储区而无法保证对齐访问的技术问题。
需要说明的是,由于目标空间中模型数据全局内存块的容量存在中设置方式,不同设置方式下,将读取到的目标可学习参数复制到模型数据全局内存块中的方式可能有所不同。若模型数据全局内存块的容量是根据多个可学习参数的数据量大小设置的,此时模型数据全局内存块基本可以满足目标可学习参数的数据量大小,故可以直接将目标可学习参数复制到模型数据全局内存块中。
然而,在一些情况下,例如目标空间包括堆空间,模型数据全局内存块的初始容量是随机设置的第一容量,此时无法得到第一容量是否可以满足目标可学习参数的数据量大小,因此,将读取到的目标可学习参数复制到模型数据全局内存块中的方式可以是将目标可学习参数的数据量大小与第一容量进行比对,若目标可学习参数的数据量大小大于第一容量,则在第一容量的基础上扩大模型数据全局内存块的容量,得到第二容量,从而将目标可学习参数复制到容量为第二容量的模型数据全局内存块中。若目标可学习参数的数据量大小小于第一容量,则可以直接将目标可学习参数复制到容量为第一容量的模型数据全局内存块中。
可以理解的是,在第一容量的基础上扩大模型数据全局内存块的容量时,为了保证一次性扩展成功,并且尽量避免过于频繁的扩大模型数据全局内存块的容量,在第一容量的基础上扩大的容量可以是1024个容量单位,例如1024字节、1024k、1024M等,其容量单位与初始容量的容量单位相同。
在使用模型数据全局内存块时,可以调用get_data函数实现上述步骤,该get_data函数中包括char格式的目标可学习参数的数据量大小和目标可学习参数的指针,可以表示为get_data(size_t size,char*weight)。在get_data函数中,会先判断目标可学习参数的数据量大小(size)是否大于第一容量(capacity),如果大于可以表示为(if(size>=_capacity)),则在第一容量的基础上对模型数据全局内存块的容量进行扩大,得到第二容量(可以表示为_capacity=_capacity+1024),从而将char格式的目标可学习参数复制到第二容量的模型数据全局内存块中,并将模型数据全局内存块的指针返回给调用者。
S203、利用所述模型数据全局内存块中的所述目标可学习参数进行推理计算,并在所述目标可学习参数使用完成后,释放所述模型数据全局内存块中存储的所述目标可学习参数,直到完成所述推理计算过程,以实现所述神经网络模型的上线。
在将目标可学习参数复制到模型数据全局内存块中后,可以利用模型数据全局内存块中的目标可学习参数进行推理计算,并在目标可学习参数使用完成后,释放模型数据全局内存块中存储的所述目标可学习参数,直到完成所述推理计算过程,以实现神经网络模型的上线。
通常情况下,推理计算过程中使用的格式可能与全局静态存储区的存储格式不同,例如推理计算过程中使用的格式是浮点格式,故可以将目标可学习参数转换成浮点格式再进行推理计算。其中,此处所说的推理计算可以是前向推理计算。
由于本申请实施例在需要使用某个可学习参数时才将该可学习参数复制到模型数据全局内存块中,并非一次性将多个可学习参数全部复制到模型数据全局内存块中,并且在目标可学习参数使用完成后,释放模型数据全局内存块中存储的目标可学习参数,直到完成推理计算过程,使得内存中最多同时存在一份模型文件和当时需要使用的目标可学习参数,从而避免内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。
对于图3中的例子,假设全连接层1的可学习参数的数据量大小为128×256,全连接层2的可学习参数的数据量大小为256×128,格式均为char,sizeof(char)=1,sizeof(float)=4。
忽略其他参数的数据量大小,则神经网络模型的可学习参数的数据量大小为128*256+256*4+256*64+64*4=67072B
按照相关技术的神经网络模型上线流程,神经网络模型的模型文件在全局静态存储区和堆空间中同时存在,故神经网络模型的模型文件在内存中需要占用67072B*2=134144B。
而使用本申请实施例提供的方法,内存中最多同时存在一份模型文件和当时需要使用的目标可学习参数,而多个可学习参数中目标可学习参数取最大值为32768B,则神经网络模型在内存中需要占用的内存大小为67072B+32768B=99840B,与相关技术相比,内存节省了34.4%。
随着神经网络模型的层数越深,神经网络模型的数量越多,内存节省效果越明显,可以显著减少内存占用。
由上述技术方案可以看出,在完成神经网络模型的训练,可以将训练好的神经网络模型上线,即由电子设备使用神经网络模型执行任务,该电子设备包括内存,内存包括全局静态存储区和目标空间,全局静态存储区中存储神经网络模型的模型文件,模型文件中包括神经网络模型对应的多个可学习参数,目标空间为内存中无对齐访问要求的空间。由于无法复用全局静态存储区中的多个可学习参数,本申请在目标空间中设置有模型数据全局内存块,当神经网络模型在电子设备启动时,以全局静态存储区的存储格式记录多个可学习参数在全局静态存储区中的起始地址。在通过神经网络模型进行推理计算过程中,当确定使用多个可学习参数中的目标可学习参数时,可以根据起始地址并按照存储格式从全局静态存储区中读取目标可学习参数,并将读取到的目标可学习参数复制到模型数据全局内存块中,以利用模型数据全局内存块中的目标可学习参数进行推理计算。由于在记录起始地址以及从全局静态存储区中读取目标可学习参数时,采用的是全局静态存储区的存储格式,而非推理计算所需的其他格式(例如浮点格式),从而避免了按照浮点格式进行访问无法保证对齐访问的技术问题。并且,本申请在需要使用某个可学习参数时才将该可学习参数复制到模型数据全局内存块中,并非一次性将多个可学习参数全部复制到模型数据全局内存块中,并且在目标可学习参数使用完成后,释放模型数据全局内存块中存储的目标可学习参数,直到完成推理计算过程,使得内存中最多同时存在一份模型文件和当时需要使用的目标可学习参数,从而避免内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。可见,本申请在解决无法保证对齐访问的技术问题的基础上,避免了内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。
需要说明的是,除了神经网络模型的可学习参数固定占用内存外,神经网络模型在进行推理计算过程中还会产生会话信息(session),神经网络模型产生的会话信息也需要占用内存。在这种情况下,目标空间中还可以设置有一个运行全局内存块,从而在通过神经网络模型进行推理计算过程中,将推理计算过程中产生的会话信息存储在运行全局内存块中。其中,其中,运行全局内存块是在目标空间中设置的、用于存储神经网络模型运行产生的所有会话信息的内存。运行全局内存块可以有不同的形式,例如运行全局内存块可以以链表的形式存在。
在这种情况下,本申请实施例不仅可以优化可学习参数所占用的内存,还可以对会话信息占用的内存进行优化,从而进行内存深度优化。
Session占用的内存包括中间结果占用和常驻结果(比如长短期记忆网络(LongShort-Term Memory,LSTM)的状态)占用,针对不同的Session,可以有不同的内存优化策略。内存优化一般是Session内优化,内存优化策略包括,(1)中间结果内存的复用;(2)内存用完即销毁等。
具体的,当会话信息包括中间结果时,可以将中间结果存储在运行全局内存块中,在基于中间结果进行推理计算产生目标结果后,释放运行全局内存块中存储的中间结果。也就是说,在神经网络模型进行推理计算,需要内存存放中间结果时,在运行全局内存块中申请一块内存,该内存的生存周期为利用该中间结果得到目标结果,并在用完后直接释放。
当会话信息包括常驻结果时,可以将常驻结果存储在运行全局内存块中,在推理计算过程结束后,释放运行全局内存块中存储的常驻结果。也就是说,在需要内存存放常驻结果时,在运行全局内存块中申请一块内存,该内存的生存周期与Session相同,则会在该神经网络模型的推理计算结束后一起释放。
可以理解的是,想要在低内存的芯片上线神经网络模型,甚至是上线多个神经网络模型,不仅需要Session内部的内存优化,也需要Session间进行内存优化,才能实现。
为此,在本申请实施例中,在目标空间中可以仅设置一个运行全局内存块,无论加载多少神经网络模型,有多少个Session,都只有一个运行全局内存块,从而实现运行全局内存块的复用,避免占用更多的内存,实现内存优化,解决内存不足的问题。
在针对神经网络模型在上述无闪存、低内存的电子设备上线的情况,除了针对电子设备进行内存优化,还可以从神经网络模型本身进行优化,即对神经网络模型进行压缩。由于神经网络模型的可学习参数例如weight、bias都是确定的,且波动不大,比较适合量化,故可以通过对可学习参数的量化处理来实现神经网络模型的压缩,即在本申请实施例中,可以对神经网络模型的可学习参数进行量化处理,得到量化处理后的可学习参数,此时全局静态存储区中存储的多个可学习参数为量化处理后的可学习参数。
在本申请实施例中,量化处理的方案可以包括多种,例如int8量化方案、int4量化方案等等,本申请实施例主要以int8量化方案为例进行介绍。int8量化方案使用了经典的动态对称量化方案,可以将神经网络模型的可学习参数的数据量大小缩小到四分之一,且具有算法简单,量化步骤耗时时间短的优点。
int8量化方案的算法介绍如图4所示,将处于-|max|和|max|的浮点格式的可学习参数映射为-127和127之间的整型数据域中,中间值按照线性关系进行映射,这种映射关系为不饱和的(No saturation),对称的。在进行映射时,需要先计算出缩放系数scale,然后使用线性映射的方式将原始的浮点格式的可学习参数转换到int8的数据域中,其映射公式可以参见如下所示:
real_value=scale*quantized_value
其中,real_value为真实值,即原始的浮点格式的可学习参数,quantized_value为量化处理后的可学习参数,即char格式,scale为缩放系数。|max|为输入的模最大值,由|max|可求出scale。
通过对神经网络模型的可学习参数的量化处理,可以压缩神经网络模型的大小,从而进一步降低电子设备的内存压力,提升了神经网络模型的推理计算速度,更友好的支持电子设备中神经网络模型的上线。
上述对本申请实施例提供的神经网络模型上线方法进行了详细介绍,接下来将结合实际应用场景对本申请实施例提供的方法进行介绍。该应用场景可以是空调语音控制场景,所使用到的神经网络模型可以包括语音唤醒模型、普通话指令识别模型、粤语指令识别模型,在该应用场景下,当完成上述神经网络模型的训练后,可以将训练得到的该多个神经网络模型进行上线,以利用该多个神经网络模型实现空调语音控制。
例如多个神经网络模型部署到电子设备上,该电子设备用于对空调进行语音控制,由于该电子设备的芯片是无闪存、低内存的ARM芯片,故本申请实施例提供的神经网络模型上线方法可以包括模型压缩和ARM内存优化两部分。
第一部分为模型压缩,可以通过int8量化方案对神经网络模型的可学习参数进行量化处理。
第二部分为ARM内存优化,ARM内存优化主要解决两个技术问题,第一个技术问题是ARM芯片无闪存,需要将模型文件复制到内存的堆空间中,从而导致要在全局静态存储区和堆空间中保存两份模型文件,浪费稀有的内存空间的问题;第二个技术问题是内存空间不足。
针对第一个技术问题,可以在堆空间中设置模型数据全局内存块,从而当神经网络模型在电子设备上启动时,不会将全局静态存储区中的多个可学习参数全部复制到目标空间中,而是以全局静态存储区的存储格式记录多个可学习参数在全局静态存储区中的起始地址。在通过神经网络模型进行推理计算过程中,当确定使用多个可学习参数中的目标可学习参数时,根据起始地址并按照存储格式从所述全局静态存储区中读取目标可学习参数,并将读取到的目标可学习参数复制到模型数据全局内存块中。利用模型数据全局内存块中的目标可学习参数进行推理计算,并在目标可学习参数使用完成后,释放模型数据全局内存块中存储的目标可学习参数,直到完成推理计算过程。
针对第二个技术问题,可以在堆空间中设置运行全局内存块,在通过神经网络模型进行推理计算过程中,当需要存放中间结果时,在运行全局内存块中申请一块内存,该内存的生存周期为利用该中间结果得到目标结果,并在用完后直接释放。当需要存放常驻结果时,在运行全局内存块中申请一块内存,该内存的生存周期与Session相同,则会在该神经网络模型的推理计算结束后一起释放。
该实施例中的每个步骤的具体实现方式可以参见图2对应的实施例中的描述,此处不再赘述。
需要说明的是,本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
基于图2对应实施例提供的神经网络模型上线方法,本申请实施例还提供一种神经网络模型上线装置500。参见图5,所述神经网络模型上线装置500部署在电子设备上,所述电子设备包括内存,所述内存包括全局静态存储区和目标空间,所述全局静态存储区中存储神经网络模型的模型文件,所述模型文件中包括所述神经网络模型对应的多个可学习参数,所述目标空间为所述内存中无对齐访问要求的空间,所述目标空间中设置有模型数据全局内存块,所述神经网络模型上线装置500包括记录单元501、复制单元502、推理单元503和释放单元504:
所述记录单元501,用于当所述神经网络模型在所述电子设备启动时,以所述全局静态存储区的存储格式记录所述多个可学习参数在所述全局静态存储区中的起始地址;
所述复制单元502,用于在通过所述神经网络模型进行推理计算过程中,当确定使用所述多个可学习参数中的目标可学习参数时,根据所述起始地址并按照所述存储格式从所述全局静态存储区中读取所述目标可学习参数,并将读取到的所述目标可学习参数复制到所述模型数据全局内存块中;
所述推理单元503,用于利用所述模型数据全局内存块中的所述目标可学习参数进行推理计算;
所述释放单元504,用于在所述目标可学习参数使用完成后,释放所述模型数据全局内存块中存储的所述目标可学习参数,直到完成所述推理计算过程,以实现所述神经网络模型的上线。
在一种可能的实现方式中,所述目标空间包括所述内存中的栈空间或堆空间。
在一种可能的实现方式中,所述装置还包括确定单元:
所述确定单元,用于根据所述多个可学习参数的数据量大小确定所述模型数据全局内存块的目标容量,所述目标空间中设置有容量为所述目标容量的模型数据全局内存块。
在一种可能的实现方式中,若所述目标空间包括堆空间,所述模型数据全局内存块的初始容量随机设置为第一容量,所述复制单元502具体用于:
将所述目标可学习参数的数据量大小与所述第一容量进行比对;
若所述目标可学习参数的数据量大小大于所述第一容量,在所述第一容量的基础上扩大所述模型数据全局内存块的容量,得到第二容量;
将所述目标可学习参数复制到容量为所述第二容量的模型数据全局内存块中;
若所述目标可学习参数的数据量大小小于所述第一容量,将所述目标可学习参数复制到容量为所述第一容量的模型数据全局内存块中。
在一种可能的实现方式中,所述目标空间中还设置有一个运行全局内存块,所述装置还包括存储单元:
所述存储单元,用于在通过所述神经网络模型进行推理计算过程中,将所述推理计算过程中产生的会话信息存储在所述运行全局内存块中。
在一种可能的实现方式中,所述会话信息包括中间结果,所述释放单元504,还用于:
在基于所述中间结果进行推理计算产生目标结果后,释放所述运行全局内存块中存储的中间结果。
在一种可能的实现方式中,所述会话信息包括常驻结果,所述释放单元504,还用于:
在所述推理计算过程结束后,释放所述运行全局内存块中存储的常驻结果。
在一种可能的实现方式中,所述神经网络模型的数量为多个,不同的神经网络模型用于执行不同的推理任务,多个神经网络模型共同满足目标场景下的任务需求。
在一种可能的实现方式中,所述装置还包括量化单元:
所述量化单元,用于对所述神经网络模型的可学习参数进行量化处理,得到量化处理后的可学习参数,所述多个可学习参数为量化处理后的可学习参数。
由上述技术方案可以看出,在完成神经网络模型的训练,可以将训练好的神经网络模型上线,即由电子设备使用神经网络模型执行任务,该电子设备包括内存,内存包括全局静态存储区和目标空间,全局静态存储区中存储神经网络模型的模型文件,模型文件中包括神经网络模型对应的多个可学习参数,目标空间为内存中无对齐访问要求的空间。由于无法复用全局静态存储区中的多个可学习参数,本申请在目标空间中设置有模型数据全局内存块,当神经网络模型在电子设备启动时,以全局静态存储区的存储格式记录多个可学习参数在全局静态存储区中的起始地址。在通过神经网络模型进行推理计算过程中,当确定使用多个可学习参数中的目标可学习参数时,可以根据起始地址并按照存储格式从全局静态存储区中读取目标可学习参数,并将读取到的目标可学习参数复制到模型数据全局内存块中,以利用模型数据全局内存块中的目标可学习参数进行推理计算。由于在记录起始地址以及从全局静态存储区中读取目标可学习参数时,采用的是全局静态存储区的存储格式,而非推理计算所需的其他格式(例如浮点格式),从而避免了按照浮点格式进行访问无法保证对齐访问的技术问题。并且,本申请在需要使用某个可学习参数时才将该可学习参数复制到模型数据全局内存块中,并非一次性将多个可学习参数全部复制到模型数据全局内存块中,并且在目标可学习参数使用完成后,释放模型数据全局内存块中存储的目标可学习参数,直到完成推理计算过程,使得内存中最多同时存在一份模型文件和当时需要使用的目标可学习参数,从而避免内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。可见,本申请在解决无法保证对齐访问的技术问题的基础上,避免了内存中同时存在两份模型文件,大大降低稀有内存空间的浪费。
本申请实施例还提供了一种电子设备,该电子设备可以执行神经网络模型上线方法。该电子设备例如可以是终端,以终端为智能手机为例:
图6示出的是与本申请实施例提供的智能手机的部分结构的框图。参考图6,智能手机包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路610、存储器620、输入单元630、显示单元640、传感器650、音频电路660、无线保真(英文缩写:WiFi)模块670、处理器680、以及电源690等部件。输入单元630可包括触控面板631以及其他输入设备632,显示单元640可包括显示面板641,音频电路660可以包括扬声器661和传声器662。可以理解的是,图6中示出的智能手机结构并不构成对智能手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储器620可用于存储软件程序以及模块,处理器680通过运行存储在存储器620的软件程序以及模块,从而执行智能手机的各种功能应用以及数据处理。存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据智能手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器680是智能手机的控制中心,利用各种接口和线路连接整个智能手机的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行智能手机的各种功能和处理数据。可选的,处理器680可包括一个或多个处理单元;优选的,处理器680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器680中。
在本实施例中,智能手机中的处理器680可以执行以下步骤:
当所述神经网络模型在所述电子设备启动时,以所述全局静态存储区的存储格式记录所述多个可学习参数在所述全局静态存储区中的起始地址;
在通过所述神经网络模型进行推理计算过程中,当确定使用所述多个可学习参数中的目标可学习参数时,根据所述起始地址并按照所述存储格式从所述全局静态存储区中读取所述目标可学习参数,并将读取到的所述目标可学习参数复制到所述模型数据全局内存块中;
利用所述模型数据全局内存块中的所述目标可学习参数进行推理计算,并在所述目标可学习参数使用完成后,释放所述模型数据全局内存块中存储的所述目标可学习参数,直到完成所述推理计算过程,以实现所述神经网络模型的上线。
本申请实施例提供的电子设备还可以是服务器,请参见图7所示,图7为本申请实施例提供的服务器700的结构图,服务器700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,简称CPU)722(例如,一个或一个以上处理器)和存储器732,一个或一个以上存储应用程序742或数据744的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器732和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器722可以设置为与存储介质730通信,在服务器700上执行存储介质730中的一系列指令操作。
服务器700还可以包括一个或一个以上电源726,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口758,和/或,一个或一个以上操作系统741,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
在本实施例中,服务器700中的中央处理器722可以执行以下步骤:
当所述神经网络模型在所述电子设备启动时,以所述全局静态存储区的存储格式记录所述多个可学习参数在所述全局静态存储区中的起始地址;
在通过所述神经网络模型进行推理计算过程中,当确定使用所述多个可学习参数中的目标可学习参数时,根据所述起始地址并按照所述存储格式从所述全局静态存储区中读取所述目标可学习参数,并将读取到的所述目标可学习参数复制到所述模型数据全局内存块中;
利用所述模型数据全局内存块中的所述目标可学习参数进行推理计算,并在所述目标可学习参数使用完成后,释放所述模型数据全局内存块中存储的所述目标可学习参数,直到完成所述推理计算过程,以实现所述神经网络模型的上线。
根据本申请的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行前述各个实施例所述的神经网络模型上线方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述实施例各种可选实现方式中提供的方法。
上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术成员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (15)
1.一种神经网络模型上线方法,其特征在于,所述方法由电子设备执行,所述电子设备包括内存,所述内存包括全局静态存储区和目标空间,所述全局静态存储区中存储神经网络模型的模型文件,所述模型文件中包括所述神经网络模型对应的多个可学习参数,所述目标空间为所述内存中无对齐访问要求的空间,所述目标空间中设置有模型数据全局内存块,所述方法包括:
当所述神经网络模型在所述电子设备启动时,以所述全局静态存储区的存储格式记录所述多个可学习参数在所述全局静态存储区中的起始地址;
在通过所述神经网络模型进行推理计算过程中,当确定使用所述多个可学习参数中的目标可学习参数时,根据所述起始地址并按照所述存储格式从所述全局静态存储区中读取所述目标可学习参数,并将读取到的所述目标可学习参数复制到所述模型数据全局内存块中;
利用所述模型数据全局内存块中的所述目标可学习参数进行推理计算,并在所述目标可学习参数使用完成后,释放所述模型数据全局内存块中存储的所述目标可学习参数,直到完成所述推理计算过程,以实现所述神经网络模型的上线。
2.根据权利要求1所述的方法,其特征在于,所述目标空间包括所述内存中的栈空间或堆空间。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据所述多个可学习参数的数据量大小确定所述模型数据全局内存块的目标容量,所述目标空间中设置有容量为所述目标容量的模型数据全局内存块。
4.根据权利要求2所述的方法,其特征在于,若所述目标空间包括堆空间,所述模型数据全局内存块的初始容量随机设置为第一容量,所述将读取到的所述目标可学习参数复制到所述模型数据全局内存块中,包括:
将所述目标可学习参数的数据量大小与所述第一容量进行比对;
若所述目标可学习参数的数据量大小大于所述第一容量,在所述第一容量的基础上扩大所述模型数据全局内存块的容量,得到第二容量;
将所述目标可学习参数复制到容量为所述第二容量的模型数据全局内存块中;
若所述目标可学习参数的数据量大小小于所述第一容量,将所述目标可学习参数复制到容量为所述第一容量的模型数据全局内存块中。
5.根据权利要求1所述的方法,其特征在于,所述目标空间中还设置有一个运行全局内存块,所述方法还包括:
在通过所述神经网络模型进行推理计算过程中,将所述推理计算过程中产生的会话信息存储在所述运行全局内存块中。
6.根据权利要求5所述的方法,其特征在于,所述会话信息包括中间结果,所述方法还包括:
在基于所述中间结果进行推理计算产生目标结果后,释放所述运行全局内存块中存储的中间结果。
7.根据权利要求5所述的方法,其特征在于,所述会话信息包括常驻结果,所述方法还包括:
在所述推理计算过程结束后,释放所述运行全局内存块中存储的常驻结果。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述神经网络模型的数量为多个,不同的神经网络模型用于执行不同的推理任务,多个神经网络模型共同满足目标场景下的任务需求。
9.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
对所述神经网络模型的可学习参数进行量化处理,得到量化处理后的可学习参数,所述多个可学习参数为量化处理后的可学习参数。
10.一种神经网络模型上线装置,其特征在于,所述装置部署在电子设备,所述电子设备包括内存,所述内存包括全局静态存储区和目标空间,所述全局静态存储区中存储神经网络模型的模型文件,所述模型文件中包括所述神经网络模型对应的多个可学习参数,所述目标空间为所述内存中无对齐访问要求的空间,所述目标空间中设置有模型数据全局内存块,所述装置包括记录单元、复制单元、推理单元和释放单元:
所述记录单元,用于当所述神经网络模型在所述电子设备启动时,以所述全局静态存储区的存储格式记录所述多个可学习参数在所述全局静态存储区中的起始地址;
所述复制单元,用于在通过所述神经网络模型进行推理计算过程中,当确定使用所述多个可学习参数中的目标可学习参数时,根据所述起始地址并按照所述存储格式从所述全局静态存储区中读取所述目标可学习参数,并将读取到的所述目标可学习参数复制到所述模型数据全局内存块中;
所述推理单元,用于利用所述模型数据全局内存块中的所述目标可学习参数进行推理计算;
所述释放单元,用于在所述目标可学习参数使用完成后,释放所述模型数据全局内存块中存储的所述目标可学习参数,直到完成所述推理计算过程,以实现所述神经网络模型的上线。
11.根据权利要求10所述的装置,其特征在于,所述目标空间包括所述内存中的栈空间或堆空间。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括确定单元:
所述确定单元,用于根据所述多个可学习参数的数据量大小确定所述模型数据全局内存块的目标容量,所述目标空间中设置有容量为所述目标容量的模型数据全局内存块。
13.一种电子设备,其特征在于,所述电子设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-9任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码当被处理器执行时使所述处理器执行权利要求1-9任一项所述的方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210704144.XA CN115113814B (zh) | 2022-06-21 | 2022-06-21 | 一种神经网络模型上线方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210704144.XA CN115113814B (zh) | 2022-06-21 | 2022-06-21 | 一种神经网络模型上线方法和相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115113814A true CN115113814A (zh) | 2022-09-27 |
CN115113814B CN115113814B (zh) | 2024-02-02 |
Family
ID=83328237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210704144.XA Active CN115113814B (zh) | 2022-06-21 | 2022-06-21 | 一种神经网络模型上线方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115113814B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115981666A (zh) * | 2023-03-21 | 2023-04-18 | 北京探境科技有限公司 | 神经网络信息整合方法、装置、系统及存储介质 |
CN118210554A (zh) * | 2024-05-21 | 2024-06-18 | 北京壁仞科技开发有限公司 | 处理器、服务器、数据处理方法与装置、存储介质和产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445823A (zh) * | 2019-09-04 | 2021-03-05 | 华为技术有限公司 | 神经网络结构的搜索方法、图像处理方法和装置 |
US20210133552A1 (en) * | 2017-01-19 | 2021-05-06 | Nec Corporation | Neural network learning device, neural network learning method, and recording medium on which neural network learning program is stored |
US20220004867A1 (en) * | 2020-07-01 | 2022-01-06 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Optimizer learning method and apparatus, electronic device and readable storage medium |
CN114528966A (zh) * | 2022-01-27 | 2022-05-24 | 山东浪潮科学研究院有限公司 | 一种本地学习方法、设备及介质 |
CN114626500A (zh) * | 2020-12-09 | 2022-06-14 | 华为技术有限公司 | 一种神经网络计算方法及相关设备 |
-
2022
- 2022-06-21 CN CN202210704144.XA patent/CN115113814B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210133552A1 (en) * | 2017-01-19 | 2021-05-06 | Nec Corporation | Neural network learning device, neural network learning method, and recording medium on which neural network learning program is stored |
CN112445823A (zh) * | 2019-09-04 | 2021-03-05 | 华为技术有限公司 | 神经网络结构的搜索方法、图像处理方法和装置 |
US20220004867A1 (en) * | 2020-07-01 | 2022-01-06 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Optimizer learning method and apparatus, electronic device and readable storage medium |
CN114626500A (zh) * | 2020-12-09 | 2022-06-14 | 华为技术有限公司 | 一种神经网络计算方法及相关设备 |
CN114528966A (zh) * | 2022-01-27 | 2022-05-24 | 山东浪潮科学研究院有限公司 | 一种本地学习方法、设备及介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115981666A (zh) * | 2023-03-21 | 2023-04-18 | 北京探境科技有限公司 | 神经网络信息整合方法、装置、系统及存储介质 |
CN115981666B (zh) * | 2023-03-21 | 2023-07-21 | 北京探境科技有限公司 | 神经网络信息整合方法、装置、系统及存储介质 |
CN118210554A (zh) * | 2024-05-21 | 2024-06-18 | 北京壁仞科技开发有限公司 | 处理器、服务器、数据处理方法与装置、存储介质和产品 |
Also Published As
Publication number | Publication date |
---|---|
CN115113814B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115113814B (zh) | 一种神经网络模型上线方法和相关装置 | |
US20180300615A1 (en) | Power-efficient deep neural network module configured for parallel kernel and parallel input processing | |
CN102693145B (zh) | 用于嵌入式系统的差分升级方法 | |
CN105045603A (zh) | 一种构建有限状态机模型框架的方法、装置及电子装置 | |
CN102498522A (zh) | 用于减小固态器件中的写入放大的容器标记方案 | |
JP6276470B2 (ja) | ポータブルコンピューティングデバイスの揮発性メモリのスタンバイ電力を低減するためのシステムおよび方法 | |
CN113313247B (zh) | 基于数据流架构的稀疏神经网络的运算方法 | |
CN112766596A (zh) | 建筑能耗预测模型的构建方法、能耗预测方法及装置 | |
CN111369430B (zh) | 基于移动深度学习引擎的移动端人像智能背景替换方法 | |
CN110598855A (zh) | 深度学习模型生成方法、装置、设备及存储介质 | |
CN111898751B (zh) | 一种数据处理的方法、系统、设备及可读存储介质 | |
CN100377086C (zh) | 嵌入式系统中直接从文件系统运行程序的实现方法 | |
CN113590304A (zh) | 一种业务数据处理方法、装置、计算机设备及存储介质 | |
CN113704299A (zh) | 一种模型训练方法、装置、存储介质及计算机设备 | |
CN1694068A (zh) | 包括与非闪存的移动通信终端及其引导方法 | |
CN113065663A (zh) | 一种数据访问方法、装置、设备和存储介质 | |
CN114428761B (zh) | 一种基于fpga的神经网络编曲方法及装置 | |
CN112200310A (zh) | 智能处理器、数据处理方法及存储介质 | |
CN105335135A (zh) | 数据处理方法和中心节点 | |
CN108647782B (zh) | 一种降低神经网络芯片中eDRAM刷新能耗的方法及系统 | |
CN112668659A (zh) | 模型训练方法、平台和电子设备 | |
CN115981666B (zh) | 神经网络信息整合方法、装置、系统及存储介质 | |
CN111177068A (zh) | 一种高度可配硬件加速方法和装置 | |
CN113760380A (zh) | 网络模型的运行代码的确定方法、装置、设备及存储介质 | |
CN118312766B (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 |