CN118394493A - 基于巨型内存页的边缘深度学习模型推理加速方法及装置 - Google Patents
基于巨型内存页的边缘深度学习模型推理加速方法及装置 Download PDFInfo
- Publication number
- CN118394493A CN118394493A CN202410151259.XA CN202410151259A CN118394493A CN 118394493 A CN118394493 A CN 118394493A CN 202410151259 A CN202410151259 A CN 202410151259A CN 118394493 A CN118394493 A CN 118394493A
- Authority
- CN
- China
- Prior art keywords
- memory
- learning model
- deep learning
- intermediate variable
- reasoning
- 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
- 238000000034 method Methods 0.000 title claims abstract description 91
- 238000013136 deep learning model Methods 0.000 title claims abstract description 72
- 230000008569 process Effects 0.000 claims abstract description 46
- 230000001133 acceleration Effects 0.000 claims abstract description 27
- 230000006378 damage Effects 0.000 claims description 21
- 230000009191 jumping Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 7
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 238000005457 optimization Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 4
- 238000013139 quantization Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004821 distillation Methods 0.000 description 2
- 238000013138 pruning Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 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
- 238000011002 quantification Methods 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
-
- 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
- G06N5/041—Abduction
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于巨型内存页的边缘深度学习模型推理加速方法及装置,本发明方法包括:步骤S1,获取边缘深度学习模型推理过程中产生的每一个中间变量的内存布局信息;步骤S2,对内存信息的内存布局进行重排内存布局使得边缘深度学习模型进行运行时产生的中间变量总体所需要的内存空间尽可能小;步骤S3,在边缘深度学习模型推理过程中针对重排内存布局采用巨型内存页申请内存空间以降低内存分配和释放相关的系统调用开销。本发明旨在减少快表TLB未命中并避免频繁的系统调用,实现边缘深度学习模型推理过程中的内存访问加速。
Description
技术领域
本发明属于计算机边缘计算领域,具体涉及一种基于巨型内存页的边缘深度学习模型推理加速方法及装置。
背景技术
近年来,计算能力的快速提升推动了深度学习(DL)在诸如计算机视觉、自然语言处理和语音识别等各个领域的显著成功。DL作为机器学习的子领域,引入了许多尖端技术。尽管传统的云计算一直是DL任务的首选,但在边缘设备上部署模型的需求变得日益紧迫。与延迟、隐私和对网络连接的依赖性有关的问题加剧了这种紧迫感。边缘设备受到功耗、尺寸的限制,通常使用中央处理器(CPU)进行计算,并且受到内存资源的限制。因此,优化模型的部署以符合边缘设备的资源限制变得至关重要。推理涉及将经过训练的模型应用于新数据。这个过程涵盖了众多数值计算,计算复杂性和内存使用取决于模型的参数和输入数据。对于推理,高效地执行这些计算并尽快提供准确的预测至关重要。
模型优化是推理加速的常用手段,其中模型优化主要包括了剪枝,量化和蒸馏等方法。剪枝是指通过去除神经网络中不重要的连接或节点来减少模型参数数量和计算量。这种方法可以显著减小模型大小,从而提高推理速度。量化则是将神经网络参数从浮点数转换为低精度的整数表示,减少了存储空间和计算需求。常见的量化方式有固定点数量化和二值化。而蒸馏通过将一个复杂模型的知识(教师模型)传递给一个小型模型(学生模型),使学生模型学习到教师模型的知识,从而减小模型大小并提高推理速度。然而,这些方法主要侧重于与特定应用紧密相关的高级优化。简而言之,这些优化技术是针对特定模型和应用程序量身定制的,这可能会限制它们在切换到不同模型时的有效性。
模型推理过程中涉及大量的内存访问,不同于GPU显存,CPU平台上的内存通常是由操作系统来管理,因此用户访问内存的过程可能会涉及到频繁的系统调用和虚拟地址转换过程。过多的系统调用会显著妨碍处理器性能。此外,当应用程序的数据大小超出了快表(TLB)的覆盖范围时,会导致额外的等待时间来处理TLB未命中。这种延迟导致CPU空闲时间增加,计算效率降低。虽然传统的内存池可以缓解系统调用的问题,但它们不经意间引入了过多的峰值内存使用。此外,管理内存池通常涉及复杂的代码,增加了代码的复杂性和维护开销。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于巨型内存页的边缘深度学习模型推理加速方法及装置,本发明旨在减少快表TLB未命中并避免频繁的系统调用,实现边缘深度学习模型推理过程中的内存访问加速。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于巨型内存页的边缘深度学习模型推理加速方法,包括:
步骤S1,获取边缘深度学习模型推理过程中产生的每一个中间变量的内存布局信息;
步骤S2,对内存信息的内存布局进行重排内存布局使得边缘深度学习模型进行运行时产生的中间变量总体所需要的内存空间尽可能小;
步骤S3,在边缘深度学习模型推理过程中针对重排内存布局采用巨型内存页申请内存空间以降低内存分配和释放相关的系统调用开销。
可选地,步骤S1中获取边缘深度学习模型推理过程中产生的中间变量的内存信息包括:监测边缘深度学习模型推理过程中的申请或者释放内存的操作,根据申请或者释放内存识别为对应中间变量的创建和销毁动作,从而根据中间变量的创建和销毁动作记录每一个中间变量的内存布局信息。
可选地,所述根据中间变量的创建和销毁动作记录每一个中间变量的内存布局信息包括:在中间变量创建时读取当前创建操作的顺序及所需的内存大小,在中间变量销毁时读取销毁操作的顺序,且通过一个初始值为0的全局变量来记录创建和销毁操作的顺序,当且仅当中间变量被创建或者是销毁时该全局变量的值才会改变,从而得到每一个中间变量的内存布局信息。
可选地,所述中间变量的内存布局信息包括中间变量的生命周期、中间变量的内存的偏移量和占用内存空间大小,所述偏移量为中间变量的内存起始地址。
可选地,步骤S2包括:
S2.1,将中间变量按照生命周期降序排序;
S2.2,在排序后的中间变量中选择最左下的偏移量;
S2.3,在排序后的中间变量中遍历选择一个中间变量作为当前中间变量;
S2.4,判断当前中间变量能否放置在所选偏移量,若能放置在所选偏移量则跳转步骤S2.5;否则,跳转步骤S2.3以继续选择中间变量;
S2.5,结合当前中间变量的占用内存空间大小在所选偏移量放置当前中间变量的内存块;
S2.6,在排序后的中间变量中抬高偏移量以选择新的偏移量;
S2.7,判断排序后的中间变量是否已经全部放置,若排序后的中间变量已经全部放置则跳转步骤S3;否则跳转步骤S2.2。
可选地,步骤S3包括:
S3.1,根据得到的重排内存布局确定总体内存占用的大小;
S3.2,向操作系统申请等于总体内存占用的大小的巨型内存页;
S3.3,在边缘深度学习模型推理过程中监测中间变量申请内存空间,若检测到中间变量申请内存空间则跳转步骤S3.4;
S3.4,根据得到的重排内存布局确定重排内存布局后该中间变量的地址偏移量;
S3.5,根据重排内存布局后中间变量的地址偏移量分配对应内存空间给该中间变量;
S3.6,判断边缘深度学习模型的推理任务是否结束,若结束则跳转步骤S3.7;否则,跳转步骤S3.7;否则跳转步骤S3.3;
S3.7,释放巨型内存页,结束并退出。
此外,本发明还提供一种基于巨型内存页的边缘深度学习模型推理加速装置,包括:
采样器程序模块,用于获取边缘深度学习模型推理过程中产生的每一个中间变量的内存布局信息;
规划器程序模块,用于对内存信息的内存布局进行重排内存布局使得边缘深度学习模型进行运行时产生的中间变量总体所需要的内存空间尽可能小;
分配器程序模块,用于在边缘深度学习模型推理过程中针对重排内存布局采用巨型内存页申请内存空间以降低内存分配和释放相关的系统调用开销。
此外,本发明还提供一种基于巨型内存页的边缘深度学习模型推理加速装置,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述基于巨型内存页的边缘深度学习模型推理加速方法。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述基于巨型内存页的边缘深度学习模型推理加速方法。
此外,本发明还提供一种计算机程序产品,所述计算机程序产品中包含计算机指令,所述计算机指令用于被微处理器编程或配置以执行所述基于巨型内存页的边缘深度学习模型推理加速方法。
和现有技术相比,本发明主要具有下述优点:为了减少边缘深度学习模型在推理过程中因快表TLB未命中并避免频繁的系统调用的问题,本发明提供了一种通用的主机内存优化方法,本发明基于深度学习框架来管理中间变量的内存使用,具体而言首先通过运行时采样来获取内存使用的详细信息,然后从操作系统请求巨型内存页来自己管理,同时减少了系统调用和TLB未命中的次数,从而能够实现边缘深度学习模型推理过程中的内存访问加速。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2是本发明实施例中采样过程的示例图。
图3是本发明实施例中不同边缘深度学习模型的内存布局图。
图4是本发明实施例中内存重新布局过程的算法流程图。
图5是本发明实施例中管理后续推理过程内存的流程图。
具体实施方式
为了减少边缘深度学习模型在推理过程中因快表TLB未命中并避免频繁的系统调用的问题,本发明基于巨型内存页的边缘深度学习模型推理加速方法提供了一种通用的主机内存优化方法,命名为HMO(Host Memory Optimization)。下文将结合附图,对本发明基于巨型内存页的边缘深度学习模型推理加速方法及装置进行进一步详细说明。
如图1所示,本实施例基于巨型内存页的边缘深度学习模型推理加速方法包括:
步骤S1,获取边缘深度学习模型推理过程中产生的每一个中间变量的内存布局信息;
步骤S2,对内存信息的内存布局进行重排内存布局使得边缘深度学习模型进行运行时产生的中间变量总体所需要的内存空间尽可能小;
步骤S3,在边缘深度学习模型推理过程中针对重排内存布局采用巨型内存页申请内存空间以降低内存分配和释放相关的系统调用开销。
本实施例将步骤S1的执行功能定义为采样器,将步骤S2中的执行功能定义为规划器,步骤S3的执行主体定义为分配器。本实施例HMO方法,包含了用于完成内存信息采样器、用于优化内存块重新布局的规划器和负责内存管理部分的分配器。各个模块的主要功能描述如下:采样器在负责会将采样过程中的相关的内存信息记录下来,用于后续的优化过程。规划器主要负责使用特定算法将内存的布局重新排序,使得中间变量总体所需要的内存空间尽可能小。分配器主要负责将在后续推理过程中每个中间变量的内存管理工作,同时根据规划器的优化信息向系统申请内存空间。
同一模型多次推理时,无论执行次数多少其计算过程都保持一致。此外,当输入数据的大小保持不变时,模型内部生成的中间变量(例如特征图、激活值等)的维度也保持不变。利用这两个关键特性,本实施例能够记录单次推理过程中中间变量的内存统计信息,以进行进一步的优化。采样器在推理过程中负责获取中间变量内存信息。在每次内存分配或释放时,采样器记录相关信息。本实施例将中间变量的整个生命周期划分为三个阶段:创建、计算和销毁。当中间变量被创建时,采样器捕获其创建的时间和所需内存大小,当中间变量被销毁时捕获被销毁的时间。随后,这些信息传递给规划器进行进一步的优化。采样器会在中间变量创建时读取当前创建操作的顺序以及所需要的内存大小,在中间变量销毁时读取销毁操作的顺序。本实施例使用了一个全局变量来记录创建和销毁操作的顺序,它的初始值为0,当且仅当中间变量被创建或者是销毁时它的值才会改变。这样本实施例就获得了每一个中间变量的生命周期以及它的内存占用大小。通过监控推理阶段中间变量的创建和销毁,本实施例能够详细了解它们的内存使用情况。随后这些信息被传入规划器进行下一步的优化。
本实施例步骤S1中获取边缘深度学习模型推理过程中产生的中间变量的内存信息包括:监测边缘深度学习模型推理过程中的申请或者释放内存的操作,根据申请或者释放内存识别为对应中间变量的创建和销毁动作,从而根据中间变量的创建和销毁动作记录每一个中间变量的内存布局信息。本实施例中,根据中间变量的创建和销毁动作记录每一个中间变量的内存布局信息包括:在中间变量创建时读取当前创建操作的顺序及所需的内存大小,在中间变量销毁时读取销毁操作的顺序,且通过一个初始值为0的全局变量来记录创建和销毁操作的顺序,当且仅当中间变量被创建或者是销毁时该全局变量的值才会改变,从而得到每一个中间变量的内存布局信息。本实施例中,中间变量的内存布局信息包括中间变量的生命周期、中间变量的内存的偏移量和占用内存空间大小,所述偏移量为中间变量的内存起始地址。
如图2所示,变量V1~V5为本实施例中的五个中间变量示例,tc表示中间变量创建时间,td表示中间变量销毁时间,s表示中间变量占用内存大小。每一个中间变量的生命周期均包括创建、计算和销毁三个阶段,以变量V1为例,tc=1表示V1的创建时间为1,td=0表示V1的销毁时间为0,销毁时间的默认初始值为0,当其为0时代表中间变量还没有销毁,当被销毁时会给td重新赋值,s=s1表示V1占用的内存空间大小为s1。
为了减少总体的内存占用,本实施例需要重新调整内存布局。采样器收集的内存信息传递给规划器,后者利用这些数据进行内存布局重组。这个过程主要依赖于二维装箱算法。在本实施例中具体处理了一个特定的场景,即所有与中间变量相关的内存块的分配和释放时间都是预先定义好的。因此,本实施例只需要将每个内存块上移或下移以解决内存分配问题。本实施例实现了一个装箱算法,以优化中间变量的内存布局。该算法的基本步骤包括:选择一个偏移量(内存的起始地址);将一个中间变量放置在选择的偏移量上。本实施例反复执行这两个步骤,直到所有内存块都被适当地放置。 本实施例对多个模型进行的实验一致表明,该算法有效地减少了中间变量的峰值内存使用量,使其接近理论最小值。图3为不同边缘深度学习模型的内存布局图,横轴为时间,纵轴为内存偏移,(a)对应的边缘深度学习模型为GoogLeNet,(b)对应的边缘深度学习模型为MobileNet V2,(c)对应的边缘深度学习模型为MobileNet V3,(d)对应的边缘深度学习模型为ResNet18,(e)对应的边缘深度学习模型为ResNet50,(f)对应的边缘深度学习模型为ResNet152,不同的矩形代表不同的中间变量,矩形的宽和高分别为它的生命周期和内存占用大小。参见图3可知,对内存信息的内存布局进行重排内存布局后,在峰值内存占用时,内存空间几乎没有浪费,说明本实施例步骤S2中对内存信息的内存布局进行重排内存布局可使得的空间占用接近理论最小值,即使得边缘深度学习模型进行运行时产生的中间变量总体所需要的内存空间尽可能小。
如图4所示,本实施例步骤S2包括:
S2.1,将中间变量按照生命周期降序排序;
S2.2,在排序后的中间变量中选择最左下的偏移量;
S2.3,在排序后的中间变量中遍历选择一个中间变量作为当前中间变量;
S2.4,判断当前中间变量能否放置在所选偏移量,若能放置在所选偏移量则跳转步骤S2.5;否则,跳转步骤S2.3以继续选择中间变量;
S2.5,结合当前中间变量的占用内存空间大小在所选偏移量放置当前中间变量的内存块;
S2.6,在排序后的中间变量中抬高偏移量以选择新的偏移量;
S2.7,判断排序后的中间变量是否已经全部放置,若排序后的中间变量已经全部放置则跳转步骤S3;否则跳转步骤S2.2。
本实施例中分配器管理后续推理过程内存采用了内存池的思想,向操作系统申请了一块内存空间来自行管理,以最小化系统调用。同时为了减少内存访问时TLB未命中的发生,本实施例引入了大页面,可以有效地减少TLB未命中,提高应用程序的性能。
为了最小化与内存分配和释放相关的系统调用开销,本实施例采用了一种一次性分配内存空间的方法,只需要一次分配和一次释放系统调用。分配器在确定请求的大页面数量和中间变量的最佳内存分配策略方面发挥着关键作用,利用了规划器优化后的内存布局信息。在从系统获取内存空间后,分配器管理所有后续的中间变量内存分配和释放过程。分配器首先向规划器获取总体所需内存空间大小,然后申请对应的巨型页。之后,每当有中间变量申请空间时都会查询规划器获取到对应的偏移量来分配指定的地址。由于规划器在优化过程中已经确保中间变量的不会同时使用同一块空间,因此在中间变量被销毁时本实施例不需要进行空间回收的操作,可以直接在下次使用时分配给其他中间变量。
如图5所示,本实施例步骤S3包括:
S3.1,根据得到的重排内存布局确定总体内存占用的大小;
S3.2,向操作系统申请等于总体内存占用的大小的巨型内存页;
S3.3,在边缘深度学习模型推理过程中监测中间变量申请内存空间,若检测到中间变量申请内存空间则跳转步骤S3.4;
S3.4,根据得到的重排内存布局确定重排内存布局后该中间变量的地址偏移量;
S3.5,根据重排内存布局后中间变量的地址偏移量分配对应内存空间给该中间变量;
S3.6,判断边缘深度学习模型的推理任务是否结束,若结束则跳转步骤S3.7;否则,跳转步骤S3.7;否则跳转步骤S3.3;
S3.7,释放巨型内存页,结束并退出。
综上所述,为了减少边缘深度学习模型在推理过程中因快表TLB未命中并避免频繁的系统调用的问题,本实施例提供了一种通用的主机内存优化方法,具体而言首先通过运行时采样来获取内存使用的详细信息,然后从操作系统请求巨型内存页来自己管理,同时减少了系统调用和TLB未命中的次数,从而能够实现边缘深度学习模型推理过程中的内存访问加速。
此外,与本实施例基于巨型内存页的边缘深度学习模型推理加速方法完全对应,本实施例还提供一种基于巨型内存页的边缘深度学习模型推理加速装置,包括:
采样器程序模块,用于获取边缘深度学习模型推理过程中产生的每一个中间变量的内存布局信息;
规划器程序模块,用于对内存信息的内存布局进行重排内存布局使得边缘深度学习模型进行运行时产生的中间变量总体所需要的内存空间尽可能小;
分配器程序模块,用于在边缘深度学习模型推理过程中针对重排内存布局采用巨型内存页申请内存空间以降低内存分配和释放相关的系统调用开销。
此外,与本实施例基于巨型内存页的边缘深度学习模型推理加速方法完全对应,本实施例还提供一种基于巨型内存页的边缘深度学习模型推理加速装置,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述基于巨型内存页的边缘深度学习模型推理加速方法。
此外,与本实施例基于巨型内存页的边缘深度学习模型推理加速方法完全对应,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述基于巨型内存页的边缘深度学习模型推理加速方法。
此外,与本实施例基于巨型内存页的边缘深度学习模型推理加速方法完全对应,本实施例还提供一种计算机程序产品,所述计算机程序产品中包含计算机指令,所述计算机指令用于被微处理器编程或配置以执行所述基于巨型内存页的边缘深度学习模型推理加速方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种基于巨型内存页的边缘深度学习模型推理加速方法,其特征在于,包括:
步骤S1,获取边缘深度学习模型推理过程中产生的每一个中间变量的内存布局信息;
步骤S2,对内存信息的内存布局进行重排内存布局使得边缘深度学习模型进行运行时产生的中间变量总体所需要的内存空间尽可能小;
步骤S3,在边缘深度学习模型推理过程中针对重排内存布局采用巨型内存页申请内存空间以降低内存分配和释放相关的系统调用开销。
2.根据权利要求1所述的基于巨型内存页的边缘深度学习模型推理加速方法,其特征在于,步骤S1中获取边缘深度学习模型推理过程中产生的中间变量的内存信息包括:监测边缘深度学习模型推理过程中的申请或者释放内存的操作,根据申请或者释放内存识别为对应中间变量的创建和销毁动作,从而根据中间变量的创建和销毁动作记录每一个中间变量的内存布局信息。
3.根据权利要求2所述的基于巨型内存页的边缘深度学习模型推理加速方法,其特征在于,所述根据中间变量的创建和销毁动作记录每一个中间变量的内存布局信息包括:在中间变量创建时读取当前创建操作的顺序及所需的内存大小,在中间变量销毁时读取销毁操作的顺序,且通过一个初始值为0的全局变量来记录创建和销毁操作的顺序,当且仅当中间变量被创建或者是销毁时该全局变量的值才会改变,从而得到每一个中间变量的内存布局信息。
4.根据权利要求1所述的基于巨型内存页的边缘深度学习模型推理加速方法,其特征在于,所述中间变量的内存布局信息包括中间变量的生命周期、中间变量的内存的偏移量和占用内存空间大小,所述偏移量为中间变量的内存起始地址。
5.根据权利要求1所述的基于巨型内存页的边缘深度学习模型推理加速方法,其特征在于,步骤S2包括:
S2.1,将中间变量按照生命周期降序排序;
S2.2,在排序后的中间变量中选择最左下的偏移量;
S2.3,在排序后的中间变量中遍历选择一个中间变量作为当前中间变量;
S2.4,判断当前中间变量能否放置在所选偏移量,若能放置在所选偏移量则跳转步骤S2.5;否则,跳转步骤S2.3以继续选择中间变量;
S2.5,结合当前中间变量的占用内存空间大小在所选偏移量放置当前中间变量的内存块;
S2.6,在排序后的中间变量中抬高偏移量以选择新的偏移量;
S2.7,判断排序后的中间变量是否已经全部放置,若排序后的中间变量已经全部放置则跳转步骤S3;否则跳转步骤S2.2。
6.根据权利要求1所述的基于巨型内存页的边缘深度学习模型推理加速方法,其特征在于,步骤S3包括:
S3.1,根据得到的重排内存布局确定总体内存占用的大小;
S3.2,向操作系统申请等于总体内存占用的大小的巨型内存页;
S3.3,在边缘深度学习模型推理过程中监测中间变量申请内存空间,若检测到中间变量申请内存空间则跳转步骤S3.4;
S3.4,根据得到的重排内存布局确定重排内存布局后该中间变量的地址偏移量;
S3.5,根据重排内存布局后中间变量的地址偏移量分配对应内存空间给该中间变量;
S3.6,判断边缘深度学习模型的推理任务是否结束,若结束则跳转步骤S3.7;否则,跳转步骤S3.7;否则跳转步骤S3.3;
S3.7,释放巨型内存页,结束并退出。
7.一种基于巨型内存页的边缘深度学习模型推理加速装置,其特征在于,包括:
采样器程序模块,用于获取边缘深度学习模型推理过程中产生的每一个中间变量的内存布局信息;
规划器程序模块,用于对内存信息的内存布局进行重排内存布局使得边缘深度学习模型进行运行时产生的中间变量总体所需要的内存空间尽可能小;
分配器程序模块,用于在边缘深度学习模型推理过程中针对重排内存布局采用巨型内存页申请内存空间以降低内存分配和释放相关的系统调用开销。
8.一种基于巨型内存页的边缘深度学习模型推理加速装置,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~6中任意一项所述基于巨型内存页的边缘深度学习模型推理加速方法。
9.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~6中任意一项所述基于巨型内存页的边缘深度学习模型推理加速方法。
10.一种计算机程序产品,所述计算机程序产品中包含计算机指令,其特征在于,所述计算机指令用于被微处理器编程或配置以执行权利要求1~6中任意一项所述基于巨型内存页的边缘深度学习模型推理加速方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410151259.XA CN118394493A (zh) | 2024-02-02 | 2024-02-02 | 基于巨型内存页的边缘深度学习模型推理加速方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410151259.XA CN118394493A (zh) | 2024-02-02 | 2024-02-02 | 基于巨型内存页的边缘深度学习模型推理加速方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118394493A true CN118394493A (zh) | 2024-07-26 |
Family
ID=91983727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410151259.XA Pending CN118394493A (zh) | 2024-02-02 | 2024-02-02 | 基于巨型内存页的边缘深度学习模型推理加速方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118394493A (zh) |
-
2024
- 2024-02-02 CN CN202410151259.XA patent/CN118394493A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12039371B2 (en) | Memory allocation method and apparatus for neural network | |
US9047196B2 (en) | Usage aware NUMA process scheduling | |
US20240160891A1 (en) | Memory allocation method for ai processor, computer apparatus, and computer-readable storage medium | |
CN100447744C (zh) | 堆栈管理系统及方法 | |
CN1304941C (zh) | 用于自主硬件辅助的线程栈跟踪的装置与方法 | |
US20220035544A1 (en) | Memory allocation method and device, and electronic apparatus | |
US20120233592A1 (en) | Meta Garbage Collection for Functional Code | |
CN1271889A (zh) | 用于使用寄存器分配器建立调用约定序言和收尾程序代码的方法和装置 | |
JP2014504768A (ja) | 領域に基づくガベージ・コレクタを用いてクラスを漸進的にアンロードするための方法、コンピュータ・プログラム製品、および装置 | |
JP2001147819A (ja) | 最適化装置および記録媒体 | |
CN110308982B (zh) | 一种共享内存复用方法及装置 | |
CN1853165A (zh) | 用于多线程的编译器创建辅助线程的方法和装置 | |
CN104603755A (zh) | 循环向量化方法和设备 | |
CN108776833A (zh) | 一种数据处理方法、系统及计算机可读存储介质 | |
CN103678619B (zh) | 数据库索引处理方法和装置 | |
CN111984414B (zh) | 一种数据处理的方法、系统、设备及可读存储介质 | |
CN118394493A (zh) | 基于巨型内存页的边缘深度学习模型推理加速方法及装置 | |
US8914779B2 (en) | Data placement for execution of an executable | |
CN115829826A (zh) | 模型存储优化方法及电子设备 | |
GB2520943A (en) | Memory Allocation | |
CN102981839B (zh) | 合并执行大规模并行线程的数据扩展优化方法 | |
Adinew et al. | Spark performance optimization analysis in memory tuning on gc overhead for big data analytics | |
CN105653552B (zh) | 一种结构化文档处理方法、装置及设备 | |
CN111061538A (zh) | 一种多Lua虚拟机内存优化方法及其系统 | |
CN118509159B (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 |