CN116991564A - 面向异构双核mcu的算子内并行加速方法 - Google Patents

面向异构双核mcu的算子内并行加速方法 Download PDF

Info

Publication number
CN116991564A
CN116991564A CN202311272689.9A CN202311272689A CN116991564A CN 116991564 A CN116991564 A CN 116991564A CN 202311272689 A CN202311272689 A CN 202311272689A CN 116991564 A CN116991564 A CN 116991564A
Authority
CN
China
Prior art keywords
operator
core
delay model
model
time delay
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.)
Granted
Application number
CN202311272689.9A
Other languages
English (en)
Other versions
CN116991564B (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 CN202311272689.9A priority Critical patent/CN116991564B/zh
Publication of CN116991564A publication Critical patent/CN116991564A/zh
Application granted granted Critical
Publication of CN116991564B publication Critical patent/CN116991564B/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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
    • 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)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开一种面向异构双核MCU的算子内并行加速方法,其包括:通过深度学习模型的计算图构建有向无环图G;统计所述有向无环图G中的算子信息;基于得到的算子信息,为每类算子构建相应的算子时延模型,以此预测算子在不同工作负载下的推理时间;基于步骤三得到的算子时延模型,为深度学习模型的每个算子选择一种最优的划分策略,即划分维度和划分比例;基于步骤四得到的算子划分策略,在编译器编译深度学习模型生成相应代码的过程中嵌入步骤四得到的划分策略,以此加速神经网络模型的推理。本发明通过充分利用硬件资源和优化计算任务分配,提高推理性能、降低能源消耗和延迟,并满足实时性和隐私性等要求。

Description

