CN113608881B - 内存分配方法、装置、设备、可读存储介质及程序产品 - Google Patents

内存分配方法、装置、设备、可读存储介质及程序产品 Download PDF

Info

Publication number
CN113608881B
CN113608881B CN202111177742.8A CN202111177742A CN113608881B CN 113608881 B CN113608881 B CN 113608881B CN 202111177742 A CN202111177742 A CN 202111177742A CN 113608881 B CN113608881 B CN 113608881B
Authority
CN
China
Prior art keywords
memory
class
target model
layer
capacity
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
CN202111177742.8A
Other languages
English (en)
Other versions
CN113608881A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202111177742.8A priority Critical patent/CN113608881B/zh
Publication of CN113608881A publication Critical patent/CN113608881A/zh
Application granted granted Critical
Publication of CN113608881B publication Critical patent/CN113608881B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0418Architecture, e.g. interconnection topology using chaos or fractal principles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供了一种内存分配方法、装置、设备、计算机可读存储介质及计算机程序产品,涉及人工智能领域,该方法包括:获取至少一个目标模型的权值文件;根据至少一个目标模型的权值文件,确定图类;根据图类,确定至少一个目标模型中任一目标模型对应的会话类的内存分配信息;根据任一目标模型对应的会话类的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的会话类的内存进行复用。本申请实施例实现了对任一目标模型对应的会话类的内存进行复用,从而减少了任一目标模型的推理过程中的内存占用。

Description

