CN117009093B - 降低神经网络推理所需内存占用量的重计算方法和系统 - Google Patents

降低神经网络推理所需内存占用量的重计算方法和系统 Download PDF

Info

Publication number
CN117009093B
CN117009093B CN202311278523.8A CN202311278523A CN117009093B CN 117009093 B CN117009093 B CN 117009093B CN 202311278523 A CN202311278523 A CN 202311278523A CN 117009093 B CN117009093 B CN 117009093B
Authority
CN
China
Prior art keywords
recalculation
attribute
steps
tensor
memory
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.)
Active
Application number
CN202311278523.8A
Other languages
English (en)
Other versions
CN117009093A (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.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
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 Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202311278523.8A priority Critical patent/CN117009093B/zh
Publication of CN117009093A publication Critical patent/CN117009093A/zh
Application granted granted Critical
Publication of CN117009093B publication Critical patent/CN117009093B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

降低神经网络推理所需内存占用量的重计算方法和系统,包括:通过神经网络模型的计算图构建有向无环图;基于有向无环图,获得重计算对集合;对重计算对集合进行幂集操作。根据幂集中的每一个元素,对图进行附加属性得到对应的图;基于图,进行涉及重计算策略的调度算法;在全部的调度结果中,选择内存占用量最低的调度。在边缘设备智能性的需求逐渐加重的背景下,边缘设备的运行内存十分宝贵的场景下,本发明以增加额外计算代价的方式获得神经网络推理时更小的内存占用量,对边缘智能的普适性有着贡献。

Description

降低神经网络推理所需内存占用量的重计算方法和系统
技术领域
本发明属于神经网络应用技术领域,尤其涉及一种降低神经网络推理所需内存占用量的重计算方法和系统。
背景技术
在近年来,随着神经网络领域的飞速发展,相关技术的应用范围不断扩大,包括但不限于人脸识别、图像识别、语音识别、自然语言处理、机器翻译、自动驾驶等领域。这些技术的广泛应用已经深刻地改变了的生活方式,同时也为的生活提供了更多的便利。
其中,边缘计算技术在神经网络应用中扮演着越来越重要的角色。边缘计算是一种分布式计算模式,将计算和存储功能集成到充当数据源的物理位置附近,以提高数据分析性能。在神经网络领域,边缘智能主要指的是边缘设备上部署神经网络模型进行推理,以实现本地处理数据、减少数据传输、提高实时性、降低成本等优势。
然而,边缘智能仍然存在一些挑战,其中最主要的是内存占用量的问题。边缘设备通常具有较小的内存容量,例如工业界广泛应用的微控制器 STM32F7 最大片上内存仅为512KB。而常见的神经网络模型所需内存量通常远远超过这个限制,如移动设备所使用的MobileNetv3 推理所需内存占用量为 1536KB。因此,如何降低神经网络模型推理时的内存占用量,成为了实现边缘智能的关键技术挑战之一。
文献1 (Han, Song, Huizi Mao, and William J. Dally. "Deep compression:Compressing deep neural networks with pruning, trained quantization andhuffman coding." arXiv preprint arXiv:1510.00149 (2015).) 按照如下三步来实现降低模型的大小进而解决推理时内存占用量的问题:
(1)通过移除模型中不重要的连接进行对模型剪枝:首先进行正常的网络训练,训练后删除所有权重小于一定阈值的连接,重复此过程。
(2)对剪枝后的模型的权重进行量化,使得多个权重共用同一数值,并且只需要存储元信息——有效权重和索引。
(3)对于权重以及其索引的有偏分布进行霍夫曼编码充分利用分布特性来降低存储量。尽管此方式能够降低模型的存储和计算消耗,但是其会损失模型的性能,即降低模型的识别准确率。
文献2 (Hinton, Geoffrey, Oriol Vinyals, and Jeff Dean. "Distillingthe knowledge in a neural network." arXiv preprint arXiv:1503.02531 (2015).)提出了一种知识蒸馏的方法。其通过训练一个复杂的网络模型,然后使用此复杂的网络模型的输出和数据的真实标签共同训练一个模型数据量更小的网络。因此该方法包含了一个复杂的模型(教师网络)和一个小模型(学生网络),学生网络便可理解为教师网络通过该方法压缩后的结果。然而,此方法不仅需要长时间的训练同时会损失教师网络的性能。
文献3 (Paliwal, Aditya, et al. "Reinforced genetic algorithm learningfor optimizing computation graphs." arXiv preprint arXiv:1905.02494 (2019).)采用一种强化学习算法,用来优化模型推理时内存占用量。其首先将模型的计算图传递给GNN,生成的离散嵌入对应计算图中每个结点的调度优先级,然后将这些嵌入传输到遗传算法BRKGA中,由该算法决定每个节点的布局和调度。但是此方式在使用前需要花费大量的训练时间。
文献4 (Ahn, Byung Hoon, et al. "Ordering chaos: Memory-awarescheduling of irregularly wired neural networks for edge devices."Proceedings of Machine Learning and Systems 2 (2020): 44-57.) 采用在可能的算子调度空间中搜索运行时内存占用量最低的调度的方式。其设计一种基于动态规划的调度算法,能够在指数级时间复杂度上搜索得到结果调度。文中进一步提出了可调整软阈值的加速方法和等价模型图变换方法的优化技巧。然而该方式限定每个算子只能执行一次,进而限定可能的算子调度空间导致无法获得更低的执行方案。本发明便解除了这一限制,并能以高效的方式获得更低内存占用量的调度同时不损失模型的性能。
发明内容
本发明要克服现有技术的上述缺点,降低神经网络推理时的内存占用量,进而为部署边缘端推理提供有利的技术支持,提供一种降低神经网络推理所需内存占用量的重计算方法和系统。
本发明的目的是通过下述技术方案来实现的:降低神经网络推理所需内存占用量的重计算方法,包括以下步骤:
(1)通过神经网络模型的计算图构建有向无环图
(2)基于有向无环图,获得重计算对集合/>
(3)对重计算对集合进行幂集操作。根据幂集中的每一个元素/>,对图/>进行附加属性得到对应的图/>
(4)基于图进行涉及重计算策略的调度算法。在全部/>的调度结果中,选择内存占用量最低的调度。
进一步地,所述步骤(1)中的有向无环图包含点集/>和边集/>,即/>,其中,
集合中每个元素为一个节点,代表一个算子;边集/>的每个元素/>代表/>中的一条边,/>表示/>节点计算使用/>节点的计算结果,/>为该边的源节点,/>为该边的目标节点,定义函数/>来获得一条边或某个算子输出张量的内存占用量。
再进一步,所述的算子包括卷积操作、连接操作。
进一步地,所述步骤(2)所述的获得重计算对集合包括以下子步骤:
(2.1)获得图中所有分支算子构成的集合/>,当一个算子的输出张量被大于1个算子使用时被叫做分支算子。
(2.2)定义单链为图中的一条线性节点构成的结构,除最后一个节点外其余的节点的入度和出度都为1。
(2.3)对于该集合中的每个分支算子s,寻找所有满足第一个节点的输入张量的内存占用量小于分支算子s的输出张量内存占用量的单链。设s的输出张量为/>, 单链t的第一个节点的输入张量为/>, 获得重计算对为/>, 重计算路径为t。由所有获得的重计算对和相应的单链构成重计算表T,为后续算法使用。
进一步地,所述步骤(3)中进行幂集操作,是指对于一个给定的集合,取出其中所有的子集所构成的集合。比如对于集合{1,2,3},它的幂集包括:{}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}。其中,空集{}和集合本身{1,2,3}也算作它的子集。
进一步地,所述步骤(3)中对幂集中的每一个元素,对图/>附加属性得到图/>,通过以下子步骤来实现的:
(3.1)对图中每个张量,设置rc属性为以该张量为输入的算子个数。
(3.2)对中的每一对重计算/>,设置/>的/>属性为真,设置/>属性为真。对t中所有算子的输入张量的rc值增加以/>为输入张量的算子数-1。
(3.3)对于t,除去第一个算子,其余算子的输入张量的属性设置为真。
(3.4)基于上述步骤,得到元素对应的图/>
进一步地,所述步骤(4)中通过以下子步骤来实现的:
(4.1)对于一个,初始/>,/>为[ ],ts为/>的输入张量,/>为/>,为预设最大值,z为图/>当前属性的编码,状态表/> 。所提的编码操作为:将此时刻在ts中的张量编号,和每个张量的rc属性记录下来,构成一个元组。编码的结果z, 称为一个状态,作为状态表/>的键。
(4.2)获得中的所有项/>,清空状态表/>
(4.3)对于所有项中的每一项/>,对该/>的键z进行解码。所提的解码操作为:由编码操作产生的元组,还原得到该状态下ts和每个张量的rc属性。
(4.4)基于还原后的rc值和ts获得下一步执行算子的备选集合。此处的获得方法:除去在内存中的张量,剩余算子中入度为0的算子。同时该算子的输出张量不应与在ts中的张量相同,且输出张量的rc属性不为0。
(4.5)如果集合为空,则说明该状态已经完成一次推理,此时进行判断若小于/>, 更新/>
(4.6)若集合不为空,则说明该状态输出一次推理的中间过程。对于/>集合中的每一个算子/>:/> ,(/>的输出张量)。
(4.7)对的输入张量进行判断是否可以释放:对/>的每一个输入张量/>的rc属性-1。如果/>的所有/>属性都不为真且rc属性为0、或/>的/>属性为真、或属性为真、或/>的/>属性为真且rc属性为0。则可释放该/>的内存占用。,并从ts移除/>。对新的属性进行编码,得到/>
(4.8)判断是否在/>中,若在则判断/>与/>的/>值,若小于即更新该项。若不在/>中,则在/>中添加该状态。恢复子步骤(4.3)中解码的状态,重复子步骤(4.6)至子步骤(4.8)直至每一个/>都执行完毕。
(4.9)如果为空,得到的/>为最小的内存占用量,/>为涉及重计算的相应的最优调度。若/>不为空,则重复子步骤(4.2)至子步骤(4.9)的过程。
(4.10)在每个的调度结果/>中,选择值最小/>对应的/>作为该模型的推理时的调度。
本发明的第二个侧面涉及一种降低神经网络推理所需内存占用量的重计算系统,包括:
有向无环图构建模块,通过神经网络模型的计算图构建有向无环图/>
重计算对集合获取模块,基于有向无环图/>,获得重计算对集合/>
幂集操作模块,对重计算对集合进行幂集操作,根据幂集中的每一个元素/>,对图/>附加属性得到对应的图/>
重计算模块,基于图进行涉及重计算策略的调度算法。在全部/>的调度结果中,选择内存占用量最低的调度。
本发明的第三个侧面涉及一种降低神经网络推理所需内存占用量的重计算装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现本发明的一种降低神经网络推理所需内存占用量的重计算方法。
本发明的第四个侧面涉及一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现本发明的一种降低神经网络推理所需内存占用量的重计算方法。
本发明的第五个侧面涉及一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现本发明的降低神经网络推理所需内存占用量的重计算方法。
本发明的第六个侧面涉及一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时实现本发明的一种降低神经网络推理所需内存占用量的重计算方法。
本发明创新点是在神经网络推理过程中算子调度问题上引入重计算思想,并设计出算法能够得到内存占用量最低的算子调度方案。重计算思想体现在对于在内存中暂存的中间结果,以较小内存占用量的中间结果/>进行替代存储,当中间结果/>被需要时,便从存储的中间结果/>计算出中间结果/>。以较低内存占用量的中间结果和额外的计算代价来替换存储较高内存占用量的中间结构,进而达到降低推理时的内存占用量。
本发明的有益效果是:可有效地减少神经网络模型推理过程中的内存占用量,对于边缘设备的智能化发展具有重要意义。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一个图像处理神经网络构成的有向无环图
图2是本发明的选取,有向无环图/>附加属性后的图/>
图3是本发明的选取, 有向无环图/>附加属性后的图/>
图4本发明的一个实施例中图和图/>对应的/>比较曲线图。
图5是本发明系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
实施例1:
考虑一个图像处理神经网络推理时的最小内存占用量调度的获取过程,该神经网络的图描述一个有向无环图包含点集/>和边集/>,即/>,如下图1所描述。该图的计算节点由卷积算子构成,图的边权值用来描述张量大小。因为对于以微控制器为代表的边缘设备,计算节点的权重并不需要占内存空间,因此不考虑算子的权重的内存问题。
如图1-图4所示,本发明的降低神经网络推理所需内存占用量的重计算方法,包括以下步骤:
(1)通过神经网络模型的计算图构建有向无环图
使用主流的深度学习框架,比如tensorflow、pytorch、MXNet等将所构建的深度学习模型通过框架内的保存功能,将其保存成tflite、pb、onnx等格式。这些文件格式中包含着神经网络的图描述,如图1中样例网络所示。
(2)基于步骤(1)得到的有向无环图,获得重计算对集合/>。具体包括以下子步骤:
(2.1)获得图中所有分支算子构成的集合/>,很明显可得到/>
(2.2)获得所有重计算对。因为集合只有一个元素L1,因此针对L1寻找所有满足第一个节点的输入张量的内存占用量小于L1的输出张量内存占用量的单链。可以发现单链t为/>,该单链对应的重计算对为/>。此处的/>代表输入张量,即图中内存占用量为1的张量,/>为L1算子的输出张量,即图中内存占用量为10的张量。由于只有一个元素,因此重计算对集合/>
(3)对重计算对集合进行幂集操作,得到幂集为/>。根据幂集中的每一个元素/>, 对图/>附加属性得到对应的图/>。可以看到元素为{}和/>两个。
(3.1)首先针对进行附加属性,得到/>。 对图/>中每个张量,设置rc属性为以该张量为输入的算子个数。
(3.2)对中的每一个重计算对/>, 设置/>的/>属性为真,设置/>的/>属性为真。对t中所有算子的输入张量的rc值增加以/>为输入张量的算子数-1。由于该r中并不包含重计算对,即无需修改。
(3.3)对于t,除去第一个算子,其余算子的输入张量的属性设置为真。由于该/>中并不包含重计算对,即无需修改。得到的图/>如图2所示。
(4)基于步骤(3)得到的图,进行涉及重计算策略的调度算法。具体包括以下子步骤:
(4.1)初始为[ ], />为/>, />为最大值,该最大值可根据具体操作系统设定。z为当前/>当前属性的编码,可以以下形式表示,该元组中最后一个元组表示ts,第一个元组表示rc=0的张量,第二个表示rc=1的张量,第三个表示rc=2的张量。构建状态表
(4.2)获得中的所有/>, 即/>。清空状态表/>
(4.3)对于中的每一项/>进行解码,即从解码出/>的属性。可知/>在ts中,的rc属性为1,/>的rc属性为2。
(4.4)获得下一步执行算子的备选集合, 按照方法可知/>集合/>。判断可知/>非空。
(4.5)对于集合中的算子进行执行。选取/>,计算/>,得到/>,/>,/>。ts新增/>的输出张量,此时/>
(4.6)对的输入张量/>判断是否可以释放:首先对/>的rc属性-1。因为/>的所有属性都不为真且rc属性为0,因此可以释放/>。计算/>。并从ts中移除/>,此时/>
对当前的属性进行编码得到
(4.7)判断是否在/>中,因为不在/>中,所以向/>中添加该状态
(4.8)恢复(4.3)中的解码状态,循环子步骤(4.5)至子步骤(4.7)直至/>集合中每个算子都执行过。循环子步骤(4.3)至子步骤(4.7)直至/>中每一项/>都解码过。
(4.9)若不为空,循环子步骤(4.2)至子步骤(4.8)过程。
(4.10)若为空,获得/>为/>的最小内存占用量/>和相应的最优调度/>。可知/>为30,/>为/>
(5)针对进行附加属性,得到/>:对图/>中每个张量,设置rc属性为以该张量为输入的算子个数。
(5.1)对中的每一个重计算对/>, 设置/>的/>属性为真,设置的/>属性为真。对t中所有算子的输入张量的rc值增加以/>为输入张量的算子数-1。
(5.2)对于t,除去第一个算子,其余算子的输入张量的属性设置为真。得到的图/>如图3所示。
(6)基于图进行步骤(4)中相同的方法,获得/>为/>的最小内存占用量/>和相应的最优调度/>。可知/>为23,/>为/>
(7)在全部的调度结果中,选择内存占用量最低的调度,即/>为23,/>。可以看到不涉及重计算的最优调度的内存占用量:图/>的/>大于涉及重计算调度的内存占用量/>的/>,如图4所示。
实施例2
本实施例涉及本发明的实验效果。为了更好地展示本发明的有效性,定制20个类似于Inception模块的网络结构模块。每个模块命名为BxSy,其中Bx(在本实验中,x=2,3,4,5)表示该结构的分支数。Sy(在本实验中,y=3,4,5,6)表示每个分支上算子的数量。对于每个结构,在其入口处都有一个卷积算子,最后是一个连接算子。所以,每个结构中的算子个数是xy+2。因为深度学习网络通常是通过顺序堆叠网络模块构建的,它的峰值内存占用量与模块的峰值内存占用量相同,因此,我们关注这些模块的峰值内存占用量。
表1中列出了这些模块的详细信息。比如,对于BxS3,入口卷积算子的输出维度为24,分支上的3个算子的输出维度分别为8,16,4。此外,该结构的输入维度为3。该结构和维度的设置在实际应用场景中是常见的。
表1
选择Tensorflow Lite Micro(TFLM)和SERENITY进行效果的比较。TFLM是被广泛使用的边缘设备推理框架,SERENITY是目前最为先进的通过调度算法来降低峰值内存占用的工作。本实施例中比较本发明与这两种方法峰值内存占用量,结果如表2所示。
表2
通过比较峰值内存降低倍率可以更直观的观察到本发明的效果,其中内存降低倍率的公式为:
从表2中可以数据可看出,将TFLM的峰值内存占用量作为基准,本发明能够实现1.17倍至1.43倍的峰值内存降低,相较SERENITY可以进一步达到0.09倍至0.28倍的峰值内存占用量降低提升,该结果说明了本发明的有效性。
实施例3
参照图5,本发实施例涉及降低神经网络推理所需内存占用量的重计算系统,以实现实施例1的方法,包括:
有向无环图构建模块,通过神经网络模型的计算图构建有向无环图/>
重计算对集合获取模块,基于有向无环图/>,获得重计算对集合/>
幂集操作模块,对重计算对集合进行幂集操作,根据幂集中的每一个元素/>,对图附加属性得到对应的图/>
重计算模块,基于图进行涉及重计算策略的调度算法。在全部/>的调度结果中,选择内存占用量最低的调度。
实施例4
本涉及降低神经网络推理所需内存占用量的重计算装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现实施例1的一种降低神经网络推理所需内存占用量的重计算方法。
实施例5
本实施例涉及一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现实施例1所述的一种降低神经网络推理所需内存占用量的重计算方法。
本实施例涉及一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如实施例1所述的一种降低神经网络推理所需内存占用量的重计算方法。
实施例6
本实施例涉及一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现实施例1所述的一种降低神经网络推理所需内存占用量的重计算方法。
在硬件层面,该计算设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现实施例1的方法。当然,除了软件实现方式之外,本发明并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(ProgrammableLogic Device, PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(HardwareDescription Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(AdvancedBoolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(JavaHardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby HardwareDescription Language)等,目前最普遍使用的是VHDL(Very-High-Speed IntegratedCircuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

Claims (8)

1.降低神经网络推理所需内存占用量的重计算方法,包括以下步骤:
(1)通过神经网络模型的计算图构建有向无环图
(2)基于有向无环图,获得重计算对集合/>;所述的获得重计算对集合/>包括以下子步骤:
(2.1)获得图中所有分支算子构成的集合/>,当一个算子的输出张量被大于1个算子使用时被叫做分支算子;
(2.2)定义单链为图中的一条线性节点构成的结构,除最后一个节点外其余的节点的入度和出度都为1;
(2.3)对于该集合中的每个分支算子/>,寻找所有满足第一个节点的输入张量的内存占用量小于分支算子/>的输出张量内存占用量的单链;设/>的输出张量为/>, 单链/>的第一个节点的输入张量为/>, 获得重计算对为/>, 重计算路径为/>;由所有获得的重计算对和相应的单链构成重计算表/>
(3)对重计算对集合进行幂集操作,根据幂集中的每一个元素/>,对图/>附加属性得到对应的图/>;所述的根据幂集中的每一个元素/>,对图/>附加属性得到图/>,通过以下子步骤来实现的:
(3.1)对图中每个张量,设置/>属性为以该张量为输入的算子个数;
(3.2)对中的每一对重计算(/>),设置/>的/>属性为真,设置/>的/>属性为真;对/>中所有算子的输入张量的/>值增加以/>为输入张量的算子数-1;
(3.3)对于,除去第一个算子,其余算子的输入张量的/>属性设置为真;
(3.4)基于上述步骤,得到元素对应的图/>
(4)基于图进行涉及重计算策略的调度算法,在全部/>的调度结果中,选择内存占用量最低的调度,具体包括以下子步骤:
(4.1)对于一个,初始/> 为[ ], />为/>的输入张量,/>为/>,/>为预设最大值,/>为图/>当前属性的编码,状态表/>;所提的编码操作为:将此时刻在/>中的张量编号,和每个张量的/>属性记录下来,构成一个元组;编码的结果/>, 称为一个状态,作为状态表/>的键;
(4.2)获得中的所有项/>,清空状态表/>
(4.3)对于所有项中的每一项/>, 对该/>的键/>进行解码;所提的解码操作为:由编码操作产生的元组,还原得到该状态下/>和每个张量的/>属性;
(4.4)基于还原后的值和/>获得下一步执行算子的备选集合/>;此处的获得方法:除去在内存中的张量,剩余算子中入度为0的算子;同时该算子的输出张量不应与在/>中的张量相同,且输出张量的/>属性不为0;
(4.5)如果集合为空,则说明该状态已经完成一次推理,此时进行判断若/>小于, 更新/>
(4.6)若集合不为空,则说明该状态输出一次推理的中间过程;对于/>集合中的每一个算子/>:/>的输出张量/>
(4.7)对的输入张量进行判断是否可以释放:对/>的每一个输入张量/>的/>属性-1,如果的所有/>属性都不为真且/>属性为0、或/>的/>属性为真、或/>属性为真、或/>的/>属性为真且/>属性为0,则可释放该/>的内存占用;/>,并从/>移除/>;对新的属性进行编码,得到/>
(4.8)判断是否在/>中,若在则判断/>与/>的/>值,若小于即更新该项;若不在/>中,则在/>中添加该状态;恢复子步骤(4.3)中解码的状态,重复子步骤(4.6)至子步骤(4.8)直至每一个/>都执行完毕;
(4.9)如果为空,得到的/>为最小的内存占用量,/>为涉及重计算的相应的最优调度;若/>不为空,则重复子步骤(4.2)至子步骤(4.9)的过程;
(4.10)在每个的调度结果/>中,选择值最小/>对应的/>作为该模型的推理时的调度。
2.如权利要求1所述的降低神经网络推理所需内存占用量的重计算方法,其特征在于:所述步骤(1)中的有向无环图包含点集/>和边集/>,即/>,其中,,/>集合中每个元素为一个节点,代表一个算子;边集/>的每个元素/>代表/>中的一条边,/>表示/>节点计算使用/>节点的计算结果,/>为该边的源节点,/>为该边的目标节点,定义函数/>来获得一条边或某个算子输出张量的内存占用量。
3.如权利要求2所述的降低神经网络推理所需内存占用量的重计算方法,其特征在于:所述的算子包括卷积操作、连接操作。
4.如权利要求1所述的降低神经网络推理所需内存占用量的重计算方法,其特征在于:所述步骤(3)中进行幂集操作,是指对于一个给定的集合,取出其中所有的子集所构成的集合。
5.降低神经网络推理所需内存占用量的重计算系统,其特征在于,包括:
有向无环图构建模块,通过神经网络模型的计算图构建有向无环图/>
重计算对集合获取模块,基于有向无环图/>,获得重计算对集合/>;具体包括以下步骤:
(2.1)获得图中所有分支算子构成的集合/>,当一个算子的输出张量被大于1个算子使用时被叫做分支算子;
(2.2)定义单链为图中的一条线性节点构成的结构,除最后一个节点外其余的节点的入度和出度都为1;
(2.3)对于该集合中的每个分支算子/>,寻找所有满足第一个节点的输入张量的内存占用量小于分支算子/>的输出张量内存占用量的单链;设/>的输出张量为/>, 单链/>的第一个节点的输入张量为/>, 获得重计算对为/>, 重计算路径为/>;由所有获得的重计算对和相应的单链构成重计算表/>
幂集操作模块,对重计算对集合进行幂集操作,根据幂集中的每一个元素/>,对图/>附加属性得到对应的图/>;具体包括以下步骤:
(3.1)对图中每个张量,设置/>属性为以该张量为输入的算子个数;
(3.2)对中的每一对重计算(/>),设置/>的/>属性为真,设置/>的/>属性为真;对/>中所有算子的输入张量的/>值增加以/>为输入张量的算子数-1;
(3.3)对于,除去第一个算子,其余算子的输入张量的/>属性设置为真;
(3.4)基于上述步骤,得到元素对应的图/>
重计算模块,基于图,进行涉及重计算策略的调度算法;在全部/>的调度结果中,选择内存占用量最低的调度;具体包括以下步骤:
(4.1)对于一个,初始/>为[ ], />为/>的输入张量,/>为/>, />为预设最大值,/>为图/>当前属性的编码,状态表/>;所提的编码操作为:将此时刻在/>中的张量编号,和每个张量的/>属性记录下来,构成一个元组;编码的结果/>, 称为一个状态,作为状态表/>的键;
(4.2)获得中的所有项/>,清空状态表/>
(4.3)对于所有项中的每一项/>, 对该/>的键/>进行解码;所提的解码操作为:由编码操作产生的元组,还原得到该状态下/>和每个张量的/>属性;
(4.4)基于还原后的值和/>获得下一步执行算子的备选集合/>;此处的获得方法:除去在内存中的张量,剩余算子中入度为0的算子;同时该算子的输出张量不应与在/>中的张量相同,且输出张量的/>属性不为0;
(4.5)如果集合为空,则说明该状态已经完成一次推理,此时进行判断若/>小于, 更新/>
(4.6)若集合不为空,则说明该状态输出一次推理的中间过程;对于/>集合中的每一个算子/>:/>的输出张量/>
(4.7)对的输入张量进行判断是否可以释放:对/>的每一个输入张量/>的/>属性-1,如果的所有/>属性都不为真且/>属性为0、或/>的/>属性为真、或/>属性为真、或/>的/>属性为真且/>属性为0,则可释放该/>的内存占用;/>,并从/>移除/>;对新的属性进行编码,得到/>
(4.8)判断是否在/>中,若在则判断/>与/>的/>值,若小于即更新该项;若不在/>中,则在/>中添加该状态;恢复子步骤(4.3)中解码的状态,重复子步骤(4.6)至子步骤(4.8)直至每一个/>都执行完毕;
(4.9)如果为空,得到的/>为最小的内存占用量,/>为涉及重计算的相应的最优调度;若/>不为空,则重复子步骤(4.2)至子步骤(4.9)的过程;
(4.10)在每个的调度结果/>中,选择值最小/>对应的/>作为该模型的推理时的调度。
6.降低神经网络推理所需内存占用量的重计算装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-4中任一项所述的降低神经网络推理所需内存占用量的重计算方法。
7.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1-4任一项所述的降低神经网络推理所需内存占用量的重计算方法。
8.一种计算设备,其特征在于,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-4中任一项所述的降低神经网络推理所需内存占用量的重计算方法。
CN202311278523.8A 2023-10-07 2023-10-07 降低神经网络推理所需内存占用量的重计算方法和系统 Active CN117009093B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311278523.8A CN117009093B (zh) 2023-10-07 2023-10-07 降低神经网络推理所需内存占用量的重计算方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311278523.8A CN117009093B (zh) 2023-10-07 2023-10-07 降低神经网络推理所需内存占用量的重计算方法和系统

Publications (2)

Publication Number Publication Date
CN117009093A CN117009093A (zh) 2023-11-07
CN117009093B true CN117009093B (zh) 2024-03-12

Family

ID=88562178

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311278523.8A Active CN117009093B (zh) 2023-10-07 2023-10-07 降低神经网络推理所需内存占用量的重计算方法和系统

Country Status (1)

Country Link
CN (1) CN117009093B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117892769A (zh) * 2024-03-15 2024-04-16 之江实验室 神经网络训练方法、显存调度方法、系统、设备和产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113128702A (zh) * 2021-04-15 2021-07-16 杭州电子科技大学 一种基于强化学习的神经网络自适应分布式并行训练方法
CN114186687A (zh) * 2022-02-17 2022-03-15 之江实验室 一种面向神经网络模型计算的中间表示方法和装置
CN114358267A (zh) * 2022-01-05 2022-04-15 浙江大学 一种降低深度神经网络训练过程中gpu内存占用的方法
CN114462591A (zh) * 2021-12-23 2022-05-10 北京时代民芯科技有限公司 一种动态量化神经网络的推理方法
CN115809699A (zh) * 2023-02-03 2023-03-17 之江实验室 神经网络模型推理所需最小内存占用量的估计方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113128702A (zh) * 2021-04-15 2021-07-16 杭州电子科技大学 一种基于强化学习的神经网络自适应分布式并行训练方法
CN114462591A (zh) * 2021-12-23 2022-05-10 北京时代民芯科技有限公司 一种动态量化神经网络的推理方法
CN114358267A (zh) * 2022-01-05 2022-04-15 浙江大学 一种降低深度神经网络训练过程中gpu内存占用的方法
CN114186687A (zh) * 2022-02-17 2022-03-15 之江实验室 一种面向神经网络模型计算的中间表示方法和装置
CN115809699A (zh) * 2023-02-03 2023-03-17 之江实验室 神经网络模型推理所需最小内存占用量的估计方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Training Deep Nets with Sublinear Memory Cost;Tianqi Chen等;《arXiv》;全文 *
基于剪枝与量化的卷积神经网络压缩方法;孙彦丽等;计算机科学(第08期);全文 *
深度神经网络压缩与加速综述;纪荣嵘等;计算机研究与发展(第09期);全文 *

Also Published As

Publication number Publication date
CN117009093A (zh) 2023-11-07

Similar Documents

Publication Publication Date Title
CN117009093B (zh) 降低神经网络推理所需内存占用量的重计算方法和系统
CN111079899A (zh) 神经网络模型压缩方法、系统、设备及介质
US20190044535A1 (en) Systems and methods for compressing parameters of learned parameter systems
CN112446491A (zh) 神经网络模型实时自动量化方法及实时自动量化系统
CN110188877A (zh) 一种神经网络压缩方法与装置
Han et al. Design automation for efficient deep learning computing
CN116521380A (zh) 一种资源自适应协同的模型训练加速方法、装置及设备
CN116167461B (zh) 一种模型训练的方法、装置、存储介质及电子设备
Abdelsalam et al. An efficient FPGA-based overlay inference architecture for fully connected DNNs
CN111898751B (zh) 一种数据处理的方法、系统、设备及可读存储介质
Lou et al. Autoqb: Automl for network quantization and binarization on mobile devices
US20230056315A1 (en) Computer-implemented methods and systems for compressing recurrent neural network (rnn) models and accelerating rnn execution in mobile devices to achieve real-time inference
CN116402113B (zh) 一种任务执行的方法、装置、存储介质及电子设备
CN116225192B (zh) 一种散热系统的控制方法、装置、存储介质及电子设备
CN115543945B (zh) 一种模型压缩的方法、装置、存储介质及电子设备
CN113887719B (zh) 一种模型压缩方法及装置
CN113177632B (zh) 一种基于流水线并行的模型训练方法、装置以及设备
US11195094B2 (en) Neural network connection reduction
TW202137067A (zh) 卷積神經網路的方法、電子裝置與電腦程式產品
CN117058525B (zh) 一种模型的训练方法、装置、存储介质及电子设备
CN111143641A (zh) 深度学习模型的训练方法、装置及电子设备
CN117152752B (zh) 一种自适应权重的视觉深度特征重建方法和装置
CN114640357B (zh) 数据编码方法、设备及存储介质
CN116306855B (zh) 一种基于存算一体系统的数据处理方法及装置
CN116363418A (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