面向异构双核MCU的算子内并行加速方法
技术领域
本发明涉及神经网络应用领域,尤其涉及一种面向异构双核MCU的算子内并行加速方法。
背景技术
AIoT(人工智能物联网)的快速发展使得深度学习成为其关键技术之一。深度学习通过神经网络模型的训练和推理,能够处理和分析大量的传感器数据,从而实现智能化的决策和应用。在AIoT领域,典型的应用包括机械振动监测以预测故障、视觉任务的检测与识别、自动驾驶系统、智能家居和工业自动化等。
过去,这些AIoT应用通常依赖于丰富的云端或雾端计算资源来满足实时响应的需求。数据从边缘设备上传到云端进行处理和分析,然后再将结果返回给设备。然而,云端或雾端推理引入的延迟、能源和通信访问开销使得这种方式变得不切实际。特别是随着AIoT应用的迅速增长,这种方式的成本越来越高并且无法满足实时性的要求。因此,将深度学习推理引入到边缘设备成为一种趋势,这可以通过在嵌入式设备上进行模型推理来实现。
异构双核MCU的出现为在MCU设备上进行深度学习模型推理提供了可能。异构双核MCU结合了高性能和低功耗的特点,具备了在资源有限的边缘设备上进行深度学习推理的能力。利用低成本、低功耗和高性能的异构双核MCU,可以实现在边缘设备上进行深度学习推理,从而满足实时性和隐私性等要求。
然而,现有的深度学习推理框架(如TF-Lite Micro、μTensor和CMSIS-NN)在模型推理方面采用了核友好的优化技术(如剪枝、量化、循环优化等),以及数据并行方法来减少推理时延。虽然这些优化方法在提高推理性能方面取得了显著的改进,但它们并没有充分利用异构双核MCU的硬件资源来加速深度学习模型的推理。特别是对于大多数数据量小且对实时性要求高的AIoT应用而言,现有的优化方法在性能上受限于单核处理能力。因此,如何充分利用异构双核MCU的硬件资源来加速深度学习模型中的单个算子推理,以满足AIoT应用对实时性能的需求,成为一个重要的问题。
发明内容
针对现有技术的不足,本发明提出一种面向异构双核MCU的算子内并行加速方法。该方法通过算子延迟预测器寻找出每个算子最佳的划分维度和划分比例,进而均衡分配每个算子的计算任务给异构双核MCU的两个核心进行并行计算,以此充分利用硬件资源来提高推理性能。通过将计算任务均衡地分配到两个核心上,减少推理时间和延迟,从而提高整体的推理效率,以此满足现有稀疏数据的AIoT应用的实时性需求。
本发明的目的是通过以下技术方案来实现:
一种面向异构双核MCU的算子内并行加速方法,包括以下步骤:
步骤一:通过深度学习模型的计算图构建有向无环图G;
步骤二:统计所述有向无环图G中的算子信息,包括算子类型、算子的输入输出信息和算子的超参数信息;
步骤三:基于步骤二得到的算子信息,为每类算子构建相应的算子时延模型,以此预测算子在不同工作负载下的推理时间;
步骤四:基于步骤三得到的算子时延模型,为深度学习模型的每个算子选择一种最优的划分策略,即划分维度和划分比例;
步骤五:基于步骤四得到的算子划分策略,在编译器编译深度学习模型生成相应代码的过程中嵌入步骤四得到的划分策略,以此加速神经网络模型的推理。
进一步地,所述步骤二包括如下子步骤:
统计深度学习模型内算子的输入输出信息和超参数;所述输入输出信息包括输入的高IH、输入的宽IW、输入通道数IC、输出的高OH、输出的宽OW、输出的通道数OC;所述超参数包括卷积算子的卷积核大小(KHSC,KWSC)、卷积步长(SHSC,SWSC)、卷积填充(PHSC,PWSC)、卷积膨胀率和池化层的窗口大小(KHPOOL,KWPOOL)、池化层步长(SHPOOL,SWPOOL)、池化层填充(PHPOOL,PWPOOL)。
进一步地,所述步骤三中,首先为每个算子构建单核时延模型,然后基于每个算子的单核时延模型构建异构双核算子时延模型;
所述异构双核算子时延模型和单核时延模型的关系为:
其中,Tmult表示异构双核的时延,Ti表示在给定划分维度和划分比例/>下单个算子划分后的负载在对应核上推理时延。
进一步地,所述单核时延模型包括标准卷积算子的单核时延模型、全连接算子的单核时延模型、深度卷积算子的单核时延模型、最大池化算子的单核时延模型、平均池化算子的单核时延模型、算数加算子的单核时延模型、布局转换算子的单核时延模型。
进一步地,所述标准卷积算子的单核时延模型为:
M=OH×OW
K=KH×KW×IC
N=OC
MK=M×K
KN=K×N
MN=M×N
MKN=M×K×N
其中,SC表示标准卷积算子;TSC表示标准卷积算子的推理时延;表示标准卷积算子的相关系数,这些相关系数通过数据集线性拟合所得。
进一步地,所述全连接算子的单核时延模型为:
其中,FC表示全连接算子;TFC表示全连接算子的推理时延;为全连接算子的相关系数,这些相关系数通过数据集线性拟合所得。
进一步地,所述深度卷积算子、最大池化算子和平均池化算子的单核时延模型的计算公式相同,各自代入对应的相关系数即可;
T= TBEU×FLOPs/SizeBEU
FLOPs=2×OH×OW×OC×KH×KW
其中,T表示算子的推理时间,TBEU表示一个基本执行单元的运行时间,FLOPs/SizeBEU表示算子中基本执行单元的运算次数,SizeBEU表示基本执行单元的浮点运算次数,FLOPs表示算子的浮点运算次数;为基本执行单元的相关系数。
进一步地,所述算数加算子的单核时延模型为:
sizeAdd= IH×IW×IC
其中,为相关系数,通过线性拟合方法得到;/>表示算数运算量;表示算数加算子的推理时延;
所述布局转换算子的单核时延模型为:
其中,是相关系数,通过线性拟合方法得到;/>表示布局转换算子的推理时间。
进一步地,所述步骤四通过以下步骤来实现:
(4.1)将算子按照IH维度进行划分,将划分后的算子任务量IH1×IW×IC×OC和IH2×IW×IC×OC分别分配给两个异构核;或者,将算子按照OC维度进行划分,将划分后的算子任务量IH×IW×IC×OC1和IH×IW×IC×OC2分别分配给两个异构核;
其中,在IH维度进行拆分时,IH1=IH×ρ+pad,IH2=IH×(1-ρ)+pad;
在OC维度进行拆分时,OC1=OC×ρ,OC2=OC×(1-ρ);
(4.2)枚举每个算子的划分维度,并选择相应的最优划分比例ρ,进而得到每个算子在每种划分维度下对应的推理时延;
(4.3)基于步骤(4.2)为每个算子选择一种最优的划分维度,以及该划分维度对应的划分比例,使得算子总的推理时延最短。
一种面向异构双核MCU的算子内并行加速装置,包括一个或多个处理器,用于实现面向异构双核MCU的算子内并行加速方法。
本发明的有益效果如下:
本发明的面向异构双核MCU的算子内并行加速方法为在资源有限的边缘设备上进行深度学习模型推理提供了一种高效的解决方案,通过充分利用硬件资源和优化计算任务分配,提高推理性能、降低能源消耗和延迟,并满足实时性和隐私性等要求。随着AIoT应用的不断发展和普及,异构双核MCU的算子内并行加速方法将在推动边缘计算和边缘人工智能的发展方面发挥重要作用,这将加速深度学习落地MCU等边缘设备。
附图说明
图1为一个图像处理神经网络构成的有向无环图G,它是MobileNetV2的一个block。
图2为沿IH维度进行算子内并行的示例图。
图3为沿OC维度进行算子内并行的示例图。
图4为STM32H745架构图。
图5为采用异构双核MCU的算子内并行加速方法加速效果图。
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
技术术语解释:
CMSIS:Cortex Microcontroller Software Interface Standard,Cortex微处理器软件接口标准;
AIoT: Artificial Internet-of-Things,人工智能物联网;
TF-Lite Micro: Tensorflow Lite Micro;
MCU:Microcontroller Unit,微控制器单元;
CMSIS-NN: ARM Cortex-M系列的芯片的神经网络推理库
FLASH:一种非易失性存储器;
DMA: Direct Memory Access,直接内存访问;
BUS: 总线;
SRAM: Static Random-Access Memory,静态随机存取存储器;
SC: Standard Convolutionoperator,标准卷积算子;
DC: Depth-wise Convolution operator,深度卷积算子;
BEU: Basic Execution Unit,基本执行单元;
FLOPs: Floating Point Operations,浮点运算次数;
Trans: Transform operator,转换算子;
Multi: Muti-core,多核MCU;
Add: Add operator,逐元素加算子;
GEMM:General Matrix Multiplication,通用矩阵乘法;
MaxP: Max Pooling operator,最大池化算子;
AvgP: Average Pooling operator,平均池化算子;
IOPOpt:Intra-Operator Parallelism Optimization,算子内并行优化。
步骤一:通过深度学习模型的计算图构建有向无环图G。
使用主流的深度学习框架(例如tensorflow、pytorch、MXNet等)将所构建的深度学习模型通过框架内的保存功能,将其保存成.tflite、.pb、.onnx等格式。这些文件格式中包含着神经网络的有向无环图G。
有向无环图G包含点集V和边集E,即G=(V,E),其中,
V={v1,v2,…,vn}
点集V中每个元素为一个节点,代表一个算子,比如标准卷积算子、深度卷积算子、全连接算子、算数加算子、最大池化算子和最小池化算子等;边集E的每个元素e代表G中的一条边,eik=(vi,vk)表示vk算子在算数运算时使用vi节点的运算结果作为输入,vi为该边的源节点,vk为该边的目标节点。定义划分维度空间和划分比例空间。其中,维度空间中的IH(或OC)表示单个算子的计算任务按照算子的输入维度IH维度划分(或按照算子的权重维度OC进行划分)。划分比例空间描述的是算子按照选择的维度以相应的比例划分算子的计算任务,例如图2表述的是按照输入的IH维度以ρ的比例划分算子的计算任务,图3描述的是按照权重维度OC以ρ的比例划分算子的计算任务。
步骤二:统计所述有向无环图G中的算子信息,包括算子类型、算子的输入输出信息和算子的超参数信息。
输入输出信息包括输入的高IH、输入的宽IW、输入通道数IC、输出的高OH、输出的宽OW、输出的通道数OC;超参数包括卷积算子的卷积核大小(KHSC,KWSC)、卷积步长(SHSC,SWSC)、卷积填充(PHSC,PWSC)、卷积膨胀率和池化层的窗口大小(KHPOOL,KWPOOL)、池化层步长(SHPOOL,SWPOOL)、池化层填充(PHPOOL,PWPOOL)。
其中,对于保存为.tflite和.onnx格式的有向无环图(计算图)描述信息,很容易得到算子的输入信息(IH、IW和IC)和输出信息(OH、OW和OC),以及超参数信息(例如卷积算子的卷积核大小(KH、KW)、步长(SH、SW)和填充大小(PH、PW)),详细信息如图2所示。
对于保存为.pd格式的计算图描述信息,无法从这些描述中直接获得每个算子的具体输入输出信息,而是需要通过一个trace过程收集这些信息,这主要是因为pytroch的计算图是一种动态图。
步骤三:基于步骤二得到的算子信息,为每类算子构建相应的算子时延模型,以此预测算子在不同工作负载下的推理时间。
步骤三具体为:首先为每个算子构建单核时延模型,然后基于每个算子的单核时延模型构建异构双核算子时延模型。单核时延模型包括标准卷积算子的单核时延模型、全连接算子的单核时延模型、深度卷积算子的单核时延模型、最大池化算子的单核时延模型、平均池化算子的单核时延模型、算数加算子的单核时延模型、布局转换算子的单核时延模型。
为每类算子构建的时延模型与硬件类型和算子库相关,即不同的硬件平台和算子库的时延模型也是不一样的。比如硬件平台STM32H745和算子库CMSIS-NN相关的时延模型与STM32WL55和算子库CMSIS-NN相关的时延模型是不一样的。
通过分析TF-Lite Micro,μTensor和CMSIS-NN等主流部署框架,我们发现标准卷积算子是基于通用矩阵乘来实现的,而现有相关研究表明通用矩阵乘的单核时延模型如下:
TGEMM1M+β2K+β3N+β0
其中,β03为相关系数;GEMM表示通用矩阵乘法;TGEMM表示通用矩阵乘的推理时延;M、K表示通用矩阵乘法A[M×K]×B[K×N]中的A矩阵的高和宽;N表示通用矩阵乘法A[M×K]×B[K×N]中的B矩阵的宽。
(3.1)标准卷积算子的单核时延模型
基于通用矩阵乘的算子时延模型,并且在给定超参数卷积核大小(KH,KW)和步长(SH,SW)的条件下,标准卷积算子的单核时延模型为:
M=OH×OW
K=KH×KW×IC
N=OC
MK=M×K
KN=K×N
MN=M×N
MKN=M×K×N
其中,SC表示标准卷积算子;TSC表示标准卷积算子的推理时延;表示标准卷积算子的相关系数,这些相关系数通过数据集线性拟合所得。
(3.2)全连接算子的单核时延模型
对于全连接算子,其公式描述为[M×K]×[K×1]。从公式描述可以得知全连接算子是一种特殊的N=1的通用矩阵乘算子。由于通用矩阵乘的单核时延模型中的β0、β1、β2和β3是相关系数(常数),因此可以把β0和β3规约成β0,从而得到其单核时延模型如下:
其中,FC表示全连接算子;TFC表示全连接算子的推理时延;为全连接算子的相关系数,这些相关系数通过数据集线性拟合所得。
(3.3)深度卷积算子的单核时延模型
对于深度卷积算子,它与标准卷积算子不同的是其直接基于基本执行单元,如CMSIS-NN基于SMLAD指令,因此构建基本执行单元的平均执行时延为:
其中,BEU表示基本执行单元,例如ARMV7-M架构的STM32H745中指令SMLAD;TBEU表示一个基本执行单元的运行时间;为基本执行单元的相关系数,并且可以通过数据集中的数据线性拟合得到。
假定一个深度卷积算子执行FLOPs次浮点运算,而基本执行单元进行SizeBEU次浮点运算,其中
FLOPs=2×OH×OW×OC×KH×KW
因此,在给定超参数卷积核大小(KH,KW)和步长大小(SH,SW)的条件下,可以得到深度卷积算子的单核时延模型如下:
TDC= TBEU×FLOPs/SizeBEU
其中,FLOPs表示一个深度卷积算子的浮点运算次数;SizeBEU表示基本执行单元的浮点运算次数;FLOPs/SizeBEU表示深度卷积算子中基本执行单元的运算次数;TDC表示深度卷积的推理时延。
(3.4)最大池化算子的单核时延模型
对于最大池化算子,其实现上类似于深度卷积算子,都是一种逐通道算子,并且都是基于基本执行单元实现。因此,在给定超参数卷积核大小(KH,KW)和步长大小(SH,SW),建模最大池化算子的单核时延模型如下:
FLOPs=2×OH×OW×OC×KH×KW
其中,FLOPs表示的最大池化算子的算术运算量;SizeBEU表示基本执行单元的算数运算量;TBEU表示一个基本执行单元的平均运算时间;FLOPs/SizeBEU表示最大池化算子中基本执行单元的数量;TMaxP表示大池化算子的推理时间;为基本执行单元的相关系数,可以通过数据集中的数据线性拟合得到。
(3.5)平均池化算子的单核时延模型
对于平均池化算子,其实现上类似于深度卷积算子,都是一种逐通道算子,并且都是基于基本执行单元实现。因此,在给定超参数卷积核大小(KH,KW)和步长大小(SH,SW),我们建模平均池化算子的单核时延模型如下:
FLOPs=2×OH×OW×OC×KH×KW
TAvgP= TBEU×FLOPs/SizeBEU
其中,FLOPs表示平均池化算子的算术运算量;SizeBEU表示基本执行单元的算数运算量;TBEU表示基本执行单元的平均运算时间;FLOPs/SizeBEU表示平均池化算子中基本执行单元的数量;TAvgP表示平均池化算子的推理时间;为相关系数,并且可以通过数据集中的数据线性拟合得到。
(3.6)算数加算子的单核时延模型
sizeAdd= IH×IW×IC
其中,为相关系数,通过线性拟合方法得到;/>表示算数运算量;表示算数加算子的推理时延。
(3.7)布局转换算子的单核时延模型为:
对于布局转换算子,其主要作用是把两个布局为HWC的张量按照C维度进行合并。我们建模布局转换算子的单核时延模型如下:
其中,是相关系数,通过线性拟合方法得到;/>表示布局转换算子的推理时间。
上述给出MCU平台常见部署模型中的算子的单核时延模型,基于这些算子的单核时延模型,我们得到异构双核的时延模型如下:
其中,Tmult表示异构双核的时延,Ti表示在给定划分维度和划分比例/>下单个算子划分后的负载在对应核上推理时延。
步骤四:基于步骤三得到的算子时延模型,为深度学习模型的每个算子选择一种最优的划分策略,即划分维度和划分比例。
步骤四通过以下步骤来实现:
(4.1)将算子按照IH维度进行划分,将划分后的算子任务量IH1×IW×IC×OC和IH2×IW×IC×OC分别分配给两个异构核;或者,将算子按照OC维度进行划分,将划分后的算子任务量IH×IW×IC×OC1和IH×IW×IC×OC2分别分配给两个异构核;
其中,在IH维度进行拆分时,IH1=IH×ρ+pad,IH2=IH×(1-ρ)+pad;
在OC维度进行拆分时,OC1=OC×ρ,OC2=OC×(1-ρ);
(4.2)枚举每个算子的划分维度,并选择相应的最优划分比例ρ,进而得到每个算子在每种划分维度下对应的推理时延;
(4.3)基于步骤(4.2)为每个算子选择一种最优的划分维度,以及该划分维度对应的划分比例,使得算子总的推理时延最短。
步骤五:基于步骤四得到的算子划分策略,在编译器编译深度学习模型生成相应代码的过程中嵌入步骤四得到的划分策略,以此加速神经网络模型的推理。
实施例1
考虑在STM32H745边缘设备上进行边缘计算推理的过程,以常用深度学习模型MobileNetV2为例。STM32H745边缘设备的架构图如图4所示,STM32H745边缘设备包括cortex-M7核和cortex-M4核,还包括总线BUS,以及静态随机存取存储器SRAM、非易失性存储器FLASH和直接内存访问DMA。
由于MobileNetV2由多个堆叠的block组成,本实施例将重点关注其中一个block的推理过程。如下图1所示,该block可以用一个有向无环图G来描述,其中包含节点集V和边集E,即G = (V, E)。每个block主要由标准卷积算子、深度卷积算子和算数加算子组成。为实现加速block模块的推理,采用本发明的面向异构双核MCU的算子内并行加速方法均衡地分配每个算子的计算任务给STM32H745的cortex-M7核和cortex-M4核。
该实施例中,首先为每个核构建算子时延模型;为训练单核时延模型而制作的数据集的IH,IW,IC,OC,KH,KW,SH,SW范围分别是(1,176), (3, 176), (3,576), (1, 576),(1,7), (1,7), (1,2) 和 (1,2),并且使用70%的样本作为训练集,30%的样本作为测试集,其中数据集中还包括算子在给定IH、IW、IC、OC、KH、KW、SH和SW时算子的推理时延T。
该实施例中,在CMSIS-NN和STM32H745上为每类算子构建时延模型,因此得到三类算子时延模型:标准卷积算子、深度卷积算子和算数加算子以及布局转换算子的时延模型。
(1)标准卷积算子的时延模型
由于标准卷积算子在CMSIS-NN中由通用矩阵乘([M×K]×[K×N])和im2col算子组成,因此本实施例构建的单核算子的时延模型如下:
在给定超参数卷积核大小(1,1)和步长大小(1,1)情况下,变化标准卷积的输入IH、IW、IC和OC的大小,从而采集这些标准卷积算子分别在cortex-M4和cortex-M7的推理时延和/>。基于这些数据,通过下述公式得到与IH、IW和IC对应的M、K和N的大小。
基于M、K和N以及和/>,可以采用线性拟合的方法求出cortex-M4核对应的标准卷积算子的时延模型的相关系数/>的值和cortex-M7核对应的标准卷积算子的时延模型的相关系数/>的值,最后得到两个核的标准卷积算子的时延模型,如下所示:
(2)深度卷积算子的时延模型
在给定超参数卷积核大小(3,3)和步长大小(1,1)的条件下,本实施例变化IH、IW和IC的大小,并采集这些深度卷积算子分别在cortex-M4核和cortex-M7核的推理时延和/>,因此可以通过下述公式得到相应的OH、OW、OC(=IC)、/>和/>
基于上述采样得到的数据,通过线性拟合方法拟合出cortex-M4核对应的深度卷积算子的时延模型的相关系数的值和cortex-M7核对应的深度卷积算子对应的时延模型的相关系数/>的值,最后得到两个核的基本执行单元的时延模型如下:
其中,由于CMSIS-NN中深度卷积算子的基本执行单元是SMLAD指令,此指令每次执行三个浮点运算,因此SizeBEU=3。本实施例通过下述公式得到M7核和M4核的深度卷积算子在不同工作负载下的推理时延:
(3)算数加算子的单核时延模型
通过变化IH、IW和IC,并采集这些算数加算子分别在cortex-M4核和cortex-M7核的推理时延和/>。基于这些数据,通过线性拟合方法得出cortex-M4核对应的算数加算子的时延模型的相关系数/>和/>的值以及cortex-M7核对应的算数加算子的时延模型的相关系数/>和/>的值。因此最后的两个核的算数加时延模型如下:
(4)布局转换算子的单核时延模型
对于数据布局转换算子,其主要作用是对于算子采用OC维度进行算子内并行时导致的布局不连续的两个输出张量按照C维度进行合并。
通过变化通过变化IH、IW和IC的大小,进而收集到这些布局转换算子分别在cortex-M4核和cortex-M7核的推理时延和/>。基于上述收集到的数据,通过线性拟合方法得到cortex-M4核对应的布局转换算子的时延模型的相关系数/>的值以及cortex-M7核对应的布局转换布局算子的时延模型的相关系数/>的值。因此,本实施例得到两个核最终的时延模型如下:
基于上述算子的单核时延模型,得到异构双核的时延模型。然后基于异构双核时延模型,进而求解出每个算子最优的划分维度和划分比例。具体包括以下子步骤:
图1的有向无环图的算子按照IH维度进行划分时,则其算子最优的划分比例和相应的执行时延为:{(0.3, 10.549942677186278),(0.3, 16.263874741820608),(0.3,56.62789514002111), (0.3, 10.549942677186278), (0.2, 5.258008108502709)}。
其中数据项格式是{(划分比例ρ,依据IH维度按ρ划分算子对应的算子推理时延)}。图2描述了算子按IH维度进行划分的示例。
图1的有向无环图的算子按照OC维度进行划分时,则其算子最优的划分比例和相应的执行时延为:{(0.3,11.791758027585248),(0.3,16.40238991047682),(0.3,55.791796570199175),(0.3,11.791758027585248),(0.2,4.9489445521356705)}。
其中,数据项格式是{(划分比例ρ,依据OC维度按ρ划分算子对应的算子推理时延)}。图3描述了算子按照OC维度进行划分的示例。
由于算子采用OC维度划分之后会导致输出张量布局不连续,需要在其后引入布局转换算子,如果算子全按照OC维度划分引入的开销如下:{(0.3,0.8811137877174913),(0.3,3.2635589719669578),(0.3,3.2635589719669578),(0.3,0.8811137877174913),(0.3,0.8811137877174913)}。
其中,数据项格式是{(划分比例ρ,对应的布局转换算子的推理时延}。
基于上述步骤,本实施例得到图1中的有向无环图的算子在STM32H745上最优的划分比例和划分维度以及相应的推理时延是
{(IH, 0.3, 10.549942677186278), (IH, 0.3, 16.263874741820608),
(IH, 0.3, 56.62789514002111), (IH, 0.3, 10.549942677186278),
(IH, 0.2,5.258008108502709)}
其中数据项格式是{(划分维度d, 划分比例ρ,依据d维度按ρ比例划分算子时对应的算子推理时延)}。因此本实施例可以得到有向无环图2的最优推理时延是99.3ms,上述推理时延的单位为ms。
此外,我们在SmallCifar、MobileNetV2、Proxyless和MnasNet四个模型上对比现有推理方案(仅采用cortex-M7核进行推理)和算子内并行加速方法。如图5所示,算子内并行加速方法可以实现平均1.43倍左右的加速,其中CMSIS-NN(M7)表示模型采用现有方法的推理时间,IOP Opt表示模型采用算子内并行加速方法的推理时间。
另一方面,本发明实施例还给出一种面向异构双核MCU的算子内并行加速装置,包括一个或多个处理器,用于实现面向异构双核MCU的算子内并行加速方法。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。

Claims (10)

1.一种面向异构双核MCU的算子内并行加速方法,其特征在于,包括以下步骤:
步骤一:通过深度学习模型的计算图构建有向无环图G;
步骤二:统计所述有向无环图G中的算子信息,包括算子类型、算子的输入输出信息和算子的超参数信息;
步骤三:基于步骤二得到的算子信息,为每类算子构建相应的算子时延模型,以此预测算子在不同工作负载下的推理时间;
步骤四:基于步骤三得到的算子时延模型,为深度学习模型的每个算子选择一种最优的划分策略,即划分维度和划分比例;
步骤五:基于步骤四得到的算子划分策略,在编译器编译深度学习模型生成相应代码的过程中嵌入步骤四得到的划分策略,以此加速神经网络模型的推理。
2.根据权利要求1所述的面向异构双核MCU的算子内并行加速方法,其特征在于,所述步骤二包括如下子步骤:
统计深度学习模型内算子的输入输出信息和超参数;所述输入输出信息包括输入的高IH、输入的宽IW、输入通道数IC、输出的高OH、输出的宽OW、输出的通道数OC;所述超参数包括卷积算子的卷积核大小(KHSC,KWSC)、卷积步长(SHSC,SWSC)、卷积填充(PHSC,PWSC)、卷积膨胀率和池化层的窗口大小(KHPOOL,KWPOOL)、池化层步长(SHPOOL,SWPOOL)、池化层填充(PHPOOL,PWPOOL)。
3.根据权利要求1所述的面向异构双核MCU的算子内并行加速方法,其特征在于,所述步骤三中,首先为每个算子构建单核时延模型,然后基于每个算子的单核时延模型构建异构双核算子时延模型;
所述异构双核算子时延模型和单核时延模型的关系为:
其中,Tmult表示异构双核的时延,Ti表示在给定划分维度和划分比例/>下单个算子划分后的负载在对应核上推理时延。
4.根据权利要求3所述的面向异构双核MCU的算子内并行加速方法,其特征在于,所述单核时延模型包括标准卷积算子的单核时延模型、全连接算子的单核时延模型、深度卷积算子的单核时延模型、最大池化算子的单核时延模型、平均池化算子的单核时延模型、算数加算子的单核时延模型、布局转换算子的单核时延模型。
5.根据权利要求4所述的面向异构双核MCU的算子内并行加速方法,其特征在于,所述标准卷积算子的单核时延模型为:
M=OH×OW
K=KH×KW×IC
N=OC
MK=M×K
KN=K×N
MN=M×N
MKN=M×K×N
其中,SC表示标准卷积算子;TSC表示标准卷积算子的推理时延;表示标准卷积算子的相关系数,这些相关系数通过数据集线性拟合所得。
6.根据权利要求4所述的面向异构双核MCU的算子内并行加速方法,其特征在于,所述全连接算子的单核时延模型为:
其中,FC表示全连接算子;TFC表示全连接算子的推理时延;为全连接算子的相关系数,这些相关系数通过数据集线性拟合所得。
7.根据权利要求4所述的面向异构双核MCU的算子内并行加速方法,其特征在于,所述深度卷积算子、最大池化算子和平均池化算子的单核时延模型的计算公式相同,各自代入对应的相关系数即可;
T= TBEU×FLOPs/SizeBEU
FLOPs=2×OH×OW×OC×KH×KW
其中,T表示算子的推理时间,TBEU表示一个基本执行单元的运行时间,FLOPs/SizeBEU表示算子中基本执行单元的运算次数,SizeBEU表示基本执行单元的浮点运算次数,FLOPs表示算子的浮点运算次数;为基本执行单元的相关系数。
8.根据权利要求4所述的面向异构双核MCU的算子内并行加速方法,其特征在于,所述算数加算子的单核时延模型为:
sizeAdd= IH×IW×IC
其中,为相关系数,通过线性拟合方法得到;/>表示算数运算量;/>表示算数加算子的推理时延;
所述布局转换算子的单核时延模型为:
其中,是相关系数,通过线性拟合方法得到;/>表示布局转换算子的推理时间。
9.根据权利要求2所述的面向异构双核MCU的算子内并行加速方法,其特征在于,所述步骤四通过以下步骤来实现:
(4.1)将算子按照IH维度进行划分,将划分后的算子任务量IH1×IW×IC×OC和IH2×IW×IC×OC分别分配给两个异构核;或者,将算子按照OC维度进行划分,将划分后的算子任务量IH×IW×IC×OC1和IH×IW×IC×OC2分别分配给两个异构核;
其中,在IH维度进行拆分时,IH1=IH×ρ+pad,IH2=IH×(1-ρ)+pad;
在OC维度进行拆分时,OC1=OC×ρ,OC2=OC×(1-ρ);
(4.2)枚举每个算子的划分维度,并选择相应的最优划分比例ρ,进而得到每个算子在每种划分维度下对应的推理时延;
(4.3)基于步骤(4.2)为每个算子选择一种最优的划分维度,以及该划分维度对应的划分比例,使得算子总的推理时延最短。
10.一种面向异构双核MCU的算子内并行加速装置,其特征在于,包括一个或多个处理器,用于实现权利要求1~9中任一项所述的面向异构双核MCU的算子内并行加速方法。
CN202311272689.9A 2023-09-28 2023-09-28 面向异构双核mcu的算子内并行加速方法 Active CN116991564B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311272689.9A CN116991564B (zh) 2023-09-28 2023-09-28 面向异构双核mcu的算子内并行加速方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311272689.9A CN116991564B (zh) 2023-09-28 2023-09-28 面向异构双核mcu的算子内并行加速方法

Publications (2)

Publication Number Publication Date
CN116991564A true CN116991564A (zh) 2023-11-03
CN116991564B CN116991564B (zh) 2024-01-09

Family

ID=88527030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311272689.9A Active CN116991564B (zh) 2023-09-28 2023-09-28 面向异构双核mcu的算子内并行加速方法

Country Status (1)

Country Link
CN (1) CN116991564B (zh)

Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112381211A (zh) * 2020-11-20 2021-02-19 西安电子科技大学 基于异构平台执行深度神经网络的系统及方法
CN112598121A (zh) * 2020-12-21 2021-04-02 北京时代民芯科技有限公司 一种面向深度学习编译器的高效算子优化方法
CN112711422A (zh) * 2020-12-31 2021-04-27 北京清微智能科技有限公司 一种神经网络编译的优化方法及系统
CN113298259A (zh) * 2021-06-10 2021-08-24 中国电子科技集团公司第十四研究所 支持嵌入式平台多核并行的cnn网络推理框架设计方法
CN113420865A (zh) * 2021-06-15 2021-09-21 之江实验室 一种基于多算子融合的深度神经网络推理加速方法和系统
US20210319307A1 (en) * 2020-04-10 2021-10-14 SiMa Technologies, Inc. Heterogeneous computing on a system-on-chip, including machine learning inference
CN113778459A (zh) * 2021-09-08 2021-12-10 北京航空航天大学杭州创新研究院 一种在fpga和dsp上部署优化的算子库设计方法
CN114217941A (zh) * 2021-04-09 2022-03-22 无锡江南计算技术研究所 一种面向国产异构众核处理器的TensorFlow框架核心计算加速引擎
CN114219065A (zh) * 2021-03-31 2022-03-22 无锡江南计算技术研究所 一种面向异构众核平台的Im2col加速方法
CN114253545A (zh) * 2021-04-09 2022-03-29 无锡江南计算技术研究所 一种基于编译的神经网络异构众核多层次资源映射方法
CN114282641A (zh) * 2022-03-07 2022-04-05 麒麟软件有限公司 一种通用异构加速框架的构建方法
CN114662661A (zh) * 2022-03-22 2022-06-24 东南大学 边缘计算下异构处理器加速多出口dnn推理的方法
CN114661460A (zh) * 2022-02-15 2022-06-24 无锡江南计算技术研究所 面向异构众核处理器的ai框架两级并行加速方法
CN114742225A (zh) * 2022-04-07 2022-07-12 中国科学院合肥物质科学研究院 一种基于异构平台的神经网络推理加速方法
CN115249315A (zh) * 2022-09-21 2022-10-28 之江实验室 面向异构计算设备的深度学习图像分类方法及装置
CN115357356A (zh) * 2022-08-10 2022-11-18 西安邮电大学 基于计算图优化的算子间并行调度方法、设备和介质
US20220374677A1 (en) * 2021-05-18 2022-11-24 Samsung Electronics Co., Ltd. Data processing apparatus and method for deep learning inference framework
CN115659281A (zh) * 2022-11-16 2023-01-31 之江实验室 一种自适应加速算子融合的方法及装置
WO2023029589A1 (zh) * 2021-08-31 2023-03-09 上海商汤智能科技有限公司 用于神经网络编译的方法、装置、设备及存储介质
CN115794385A (zh) * 2022-11-14 2023-03-14 南京大学 一种面向深度学习模型分布式训练的容器自动编排方法
WO2023078116A1 (zh) * 2021-11-08 2023-05-11 中兴通讯股份有限公司 模型的推理优化方法、系统、电子设备和存储介质
CN116561051A (zh) * 2023-04-10 2023-08-08 中科驭数(北京)科技有限公司 一种硬件加速卡和异构计算系统
KR20230120850A (ko) * 2022-02-10 2023-08-17 한국전자통신연구원 이종 컴퓨팅 플랫폼 지원 딥러닝 컴파일러 및 그 방법
CN116663406A (zh) * 2023-05-26 2023-08-29 上海交通大学 深度学习编译器脉冲神经网络算子处理方法、系统、介质

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210319307A1 (en) * 2020-04-10 2021-10-14 SiMa Technologies, Inc. Heterogeneous computing on a system-on-chip, including machine learning inference
CN112381211A (zh) * 2020-11-20 2021-02-19 西安电子科技大学 基于异构平台执行深度神经网络的系统及方法
CN112598121A (zh) * 2020-12-21 2021-04-02 北京时代民芯科技有限公司 一种面向深度学习编译器的高效算子优化方法
CN112711422A (zh) * 2020-12-31 2021-04-27 北京清微智能科技有限公司 一种神经网络编译的优化方法及系统
CN114219065A (zh) * 2021-03-31 2022-03-22 无锡江南计算技术研究所 一种面向异构众核平台的Im2col加速方法
CN114217941A (zh) * 2021-04-09 2022-03-22 无锡江南计算技术研究所 一种面向国产异构众核处理器的TensorFlow框架核心计算加速引擎
CN114253545A (zh) * 2021-04-09 2022-03-29 无锡江南计算技术研究所 一种基于编译的神经网络异构众核多层次资源映射方法
US20220374677A1 (en) * 2021-05-18 2022-11-24 Samsung Electronics Co., Ltd. Data processing apparatus and method for deep learning inference framework
CN113298259A (zh) * 2021-06-10 2021-08-24 中国电子科技集团公司第十四研究所 支持嵌入式平台多核并行的cnn网络推理框架设计方法
CN113420865A (zh) * 2021-06-15 2021-09-21 之江实验室 一种基于多算子融合的深度神经网络推理加速方法和系统
WO2023029589A1 (zh) * 2021-08-31 2023-03-09 上海商汤智能科技有限公司 用于神经网络编译的方法、装置、设备及存储介质
CN113778459A (zh) * 2021-09-08 2021-12-10 北京航空航天大学杭州创新研究院 一种在fpga和dsp上部署优化的算子库设计方法
WO2023078116A1 (zh) * 2021-11-08 2023-05-11 中兴通讯股份有限公司 模型的推理优化方法、系统、电子设备和存储介质
KR20230120850A (ko) * 2022-02-10 2023-08-17 한국전자통신연구원 이종 컴퓨팅 플랫폼 지원 딥러닝 컴파일러 및 그 방법
CN114661460A (zh) * 2022-02-15 2022-06-24 无锡江南计算技术研究所 面向异构众核处理器的ai框架两级并行加速方法
CN114282641A (zh) * 2022-03-07 2022-04-05 麒麟软件有限公司 一种通用异构加速框架的构建方法
CN114662661A (zh) * 2022-03-22 2022-06-24 东南大学 边缘计算下异构处理器加速多出口dnn推理的方法
CN114742225A (zh) * 2022-04-07 2022-07-12 中国科学院合肥物质科学研究院 一种基于异构平台的神经网络推理加速方法
CN115357356A (zh) * 2022-08-10 2022-11-18 西安邮电大学 基于计算图优化的算子间并行调度方法、设备和介质
CN115249315A (zh) * 2022-09-21 2022-10-28 之江实验室 面向异构计算设备的深度学习图像分类方法及装置
CN115794385A (zh) * 2022-11-14 2023-03-14 南京大学 一种面向深度学习模型分布式训练的容器自动编排方法
CN115659281A (zh) * 2022-11-16 2023-01-31 之江实验室 一种自适应加速算子融合的方法及装置
CN116561051A (zh) * 2023-04-10 2023-08-08 中科驭数(北京)科技有限公司 一种硬件加速卡和异构计算系统
CN116663406A (zh) * 2023-05-26 2023-08-29 上海交通大学 深度学习编译器脉冲神经网络算子处理方法、系统、介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
丁然;林建文;朱振华;刘弋波;: "一种类CPU的深度学习协处理器架构", 中国集成电路, no. 4, pages 46 - 57 *
尚绍法: "异构平台下CNN推理模型自适应划分和调度方法", 计算机应用, pages 8 *
李雁冰;赵荣彩;韩林;赵捷;徐金龙;李颖颖;: "一种面向异构众核处理器的并行编译框架", 软件学报, no. 04, pages 121 - 141 *
谢达;周道逵;季振凯;戴新宇;武睿;: "基于异构多核平台的Caffe框架物体分类算法实现与加速", 电子与封装, no. 05, pages 18 - 23 *

Also Published As

Publication number Publication date
CN116991564B (zh) 2024-01-09

Similar Documents

Publication Publication Date Title
Guo et al. A survey of FPGA-based neural network accelerator
CN107480789B (zh) 一种深度学习模型的高效转换方法及装置
You et al. Fast deep neural network training on distributed systems and cloud TPUs
CN115543639B (zh) 分布式执行深度学习任务的优化方法和分布式系统
Heo et al. Real-time object detection system with multi-path neural networks
Khaleghzadeh et al. A novel data-partitioning algorithm for performance optimization of data-parallel applications on heterogeneous HPC platforms
CN115456159A (zh) 一种数据处理方法和数据处理设备
Natale et al. A polyhedral model-based framework for dataflow implementation on FPGA devices of iterative stencil loops
Armstrong et al. Domain decomposition for parallel processing of spatial problems
Hou et al. A survey on partitioning models, solution algorithms and algorithm parallelization for hardware/software co-design
Yashiro et al. A 1024-member ensemble data assimilation with 3.5-km mesh global weather simulations
Bambha et al. Intermediate representations for design automation of multiprocessor DSP systems
CN112948123B (zh) 一种基于Spark的网格水文模型分布式计算方法
CN114707650B (zh) 一种提高仿真效率的仿真实现方法
CN116991564B (zh) 面向异构双核mcu的算子内并行加速方法
Koutsovasilis et al. AcHEe: Evaluating approximate computing and heterogeneity for energy efficiency
US11714992B1 (en) Neural network processing based on subgraph recognition
Kang et al. NNsim: Fast performance estimation based on sampled simulation of GPGPU kernels for neural networks
US20230325464A1 (en) Hpc framework for accelerating sparse cholesky factorization on fpgas
Gao et al. Benchmarking, Measuring, and Optimizing: Second BenchCouncil International Symposium, Bench 2019, Denver, CO, USA, November 14–16, 2019, Revised Selected Papers
Shahshahani Framework for Mapping Convolutional Neural Networks on FPGAs
Parry Time Series Models for Predicting Application GPU Utilization and Power Draw Based on Trace Data
Yang et al. High-Performance Computing Option Pricing Algorithm on Hybrid Heterogeneous Many-Core Platforms
Sombatsiri An Architecture Design Space Exploration Method of System-on-a-Chip for CNN-based Artificial Intelligence Platform
Li et al. A Systematic Methodology for performance characterizing of Heterogeneous Systems with a dataflow runtime simulator

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