内存分配方法、装置、设备、可读存储介质及程序产品
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种内存分配方法、装置、设备、计算机可读存储介质及计算机程序产品。
背景技术
随着人们在深度学习领域的不断探索,深度学习模型在朝向两个方向发展,一个方面是模型变得越来越大,另一个方面是设备端部署比例提高。对于服务器部署,更大的深度学习模型在推理过程中需要更大的内存;对于移动终端部署,移动终端在推理过程中内存有限;上述两个现象往往导致内存变成瓶颈,从而导致服务器端并发数降低、算力空闲等问题,以及移动终端无法部署更大的模型。现有技术中使用量化方案,使用int8计算代替浮点型数据类型float计算,将float 32bit的卷积操作转换为int8的卷积操作,虽然经过量化后的模型大小会显著减小,但实际运行中需要先进行量化和反量化操作,因此,模型在推理过程中内存占用有可能不降反增。
发明内容
本申请针对现有的方式的缺点,提出一种内存分配方法、装置、设备、计算机可读存储介质及计算机程序产品,用于解决如何减少模型的推理过程中内存占用的问题。
第一方面,本申请提供了一种内存分配方法,包括:
获取至少一个目标模型的权值文件;
根据至少一个目标模型的权值文件,确定图类;
根据图类,确定至少一个目标模型中任一目标模型对应的会话类的内存分配信息;
根据任一目标模型对应的会话类的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的会话类的内存进行复用。
在一个实施例中,根据至少一个目标模型的权值文件,确定图类,包括:
根据至少一个目标模型的权值文件,确定图类的权值、图类的参数,以及图类的第一内存池,第一内存池用于存储图类的权值和图类的参数,图类的权值包括至少一个目标模型中各层的权值,图类的参数包括至少一个目标模型中各层的参数。
在一个实施例中,根据图类,确定至少一个目标模型中任一目标模型对应的会话类的内存分配信息,包括:
根据图类的参数,确定任一目标模型对应的会话类的第二内存池的内存总容量,以及第二内存池中各内存块的内存容量;第二内存池用于存储任一目标模型的推理过程中除图类的权值和图类的参数之外的数据。
在一个实施例中,根据图类的参数,确定任一目标模型对应的会话类的第二内存池的内存总容量,以及第二内存池中各内存块的内存容量,包括:
针对任一目标模型中每一层的推理过程,根据图类的参数,确定每一层的输入数据所占用的第一内存、每一层的推理过程中数据计算所占用的第二内存,以及每一层的输出数据所占用的第三内存;
将各第一内存中容量最大的第一内存的容量、各第二内存中容量最大的第二内存的容量,以及各第三内存中容量最大的第三内存的容量,分别确定为第二内存池的第一内存块的容量、第二内存块的容量和第三内存块的容量;
根据第一内存块的容量、第二内存块的容量和第三内存块的容量,确定第二内存池的内存总容量。
在一个实施例中,根据任一目标模型对应的会话类的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的会话类的内存进行复用,包括:
根据任一目标模型对应的会话类的内存分配信息,在任一目标模型中第N层的推理过程中,调用任一目标模型对应的会话类的第二内存池的第一内存块、第二内存块和第三内存块;第N层的输入数据占用第一内存块中的内存,第N层的推理过程中数据计算占用第二内存块中的内存,第N层的输出数据占用第三内存块中的内存;
在任一目标模型中第N+1层的推理过程中,将第N层的推理过程中占用的第一内存块中的内存、第二内存块中的内存和第三内存块中的内存释放到第二内存池,并调用第三内存块中的内存复用为第N+1层的输入数据所占用的内存、第二内存块中的内存复用为第N+1层的推理过程中数据计算所占用的内存,以及第一内存块中的内存复用为第N+1层的输出数据所占用的内存;
其中,N为正整数。
在一个实施例中,对会话类的内存进行调用,包括:
通过预设的指针偏移方式,对会话类的内存进行调用。
在一个实施例中,在至少一个目标模型的推理过程完成之后,包括:
释放图类的第一内存池和至少一个目标模型对应的会话类的第二内存池。
第二方面,本申请提供了一种内存分配装置,包括:
第一处理模块,用于获取至少一个目标模型的权值文件;
第二处理模块,用于根据至少一个目标模型的权值文件,确定图类;
第三处理模块,用于根据图类,确定至少一个目标模型中任一目标模型对应的会话类的内存分配信息;
第四处理模块,用于根据任一目标模型对应的会话类的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的会话类的内存进行复用。
第三方面,本申请提供了一种电子设备,包括:处理器、存储器和总线;
总线,用于连接处理器和存储器;
存储器,用于存储操作指令;
处理器,用于通过调用操作指令,执行本申请第一方面的内存分配方法。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被用于执行本申请第一方面的内存分配方法。
第五方面,本申请提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本申请第一方面中内存分配方法的步骤。
本申请实施例提供的技术方案,至少具有如下有益效果:
获取至少一个目标模型的权值文件;根据至少一个目标模型的权值文件,确定图类;根据图类,确定至少一个目标模型中任一目标模型对应的会话类的内存分配信息;根据任一目标模型对应的会话类的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的会话类的内存进行复用。如此,实现了对任一目标模型对应的会话类的内存进行复用,从而减少了任一目标模型的推理过程中的内存占用;针对服务器部署,可以有效解决目标模型(例如深度学习模型)在推理过程中内存瓶颈导致的并发度低、算力空闲的问题;针对移动终端部署,在有限的内存资源下,可以部署参数更大、效果更好的目标模型。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的内存分配系统的架构示意图;
图2为本申请实施例提供的一种内存分配方法的流程示意图;
图3为本申请实施例提供的一种内存分配的示意图;
图4为本申请实施例提供的一种内存分配方法的流程示意图;
图5为本申请实施例提供的一种内存分配方法的流程示意图;
图6为本申请实施例提供的一种内存分配装置的结构示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”指示实现为“A”,或者实现为“A”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例是内存分配系统提供的一种内存分配方法,该内存分配方法涉及人工智能领域,例如机器学习、深度学习等。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
深度学习(Deep Learning,DL)是机器学习领域中一个新的研究方向。深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字、图像和声音等数据的解释有很大的帮助。深度学习的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。
为了更好的理解及说明本申请实施例的方案,下面对本申请实施例中所涉及到的一些技术用语进行简单说明。
全连接层:全连接层(fully connected layers,FC)的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。全连接层用于特征全连接,将特征转换为一个列向量。全连接层在整个卷积神经网络中起到分类器的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。
激活层:在激活层中,对输入数据进行激活操作(实际上就是一种函数变换),是逐元素进行运算的。从底部bottom得到一个二进制大对象blob数据输入,运算后,从顶部top输入一个blob数据。在运算过程中,没有改变数据的大小,即输入和输出的数据大小是相等的。常用的激活函数有sigmoid、tanh、relu等,激活函数其中一个重要的作用是加入非线性因素的,将特征映射到高维的非线性区间进行解释,解决线性模型所不能解决的问题。
softmax层:softmax层可以为输出层,softmax层可以实现分类;softmax层神经元的个数通常代表了分类标签的个数;softmax层函数为softmax函数,softmax函数常用作多分类(包括二分类),softmax函数的输出为一个列向量,列向量中元素的个数为类别个数,每个元素值表示判断结果是该类别的概率,所有元素值的和为1。
推理系统:推理系统为深度学习模型前向推断inference的过程;其中,推断就是深度学习把从训练中学习到的能力应用到工作中去。
噪声混沌神经网络NCNN:NCNN是一个为手机端极致优化的高性能神经网络前向推理框架。
本申请实施例提供的方案涉及人工智能,下面以具体的实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
本申请实施例所提供的方案可以适用于人工智能领域中任意需要内存分配的应用场景。
为了更好的理解本申请实施例提供的方案,下面结合具体的一个应用场景对该方案进行说明。
在一个实施例中,图1中示出了本申请实施例所适用的一种内存分配系统的架构示意图,可以理解的是,本申请实施例所提供的内存分配方法可以适用于但不限于应用于如图1所示的应用场景中。
本示例中,如图1所示,该示例中的内存分配系统的架构可以包括但不限于图Graph类101和至少一个会话Session类102。
需要说明的是,图类为Graph类,会话类为Session类;图Graph类101为Graph类,会话Session类为Session类。
例如,针对服务器部署,内存分配系统的架构可以包括一个Graph类101和多个Session类102;服务器获取多个目标模型的权值文件;服务器根据多个目标模型的权值文件,确定Graph类101;根据Graph类101,确定多个目标模型中任一目标模型对应的Session类102的内存分配信息;根据任一目标模型对应的Session类102的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的Session类102的内存进行复用。
又例如,针对移动终端部署,内存分配系统的架构可以包括一个Graph类101和一个Session类102;移动终端获取一个目标模型的权值文件;移动终端根据一个目标模型的权值文件,确定Graph类101;根据Graph类101,确定一个目标模型对应的Session类102的内存分配信息;根据该目标模型对应的Session类102的内存分配信息,在该目标模型的推理过程中,对该目标模型对应的Session类102的内存进行复用。
可理解,上述仅为一种示例,本实施例在此不作限定。
其中,移动终端可以是智能手机(如Android手机、iOS手机等)、手机模拟器、平板电脑、笔记本电脑、数字广播接收器、MID(Mobile Internet Devices,移动互联网设备)、PDA(个人数字助理)、车载终端(例如车载导航终端)、智能音箱、智能手表等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器或服务器集群。具体也可基于实际应用场景需求确定,在此不作限定。
参见图2,图2示出了本申请实施例提供的一种内存分配方法的流程示意图,其中,该方法可以由任一电子设备执行,如可以是服务器或移动终端,作为一可选实施方式,该方法可以由服务器或移动终端执行,为了描述方便,在下文的一些可选实施例的描述中,将以服务器或移动终端作为该方法执行主体为例进行说明。如图2所示,本申请实施例提供的内存分配方法包括如下步骤:
S201,获取至少一个目标模型的权值文件。
具体地,目标模型可以为深度学习模型,例如,深度学习模型包括全连接层FC、激活层和softmax层。目标模型的权值文件包括目标模型中各层的权值和参数,例如,深度学习模型的权值文件包括深度学习模型中全连接层的权值和参数、激活层的参数,以及softmax层的参数。
在一个实施例中,服务器可以获取多个深度学习模型的权值文件;或移动终端可以获取一个深度学习模型的权值文件。
S202,根据至少一个目标模型的权值文件,确定图类。
具体地,Graph类可以用于存储至少一个目标模型的权值和参数;Graph类不用于目标模型的前向推理过程中的计算。
需要说明的是,图类为Graph类,会话类为Session类。
在一个实施例中,针对服务器部署,一个Graph类可以对应多个Session类,多个Session类中的每个Session类可以对应一个目标模型,一个Graph类可以用于存储多个目标模型的权值和参数。针对移动终端部署,一个Graph类可以对应一个Session类,该Session类可以对应一个目标模型,一个Graph类可以用于存储该目标模型的权值和参数。
S203,根据图类,确定至少一个目标模型中任一目标模型对应的会话类的内存分配信息。
具体地,任一目标模型对应的Session类的内存分配信息包括该Session类的内存池的内存总容量,以及该内存池中各内存块的内存容量。
在一个实施例中,Session类用于目标模型的前向推理过程中的数据输入、数据计算和数据输出,Session类在数据计算时调用Graph类中存储的该目标模型中各层的权值、各层的参数中至少一项。根据Graph类,确定至少一个目标模型中任一目标模型对应的Session类的内存分配信息,即根据Graph类,生成至少一个目标模型中任一目标模型对应的Session类的内存。
S204,根据任一目标模型对应的会话类的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的会话类的内存进行复用。
具体地,目标模型的推理过程可以为目标模型的前向推理过程。
本申请实施例中,实现了对任一目标模型对应的Session类的内存进行复用,从而减少了任一目标模型的推理过程中的内存占用;针对服务器部署,可以有效解决目标模型(例如深度学习模型)在推理过程中内存瓶颈导致的并发度低、算力空闲的问题;针对移动终端部署,在有限的内存资源下,可以部署参数更大、效果更好的目标模型。
在一个实施例中,根据至少一个目标模型的权值文件,确定图类,包括:
根据至少一个目标模型的权值文件,确定图类的权值、图类的参数,以及图类的第一内存池,第一内存池用于存储图类的权值和图类的参数,图类的权值包括至少一个目标模型中各层的权值,图类的参数包括至少一个目标模型中各层的参数。
具体地,Graph类的第一内存池中的内存是不可复用的,第一内存池中的内存用于存储Graph类的权值和Graph类的参数,Graph类的权值可以为目标模型中各层的权值,Graph类的参数可以为目标模型中各层的参数;其中,目标模型可以为深度学习模型。根据权值文件包括的参数,确定第一内存池的大小。
举例说明,如图3所示,Graph类的第一内存池中的内存用于存储深度学习模型中各层的权值和参数,其中,深度学习模型包括一个第一全连接层FC1、一个激活层和一个softmax层,Graph类的第一内存池中的内存用于存储第一全连接层FC1的权值和参数,Graph类的第一内存池中的内存还用于存储激活层的参数和softmax层的参数。
在一个实施例中,根据图类,确定至少一个目标模型中任一目标模型对应的会话类的内存分配信息,包括:
根据图类的参数,确定任一目标模型对应的会话类的第二内存池的内存总容量,以及第二内存池中各内存块的内存容量;第二内存池用于存储任一目标模型的推理过程中除图类的权值和图类的参数之外的数据。
在一个实施例中,根据Graph类,确定一个目标模型对应的Session类的内存分配信息,该目标模型对应的Session类的内存分配信息包括该Session类的第二内存池的内存总容量,以及该第二内存池中各内存块的内存容量。Session类用于目标模型的前向推理过程中的数据输入、数据计算和数据输出,Session类在数据计算时调用Graph类中存储的该目标模型中各层的权值、各层的参数中至少一项。
举例说明,如图3所示,针对FC1,Session类用于目标模型的前向推理过程中的数据输入,该数据输入可以是初始输入;Session类用于目标模型的前向推理过程中的数据计算,该数据计算可以是FC1中的计算,Session类在数据计算时调用Graph类中存储的该目标模型中FC1的权值和FC1的参数;Session类用于目标模型的前向推理过程中的数据输出,该数据输出可以是FC1的输出结果。针对激活层,Session类用于目标模型的前向推理过程中的数据输入,该数据输入可以是FC1的结果;Session类用于目标模型的前向推理过程中的数据计算,该数据计算可以是激活层中的计算,Session类在数据计算时调用Graph类中存储的该目标模型中激活层的参数;Session类用于目标模型的前向推理过程中的数据输出,该数据输出可以是激活层的输出结果。针对softmax层,Session类用于目标模型的前向推理过程中的数据输入,该数据输入可以是激活层的结果,Session类用于目标模型的前向推理过程中的数据计算,该数据计算可以是softmax层中的计算,Session类在数据计算时调用Graph类中存储的该目标模型中softmax层的参数;Session类用于目标模型的前向推理过程中的数据输出,该数据输出可以是softmax层的输出结果,即目标模型的前向推理过程最终的输出结果。
在一个实施例中,根据图类的参数,确定任一目标模型对应的会话类的第二内存池的内存总容量,以及第二内存池中各内存块的内存容量,包括步骤A1-A3:
步骤A1,针对任一目标模型中每一层的推理过程,根据图类的参数,确定每一层的输入数据所占用的第一内存、每一层的推理过程中数据计算所占用的第二内存,以及每一层的输出数据所占用的第三内存。
举例说明,如图3所示,针对目标模型中FC1的推理过程,根据Graph类的参数,确定FC1的输入数据所占用的第一内存、FC1的推理过程中数据计算所占用的第二内存,以及FC1的输出数据所占用的第三内存;其中,FC1的输入数据可以是初始输入,FC1的推理过程中数据计算可以是FC1中的计算,FC1的输出数据可以是FC1的输出结果。针对目标模型中激活层的推理过程,根据Graph类的参数,确定激活层的输入数据所占用的第一内存、激活层的推理过程中数据计算所占用的第二内存,以及激活层的输出数据所占用的第三内存;其中,激活层的输入数据可以是FC1的结果,激活层的推理过程中数据计算可以是激活层中的计算,激活层的输出数据可以是激活层的输出结果。针对目标模型中softmax层的推理过程,根据Graph类的参数,确定softmax层的输入数据所占用的第一内存、softmax层的推理过程中数据计算所占用的第二内存,以及softmax层的输出数据所占用的第三内存;其中,softmax层的输入数据可以是激活层的结果,softmax层的推理过程中数据计算可以是softmax层中的计算,softmax层的输出数据可以是softmax层的输出结果。例如,对应FC1的输入数据的Graph类的参数为100和1024,则可以确定FC1的输入数据所占用的第一内存的大小为100×1024;对应FC1的推理过程中数据计算的Graph类的参数为100和512,则可以确定FC1的推理过程中数据计算所占用的第二内存的大小为100×512;对应FC1的输出数据的Graph类的参数为100和512,则可以确定FC1的输出数据所占用的第三内存的大小为100×512。
步骤A2,将各第一内存中容量最大的第一内存的容量、各第二内存中容量最大的第二内存的容量,以及各第三内存中容量最大的第三内存的容量,分别确定为第二内存池的第一内存块的容量、第二内存块的容量和第三内存块的容量。
举例说明,如图3所示,当FC1的输入数据所占用的第一内存、激活层的输入数据所占用的第一内存和softmax层的输入数据所占用的第一内存中的最大的第一内存的容量是FC1的输入数据所占用的第一内存,则将FC1的输入数据所占用的第一内存确定为第二内存池的第一内存块的容量。当FC1的推理过程中数据计算所占用的第二内存、激活层的推理过程中数据计算所占用的第二内存和softmax层的推理过程中数据计算所占用的第二内存中的最大的第二内存的容量是FC1的推理过程中数据计算所占用的第二内存,则将FC1的推理过程中数据计算所占用的第二内存确定为第二内存池的第二内存块的容量。当FC1的输出数据所占用的第三内存、激活层的输出数据所占用的第三内存和softmax层的输出数据所占用的第三内存中的最大的第三内存的容量是softmax层的输出数据所占用的第三内存,则将softmax层的输出数据所占用的第三内存确定为第二内存池的第三内存块的容量。
步骤A3,根据第一内存块的容量、第二内存块的容量和第三内存块的容量,确定第二内存池的内存总容量。
在一个示例中,将第一内存块的容量、第二内存块的容量和第三内存块的容量之间求和,得到第二内存池的内存总容量。
在一个实施例中,根据任一目标模型对应的会话类的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的会话类的内存进行复用,包括:
根据任一目标模型对应的会话类的内存分配信息,在任一目标模型中第N层的推理过程中,调用任一目标模型对应的会话类的第二内存池的第一内存块、第二内存块和第三内存块;第N层的输入数据占用第一内存块中的内存,第N层的推理过程中数据计算占用第二内存块中的内存,第N层的输出数据占用第三内存块中的内存;
在任一目标模型中第N+1层的推理过程中,将第N层的推理过程中占用的第一内存块中的内存、第二内存块中的内存和第三内存块中的内存释放到第二内存池,并调用第三内存块中的内存复用为第N+1层的输入数据所占用的内存、第二内存块中的内存复用为第N+1层的推理过程中数据计算所占用的内存,以及第一内存块中的内存复用为第N+1层的输出数据所占用的内存;
其中,N为正整数。
举例说明,如图3所示,根据目标模型对应的Session类的内存分配信息,在目标模型中第一层(FC1)的推理过程中,调用目标模型对应的Session类的第二内存池的第一内存块、第二内存块和第三内存块;第一层的输入数据(初始输入)占用第一内存块中的内存,第一层的推理过程中数据计算(FC1中的计算)占用第二内存块中的内存,第一层的输出数据(FC1的输出结果)占用第三内存块中的内存。在目标模型中第二层(激活层)的推理过程中,将第一层的推理过程中占用的第一内存块中的内存、第二内存块中的内存和第三内存块中的内存释放到第二内存池,并调用第三内存块中的内存复用为第二层的输入数据(FC1的输出结果)所占用的内存、第二内存块中的内存复用为第二层的推理过程中数据计算(激活层中的计算)所占用的内存,以及第一内存块中的内存复用为第二层的输出数据(激活层的输出结果)所占用的内存。在目标模型中第三层(softmax层)的推理过程中,将第二层的推理过程中占用的第一内存块中的内存、第二内存块中的内存和第三内存块中的内存释放到第二内存池,并调用第一内存块中的内存复用为第三层的输入数据(激活层的输出结果)所占用的内存、第二内存块中的内存复用为第三层的推理过程中数据计算(softmax层中的计算)所占用的内存,以及第三内存块中的内存复用为第三层的输出数据(softmax层的输出结果)所占用的内存。
在一个实施例中,对会话类的内存进行调用,包括:
通过预设的指针偏移方式,对会话类的内存进行调用。
具体地,生成不可复用内存池和可复用内存池;不可复用内存池中的内存不可复用,例如,不可复用内存池为第一内存池;可复用内存池中的内存可以复用,例如,可复用内存池为第二内存池。不可复用内存池的数量与Graph类的数量相同,可复用内存池数量与session类的数量相同。前向推理框架(例如NCNN)的内存申请全都可以通过内存池指针偏移来实现,不再额外进行内存申请。预设的指针偏移方式可以为内存池指针偏移。
在一个实施例中,在至少一个目标模型的推理过程完成之后,包括:
释放图类的第一内存池和至少一个目标模型对应的会话类的第二内存池。
具体地,在释放Graph类时,对Graph类的第一内存池中的内存进行释放;在释放多个目标模型分别对应的Session类时,对多个目标模型分别对应的Session类的第二内存池中的内存进行释放。
在一个实施例中,如图4所示,本实施例提供的内存分配方法包括如下步骤:
S401,生成Graph类。
具体地,根据深度学习模型的权值文件,生成Graph类的权值和参数,申请创建内存(第一内存池)用来存放Graph类的权值和参数。
S402,生成Session类。
具体地,生成Session类,所有的Session类共享同一个Graph类,根据Graph类的参数,申请生成Session类的内存(第二内存池)。
S403,前向推理。
具体地,深度学习模型的前向推理过程为计算过程,因此,深度学习模型的前向推理过程不涉及内存的申请和内存的释放,其中,深度学习模型为目标模型,深度学习模型的前向推理过程为目标模型的推理过程。
S404,释放Graph类。
具体地,创建的内存会在释放Graph类时进行释放。
S405,释放Session类。
具体地,Session类的内存会在释放Session时进行释放。
本申请实施例中,实现了对任一目标模型对应的Session类的内存进行复用,从而减少了任一目标模型的推理过程中的内存占用;针对服务器部署,可以有效解决目标模型(例如深度学习模型)在推理过程中内存瓶颈导致的并发度低、算力空闲的问题;针对移动终端部署,在有限的内存资源下,可以部署参数更大、效果更好的目标模型。
为了更好的理解本申请实施例所提供的方法,下面结合具体应用场景的示例对本申请实施例的方案进行进一步说明。
本申请实施例所提供的内存分配方法应用于深度学习模型的内存分配场景,例如,深度学习模型的推理系统的内存分配场景。
参见图5,图5示出了本申请实施例提供的一种内存分配方法的流程示意图,其中,该方法可以由任一电子设备执行,如可以是服务器,作为一可选实施方式,该方法可以由服务器执行,为了描述方便,在下文的一些可选实施例的描述中,将以服务器作为该方法执行主体为例进行说明。如图5所示,本申请实施例提供的内存分配方法包括如下步骤:
S501,获取多个深度学习模型的权值文件。
S502,根据多个深度学习模型的权值文件,确定Graph类的权值、Graph类的参数,以及Graph类的第一内存池。
具体地,Graph类的第一内存池为不可复用内存池,即在整个深度学习模型前向推理的生存期内,第一内存池中的内存是只读的,不能被复用。
S503,根据Graph类,确定与多个深度学习模型分别对应的Session类,及各Session类的第二内存池。
在一个实施例中,根据Graph类的参数,确定任一深度学习模型对应的Session类的第二内存池的内存总容量,以及第二内存池中各内存块的内存容量。Session类的第二内存池为可复用内存池。
举例说明,如图3所示,一个深度学习模型中初始输入、FC1的输出结果、激活层的输出结果和softmax层的输出结果分别占用内存的容量都相同,即内存的容量都为m,m为正实数;FC1层中计算所占用内存容量为n1,激活层中计算所占用内存容量为n2,softmax层中计算所占用内存容量为n3,其中,n1、n2和n3中n1为最大值,n1、n2和n3为正实数;则该深度学习模型的前向推理过程中,所需要的最小内存大小为2×m+n1,该最小内存为第二内存池的内存总容量。
在一个实施例中,全部Session类共享一个Graph类,且全部Session类的数量可以等于服务器的中央处理器CPU核数,例如,对于一台CPU 28核的服务器,该服务器可以部署一个Graph类和28个Session类。
S504,在多个深度学习模型中任一深度学习模型的推理过程中,对任一深度学习模型对应的Session类的第二内存池中的内存进行复用。
在一个实施例中,任一深度学习模型对应的Session类在数据计算时,调用Graph类中存储的任一深度学习模型中各层的权值、各层的参数中至少一项。
S505,在多个深度学习模型的推理过程完成之后,释放Graph类的第一内存池和多个深度学习模型分别对应的Session类的第二内存池。
具体地,在释放Graph类时,对Graph类的第一内存池中的内存进行释放;在释放多个深度学习模型分别对应的Session类时,对多个深度学习模型分别对应的Session类的第二内存池中的内存进行释放。
本申请实施例中,实现了对多个深度学习模型中任一深度学习模型对应的Session类的内存进行复用,从而减少了任一深度学习模型的推理过程中的内存占用,可以有效解决深度学习模型在推理过程中内存瓶颈导致的并发度低、算力空闲的问题。
本申请实施例还提供了一种内存分配装置,该内存分配装置的结构示意图如图6所示,内存分配装置60,包括第一处理模块601、第二处理模块602、第三处理模块603和第四处理模块604。
第一处理模块601,用于获取至少一个目标模型的权值文件;
第二处理模块602,用于根据至少一个目标模型的权值文件,确定图类;
第三处理模块603,用于根据图类,确定至少一个目标模型中任一目标模型对应的会话类的内存分配信息;
第四处理模块604,用于根据任一目标模型对应的会话类的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的会话类的内存进行复用。
在一个实施例中,第二处理模块602,具体用于:
根据至少一个目标模型的权值文件,确定图类的权值、图类的参数,以及图类的第一内存池,第一内存池用于存储图类的权值和图类的参数,图类的权值包括至少一个目标模型中各层的权值,图类的参数包括至少一个目标模型中各层的参数。
在一个实施例中,第三处理模块603,具体用于:
根据图类的参数,确定任一目标模型对应的会话类的第二内存池的内存总容量,以及第二内存池中各内存块的内存容量;第二内存池用于存储任一目标模型的推理过程中除图类的权值和图类的参数之外的数据。
在一个实施例中,第三处理模块603,具体用于:
针对任一目标模型中每一层的推理过程,根据图类的参数,确定每一层的输入数据所占用的第一内存、每一层的推理过程中数据计算所占用的第二内存,以及每一层的输出数据所占用的第三内存;
将各第一内存中容量最大的第一内存的容量、各第二内存中容量最大的第二内存的容量,以及各第三内存中容量最大的第三内存的容量,分别确定为第二内存池的第一内存块的容量、第二内存块的容量和第三内存块的容量;
根据第一内存块的容量、第二内存块的容量和第三内存块的容量,确定第二内存池的内存总容量。
在一个实施例中,第四处理模块604,具体用于:
根据任一目标模型对应的会话类的内存分配信息,在任一目标模型中第N层的推理过程中,调用任一目标模型对应的会话类的第二内存池的第一内存块、第二内存块和第三内存块;第N层的输入数据占用第一内存块中的内存,第N层的推理过程中数据计算占用第二内存块中的内存,第N层的输出数据占用第三内存块中的内存;
在任一目标模型中第N+1层的推理过程中,将第N层的推理过程中占用的第一内存块中的内存、第二内存块中的内存和第三内存块中的内存释放到第二内存池,并调用第三内存块中的内存复用为第N+1层的输入数据所占用的内存、第二内存块中的内存复用为第N+1层的推理过程中数据计算所占用的内存,以及第一内存块中的内存复用为第N+1层的输出数据所占用的内存;
其中,N为正整数。
在一个实施例中,第四处理模块604,具体用于:
通过预设的指针偏移方式,对会话类的内存进行调用。
在一个实施例中,在至少一个目标模型的推理过程完成之后,第四处理模块604,还用于:
释放图类的第一内存池和至少一个目标模型对应的会话类的第二内存池。
应用本申请实施例,至少具有如下有益效果:
获取至少一个目标模型的权值文件;根据至少一个目标模型的权值文件,确定图类;根据图类,确定至少一个目标模型中任一目标模型对应的会话类的内存分配信息;根据任一目标模型对应的会话类的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的会话类的内存进行复用。如此,实现了对任一目标模型对应的会话类的内存进行复用,从而减少了任一目标模型的推理过程中的内存占用;针对服务器部署,可以有效解决目标模型(例如深度学习模型)在推理过程中内存瓶颈导致的并发度低、算力空闲的问题;针对移动终端部署,在有限的内存资源下,可以部署参数更大、效果更好的目标模型。
本申请实施例还提供了一种电子设备,该电子设备的结构示意图如图7所示,图7所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备包括但不限于:服务器、移动终端等。
应用本申请实施例,至少具有如下有益效果:
获取至少一个目标模型的权值文件;根据至少一个目标模型的权值文件,确定图类;根据图类,确定至少一个目标模型中任一目标模型对应的会话类的内存分配信息;根据任一目标模型对应的会话类的内存分配信息,在任一目标模型的推理过程中,对任一目标模型对应的会话类的内存进行复用。如此,实现了对任一目标模型对应的会话类的内存进行复用,从而减少了任一目标模型的推理过程中的内存占用;针对服务器部署,可以有效解决目标模型(例如深度学习模型)在推理过程中内存瓶颈导致的并发度低、算力空闲的问题;针对移动终端部署,在有限的内存资源下,可以部署参数更大、效果更好的目标模型。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。

