CN114020465A - 模型的推理优化方法、系统、电子设备和存储介质 - Google Patents
模型的推理优化方法、系统、电子设备和存储介质 Download PDFInfo
- Publication number
- CN114020465A CN114020465A CN202111314799.8A CN202111314799A CN114020465A CN 114020465 A CN114020465 A CN 114020465A CN 202111314799 A CN202111314799 A CN 202111314799A CN 114020465 A CN114020465 A CN 114020465A
- Authority
- CN
- China
- Prior art keywords
- size
- strategy
- model
- dimension
- cpu
- 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 59
- 238000005457 optimization Methods 0.000 title claims abstract description 40
- 238000004364 calculation method Methods 0.000 claims abstract description 88
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 14
- 230000000903 blocking effect Effects 0.000 claims description 30
- 239000011159 matrix material Substances 0.000 claims description 26
- 230000008707 rearrangement Effects 0.000 claims description 20
- 238000004458 analytical method Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 5
- 238000000638 solvent extraction Methods 0.000 claims 1
- 238000013135 deep learning Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 238000013136 deep learning model Methods 0.000 description 6
- 241001522296 Erithacus rubecula Species 0.000 description 5
- 238000012549 training Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请实施例涉及深度学习技术领域,特别涉及一种模型的推理优化方法、系统、电子设备和存储介质,该方法包括:获取模型的算子信息和中央处理单元CPU的硬件信息;根据所述模型的算子信息、所述CPU的硬件信息和预设的策略生成算法,确定代码生成策略;其中,所述代码生成策略包括调度代码生成策略和计算代码生成策略;根据所述代码生成策略,生成调度代码和计算代码;将所述调度代码和所述计算代码进行编译和链接,获得编译完成的模型文件。本申请实施例提供的模型的推理优化方法,可以充分利用CPU的计算能力,大幅提升模型推理的速度和效率,实现对模型进行有针对性的优化。
Description
技术领域
本申请实施例涉及深度学习技术领域,特别涉及一种模型的推理优化方法、系统、电子设备和存储介质。
背景技术
随着深度学习技术的飞速发展,越来越多的技术可以由模型来实现,比如人脸识别模型、语音识别模型等,服务提供商将训练好的模型进行部署,以提供人脸识别、语音识别等推理服务,深度学习模型可以基于图形处理单元(Graphics Processing Unit,简称:GPU)进行推理服务的部署,可以满足推理服务的高吞吐量需求和低时延需求,但GPU的价格非常昂贵,基于GPU进行部署推理成本很高、耗电量也很大,而基于中央处理单元(CentralProcessing Unit,简称:CPU)进行推理服务的部署价格较低,推理成本也比较低,当CPU推理能够满足吞吐量与时延的要求时,基于CPU进行部署是服务提供商的首选,并且,在某些没有配置GPU的设备上,只能基于CPU进行推理服务的部署。
然而,技术人员将深度学习模型部署在CPU进行推理服务部署时,通常会将模型直接编译为目标文件格式,并在计算时调用与训练过程相同的通用计算方法以获取最终的推理结果,虽然能够满足推理的正确性需求,但推理速度比较慢,无法对不同的模型进行有针对性的优化,也不能充分发挥CPU的计算能力。
发明内容
本申请实施例的主要目的在于提出一种模型的推理优化方法、系统、电子设备和存储介质,可以充分利用CPU的计算能力,大幅提升模型推理的速度和效率,实现对模型进行有针对性的优化。
为实现上述目的,本申请实施例提供了一种模型的推理优化方法,该方法包括:获取模型的算子信息和中央处理单元CPU的硬件信息;根据所述模型的算子信息、所述CPU的硬件信息和预设的策略生成算法,确定代码生成策略;其中,所述代码生成策略包括调度代码生成策略和计算代码生成策略;根据所述代码生成策略,生成调度代码和计算代码;将所述调度代码和所述计算代码进行编译和链接,获得编译完成的模型文件。
为实现上述目的,本申请实施例还提供了一种模型的推理优化系统,包括模型分析模块、硬件分析模块、策略生成模块、代码生成模块和编译器模块;所述模型分析模块用于获取模型的算子信息,并将所述模型的算子信息发送至所述策略生成模块;所述硬件分析模块用于获取中央处理单元CPU的硬件信息,并将所述CPU的硬件信息发送至所述策略生成模块;所述策略生成模块用于根据所述模型的算子信息、所述CPU的硬件信息和预设的策略生成算法,确定代码生成策略,并将所述代码生成策略发送至所述代码生成模块;其中,所述代码生成策略包括调度代码生成策略和计算代码生成策略;所述代码生成模块用于根据所述代码生成策略,生成调度代码和计算代码,并将所述调度代码和所述计算代码发送至所述编译器模块;所述编译器模块用于将所述调度代码和所述计算代码进行编译和链接,获得编译完成的模型文件。
为实现上述目的,本申请实施例还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的模型的推理优化方法。
为实现上述目的,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的模型的推理优化方法。
本申请提出的模型的推理优化方法、系统、电子设备和存储介质,先获取模型的算子信息和CPU的硬件信息,根据获取到的模型的算子信息、CPU的硬件信息以及预设的策略生成算法,确定包括调度代码生成策略和计算代码生成策略在内的代码生成策略,然后根据所述代码生成策略,生成调度代码和计算代码,并将调度代码和计算代码进行编译和链接,获得编译完成的模型文件,考虑到不同模型的算子信息存在不同,即使同一模型的算子在不同参数形势下也存在不同,且不同的CPU提供的计算环境和算力也不同,对所有模型和CPU使用通用的计算方法严重影响模型的推理效率,不能发挥CPU的计算能力,本实施例综合考虑模型的算子信息和CPU的硬件信息的实际情况,对不同的模型、不同的CPU针对性地制定代码生成策略,从而生成最适合模型、最适合CPU的调度代码和计算代码,可以充分利用CPU的计算能力,显著降低推理时延、提升推理吞吐量、降低推理的成本,从而大幅提升模型推理的速度和效率,实现对模型进行有针对性的优化。
附图说明
图1是根据本申请一个实施例的模型的推理优化方法的流程图一;
图2是根据本申请一个实施例中,根据模型的算子信息、CPU的硬件信息和预设的策略生成算法,确定代码生成策略的流程图;
图3是根据本申请一个实施例中,根据输入维度大小、输出维度大小和CPU的可用线程数,确定并行线程数和并行分块策略的流程图;
图4是根据本申请一个实施例中,根据并行线程数确定并行分块策略的流程图;
图5是根据本申请另一个实施例的模型的推理优化方法的流程图二;
图6是根据本申请另一个实施例的模型的推理优化方法的流程图三;
图7是根据本申请一个实施例中,获取模型的算子信息的流程图;
图8是根据本申请一个实施例中,确定使用的卷积并行策略的流程图;
图9是根据本申请另一个实施例中提供的一种模型的推理优化系统的示意图;
图10是根据本申请另一个实施例的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
随着深度学习技术的发展,包括人脸识别服务、语音识别服务等在内的推理服务具有很好的发展前景和广大的市场,推理服务提供商可以通过多种方式将训练好的推理模型进行部署向客户提供推理服务,比如部署在GPU、部署在CPU等。推理服务提供商将深度学习模型部署在CPU进行推理服务部署时,通常将模型直接编译为目标文件格式,并在计算时调用与训练过程相同的通用计算方法以获取最终的推理结果。
虽然在计算时调用与训练过程相同的通用计算方法能够满足推理的正确性需求,但本申请的发明人发现,上述技术方案中至少存在以下问题:
(1)不同种类、不同用途的深度学习模型的神经网络算子存在不同,在推理过程中调用通用计算方法无法对不同的算子进行针对性的优化,算子的计算效率较低,模型的推理效率也就较低。
(2)即使是同一神经网络算子,其在不同参数形式下也存在不同,若在推理过程中使用通用计算方法,算子在不同参数形式下的计算流程相同,无法对在不同参数形式下的算子进行针对性的优化。
(3)不同的CPU的计算能力不同,简单地使用通用计算方法不能充分发挥CPU的计算能力。
为了解决上述“模型的推理速度比较慢,无法对不同的模型进行有针对性的优化,也不能充分发挥CPU的计算能力”的技术问题,本申请的一个实施例提供了一种模型的推理优化方法,应用于电子设备,其中,电子设备可以是终端或者服务器,本实施例以及以下各实施例均以服务器为例进行描述,下面对本实施例的模型的推理优化方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本实施例的模型的推理优化方法的具体流程可以如图1所示,包括:
步骤101,获取模型的算子信息和CPU的硬件信息。
示例性地,服务器在进行模型的推理优化时,可以先获取模型的算子信息和CPU的硬件信息,其中,模型的算子信息包括但不限于:输入维度大小、输出维度大小和Batch-Size维度大小等;CPU的硬件信息包括但不限于:CPU支持的指令集集合、CPU的可用线程数、CPU的单指令多数据寄存器个数、单指令多数据寄存器一次能够处理的浮点数个数、操作系统位数和缓存大小等。
在一个例子中,服务器从模型处获取到模型的算子信息后,可以对模型的算子信息进行重新组合,即进行标准化处理,生成标准化的模型的算子信息,考虑到不同的模型的属性、格式等可能存在不同,本实施例对获取到的模型的算子信息进行标准化处理,可以提升模型的推理优化方法的鲁棒性和普适性。
步骤102,根据模型的算子信息、CPU的硬件信息和预设的策略生成算法,确定代码生成策略。
示例性地,服务器在获取到模型的算子信息和CPU的硬件信息后,可以根据模型的算子信息、CPU的硬件信息和预设的策略生成算法,确定代码生成策略,其中,代码生成策略包括调度代码生成策略和计算代码生成策略,预设的策略生成算法可以由本领域的技术人员根据实际需要进行设置。
示例性地,调度代码生成策略主要描述算子计算线程数的调整、算子各维度的线程数分布、多线程并行的线程调度策略、多线程位置的确定策略、多线程并行的分块策略和每一个线程下的算子调度与分块策略等;计算代码生成策略主要描述单指令多输入策略的实施方式、在各维度上进行循环计算的顺序、计算核大小和计算核策略等。
在一个例子中,服务器内部预存有模型的算子信息、CPU的硬件信息与策略生成算法的对应关系,服务器在获取到模型的算子信息和CPU的硬件信息后,可以调用服务器内部预存的对应关系确定策略生成算法,以确定代码生成策略。
步骤103,根据代码生成策略,生成调度代码和计算代码。
示例性地,服务器确定调度代码生成策略、计算代码生成策略后,可以根据调度代码生成策略生成调度代码、根据计算代码生成策略生成计算代码。
在一个例子中,服务器生成的调度代码为C++代码,生成的计算代码为汇编代码,使用这样的代码形式可以进一步提升模型推理速度和效率。
步骤104,将调度代码和计算代码进行编译和链接,获得编译完成的模型文件。
示例性地,服务器生成调度代码和计算代码后,可以分别编译调度代码和计算代码,并将编译后得到的结果进行链接,以获得编译完成的模型文件。
本实施例,相较于直接将模型编译成模型文件,并在算子计算时使用与训练过程相同的通用计算方法来实现推理服务的技术方案而言,服务器先获取模型的算子信息和CPU的硬件信息,根据获取到的模型的算子信息、CPU的硬件信息以及预设的策略生成算法,确定包括调度代码生成策略和计算代码生成策略在内的代码生成策略,然后根据所述代码生成策略,生成调度代码和计算代码,并将调度代码和计算代码进行编译和链接,获得编译完成的模型文件,考虑到不同模型的算子信息存在不同,即使同一模型的算子在不同参数形势下也存在不同,且不同的CPU提供的计算环境和算力也不同,对所有模型和CPU使用通用的计算方法严重影响模型的推理效率,不能发挥CPU的计算能力,本实施例综合考虑模型的算子信息和CPU的硬件信息的实际情况,对不同的模型、不同的CPU针对性地制定代码生成策略,从而生成最适合模型、最适合CPU的调度代码和计算代码,可以充分利用CPU的计算能力,显著降低推理时延、提升推理吞吐量、降低推理的成本,从而大幅提升模型推理的速度和效率,实现对模型进行有针对性的优化。
在一个实施例中,模型的算子信息包括输入维度大小和输出维度大小,CPU的硬件信息包括CPU支持的指令集集合、CPU的可用线程数、CPU的单指令多数据寄存器个数和单指令多数据寄存器一次能够处理的浮点数个数,根据模型的算子信息、CPU的硬件信息和预设的策略生成算法,确定代码生成策略,可以通过如图2所示的各步骤实现,具体包括:
步骤201,根据输入维度大小、输出维度大小和CPU的可用线程数,确定并行线程数和并行分块策略。
示例性地,服务器在确定调度代码生成策略时,可以先根据模型的算子信息中的维度大小和输出维度大小,以及CPU的硬件信息中的CPU的可用线程数,确定并行线程数和并行分块策略,并行线程数可以表征该模型是否需要多线程并行、需要使用几个线程进行多线程并行等,并行分块策略可以表征哪些线程需要参与多线程并行、参与多线程并行的每个线程需要处理的各维度的大小等。
步骤202,根据并行线程数、并行分块策略和CPU支持的指令集集合,确定调度代码生成策略。
示例性地,服务器确定并行线程数和并行分块策略后,可以基于并行线程数和并行分块策略,结合CPU的硬件信息中的CPU支持的指令集集合,确定调度代码生成策略,若服务器确定不需要进行多线程并行,则可以调用预设的单线程调度模板确定调度代码生成策略,若服务器确定需要进行多线程并行,则可以根据并行线程数和并行分块策略,调用预设的多线程调度模板,确定调度代码生成策略,其中,预设的单线程调度模板和预设的多线程调度模板可以由本领域的技术人员根据实际需要进行设置,本申请的实施例对此不做具体限定。
步骤203,根据CPU的单指令多数据寄存器个数和单指令多数据寄存器一次能够处理的浮点数个数,确定计算核大小和循环策略。
示例性地,服务器在确定计算代码生成策略时,可以根据CPU的硬件信息中的CPU的单指令多数据寄存器个数和单指令多数据寄存器一次能够处理的浮点数个数,确定计算核大小和循环策略,其中,计算核大小包括各维度的计算核大小,循环策略包括各维度的循环策略,以及循环计算的顺序。
在一个例子中,模型的算子信息中包括Batch-Size维度大小,若Batch-Size维度大小等于1,计算核大小包括输入维度的计算核大小和输出维度的计算核大小,服务器可以通过以下公式确定计算核大小:
式中,M为输入维度的计算核大小,N为输出维度的计算核大小,L为单指令多数据寄存器一次能够处理的浮点数个数,R为CPU的单指令多数据寄存器个数。
在一个例子中,模型的算子信息中包括Batch-Size维度大小,若Batch-Size维度大小等于1,循环策略包括输入维度的循环策略和输出维度的循环策略,服务器确定的循环策略可以如表1所示:
表1:循环策略示意表(一)
CPU的单指令多数据寄存器个数 | 输入维度循环策略 | 输出维度循环策略 |
16 | (2L,L,L/2,…,1) | (4,2,1) |
8 | (L,L/2,…,1) | (3,2,1) |
4 | (L,L/2,…,1) | 1 |
表1中,L为单指令多数据寄存器一次能够处理的浮点数个数,以L等于8,CPU的单指令多数据寄存器个数为8为例,输入维度循环策略为(8,4,2,1),输入维度大小为55,服务器首先按照8进行循环,循环6次后,输入维度大小还剩余7,服务器再按照4进行循环,循环1次,输入维度大小还剩余3,服务器再按照2进行循环,循环1次,输入维度大小还剩余1,服务器再按照1进行循环,循环1次,输入维度大小剩余为0,服务器可以结束循环。
步骤204,根据计算核大小、循环策略和CPU支持的指令集集合,确定计算代码生成策略。
在一个例子中,模型的算子信息中包括Batch-Size维度大小,若Batch-Size维度大小等于1,服务器确定计算核大小和循环策略后,可以基于计算核大小和循环策略,结合CPU的硬件信息中的CPU支持的指令集集合,确定调度代码生成策略,即确定外层循环框架、内层循环框架、矩阵与向量乘积的计算方式、以及结果累加和存储方式等。
本实施例,服务器在确定调度代码生成策略时,先确定并行线程数以及并行分块策略,在确定计算代码生成策略时,先确定计算核大小和循环策略,即在推理过程中进行分块、多线程并行和循环,从而进一步提升模型推理的速度和效率,提升用户的使用体验。
在一个实施例中,服务器根据输入维度大小、输出维度大小和CPU的可用线程数,确定并行线程数和并行分块策略,可以通过如图3所示的各步骤实现,具体包括:
步骤301,判断输出维度大小是否大于第一预设阈值且小于第二预设阈值,如果是,执行步骤302,否则,执行步骤303。
步骤302,确定并行线程数为CPU的可用线程数,并根据并行线程数确定并行分块策略。
示例性地,服务器根据输入维度大小、输出维度大小和CPU的可用线程数,确定并行线程数和并行分块策略时,先判断输出维度大小是否大于第一预设阈值且小于第二预设阈值,若输出维度大小大于第一预设阈值且小于第二预设阈值,服务器确定并行线程数为CPU的可用线程数,并根据并行线程数确定并行分块策略,即CPU可用的所有线程均参与到多线程并行中,其中,第一预设阈值和第二预设阈值可以由本领域的技术人员根据实际需要进行设置,本申请的实施例对此不做具体限定。
步骤303,判断输入维度大小与输出维度大小的乘积是否小于第三预设阈值,如果是,执行步骤304,否则,执行步骤305。
步骤304,确定并行线程数为1。
示例性地,若输出维度大小不大于第一预设阈值,或不小于第二预设阈值,服务器继续判断输入维度大小与输出维度大小的乘积是否小于第三预设阈值,若服务器确定输入维度大小与输出维度大小的乘积小于第三预设阈值,则无需进行多线程并行,服务器确定并行线程数为1,即单线程运行,其中,第三预设阈值可以由本领域的技术人员根据实际需要进行设置。
步骤305,计算输出维度大小与CPU的可用线程数的比值。
步骤306,根据输出维度大小与CPU的可用线程数的比值确定并行线程数,并根据并行线程数确定并行分块策略。
示例性地,若服务器确定输入维度大小与输出维度大小的乘积大于或等于第三预设阈值,服务器可以计算输出维度大小与CPU的可用线程数的比值,根据输出维度大小与CPU的可用线程数的比值和预设公式确定并行线程数,并根据并行线程数确定并行分块策略。
本实施例,服务器根据输入维度大小、输出维度大小以及CPU的可用线程数来决定并行线程数和并行分块策略,可以充分发挥CPU的计算能力,更加贴合模型的实际需要,从而进一步提升模型的推理效率。
在一个实施例中,服务器根据并行线程数确定并行分块策略,可以通过如图4所示的各步骤实现,具体包括:
步骤401,判断输出维度大小p是否可以被并行线程数q整除,如果是,执行步骤402,否则,执行步骤403。
步骤402,确定每个线程需要处理的输出维度大小为p/q。
步骤403,确定q-1个线程中的每个线程需要处理的输出维度大小为1+p/q,剩余的一个线程需要处理的输出维度大小为p-(q-1)×(1+p/q)。
示例性地,q为大于1的整数,p为大于或等于q的整数,服务器确定并行线程数q后,判断输出维度大小p是否可以被并行线程数q整除,若p可以被p整除,服务器确定参与多线程并行的q个线程中每个线程需要处理的输出维度大小为p/q;若p不可以被q整除,服务器确定参与多线程并行的q个线程中的q-1个线程中的每个线程需要处理的输出维度大小为1+p/q,剩余的一个线程需要处理的输出维度大小为p-(q-1)×(1+p/q)。
本申请的另一个实施例提供了一种模型的推理优化方法,本实施例中模型的算子信息包括Batch-Size维度大小,本实施例中,Batch-Size维度大小等于1,下面对本实施例的模型的推理优化方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须,本实施例的模型的推理优化方法的具体流程可以如图5所示,包括:
步骤501,获取模型的算子信息和CPU的硬件信息。
步骤502,根据输入维度大小、输出维度大小和CPU的可用线程数,确定并行线程数和并行分块策略。
步骤503,根据并行线程数、并行分块策略和CPU支持的指令集集合,确定调度代码生成策略。
步骤504,根据CPU的单指令多数据寄存器个数和单指令多数据寄存器一次能够处理的浮点数个数,确定计算核大小和循环策略。
步骤505,根据计算核大小、循环策略和CPU支持的指令集集合,确定计算代码生成策略。
步骤506,根据调度代码生成策略和计算代码生成策略,生成调度代码和计算代码。
步骤507,将调度代码和计算代码进行编译和链接,获得编译完成的模型文件。
本申请的另一个实施例提供了一种模型的推理优化方法,本实施例中模型的算子信息包括Batch-Size维度大小,本实施例中,Batch-Size维度大小大于1,下面对本实施例的模型的推理优化方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须,本实施例的模型的推理优化方法的具体流程可以如图6所示,包括:
步骤601,获取模型的算子信息和CPU的硬件信息。
其中,步骤601与步骤101大致相同,此处不再赘述。
步骤602,根据输入维度大小、输出维度大小、Batch-Size维度大小和CPU的可用线程数,确定并行线程数和并行分块策略。
在一个例子中,并行分块策略包括输出维度的并行分块策略和Batch-Size维度的并行分块策略。
步骤603,根据并行线程数、并行分块策略和CPU支持的指令集集合,确定调度代码生成策略。
其中,步骤步骤603与步骤202大致相同,此处不再赘述。
步骤604,根据CPU的单指令多数据寄存器个数和单指令多数据寄存器一次能够处理的浮点数个数,确定计算核大小和循环策略。
在一个例子中,在Batch-Size维度大小大于1的情况下,计算核大小包括输出维度的计算核大小、输出维度的计算核大小和Batch-Size维度的计算核大小,服务器可以通过以下公式确定计算核大小:
式中,M为输入维度的计算核大小,K为Batch-Size维度的计算核大小,N为输出维度的计算核大小,L为单指令多数据寄存器一次能够处理的浮点数个数,R为CPU的单指令多数据寄存器个数。
在一个例子中,若Batch-Size维度大小大于1,循环策略包括输入维度的循环策略、输出维度的循环策略和Batch-Size维度的循环策略,服务器确定的循环策略可以如表2所示:
表2:循环策略示意表(二)
表2中,L为单指令多数据寄存器一次能够处理的浮点数个数,在输出维度剩余大小不足2L或L的情况下,服务器可以进行补0等处理。
步骤605,获取模型的权重矩阵的内存排布形式,并判断输入维度是否为主导维度。
步骤606,在输入维度为主导维度的情况下,确定权重矩阵重排策略。
示例性地,服务器在确定计算代码生成策略时,先获取模型的权重矩阵的内存排布形式,判断模型的权重矩阵的内存排布形式是否是输入维度为主导维度,若模型的权重矩阵的内存排布形式是输入维度为主导维度,则服务器需要对模型的权重矩阵进行重排,确定权重矩阵重排策略。
步骤607,根据计算核大小、循环策略、CPU支持的指令集集合和权重矩阵重排策略,确定计算代码生成策略。
示例性地,服务器确定计算核大小、循环策略和权重矩阵重排策略后,可以基于计算核大小、循环策略和权重矩阵重排策略,结合CPU的硬件信息中的CPU支持的指令集集合,确定调度代码生成策略,即确定外层循环框架、中层循环框架、内层循环框架、矩阵与向量乘积的计算方式、以及结果累加和存储方式等。
步骤608,根据代码生成策略,生成调度代码和计算代码。
步骤609,将调度代码和计算代码进行编译和链接,获得编译完成的模型文件。
其中,步骤608至步骤609与步骤103至步骤104大致相同,此处不再赘述。
本实施例,所述模型的算子信息还包括所述Batch-Size维度大小,若所述Batch-Size维度大小大于1,则在所述根据所述计算核大小、所述循环策略和所述CPU支持的指令集集合,确定计算代码生成策略之前,包括:获取所述模型的权重矩阵的内存排布形式,并判断所述输入维度是否为主导维度;在所述输入维度为主导维度的情况下,确定权重矩阵重排策略;所述根据所述计算核大小、所述循环策略和所述CPU支持的指令集集合,确定计算代码生成策略,包括:根据所述计算核大小、所述循环策略、所述CPU支持的指令集集合和所述权重矩阵重排策略,确定计算代码生成策略,当权重矩阵的内存排布形式是输入维度为主导维度时,模型的数据读取比较缓慢,本申请的实施例对权重矩阵的内存排布形式进行重排,可以提升数据读取的速度,从而进一步提升模型的推理速度和效率。
在一个实施例中,模型的算子为二维卷积算子,服务器获取模型的算子信息,可以通过如图7所示的各步骤实现,具体包括:
步骤701,获取二维卷积算子的信息。
示例性地,二维卷积算子的信息包括但不限于二维卷积算子的高度方向上的卷积核大小、宽度方向上的卷积核大小、高度方向上的步长大小、宽度方向上的步长大小和Padding值等。
步骤702,在二维卷积算子的高度方向上的卷积核大小、宽度方向上的卷积核大小、高度方向上的步长大小、宽度方向上的步长大小和Padding值中至少一项不等于1的情况下,确定对二维卷积算子的图像重排策略。
步骤703,根据图像重排策略,将二维卷积算子转化为全连接算子,并获取全连接算子的信息。
示例性地,服务器获取到二维卷积算子的信息后,可以判断二维卷积算子的高度方向上的卷积核大小、宽度方向上的卷积核大小、高度方向上的步长大小、宽度方向上的步长大小和Padding值是否均等于1,若二维卷积算子的高度方向上的卷积核大小、宽度方向上的卷积核大小、高度方向上的步长大小、宽度方向上的步长大小和Padding值中至少一项不等于1,则服务器需要对该算子进行图像重排,并使用预置的图像重排策略将二维卷积算子排成普通的全连接算子,以便服务器后续使用重排后的全连接算子的信息进行计算。
本实施例,当确定模型的算子为二维卷积算子时,可以确定对二维卷积算子的图像重排策略,将二维卷积算子重排成普通的全连接算子,从而大幅提升模型的推理优化方法鲁棒性和普适性,更好地满足用户的实际需求。
在一个实施例中,二维卷积算子的信息包括Batch-Size维度大小、输出维度的高度、输出维度的宽度、输出维度的通道数和输入维度的通道数,服务器在获取二维卷积算子的信息之后,可以通过如图8所示的各步骤确定使用的卷积并行策略,具体包括:
步骤801,判断Batch-Size维度大小是否等于1,如果是,执行步骤802,否则,执行步骤803。
步骤802,使用第一卷积并行策略。
示例性地,二维卷积算子的多线程并行与普通的全连接算子的多线程并行有所不同,服务器先判断Batch-Size维度大小是否等于1,若Batch-Size维度大小等于1,该二维卷积算子在图像重排、输入矩阵计算和权重矩阵计算时需要耗费大量时间,服务器确定对该算子使用第一卷积并行策略,其中,第一卷积并行策略用于在图像重排、输入矩阵计算和权重矩阵计算时进行多线程并行。
步骤803,判断二维卷积算子的信息是否满足预设的第二卷积并行策略使用条件,如果是,执行步骤804,否则,执行步骤802。
步骤804,使用第二卷积并行策略。
示例性地,服务器若确定二维卷积算子的Batch-Size维度大小大于1,则继续判断二维卷积算子的信息是否满足预设的第二卷积并行策略使用条件,其中,预设的第二卷积并行策略使用条件可以通过如下公式表示:
oh×ow×oc<mb∪oh×ow×oc×ic<threshold
式中,oh为输出维度的高度,ow为输出维度的宽度,oc为输出维度的通道数,mb为Batch-Size维度大小,ic为输入维度的通道数,threshold为第四预设阈值,第四预设阈值可以由本领域的技术人员根据实际需要进行设置,若二维卷积算子的信息满足预设的第二卷积并行策略使用条件,说明该算子在循环和卷积计算时需要耗费大量时间,服务器对该算子使用第二卷积并行策略,第二卷积并行策略用于在循环和卷积计算时进行多线程并行。
本实施例,在进行二维卷积算子计算时,服务器会评估该算子在图像重排、输入矩阵计算和权重矩阵计算时进行多线程并行(即第一卷积并行策略)与算子在循环和卷积计算时进行多线程并行(即第二卷积并行策略)的大致时间消耗,并根据以上判断流程选择计算时间较少的卷积并行策略,以加速二维卷积算子计算,提升速度。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本申请的另一个实施例涉及一种模型的推理优化系统,下面对本实施例的模型的推理优化系统的细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本例的必须,图9是本实施例所述的模型的推理优化系统的示意图,包括:模型分析模块901、硬件分析模块902、策略生成模块903、代码生成模块904和编译器模块905。
模型分析模块901用于获取模型的算子信息,并将模型的算子信息发送至策略生成模块903。
硬件分析模块902用于获取CPU的硬件信息,并将CPU的硬件信息发送至策略生成模块903。
策略生成模块903用于根据模型的算子信息、CPU的硬件信息和预设的策略生成算法,确定代码生成策略,并将代码生成策略发送至代码生成模块904;其中,代码生成策略包括调度代码生成策略和计算代码生成策略。
代码生成模块904用于根据代码生成策略,生成调度代码和计算代码,并将调度代码和计算代码发送至编译器模块905。
编译器模块905用于将调度代码和计算代码进行编译和链接,获得编译完成的模型文件。
不难发现,本实施例为与上述方法实施例对应的系统实施例,本实施例可以与上述方法实施例互相配合实施。上述实施例中提到的相关技术细节和技术效果在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在上述实施例中。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本申请的创新部分,本实施例中并没有将与解决本申请所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本申请的另一个实施例涉及一种电子设备,如图10所示,包括:至少一个处理器1001;以及,与所述至少一个处理器1001通信连接的存储器1002;其中,所述存储器1002存储有可被所述至少一个处理器1001执行的指令,所述指令被所述至少一个处理器1001执行,以使所述至少一个处理器1001能够执行上述各实施例中的模型的推理优化方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本申请的另一个实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称:ROM)、随机存取存储器(Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (13)
1.一种模型的推理优化方法,其特征在于,包括:
获取模型的算子信息和中央处理单元CPU的硬件信息;
根据所述模型的算子信息、所述CPU的硬件信息和预设的策略生成算法,确定代码生成策略;其中,所述代码生成策略包括调度代码生成策略和计算代码生成策略;
根据所述代码生成策略,生成调度代码和计算代码;
将所述调度代码和所述计算代码进行编译和链接,获得编译完成的模型文件。
2.根据权利要求1所述的模型的推理优化方法,其特征在于,所述模型的算子信息包括输入维度大小和输出维度大小,所述CPU的硬件信息包括CPU支持的指令集集合、CPU的可用线程数、CPU的单指令多数据寄存器个数和单指令多数据寄存器一次能够处理的浮点数个数;
所述根据所述模型的算子信息、所述CPU的硬件信息和预设的策略生成算法,确定代码生成策略,包括:
根据所述输入维度大小、所述输出维度大小和所述CPU的可用线程数,确定并行线程数和并行分块策略;
根据所述并行线程数、所述并行分块策略和所述CPU支持的指令集集合,确定调度代码生成策略;
根据所述CPU的单指令多数据寄存器个数和所述单指令多数据寄存器一次能够处理的浮点数个数,确定计算核大小和循环策略;
根据所述计算核大小、所述循环策略和所述CPU支持的指令集集合,确定计算代码生成策略。
3.根据权利要求2所述的模型的推理优化方法,其特征在于,所述根据所述输入维度大小、所述输出维度大小和所述CPU的可用线程数,确定并行线程数和并行分块策略,包括:
判断所述输出维度大小是否大于第一预设阈值且小于第二预设阈值;
在所述输出维度大小大于第一预设阈值且小于第二预设阈值的情况下,确定并行线程数为所述CPU的可用线程数,并根据所述并行线程数确定并行分块策略;
在所述输出维度大小不大于第一预设阈值,或不小于第二预设阈值的情况下,判断所述输入维度大小与所述输出维度大小的乘积是否小于第三预设阈值;
在所述乘积小于第三预设阈值的情况下,确定并行线程数为1;
在所述乘积大于或等于第三预设阈值的情况下,计算所述输出维度大小与所述CPU的可用线程数的比值;
根据所述比值确定所述并行线程数,并根据所述并行线程数确定并行分块策略。
4.根据权利要求3所述的模型的推理优化方法,其特征在于,所述根据所述并行线程数确定并行分块策略,包括:
判断所述输出维度大小p是否可以被所述并行线程数q整除;其中,所述q为大于1的整数,所述p为大于或等于q的整数;
在所述输出维度大小p可以被所述并行线程数q整除的情况下,确定每个线程需要处理的输出维度大小为p/q;
在所述输出维度大小p不可以被所述并行线程数q整除的情况下,确定q-1个线程中的每个线程需要处理的输出维度大小为1+p/q,剩余的一个线程需要处理的输出维度大小为p-(q-1)×(1+p/q)。
6.根据权利要求2所述的模型的推理优化方法,其特征在于,所述模型的算子信息还包括所述Batch-Size维度大小,若所述Batch-Size维度大小大于1,则在所述根据所述计算核大小、所述循环策略和所述CPU支持的指令集集合,确定计算代码生成策略之前,包括:
获取所述模型的权重矩阵的内存排布形式,并判断所述输入维度是否为主导维度;
在所述输入维度为主导维度的情况下,确定权重矩阵重排策略;
所述根据所述计算核大小、所述循环策略和所述CPU支持的指令集集合,确定计算代码生成策略,包括:
根据所述计算核大小、所述循环策略、所述CPU支持的指令集集合和所述权重矩阵重排策略,确定计算代码生成策略。
7.根据权利要求2所述的模型的推理优化方法,其特征在于,所述模型的算子信息还包括所述Batch-Size维度大小,若所述Batch-Size维度大小大于1,则所述并行分块策略包括输出维度的并行分块策略和Batch-Size维度的并行分块策略。
8.根据权利要求2所述的模型的推理优化方法,其特征在于,若所述模型的算子为二维卷积算子,则所述获取模型的算子信息,包括:
获取所述二维卷积算子的信息;其中,所述二维卷积算子的信息包括所述二维卷积算子的高度方向上的卷积核大小、宽度方向上的卷积核大小、高度方向上的步长大小、宽度方向上的步长大小和Padding值;
在所述二维卷积算子的高度方向上的卷积核大小、宽度方向上的卷积核大小、高度方向上的步长大小、宽度方向上的步长大小和Padding值中至少一项不等于1的情况下,确定对所述二维卷积算子的图像重排策略;
根据所述图像重排策略,将所述二维卷积算子转化为全连接算子,并获取所述全连接算子的信息。
9.根据权利要求8所述的模型的推理优化方法,其特征在于,所述二维卷积算子的信息包括Batch-Size维度大小、输出维度的高度、输出维度的宽度、输出维度的通道数和输入维度的通道数;
在所述获取所述二维卷积算子的信息之后,还包括:
判断所述Batch-Size维度大小是否大于1;
在所述Batch-Size维度大小不大于1的情况下,使用第一卷积并行策略;其中,所述第一卷积并行策略用于在图像重排、输入矩阵计算和权重矩阵计算时进行多线程并行;
在所述Batch-Size维度大小大于1的情况下,判断所述二维卷积算子的信息是否满足预设的第二卷积并行策略使用条件;其中,所述预设的第二卷积并行策略使用条件包括如下公式:
oh×ow×oc<mb∪oh×ow×oc×ic<threshold
其中,oh为所述输出维度的高度,ow为所述输出维度的宽度,oc为所述输出维度的通道数,mb为所述Batch-Size维度大小,ic为所述输入维度的通道数,threshold为第四预设阈值;
在所述二维卷积算子的信息满足预设的第二卷积并行策略使用条件的情况下,使用第二卷积并行策略;其中,所述第二卷积并行策略用于在循环和卷积计算时进行多线程并行。
10.根据权利要求1-9中任一项所述的模型的推理优化方法,其特征在于,所述调度代码为C++代码,所述计算代码为汇编代码。
11.一种模型的推理优化系统,其特征在于,包括模型分析模块、硬件分析模块、策略生成模块、代码生成模块和编译器模块;
所述模型分析模块用于获取模型的算子信息,并将所述模型的算子信息发送至所述策略生成模块;
所述硬件分析模块用于获取中央处理单元CPU的硬件信息,并将所述CPU的硬件信息发送至所述策略生成模块;
所述策略生成模块用于根据所述模型的算子信息、所述CPU的硬件信息和预设的策略生成算法,确定代码生成策略,并将所述代码生成策略发送至所述代码生成模块;其中,所述代码生成策略包括调度代码生成策略和计算代码生成策略;
所述代码生成模块用于根据所述代码生成策略,生成调度代码和计算代码,并将所述调度代码和所述计算代码发送至所述编译器模块;
所述编译器模块用于将所述调度代码和所述计算代码进行编译和链接,获得编译完成的模型文件。
12.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至10中任一项所述的模型的推理优化方法。
13.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的模型的推理优化方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111314799.8A CN114020465A (zh) | 2021-11-08 | 2021-11-08 | 模型的推理优化方法、系统、电子设备和存储介质 |
PCT/CN2022/127135 WO2023078116A1 (zh) | 2021-11-08 | 2022-10-24 | 模型的推理优化方法、系统、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111314799.8A CN114020465A (zh) | 2021-11-08 | 2021-11-08 | 模型的推理优化方法、系统、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114020465A true CN114020465A (zh) | 2022-02-08 |
Family
ID=80062271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111314799.8A Pending CN114020465A (zh) | 2021-11-08 | 2021-11-08 | 模型的推理优化方法、系统、电子设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114020465A (zh) |
WO (1) | WO2023078116A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023078116A1 (zh) * | 2021-11-08 | 2023-05-11 | 中兴通讯股份有限公司 | 模型的推理优化方法、系统、电子设备和存储介质 |
WO2024039923A1 (en) * | 2022-08-19 | 2024-02-22 | Intel Corporation | Method of compile-time optimization for nested parallel for-loops for deep learning neural network computation |
CN117852655A (zh) * | 2024-02-27 | 2024-04-09 | 荣耀终端有限公司 | 利用大模型进行推理的方法和电子设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991564B (zh) * | 2023-09-28 | 2024-01-09 | 之江实验室 | 面向异构双核mcu的算子内并行加速方法 |
CN118396069A (zh) * | 2024-07-01 | 2024-07-26 | 星凡星启(成都)科技有限公司 | 一种深度学习模型算子代码的自动生成方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8156481B1 (en) * | 2007-10-05 | 2012-04-10 | The Mathworks, Inc. | Profiler-based optimization of automatically generated code |
CN110569106A (zh) * | 2019-08-27 | 2019-12-13 | Oppo广东移动通信有限公司 | 代码加载方法、装置、电子设备及计算机可读介质 |
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN111783952A (zh) * | 2020-06-30 | 2020-10-16 | 北京百度网讯科技有限公司 | 配置方法、装置、系统、电子设备以及存储介质 |
CN112825154A (zh) * | 2019-11-20 | 2021-05-21 | 阿里巴巴集团控股有限公司 | 深度学习中在线推理的优化方法、装置及计算机存储介质 |
CN113190352A (zh) * | 2021-05-12 | 2021-07-30 | 北京睿芯高通量科技有限公司 | 一种面向通用cpu的深度学习计算加速方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111738446B (zh) * | 2020-06-12 | 2023-11-03 | 北京百度网讯科技有限公司 | 深度学习推理引擎的调度方法、装置、设备和介质 |
CN114020465A (zh) * | 2021-11-08 | 2022-02-08 | 中兴通讯股份有限公司 | 模型的推理优化方法、系统、电子设备和存储介质 |
-
2021
- 2021-11-08 CN CN202111314799.8A patent/CN114020465A/zh active Pending
-
2022
- 2022-10-24 WO PCT/CN2022/127135 patent/WO2023078116A1/zh unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8156481B1 (en) * | 2007-10-05 | 2012-04-10 | The Mathworks, Inc. | Profiler-based optimization of automatically generated code |
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN110569106A (zh) * | 2019-08-27 | 2019-12-13 | Oppo广东移动通信有限公司 | 代码加载方法、装置、电子设备及计算机可读介质 |
CN112825154A (zh) * | 2019-11-20 | 2021-05-21 | 阿里巴巴集团控股有限公司 | 深度学习中在线推理的优化方法、装置及计算机存储介质 |
CN111783952A (zh) * | 2020-06-30 | 2020-10-16 | 北京百度网讯科技有限公司 | 配置方法、装置、系统、电子设备以及存储介质 |
CN113190352A (zh) * | 2021-05-12 | 2021-07-30 | 北京睿芯高通量科技有限公司 | 一种面向通用cpu的深度学习计算加速方法及系统 |
Non-Patent Citations (3)
Title |
---|
MOHAMMAD SHARAF; MAI ABUSAIR; HENRY MUCCINI; RAMI ELEIWI; YARA SHANA’A; ITHAR SALEH: "Generating Heterogeneous Codes for IoT Systems Based on CAPS", 2019 ACM/IEEE 22ND INTERNATIONAL CONFERENCE ON MODEL DRIVEN ENGINEERING LANGUAGES AND SYSTEMS COMPANION (MODELS-C), 31 December 2019 (2019-12-31) * |
吴林阳;杜伟健;陈小兵;庄毅敏;: "一种运算和数据协同优化的深度学习编译框架", 高技术通讯, no. 02, 15 February 2020 (2020-02-15) * |
王超;王腾;马翔;周学海;: "基于FPGA的机器学习硬件加速研究进展", 计算机学报, no. 06, 15 June 2020 (2020-06-15) * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023078116A1 (zh) * | 2021-11-08 | 2023-05-11 | 中兴通讯股份有限公司 | 模型的推理优化方法、系统、电子设备和存储介质 |
WO2024039923A1 (en) * | 2022-08-19 | 2024-02-22 | Intel Corporation | Method of compile-time optimization for nested parallel for-loops for deep learning neural network computation |
CN117852655A (zh) * | 2024-02-27 | 2024-04-09 | 荣耀终端有限公司 | 利用大模型进行推理的方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2023078116A1 (zh) | 2023-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114020465A (zh) | 模型的推理优化方法、系统、电子设备和存储介质 | |
US11442785B2 (en) | Computation method and product thereof | |
Vazquez et al. | Improving the performance of the sparse matrix vector product with GPUs | |
US9557993B2 (en) | Processor architecture and method for simplifying programming single instruction, multiple data within a register | |
US20190392300A1 (en) | Systems and methods for data compression in neural networks | |
CN111897579A (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
US20190324805A1 (en) | Method, apparatus and computer program product for resource scheduling | |
CN104461728A (zh) | 迁移事件调度管理 | |
US20210117806A1 (en) | Composable neural network kernels | |
CN111047045B (zh) | 机器学习运算的分配系统及方法 | |
US20200356836A1 (en) | Fast deep learning fully-connected column-major implementation | |
US20180225150A1 (en) | Scheduling heterogenous processors | |
Chen et al. | Characterizing scalar opportunities in GPGPU applications | |
CN116185942A (zh) | 数据处理方法、装置、存储介质以及电子设备 | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
EP3991109A1 (en) | Composable neural network kernels | |
CN118261199A (zh) | 基于RRAM的Transformer网络加速方法、装置、设备及介质 | |
CN116755878A (zh) | 程序运行方法、装置、设备、介质和程序产品 | |
CN111930668A (zh) | 运算装置、方法、多核智能处理器及多核异构智能处理器 | |
CN112052004A (zh) | 函数的参数优化方法、编译器、芯片及电子设备 | |
CN115130672A (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN113760407A (zh) | 信息处理方法、装置、设备及存储介质 | |
US20230259579A1 (en) | Runtime predictors for computation reduction in dependent computations | |
Kuhling et al. | 12x12 MIMO-OFDM realtime implementation for 3GPP LTE+ on a Cell Processor | |
CN117130760B (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 |