CN111240606A - 一种基于安全内存的存储优化方法及系统 - Google Patents
一种基于安全内存的存储优化方法及系统 Download PDFInfo
- Publication number
- CN111240606A CN111240606A CN202010329956.1A CN202010329956A CN111240606A CN 111240606 A CN111240606 A CN 111240606A CN 202010329956 A CN202010329956 A CN 202010329956A CN 111240606 A CN111240606 A CN 111240606A
- Authority
- CN
- China
- Prior art keywords
- weight
- memory
- quantization
- data
- demand
- 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.)
- Pending
Links
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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
Abstract
本说明书一个或多个实施例涉及一种基于安全内存的存储优化方法;所述方法包括:获取安全内存的可用容量;获取模型或者模型某一层的待计算数据;获取所述模型或者模型某一层的权重;根据所述权重,以及所述待计算数据,确定内存需求量;所述内存需求量为完成计算预计需要占用的安全内存的存储空间;将所述内存需求量与所述内存的可用容量进行对比;当比较结果满足预设条件时,对所述权重进行修正,获取量化权重,基于所述量化权重进行计算;所述量化权重对内存的需求量小于所述权重对内容的需求量。
Description
技术领域
本说明书一个或多个实施例涉及存储器存储优化,特别涉及一种基于安全内存的存储优化方法及系统。
背景技术
在数据分析、数据挖掘、经济预测等领域,由于计算量巨大,常常使用第三方云计算的方式计算、分析和发现潜在的数据价值。由于计算过程不在本地进行,为保证数据安全和模型安全,第三方平台常常使用安全内存保护用户数据隐私性和安全性。安全内存在提供数据安全的同时,也对云计算节点提出了内存限制。
因此,有必要提出一种安全内存的存储优化方法及系统,以提高安全内存的存储效率。
发明内容
本说明书实施例的一个方面提供一种基于安全内存的存储优化方法;所述方法包括:获取安全内存的可用容量;获取模型或者模型某一层的待计算数据;获取所述模型或者模型某一层的权重;根据所述权重,以及所述待计算数据,确定内存需求量;所述内存需求量为完成计算预计需要占用的安全内存的存储空间;将所述内存需求量与所述内存的可用容量进行对比;当比较结果满足预设条件时,对所述权重进行修正,获取量化权重,基于所述量化权重进行计算;所述量化权重对内存的需求量小于所述权重对内容的需求量。
本说明书实施例的另一个方面提供一种基于内存的存储优化系统,所述系统包括:可用容量获取模块,用于获取内存的可用容量;数据获取模块,用于获取模型或者模型某一层的待计算数据和权重;内存需求量确定模块,用于根据所述权重,以及所述待计算数据,确定内存需求量;所述内存需求量为完成计算预计需要占用的存储空间;数据对比模块,用于比较所述内存需求量与所述可用容量的关系;以及数据更新模块,用于当比较结果满足预设条件时,对所述权重进行修正,获取量化权重,基于所述量化权重进行计算;所述量化权重对内存的需求量小于所述权重对内容的需求量。
本说明书实施例的另一个方面提供一种基于安全内存的存储优化装置,所述装置包括处理器以及存储器;所述存储器用于存储指令,所述处理器用于执行所述指令,以实现所述基于安全内存的存储优化方法对应的操作。
附图说明
本说明书将以示例性实施例的方式进一步描述,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的基于安全内存的存储优化系统的示例性应用场景图;
图2是根据本说明书一些实施例所示的一种基于安全内存的存储优化方法的示例性流程图;以及
图3是根据本说明书的另外一些实施例所示的基于安全内存的存储优化方法的示例性流程图。
图4是根据本说明书的一些实施例所示的基于量化权重进行迭代量化的示例性流程图。
具体实施方式
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本说明书中所使用的“系统”、“装置”、“模块”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
在经济、文化、教育、医疗、公共管理等各行各业充斥着大量信息数据,对这些数据进行例如数据分析、数据挖掘以及趋势预测等数据处理和分析在越来越多场景中得到广泛应用。由于数据量巨大,数据处理和分析需求的计算量非常大,在本地计算机内进行数据处理对计算机的配置提出了很高的要求。更高的计算机配置会产生更高的计算成本和运维成本。为更好地获得精确的计算结果,降低计算成本,数据拥有方常常通过第三方云计算平台进行大数据分析和计算。
为保证数据安全和模型安全,在一些实施例中,第三方平台常常使用安全内存以保护用户数据私密性和安全性。在一些实施例中,可以采用SGX技术(Software GuardExtensions)对安全内存中存储的数据进行保护。SGX 提供了一系列硬件设计以及拓展指令集,使得远程用户能够在第三方云计算平台执行可以保护用户数据私密性及计算完整性的程序。在该场景的实施例中,安全内存存储的数据和/或代码可以被严格保护不被外部软件访问和泄露。当非安全内存存储的外部数据需要存储进安全内存时,所述外部数据必须被检验和分析。如果外部存储的数据超过安全内存限制大小,会导致安全内存与非安全内存区域发生交互,从而引起性能的下降。在一些实施例中,安全内存在提供数据安全的同时,也对云计算节点提出了内存限制。在一些实施例中,安全内存的大小不超过128MB。例如,当单个计算节点批量处理神经网络安全计算的请求时,往往会占用很多内存从而超过安全内存的限制。在这种场景下,如何让已有的安全计算的请求能够满足安全内存的要求同时保持一定的性能便成为安全内存应用中急需要解决的一个问题。
在一些实施例中,可以通过减少当前时刻的处理请求个数的方式从而使得计算过程满足安全内存的限制。例如,某节点目前时刻的处理请求个数为20个数据,当出现使用内存超过安全内存的限制时,直接将目前时刻的处理请求个数减少至8个数据,以满足安全内存的限制。减少当前时刻的处理请求个数可以使得计算过程满足安全内存的限制,但会大大降低计算的效率。
在一些实施例中,还可以采用增加计算节点的方式将过剩的计算请求个数发送给新增节点。例如,可以通过增设更多的安全内存以满足计算请求个数的需求。但是更多的安全内存会导致服务费用和维护成本的上升。
在一些实施例中,还可以对现有的神经网络进行量化,从而降低模型的参数以及中间计算结果的存储量。例如,可以对现有的神经网络权重进行整数量化,以降低其占用的内存。在该场景的实施例中,可以在安全内存的限制下,一次能够处理更多的请求数,同时保证计算数据不会超出安全内存的上限。
图1是根据本说明书一些实施例所示的基于安全内存的存储优化系统的示例性应用场景图。
在一些实施例中,基于安全内存的存储优化系统100可以包括安全内存120、服务器130和网络140。
安全内存120主要用于存储神经网络110产生的各种数据。在一些实施例中,所述安全内存120可以仅有一个,用于存储神经网络所有的参数,包括输入值和\或输入值。在一些实施例中,安全内存120可以泛指具有存储功能的设备。在一些实施例中,存储设备可包括大容量存储器、可移动存储器、易失性读写存储器、只读存储器(ROM)等或其任意组合。在一些实施例中,安全内存120可以是本地的,也可以是远程的。
神经网络模型110可以包括输入端101,神经网络层102 以及输出端103。神经网络模型的输入端101 用于接收输入值,并将输入值输入到神经网络层102中。如图1所示,神经网络层102 可以包括一个或多个运算层,所述一个或多个运算层中可以包括一个或多个感知器。在一些实施例中,每个感知器中可以包括一个或多个参数。具体地,每个感知器自身可以包括各自的待计算数据和原始权重矩阵。所述待计算数据指的是感知器的输入和/或输出数据。神经网络层102 中的每个感知器都可以接收上一感知器的输出作为该节点的输入,运算后将结果输出至后一运算层的感知器中。其中第一运算层的节点接收输入端的所有的输入值,最后运算层的节点的运算结果输出到输出端103。输出端103用于接收神经网络层的运算结果,并将运算结果作为神经网络模型的输出值。例如,神经网络层102 的最后一层运算层中一个或多个感知器的运算结果分别是Y1、Y2、…、Yn ,则输出端103 将Y1、Y2、…、Yn作为神经网络模型的输出值输出。显而易见的是,可以通过调整神经网络层102中最后一层运算层的节点数量来确定该神经网络模型的输出值数量。
在一些实施例中,所述安全内存120可以有多个。例如,所述安全内存120包括有安全内存120-1,安全内存120-2,以至安全内存120-n。所述多个安全内存对应存储神经网络110中一个或多个感知器数据的存储。在一些实施例中,所述多个安全内存分别对应于神经网络不同运算层或不同感知器中数据的存储。例如,安全内存120-1存储第一层运算层的感知器数据;安全内存120-n存储第n层运算层的感知器数据。在一些替代性实施例中,所述多个安全内存120分别存储神经网络若干个不同运算层的数据的存储。例如,安全内存120-1存储第1层至第3层运算层的感知器数据;安全内存120-3存储第7层至第9层运算层的感知器数据。
网络140可以促进信息和/或数据的交换。在一些实施例中,所述多个安全内存之间通过网络140进行连接。在一些实施例中,基于安全内存的存储优化系统100的一个或以上部件可以经由网络140向所述系统100中的其他有数据传输需求的部件发送信息和/或数据。例如,服务器130可以经由网络140从安全内存120中获得一个或多个感知器的权重和待计算数据。又例如,服务器130可以经由网络140从安全内存120中获得安全内存的可用容量。在一些实施例中,网络140可以为单一网络,也可以是多种网络的组合。网络可以包括但不限于局域网、广域网、公用网络、专用网络、无线局域网、虚拟网络、都市城域网、公用交换电话网络等中的一种或几种的组合。网络可以包括多种网络接入点,如有线或无线接入点、基站或网络交换点,通过以上接入点使数据源连接网络并通过网络发送信息。
在一些实施例中,所述服务器130通过网络140与安全内存120相连。所述服务器130可以获取安全内存120中存储的一个或多个感知器的权重和待计算数据。在一些实施例中,服务器130可以基于获取到的一个或感知器的权重和待计算数据计算内存需求量,所述内存需求量指的是完成计算预计需要占用的存储空间。
在一些实施例中,所述服务器130还可以获取所述安全内存120的可用容量。在该场景的实施例中,服务器130可以基于所述安全内存120的可用容量和内存需求量进行对比,分析处理后生成对比结果。在一些实施例中,所述服务器130可以是单个服务器,也可以是一个服务器群组。一个服务器群组可以是集中式的,例如数据中心。一个服务器群组也可以是分布式的,例如一个分布式系统。在一些替代性实施例中,所述服务器群组可以是与所述安全内存的数量一一对应的。例如,当所述安全内存有n个时,所述服务器也可以有n个,并与所述安全内存一一对应。在一些其他实施例中,所述安全内存可以是与所述服务器设计为一体的机器,例如一个服务终端等。
在一些实施例中,服务器130还可以包括用于执行指令(程序代码)的控制处理器132。例如,控制处理器132能够执行对内存需求量和可用内存对比的程序指令,进而通过一定的算法对所述内存需求量进行分析处理以确定对比结果。
在一些实施例中,在以服务器为执行主体的系统中,所述基于内存的存储优化系统可以包括可用容量获取模块、数据获取模块、内存需求量确定模块、数据对比模块、数据更新模块。上述模块均在应用场景所介绍的计算系统中执行,各模块包括各自的指令,指令可存储在存储介质上,指令可在处理器中执行。不同的模块可以位于相同的设备上,也可以位于不同的设备上。它们之间可以通过程序接口、网络等进行数据的传输,可以从安全内存中读取数据或者将数据写入到安全内存中。
可用容量获取模块,用于获取内存的可用容量;
数据获取模块,用于获取模型或者模型某一层的待计算数据和权重;
内存需求量确定模块,用于根据所述权重,以及所述待计算数据,确定内存需求量;所述内存需求量为完成计算预计需要占用的存储空间。
数据对比模块,用于比较所述内存需求量与所述可用容量的关系;
数据更新模块,用于当比较结果满足预设条件时,对所述权重进行修正,获取量化权重,基于所述量化权重进行计算;所述量化权重对内存的需求量小于所述权重对内容的需求量。
在一些实施例中,所述数据对比模块可以用于判断所述内存需求量与可用容量的关系是否满足预设条件,所述预设条件包括:所述内存需求量大于所述安全内存的可用容量。
在一些实施例中,所述数据更新模块用于确定所述权重的最大值与最小值;根据所述权重最大值与最小值,确定对应于权重的权值表示;所述权值表示用于表示权重的存储位数;根据所述权值表示,得到量化权重矩阵。
在一些实施例中,所述数据更新模块还用于确定权重的量化系数;所述量化系数是指权重缩放的系数;根据所述权重的量化系数、最大值与最小值,确定所述权重的整数位数和小数位数;根据所述权重的整数位数和小数位数确定权重的权值表示。
在一些实施例中,所述内存需求量确定模块用于基于所述量化权重更新内存需求量。在该场景的实施例中,所述数据对比模块将所述更新后的内存需求量与所述可用容量进行对比;当比较结果满足预设条件时,所述数据更新模块更新所述待计算数据和/或者所述量化权重,使得所述安全内存需求量小于所述安全内存的可用容量。
在一些实施例中,所述数据更新模块还用于,少所述待计算数据,使得更新后的所述内存需求量小于所述安全内容的存储容量。在一些其他实施例中,所述数据更新模块还用于,对所述量化权重矩阵进行迭代量化,并基于迭代量化后的量化权重矩阵更新所述内存需求量,使得更新后的所述内存需求量小于所述安全内容的存储容量;所述迭代量化指的是对所述量化权重再一次进行量化。
在一些实施例中,所述模型包括神经网络模型。特别地,所述基于安全内存的存储优化系统可用于神经网络前向传播。在一些实施例中,神经网络中任意一层或几层产生的数据可以存储在一个安全内存中。所述存储优化系统可通过权重和待处理数据预估存储在所述安全内存内的内存需求量。若内存需求量大于所述安全内存的可用容量,所述存储优化系统对权重和/或待处理数据进行处理,使得内存需求量不大于所述安全内存的可用容量。
在一些实施例中,所述存储优化系统还可以用于处理可信执行环境中的数据。所述可信执行环境,指的是处理器内的安全区域,这一安全区域运行在一个独立的环境中且与操作系统并行运行。具体地,所述安全内存分布在可信执行环境内,用于存储可信执行环境中产生和计算的数据。
应当理解,本说明书一个或多个实施中的所述系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本申请的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于处理设备及其模块的描述,仅为描述方便,并不能把本申请限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。
图2是根据本说明书的一些实施例所示的基于安全内存的存储优化方法的示例性示意图。
本说明书中的变量名称、公式仅为更好地理解本说明书所述的方法。在应用本说明书时,基于常见的运算原理和机器学习原理,可以对下述过程、变量名称、公式做各种非实质性的变换,例如调换行或列的次序、在矩阵乘法时变换为等价形式、以其他计算形式来表示同一计算等。
需要说明的是,在本说明书中所涉及的一个或多个实施例的方法不仅可以应用于神经网络前向传播,也可以应用于神经网络反向传播。所述神经网络前向传播是指由输入值根据层层计算得到输出值,所述神经网络反向传播是指由输出值根据层层计算反向更新输入值。在以下一个或多个实施例中,以神经网络前向传播为例进行说明。
在本说明书中,约定按以下方式表示:
在一些实施例中,存在一个安全内存,其可用容量约定表示为A。在一些实施例中,存在n个安全内存,则其可用容量可分别为A1、A2、A3、…An。
模型的输入值、权重、输出值分别可以用X,w,Y来表示;输入值、权重、输出值所占存储空间大小分别为KX、Kw、Ky。模型的内存需求量为K且K=Kx+Kw+Ky。
在一些实施例中,所述输入值X、权重w、输出值Y可以表示如图1中神经网络某个感知器的输入值、权重、输出值。
在一些实施例中,所述输入值X、权重w、输出值Y还可以表示如图1中神经网络网络层102中某一个或多个运算层中的的输入值、权重、输出值。在该场景的实施例中,所述输入值X、权重w、输出值Y可以是一个矩阵或任意的变量。
在本说明书的表示中,
在一些实施例中,所述模型输入值X可以为一个M*N的矩阵,包含M*N个数据;所述权重w可以为一个1*M的行向量,包含1*M个数据;所述输出值Y可以为一个1*N的行向量,包含1*N个数据。其中,M和N分别表示权重的维度和输出值的数据个数。M和N可以是一个大于等于1的自然数,如1、4、7、11等。
在一些实施例中,每个数据的存储大小是可以确定的。通过数据的存储大小既可以知道输入值、权重、输出值所占存储空间的大小。例如,模型的输入值X、权重w、输出值Y中每个数据均可以为32位(或32bit)进行存储。
在本说明书的约定中,
模型输入值的存储大小KX=(32*(M*N))bit,
权重的存储大小Kw=(32*M)bit,
模型输出值Y的存储大小Ky为(N*32)bit。
步骤210,服务器获取安全内存的可用容量。在一些实施例中,步骤210由可用容量获取模块执行。
在一些实施例中,所述服务器可以理解为具有数据和/或指令接收、处理能力的设备,该设备可以是终端处理设备也可以云端处理设备。在一些实施例中,所述服务器可以来自于独立于安全内存单独存在。在一些实施例中,所述服务器也可以与安全内存共同构成一台设备。
在一些实施例中,所述安全内存可以有一个,存储整个模型或模型某一层的待计算数据。在一些其他实施例中,所述安全内存可以有多个,所述多个安全内存通过图1中的网络140相连,分别存储模型某一层或模型的某几层的待计算数据。例如,所述多个安全内存对应的可用容量可以A1、A2、A3、…An,分别与模型的n个运算层一一对应地设置。
在一些实施例中,所述安全内存可以运行在可信执行环境中。所述安全内存的存储数据和数据计算过程均在可信执行环境中进行,并通过同时使用硬件和软件来保护数据。所述可信执行环境,指的是主处理器内的安全区域,这一安全区域运行在一个独立的环境中且与操作系统并行运行。
步骤220,服务器获取模型或者模型某一层的待计算数据和权重。在一些实施例中,步骤220由数据获取模块执行。
在一些实施例中,所述待计算数据是指整个计算模型或模型某一层的存储在安全内存中的数据。在一些实施例中,所述存储在安全内存中的数据指的模型或模型某一层的输入和/或输出数据。例如,当所述模型为神经网络前向传播时,所述待计算数据是指所述整个计算模型或模型某一层各节点的输入数据。又例如,当所述模型为神经网络反向传播时,所述待计算数据是指所述整个计算模型或模型某一层各节点的输入数据。
步骤230,服务器确定内存需求量。在一些实施例中,步骤230由内存需求量确定模块执行。
在一些实施例中,所述服务器根据所述权重,以及所述待计算数据,确定内存需求量;所述内存需求量为完成神经网络前向计算预计需要占用的存储空间。
在一些实施例中,服务器可以通过所述权重和模型输入值获取模型输出值的存储大小Ky,进而获取内存需求量K的大小。在一些实施例中,根据神经网络前向传播,所述模型输出值Y可以按照Y=w*X+b进行计算,其中,b是一个偏置矩阵。由于模型输入值X为一个M*N的矩阵,所述权重为一个1*M的行向量,可以得到模型输出值Y是一个1*N的行向量,包含N个数据。根据模型输出值的数据存储位数和输出值存储的数据个数,即可知道模型输出值Y的存储大小Ky。
在本说明书的约定中,假设每个数据均为32位的数据,则有:
内存需求量K =Kx+Kw+Ky=32*(M*N+M+N)bit。
步骤240,服务器判断内存需求量是否大于可用容量。在一些实施例中,步骤240由数据对比模块执行。
若服务器判断内存需求量不大于可用容量,则直接跳至步骤390进行神经网络前向传播。
若服务器判断内存需求量大于可用容量,则进入步骤350。
步骤250,服务器进行整数量化,获取量化权重。在一些实施例中,步骤250由数据更新模块执行。
所述量化权重是指对神经网络的权值进行量化,使模型需要的存储值Kw变小。在一些实施例中,可以使用权重量化系数s来反映权重扩大/缩小的比例。例如,将权重扩大一倍,其量化系数s为2。在一些实施例中,量化系数的数值可以是多样的。例如,量化系数s可以为2,4,8等数字。
在一些实施例中,可以通过整数量化的方式获取量化权重。所述整数量化是指将原有的权重乘以量化系数s再取整的方式获得量化权重。
在本说明书的约定中,
可用float32( )表示32位2进制数表示浮点数,int8( )表示8位2进制数表示的定点数;括号内的数表示权重十进制的数值。例如,float32(5.69874)表示的是32位2进制表示的浮点数,其十进制数值为5.69874。
例如,对于32位浮点权重W1=float32(7.512),W2=float32(0.145),W3=float32(1.231),W4=float32(2.364),取量化系数s为8,整数量化有:
步骤260,基于量化权重更新内存需求量。在一些实施例中,步骤260由数据更新模块执行。
在一些实施例中,服务器基于量化权重更新内存需求量K。例如,量化后的权重可以用int8进行表示原有float32权重,更新所述权重的存储大小Kw。
在本说明书的约定中,所述更新后的权重的存储大小K`w,
Kw=(32*M)bit;
K`w=(8*M)bit;且K`w<Kw;
内存需求量K =Kx+K`w+Ky=[32*(M*N +N)+(8*M)]bit。
步骤270,服务器判断内存需求量是否大于可用容量。在一些实施例中,步骤270由数据对比模块执行。
若服务器判断更新后的内存需求量不大于可用容量,则直接跳至步骤390进行神经网络前向传播。
若服务器判断更新后的内存需求量大于可用容量,则进入步骤380。
步骤280,减少待计算数据。在一些实施例中,步骤380由数据更新模块执行。
在一些实施例中,当权重进行量化后,所述更新后的内存需求量仍大于安全内存的可用容量,则减少待计算数据的数量,以使得内存需求量K的值小于安全内存的可用容量A。
在本说明书的约定中,
输入值与输出值的存储数据均为float32表示,量化后的权重用int8表示,减少数据量N得到减小后的处理数据N`,且有N`<N;基于减小后的处理数据N`更新Kx、Ky和内存需求量K。
例如,原先同时处理的数据量N=100,权重的数据数量M=10且为int8表示,则有:
Ky=(N*32)bit=3200bit;KX=32*(M*N)bit=32000bit;Kw=(8*M)bit= 80bit;K =Kx+Kw+Ky=35280bit;
将数据量N减小至N`=50,则有
Ky=(N`*32)bit=1600bit;KX=32*(M*N`)bit=16000bit;Kw=(8*M)bit= 80bit;
数据量减小后的内存需求量K =17680bit。
步骤290,进行神经网络前向传播。在一些实施例中,步骤290由数据更新模块执行。
当内存需求量小于内存的可用容量时,进行神经网络前向传播,即通过输入值X和权重w计算输出值Y。此时,所有运算的数据均可以存储在安全内存内而不会溢出,可以保证数据运算的安全性。
需要说明的是,以上描述中涉及的一个或多个实施例的方法是以神经网络前向传播为例进行的示例性说明。上述涉及的一个或多个实施例的方法也可以应用于神经网络反向传播中。如果将上述实施方案中的神经网络前向传播换成神经网络反向传播情况的话,所述待计算数据为输出值Y,通过输出值Y反向计算输入值X。
图3是根据本说明书的另外一些实施例所示的基于安全内存的存储优化方法的示例性示意图。
在一些实施例中,方法300中的一个或以上步骤可以在图1所示的基于安全内存的存储优化系统100中实现。例如,方法300中的一个或以上步骤可以作为指令的形式存储在存储设备132中,并被处理设备130调用和/或执行。
步骤310,获取安全内存的可用容量。在一些实施例中,步骤310由可用容量获取模块执行。
在一些实施例中,所述安全内存可以有一个,存储整个模型的待计算数据。在一些实施例中,所述安全内存可以存储模型某一层或者某几层的待计算数据。所述待计算数据,指的是图一中神经网络层102中用于后续计算的数据,这些数据可以以数值或者矩阵的方式存储在安全内存中。
在一些实施例中,所述安全内存可以有多个,所述多个安全内存通过图1中的网络140相连。所述多个安全内存分别存储模型中的某一层或者某几层的待计算数据。例如,一个安全内存分别对应3个神经网络102的运算层。
在一些实施例中,所述安全内存可以分为多个区域,每个区域分别存储模型中的某一层或者某几层的待计算数据。在该场景的实施例中,可用容量获取模块可以获取安全内存各个区域的可用容量。例如,安全内存共128Mb,其中分为3个区域,分别为64MB、32MB、32MB,则每个区域的可用容量分别为64MB、32MB、32MB。
步骤320,获取待计算数据和权重。在一些实施例中,步骤320可以由数据获取模块执行。
在一些实施例中,所述存储优化方法可以用于神经网络。当所述方法运用在神经网络前向传播中时,所述待计算数据指的是每个运算层或者每个计算感知器中的输入数据。在神经网络反向传播中,所述待计算数据指的是每个运算层或者每个计算感知器中的输出数据。
在一些实施例中,所述待计算数据是指整个计算模型或模型某一层的数据存储在安全内存中存储大小。例如,所述某一层的输入数据为32位浮点数0.15625;所述待计算数据只反应这一数据的存储大小,即反应存储此浮点数共需32位(32-bit),不反应这一数据的实际大小(0.15625)。
在一些实施例中,所述服务器获取模型或者模型某一层的权重。在一些实施例中,所述权重存储在安全内存中。在一些替代性实施例中,所述权重也可以存储在非安全内存中。在一些实施例中,所述服务器仅获取模型或者模型某一层的权重的存储大小。例如,某一权重值为64位浮点数3.24785,所述服务器仅获取权重的存储大小(即双精度浮点数64-bit),不获取权重的实际大小。
需要说明的是,所述待计算数据和所述权重的位数和存储方式可以是多样的。例如,所述待计算数据和所述权重可以为定点数、单精度浮点数、双精度浮点数等。再例如,所述待计算数据和所述权重可以为8位、16位、32位等。本领域相关人员可在本说明书的基础上进行相应变化,本说明书在此不做限制。
步骤330,确定内存需求量。在一些实施例中,步骤430可以由内存需求量确定模块执行。
在一些实施例中,根据所述权重,以及所述待计算数据,确定内存需求量;所述内存需求量为完成神经网络前向计算预计需要占用的存储空间。下面,以神经网络前向传播为例对内存需求量的确定进行示例性说明。
在一些实施例中,服务器可获取模型某一运算层的输入值和该层的权重,基于输入值和权重可以预估输出值的大小。例如,模型输入值X为一个M*N的矩阵,所述权重为一个1*M的行向量,可以得到模型输出值Y是一个1*N的行向量,包含N个数据。每个数据的存储大小是预先设计好的,比如每个数据均为32bit的存储数据。则可以得到内存需求量为32*(M*N+M+N)bit。有关内存需求量确认的具体过程,可见图3步骤330的相关描述。
在一些实施例中,服务器还可以通过所述权重存储大小Kw和模型输入值存储大小Kx直接估算内存需求量的大小。此时,服务器不需计算模型输出值的存储大小Ky,直接估计内存需求量K的大小。例如,内存需求量K可以为K =α*(Kx+Kw)。其中,α可以为一个常量。这样的计算方式可以使得计算更加迅速,但会使得运算精度有所下降。
步骤340,对比安全内存的可用容量与内存需求量的关系。在一些实施例中,步骤440可以由数据对比模块执行。
在一些实施例中,所述安全内存的可用容量与所述内存需求量相等或者两者的数值接近。在该场景的实施例中,由于所述内存需求量可以是一个预估的值,因此实际计算过程中仍会存在存储数据超过安全内存的可用容量的风险。在一些实施例中,所述预设条件还包括:所述安全内存的可用容量与所述内存需求量之差大于预设的存储阈值。当所述安全内存的可用容量与所述内存需求量之差在预设的存储阈值内时,执行步骤350进行权重量化。
在一些实施例中,安全内存仅有一个,存储整个模型的待计算数据。在该场景的实施例中,当比较结果满足预设条件时,执行步骤350。
在一些实施例中,安全内存可以有多个,分别对应模型的不同运算层或不同感知器的待计算数据。在该场景的实施例中,所述多个安全内存的可用容量的大小可以是不同的。所述数据对比模块将安全内存的可用容量与其对应存储的待计算数据的内存需求量分别进行对比,对满足预设条件的部分安全内存执行步骤350。
步骤350,基于对比结果获取量化权重。在一些实施例中,步骤350可以由数据更新模块执行。
所述量化权重是指对神经网络的权值进行量化,使权值的存储值变小,且准确率与原来相近。在一些实施例中,可以通过整数量化的方式获取量化权重。所述整数量化是指将原有的权重乘以量化系数s再取整的方式获得量化权重。有关整数量化的更多说明可见步骤250的相关描述,在此不再赘述。
在一些实施例中,所述权重量化还可以通过聚类中心算法将所有权重聚集在一起,以聚类中心点的值代替这一聚类的所有权重值。例如,某一聚类中有2.09、2.12、1.92、1.91四个32bit权重值,其聚类中心点可以为2(8bit数),可以用聚类中心的值2代替这四个权重的值。在一些实施例中,还可以对不同聚类进行编号,用编号代替每个权重的真实值。通过这样的方式,可以使得量化权重的存储量进一步的减少。例如,某一权重矩阵存在n个32bit数据,存储大小为(32*n)bit。该矩阵共4个聚类,即存在0,1,2,3这四个聚类,聚类编号可以用2bit数据表示;量化后,权重矩阵变成了n个数据构成的2bit编号矩阵((2*n)bit),再加上编号对应的聚类中心值(32bit*4),其大小远远小于原权重矩阵的存储大小((32*n)bit)。在一些实施例中,聚类中心点可以是基于权重最大值和最小值预先设计好的。在一些替代性实施例中,聚类中心点也可以是基于机器学习的方式计算得到。
在一些实施例中,所述服务器获取所述权重的最大值Wmax与最小值Wmin,并基于量化系数s确定所述量化权重的权值表示。所述权值表示指的是量化权重的表示方式。例如,权重最大值Wmax与最小值Wmin分别为32位数字符表示的19.6548和0.6874,量化系数为2。此时,整数部分的范围是1~39,因此,权值表示中至少需要有6位2进制数以满足整数部分的取值范围。再例如,权重最大值Wmax与最小值Wmin分别为32位数字符表示的19.6548和-129.1128,量化系数为2。此时,整数部分的取值范围为-258~40,权值表示中至少需要有8位2进制数以满足整数部分的取值范围。
根据整数部分的取值范围,确定所述权值表示的表示位数。例如,当整数部分的取值范围为-258~40时,所述权值表示至少需要有9位(其中8位整数位1位符号位),采用8位字符进行表示无法覆盖整个权值的取值范围。因此,所述权值表示可以为16位字符以满足整数部分的取值范围。例如,有四个权重7.512,0.145,1.231,2.364,每个权重均为32bit浮点数表示,取量化系数为8,此时权重最大值为Wmax=7.512*8,可用8位2进制整数进行表示。
在一些实施例中,所述权重的权值表示还包括权重的表示方法。例如,对聚类权重量化的方法,服务器确定所述权重的最大值与最小值以确定聚类中心以多少位的数据进行存储(如用8bit数据还是16bit数据进行表示)。
在一些实施例中,权重量化的过程可以有不同的计算粒度。在一些实施例中,所述权重量化过程可以在神经网络110中的某一层进行。在一些实施例中,所述权重量化过程可以以运算组为单位进行。所述运算组可以由任意多个感知器构成。例如,不同运算层的不同感知器可以构成一个运算组,并以运算组为单位进行权重的量化。在一些其他实施例中,所述权重量化以整个计算模型为单位,即整个模型的权重构成一个权重矩阵,进行权重量化。
需要说明的是,本领域技术人员可以在本申请的基础上对本申请技术方案做出各种合理的变换。例如,权重量化得到的量化权重可以是对称性表示的(如int8),也可以是非对称量性表示的(如uint8);又例如,量化系数s可以是预先设计好的,也可以是在实际推断过程中根据实际状态动态计算等。类似这样的变换,仍处于本申请的保护范围之内。
步骤360,基于量化权重进行计算。在一些实施例中,步骤360可以由数据更新模块执行。
在一些实施例中,所述基于所述量化权重进行计算包括:基于步骤450获得的量化权重更新内存需求量;将所述更新后的内存需求量与可用容量进行对比。在一些实施例中,当权重进行量化后,所述更新后的内存需求量仍大于安全内存的可用容量,则减少待计算数据的数量,以使得内存需求量的值小于安全内存的可用容量。有关减少待计算数据的更多描述可见步骤280的相关描述。
在一些实施例中,当权重进行量化后,所述更新后的内存需求量仍大于安全内存的可用容量,还可以对权重进行迭代量化,并同步更新内存需求量,直至其内存需求量的值小于安全内存的可用容量。有关迭代量化的相关说明,可见图4中的相关描述。
应当注意的是,上述有关流程300的描述仅仅是为了示例和说明,而不限定本申请的适用范围。对于本领域技术人员来说,在本申请的指导下可以对流程300进行各种修正和改变。然而,这些修正和改变仍在本申请的范围之内。
图4是根据本说明书的一些实施例所示的基于量化权重进行迭代量化的示例性流程图,用于说明基于量化权重进行迭代量化的实现步骤。
步骤410,基于量化权重更新内存需求量。
步骤420,判断基于量化权重更新的内存需求量是否满足预设条件。当内存需求量不满足预设条件时,跳至步骤480进行后续计算;若内存需求量满足预设条件,则进行步骤430。
步骤430,对量化权重进行迭代量化。所述迭代量化,指的是对量化后的权重进行至少一次地再一次量化。在一些实施例中,迭代量化可以是采用相同的方法对权重反复进行量化。例如,可以采用整数量化的方式不断减小权重的存储大小。例如对于10个权重构成的权重矩阵,其权重由64位数据存储,其总存储大小为640bit;第一次量化后,权重量化为32位数据存储,其总存储大小为320bit;第二次量化后,权重量化为16位数据存储,其总存储大小为160bit。在一些其他实施例中,所述迭代量化还可以是采用不同的方法对权重反复进行量化。例如,对权重进行整数量化后,还可以采用聚类算法的方式获取聚类矩阵,对权重进行进一步地量化。
步骤440,根据迭代量化的权重更新内存需求值。
步骤450,对基于迭代量化的权重更新的内存需求值进行判定。当内存需求量不满足预设条件时,跳至步骤480进行后续计算;若内存需求量满足预设条件,则进行步骤460进行下一轮判定。
步骤460,判断权重是否无法继续量化或者迭代到最大次数。当权重无法继续量化或者量化次数已经到达预设值时,进入步骤470;否则跳至步骤430进行新一轮的权重量化。所述权重无法继续量化是指权重已经进行了最简存储的表达。例如,原权重用64bit进行表示,经过迭代量化后变为2bit进行表达,显然,2bit数据已经是权重表示的最简形式,无法再继续进行权重量化。在一些实施例中,还可以预设最大迭代次数。例如,可以预设最大迭代次数为3次,当权重迭代次数到达3次时,不再进行新一轮的权重量化。
步骤470,当当权重无法继续量化或者量化次数已经到达预设值时,减少待计算数据,使得内存需求量满足预设条件,减少待计算数据可见步骤280的相关描述。
步骤480,在内存需求量满足预设条件的情况下进行后续计算。所述后续计算是指利用本方法产生的迭代量化权重进行神经网络前向/反向传播。
需要说明的是,本领域技术人员可以在本申请的基础上对本申请技术方案做出各种合理的变换。例如,可以根据实际需要具体设置迭代次数的统计方式、迭代次数的统计规则等。又例如,预设条件的设置可以是多样的。例如,预设条件可以为所述安全内存的可用容量与所述内存需求量之差大于预设的存储阈值。类似这样的变换,仍处于本申请的保护范围之内。
本申请实施例可能带来的有益效果包括但不限于:(1)对已有神经网络进行量化,降低模型参数的存储量,提升模型的计算速度;(2)采用安全内存存储数据,严格保护存储的数据和/或代码不被外部软件访问和泄露;(3)通过确保内存需求量的值小于安全内存的可用容量,保证安全内存与非安全内存之间不存在数据交互。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“模块”、“组件”或“系统”。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本申请各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、VisualBasic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本申请一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本申请引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本申请作为参考。与本申请内容不一致或产生冲突的申请历史文件除外,对本申请权利要求最广范围有限制的文件(当前或之后附加于本申请中的)也除外。需要说明的是,如果本申请附属材料中的描述、定义、和/或术语的使用与本申请所述内容有不一致或冲突的地方,以本申请的描述、定义和/或术语的使用为准。
最后,应当理解的是,本申请中所述实施例仅用以说明本申请实施例的原则。其他的变形也可能属于本申请的范围。因此,作为示例而非限制,本申请实施例的替代配置可视为与本申请的教导一致。相应地,本申请的实施例不仅限于本申请明确介绍和描述的实施例。
Claims (19)
1.一种基于安全内存的存储优化方法;所述方法包括:
获取安全内存的可用容量;
获取模型或者模型某一层的待计算数据;
获取所述模型或者模型某一层的权重;
根据所述权重,以及所述待计算数据,确定内存需求量;所述内存需求量为完成计算预计需要占用的安全内存的存储空间;
将所述内存需求量与所述内存的可用容量进行对比;
当比较结果满足预设条件时,对所述权重进行修正,获取量化权重,基于所述量化权重进行计算;所述量化权重对内存的需求量小于所述权重对内容的需求量。
2.根据权利要求1所述的方法,所述预设条件包括:所述内存需求量大于所述安全内存的可用容量。
3.根据权利要求1所述的方法,所述当比较结果满足预设条件时,对所述权重进行修正,获取量化权重包括:
确定所述权重的最大值与最小值;根据所述权重最大值与最小值,确定对应于权重的权值表示;
根据所述权值表示,得到量化权重。
4.根据权利要求3所述的方法,所述根据所述权重的最大值与最小值,确定对应于权重矩阵的权值表示包括:
根据所述权重的最大值与最小值,确定所述权值表示的整数位数;
根据所述权值表示的整数位数,确定权重的量化系数;所述量化系数是指权重缩放的系数;
根据所述权重的量化系数和所述权值的整数位数确定权重的权值表示。
5.根据权利要求1所述的方法,所述基于所述量化权重进行计算包括:
基于所述量化权重更新内存需求量;
将所述更新后的内存需求量与所述可用容量进行对比;
当比较结果满足预设条件时,更新所述待计算数据和/或者所述量化权重,使得所述安全内存需求量小于所述安全内存的可用容量。
6.根据权利要求5所述的方法,所述更新所述待计算数据和/或者所述量化权重,使得所述安全内存需求量小于所述安全内存的可用容量包括:
减少所述待计算数据,并基于减少后的待计算数据更新所述内存需求量,使得更新后的所述内存需求量小于所述安全内容的存储容量。
7.根据权利要求5所述的方法,所述更新所述待计算数据和/或者所述量化权重,使得所述安全内存需求量小于所述安全内存的可用容量还包括:
对所述量化权重进行迭代量化,并基于迭代量化后的量化权重更新所述内存需求量,使得更新后的所述内存需求量小于所述安全内容的存储容量;
所述迭代量化指的是对所述量化权重再一次进行量化。
8.根据权利要求1所述的方法,所述存储优化方法用于神经网络前向传播。
9.根据权利要求1所述的方法,所述存储优化方法用于处理可信执行环境中的数据。
10.一种基于安全内存的存储优化系统,所述系统包括:
可用容量获取模块,用于获取内存的可用容量;
数据获取模块,用于获取模型或者模型某一层的待计算数据和权重;
内存需求量确定模块,用于根据所述权重,以及所述待计算数据,确定内存需求量;所述内存需求量为完成计算预计需要占用的存储空间;
数据对比模块,用于比较所述内存需求量与所述可用容量的关系;以及
数据更新模块,用于当比较结果满足预设条件时,对所述权重进行修正,获取量化权重,基于所述量化权重进行计算;所述量化权重对内存的需求量小于所述权重对内容的需求量。
11.根据权利要求10所述的系统,所述预设条件包括:所述内存需求量大于所述安全内存的可用容量;
当所述内存需求量大于所述安全内存的可用容量时,所述数据更新模块用于对所述权重进行修正,获取量化权重。
12.根据权利要求10所述的系统,当比较结果满足预设条件时,数据更新模块还用于:
确定所述权重的最大值与最小值;根据所述权重最大值与最小值,确定对应于权重的权值表示;
根据所述权值表示,得到量化权重。
13.根据权利要求12所述的系统,所述数据更新模块还用于:
根据所述权重的最大值与最小值,确定所述权值表示的整数位数;
根据所述权值表示的整数位数,确定权重的量化系数;所述量化系数是指权重缩放的系数;
根据所述权重的量化系数和所述权值的整数位数确定权重的权值表示。
14.根据权利要求10所述的系统,所述数据更新模块还用于:
基于所述量化权重更新内存需求量;
将所述更新后的内存需求量与所述可用容量进行对比;
当比较结果满足预设条件时,更新所述待计算数据和/或者所述量化权重,使得所述安全内存需求量小于所述安全内存的可用容量。
15.根据权利要求14所述的系统,当比较结果满足预设条件时,所述数据更新模块还用于:
减少所述待计算数据,并基于减少后的待计算数据更新所述内存需求量,使得更新后的所述内存需求量小于所述安全内容的存储容量。
16.根据权利要求15所述的系统,当比较结果满足预设条件时,所述数据更新模块还用于:
对所述量化权重进行迭代量化,并基于迭代量化后的量化权重更新所述内存需求量,使得更新后的所述内存需求量小于所述安全内容的存储容量;
所述迭代量化指的是对所述量化权重再一次进行量化。
17.根据权利要求10所述的系统,所述存储优化系统用于神经网络前向传播。
18.根据权利要求10所述的系统,所述存储优化系统用于处理可信执行环境中的数据。
19.一种基于安全内存的存储优化装置,所述装置包括处理器以及存储器;所述存储器用于存储指令,所述处理器用于执行所述指令,以实现如权利要求1至9中任一项所述基于安全内存的存储优化方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010329956.1A CN111240606A (zh) | 2020-04-24 | 2020-04-24 | 一种基于安全内存的存储优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010329956.1A CN111240606A (zh) | 2020-04-24 | 2020-04-24 | 一种基于安全内存的存储优化方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111240606A true CN111240606A (zh) | 2020-06-05 |
Family
ID=70877304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010329956.1A Pending CN111240606A (zh) | 2020-04-24 | 2020-04-24 | 一种基于安全内存的存储优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111240606A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116341633A (zh) * | 2023-05-29 | 2023-06-27 | 山东浪潮科学研究院有限公司 | 一种模型部署方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557436A (zh) * | 2016-11-17 | 2017-04-05 | 乐视控股(北京)有限公司 | 终端的内存压缩功能使能方法及装置 |
CN106570559A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种基于神经网络的数据处理方法和装置 |
CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN110058943A (zh) * | 2019-04-12 | 2019-07-26 | 三星(中国)半导体有限公司 | 用于电子设备的内存优化方法和设备 |
CN111143064A (zh) * | 2019-12-25 | 2020-05-12 | 浙江中控技术股份有限公司 | 一种处理内存的方法及系统 |
-
2020
- 2020-04-24 CN CN202010329956.1A patent/CN111240606A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106570559A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种基于神经网络的数据处理方法和装置 |
CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN106557436A (zh) * | 2016-11-17 | 2017-04-05 | 乐视控股(北京)有限公司 | 终端的内存压缩功能使能方法及装置 |
CN110058943A (zh) * | 2019-04-12 | 2019-07-26 | 三星(中国)半导体有限公司 | 用于电子设备的内存优化方法和设备 |
CN111143064A (zh) * | 2019-12-25 | 2020-05-12 | 浙江中控技术股份有限公司 | 一种处理内存的方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116341633A (zh) * | 2023-05-29 | 2023-06-27 | 山东浪潮科学研究院有限公司 | 一种模型部署方法、装置、设备及存储介质 |
CN116341633B (zh) * | 2023-05-29 | 2023-09-01 | 山东浪潮科学研究院有限公司 | 一种模型部署方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190171927A1 (en) | Layer-level quantization in neural networks | |
KR102562320B1 (ko) | 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치 | |
US20200117981A1 (en) | Data representation for dynamic precision in neural network cores | |
CN110008952B (zh) | 一种目标识别方法及设备 | |
KR102655950B1 (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
US11783200B2 (en) | Artificial neural network implementation in field-programmable gate arrays | |
CN113723589A (zh) | 混合精度神经网络 | |
US10147103B2 (en) | System and method for a scalable recommender system using massively parallel processors | |
CN113344170A (zh) | 神经网络权重矩阵调整方法、写入控制方法以及相关装置 | |
CN112465141A (zh) | 模型压缩方法、装置、电子设备及介质 | |
CN113902089A (zh) | 加速激活函数运算的装置、方法及存储介质 | |
CN114444668A (zh) | 网络量化方法及系统及装置及介质及图像处理方法 | |
CN111240606A (zh) | 一种基于安全内存的存储优化方法及系统 | |
US10579383B1 (en) | Systems and methods for efficient scaling of quantized integers | |
Oh et al. | Non-Uniform Step Size Quantization for Accurate Post-Training Quantization | |
US11475352B2 (en) | Quantizing machine learning models with balanced resolution via damped encoding | |
US20220405561A1 (en) | Electronic device and controlling method of electronic device | |
Harman et al. | Barycentric algorithm for computing d-optimal size-and cost-constrained designs of experiments | |
US20210334622A1 (en) | Method, apparatus and storage medium for generating and applying multilayer neural network | |
KR20210116182A (ko) | 소프트맥스 연산 근사화 방법 및 장치 | |
KR20210086233A (ko) | 완화된 프루닝을 통한 행렬 데이터 처리 방법 및 그 장치 | |
US20220398430A1 (en) | Method and apparatus for quantizing deep neural network | |
CN110764696B (zh) | 向量信息存储及更新的方法、装置、电子设备及存储介质 | |
US20230419145A1 (en) | Processor and method for performing tensor network contraction in quantum simulator | |
CN115470899B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200605 |
|
RJ01 | Rejection of invention patent application after publication |