Claims (7)

1.一种内存分配方法,其特征在于,包括:
获取多个目标模型的权值文件;所述多个目标模型的权值文件包括所述多个目标模型中各层的权值和参数;
根据所述多个目标模型的权值文件,确定图类;
根据所述图类,确定所述多个目标模型中任一目标模型对应的会话类的内存分配信息;
根据所述任一目标模型对应的会话类的内存分配信息,在所述任一目标模型的推理过程中,对所述任一目标模型对应的会话类的内存进行复用;
所述根据所述多个目标模型的权值文件,确定图类,包括:
根据所述多个目标模型的权值文件,确定图类的权值、所述图类的参数,以及所述图类的第一内存池,所述第一内存池用于存储所述图类的权值和所述图类的参数,所述图类的权值包括所述多个目标模型中各层的权值,所述图类的参数包括所述多个目标模型中各层的参数;
所述根据所述图类,确定所述多个目标模型中任一目标模型对应的会话类的内存分配信息,包括:
根据所述图类的参数,确定所述任一目标模型对应的会话类的第二内存池的内存总容量,以及所述第二内存池中各内存块的内存容量;所述第二内存池用于存储所述任一目标模型的推理过程中除所述图类的权值和所述图类的参数之外的数据;
根据所述图类的参数,确定所述任一目标模型对应的会话类的第二内存池的内存总容量,以及所述第二内存池中各内存块的内存容量,包括:
针对所述任一目标模型中每一层的推理过程,根据所述图类的参数,确定所述每一层的输入数据所占用的第一内存、所述每一层的推理过程中数据计算所占用的第二内存,以及所述每一层的输出数据所占用的第三内存;
将各第一内存中容量最大的第一内存的容量、各第二内存中容量最大的第二内存的容量,以及各第三内存中容量最大的第三内存的容量,分别确定为所述第二内存池的第一内存块的容量、第二内存块的容量和第三内存块的容量;
根据所述第一内存块的容量、所述第二内存块的容量和所述第三内存块的容量,确定所述第二内存池的内存总容量;
所述根据所述任一目标模型对应的会话类的内存分配信息,在所述任一目标模型的推理过程中,对所述任一目标模型对应的会话类的内存进行复用,包括:
根据所述任一目标模型对应的会话类的内存分配信息,在所述任一目标模型中第N层的推理过程中,调用所述任一目标模型对应的会话类的第二内存池的第一内存块、第二内存块和第三内存块;所述第N层的输入数据占用所述第一内存块中的内存,所述第N层的推理过程中数据计算占用所述第二内存块中的内存,所述第N层的输出数据占用所述第三内存块中的内存;
在所述任一目标模型中第N+1层的推理过程中,将所述第N层的推理过程中占用的所述第一内存块中的内存、所述第二内存块中的内存和所述第三内存块中的内存释放到所述第二内存池,并调用所述第三内存块中的内存复用为所述第N+1层的输入数据所占用的内存、所述第二内存块中的内存复用为所述第N+1层的推理过程中数据计算所占用的内存,以及所述第一内存块中的内存复用为所述第N+1层的输出数据所占用的内存;
其中,N为正整数。
2.根据权利要求1所述的方法,其特征在于,对所述会话类的内存进行调用,包括:
通过预设的指针偏移方式,对所述会话类的内存进行调用。
3.根据权利要求1所述的方法,其特征在于,在所述多个目标模型的推理过程完成之后,包括:
释放所述图类的第一内存池和所述多个目标模型对应的会话类的第二内存池。
4.一种内存分配装置,其特征在于,包括:
第一处理模块,用于获取多个目标模型的权值文件;所述多个目标模型的权值文件包括所述多个目标模型中各层的权值和参数;
第二处理模块,用于根据所述多个目标模型的权值文件,确定图类;
第三处理模块,用于根据所述图类,确定所述多个目标模型中任一目标模型对应的会话类的内存分配信息;
第四处理模块,用于根据所述任一目标模型对应的会话类的内存分配信息,在所述任一目标模型的推理过程中,对所述任一目标模型对应的会话类的内存进行复用;
所述第二处理模块,具体用于:
根据所述多个目标模型的权值文件,确定图类的权值、所述图类的参数,以及所述图类的第一内存池,所述第一内存池用于存储所述图类的权值和所述图类的参数,所述图类的权值包括所述多个目标模型中各层的权值,所述图类的参数包括所述多个目标模型中各层的参数;
所述第三处理模块,具体用于:
根据所述图类的参数,确定所述任一目标模型对应的会话类的第二内存池的内存总容量,以及所述第二内存池中各内存块的内存容量;所述第二内存池用于存储所述任一目标模型的推理过程中除所述图类的权值和所述图类的参数之外的数据;
所述第三处理模块,具体用于:
针对所述任一目标模型中每一层的推理过程,根据所述图类的参数,确定所述每一层的输入数据所占用的第一内存、所述每一层的推理过程中数据计算所占用的第二内存,以及所述每一层的输出数据所占用的第三内存;
将各第一内存中容量最大的第一内存的容量、各第二内存中容量最大的第二内存的容量,以及各第三内存中容量最大的第三内存的容量,分别确定为所述第二内存池的第一内存块的容量、第二内存块的容量和第三内存块的容量;
根据所述第一内存块的容量、所述第二内存块的容量和所述第三内存块的容量,确定所述第二内存池的内存总容量;
所述第四处理模块,具体用于:
根据所述任一目标模型对应的会话类的内存分配信息,在所述任一目标模型中第N层的推理过程中,调用所述任一目标模型对应的会话类的第二内存池的第一内存块、第二内存块和第三内存块;所述第N层的输入数据占用所述第一内存块中的内存,所述第N层的推理过程中数据计算占用所述第二内存块中的内存,所述第N层的输出数据占用所述第三内存块中的内存;
在所述任一目标模型中第N+1层的推理过程中,将所述第N层的推理过程中占用的所述第一内存块中的内存、所述第二内存块中的内存和所述第三内存块中的内存释放到所述第二内存池,并调用所述第三内存块中的内存复用为所述第N+1层的输入数据所占用的内存、所述第二内存块中的内存复用为所述第N+1层的推理过程中数据计算所占用的内存,以及所述第一内存块中的内存复用为所述第N+1层的输出数据所占用的内存;
其中,N为正整数。
5.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-3中任一项所述方法的步骤。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-3中任一项所述的内存分配方法的步骤。
7.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-3中任一项所述方法的步骤。
CN202111177742.8A 2021-10-09 2021-10-09 内存分配方法、装置、设备、可读存储介质及程序产品 Active CN113608881B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111177742.8A CN113608881B (zh) 2021-10-09 2021-10-09 内存分配方法、装置、设备、可读存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111177742.8A CN113608881B (zh) 2021-10-09 2021-10-09 内存分配方法、装置、设备、可读存储介质及程序产品

Publications (2)

Publication Number Publication Date
CN113608881A CN113608881A (zh) 2021-11-05
CN113608881B true CN113608881B (zh) 2022-02-25

Family

ID=78343425

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111177742.8A Active CN113608881B (zh) 2021-10-09 2021-10-09 内存分配方法、装置、设备、可读存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN113608881B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490042B (zh) * 2022-01-04 2024-03-22 青岛海信网络科技股份有限公司 一种内存分配方法及交通线网综合监控设备
CN116992966B (zh) * 2023-09-28 2024-01-16 深圳鲲云信息科技有限公司 用于人工智能模型推理平台的方法及计算设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595259A (zh) * 2017-03-16 2018-09-28 哈尔滨英赛克信息技术有限公司 一种基于全局管理的内存池管理方法
CN109491784A (zh) * 2018-10-18 2019-03-19 北京旷视科技有限公司 降低内存占用量的方法、装置、电子设备、可读存储介质
CN110866589A (zh) * 2018-08-10 2020-03-06 高德软件有限公司 深度神经网络模型的运行方法、装置及框架
CN112306675A (zh) * 2020-10-12 2021-02-02 网络通信与安全紫金山实验室 数据处理方法、相关设备以及计算机可读存储介质
CN112529169A (zh) * 2019-09-18 2021-03-19 华为技术有限公司 数据处理方法、模型优化装置和模型执行装置
CN112766467A (zh) * 2021-04-06 2021-05-07 深圳市一心视觉科技有限公司 基于卷积神经网络模型的图像识别方法
CN113095469A (zh) * 2019-12-23 2021-07-09 上海海思技术有限公司 一种神经网络模型的优化方法及装置
CN113127181A (zh) * 2019-12-30 2021-07-16 杭州海康威视数字技术股份有限公司 内存管理方法、装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109976903B (zh) * 2019-02-22 2021-06-29 华中科技大学 一种基于层宽内存分配的深度学习异构计算方法和系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595259A (zh) * 2017-03-16 2018-09-28 哈尔滨英赛克信息技术有限公司 一种基于全局管理的内存池管理方法
CN110866589A (zh) * 2018-08-10 2020-03-06 高德软件有限公司 深度神经网络模型的运行方法、装置及框架
CN109491784A (zh) * 2018-10-18 2019-03-19 北京旷视科技有限公司 降低内存占用量的方法、装置、电子设备、可读存储介质
CN112529169A (zh) * 2019-09-18 2021-03-19 华为技术有限公司 数据处理方法、模型优化装置和模型执行装置
CN113095469A (zh) * 2019-12-23 2021-07-09 上海海思技术有限公司 一种神经网络模型的优化方法及装置
CN113127181A (zh) * 2019-12-30 2021-07-16 杭州海康威视数字技术股份有限公司 内存管理方法、装置及存储介质
CN112306675A (zh) * 2020-10-12 2021-02-02 网络通信与安全紫金山实验室 数据处理方法、相关设备以及计算机可读存储介质
CN112766467A (zh) * 2021-04-06 2021-05-07 深圳市一心视觉科技有限公司 基于卷积神经网络模型的图像识别方法

Also Published As

Publication number Publication date
CN113608881A (zh) 2021-11-05

Similar Documents

Publication Publication Date Title
CN109816009B (zh) 基于图卷积的多标签图像分类方法、装置及设备
CN113608881B (zh) 内存分配方法、装置、设备、可读存储介质及程序产品
CN107944545B (zh) 应用于神经网络的计算方法及计算装置
CN110084274B (zh) 实时图像语义分割方法及系统、可读存储介质和终端
US11176446B2 (en) Compositional prototypes for scalable neurosynaptic networks
CN111695696A (zh) 一种基于联邦学习的模型训练的方法及装置
CN111325664A (zh) 风格迁移方法、装置、存储介质及电子设备
CN113592041B (zh) 图像处理方法、装置、设备、存储介质及计算机程序产品
CN115310611B (zh) 一种人物意图推理方法及相关装置
CN114626503A (zh) 模型的训练方法、目标检测方法、装置、电子设备及介质
CN111709415B (zh) 目标检测方法、装置、计算机设备和存储介质
CN111931901A (zh) 一种神经网络构建方法以及装置
CN113159273A (zh) 一种神经网络的训练方法及相关设备
CN112232165A (zh) 一种数据处理方法、装置、计算机及可读存储介质
CN113743317A (zh) 基于生成对抗网络的车牌图片生成方法、介质和设备
CN113408704A (zh) 数据处理方法、装置、设备及计算机可读存储介质
CN112748953A (zh) 基于神经网络模型的数据处理方法、装置及电子设备
CN116957006A (zh) 预测模型的训练方法、装置、设备、介质及程序产品
CN110852414A (zh) 高精度低位卷积神经网络
CN115115835A (zh) 图像的语义分割方法、装置、设备、存储介质及程序产品
CN113282821A (zh) 基于高维会话数据融合的智能应用预测方法、装置及系统
CN114330512B (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
CN110825311A (zh) 用于存储数据的方法和装置
CN117593619B (zh) 图像处理方法、装置、电子设备及存储介质
CN112660161B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40056131

Country of ref document: HK