CN115659281A - 一种自适应加速算子融合的方法及装置 - Google Patents

一种自适应加速算子融合的方法及装置 Download PDF

Info

Publication number
CN115659281A
CN115659281A CN202211461190.8A CN202211461190A CN115659281A CN 115659281 A CN115659281 A CN 115659281A CN 202211461190 A CN202211461190 A CN 202211461190A CN 115659281 A CN115659281 A CN 115659281A
Authority
CN
China
Prior art keywords
operator
fusion
mobilebert
graph
operators
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
CN202211461190.8A
Other languages
English (en)
Other versions
CN115659281B (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 CN202211461190.8A priority Critical patent/CN115659281B/zh
Publication of CN115659281A publication Critical patent/CN115659281A/zh
Application granted granted Critical
Publication of CN115659281B publication Critical patent/CN115659281B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Machine Translation (AREA)

Abstract

本发明公开了一种自适应加速算子融合的方法及装置,该方法包括:首先将神经网络抽象成计算图的形式;其次为图节点添加关键属性进行图赋权,并为赋权后计算图中的每个算子定义状态;然后基于包含状态信息的算子,设计基于深度强化学习的关键参与者算子节点自适应计算方法;最后基于关键参与者算子节点对计算图中的算子进行融合优化,对每一个计算图中的关键参与者算子最优融合方法进行探索,其余算子融合在关键参与者算子最优融合方案下进行探索,最终确定整个神经网络每个算子的最优融合方案。本发明能够大幅减少编译器搜索算子融合优化空间的时间,并且可面向更深更复杂的网络,具有较强的扩展性与重构性。

Description

一种自适应加速算子融合的方法及装置
技术领域
本发明涉及强化学习、人工智能技术领域,具体涉及一种自适应加速算子融合的方法及装置。
背景技术
随着机器学习的兴起,特别是深度学习的发展。MobileBERT网络在计算机用户中变的非常流行,已经成为许多应用的最先进基础和核心推动力。如现在流行的云技术,是将广域网或者局域网内的硬件、软件、网络等一系列资源进行有序统一,实现数据的海量计算、储存、维护、处理、共享等,属于新型的数据托管技术,顾客可以通过云技术将深度学习模型的计算图提供给云服务供应商,由云服务供应商进行模型处理后部署到数据中心的服务器上运行,而客户的应用系统能够使用数据中心的深度学习模型的MobileBERT的计算图得到预测结果,由于数据中心使用专用于深度学习模型的加速模块来运行深度学习模型的计算图,因此将深度学习模型部署到数据中心有助于提高深度学习模型的推理能力。但是为了实现高精度,DNN模型变得越来越深,具有数百甚至数千个算子层,越来越大的模型尺寸和复杂的模型结构,需要数据中心提供大量的计算和内存资源。在日益复杂的DNN(提高准确性所需)和在资源受限的移动设备上部署这些DNN(需要更广泛的覆盖范围)之间存在一个艰难的权衡。所以如何提高DNN运行效率,如何优化大型DNN的执行,是近年来一个非常重要的研究方向。
算子融合是许多最先进的DNN执行框架(例如TensorFlow、TVM和MNN)中的关键优化,旨在提高DNN推理的效率。这种融合的基本思想与通过优化编译器完成的传统循环融合相同,它们带来以下好处:消除不必要的中间结果实现;减少不必要的输入扫描;实现其他优化机会。TensorFlow Lite、TVM、MNN和Pytorch-Mobile等传统的端到端框架都具有算子融合优化,这些优化广泛地基于识别某些融合模式。这些转换通常基于称为计算图的表示,已经有很多深度学习框架,如TensorFlow、PyTorch、Caffe和MXNet等,可以将MobileBERT网络表示为计算图的形式,并针对MobileBERT的计算图进行图级的优化,然后将DNN中的算子映射到第三方加速库如CuDNN、MKL-DNN上来获得高效的DNN运算效果。然而,这些框架通常采用基于某些模式的融合方法,这些模式限制性太强,无法涵盖运算符和层连接的多样性,尤其是在许多极深模型中看到的那些。另一方面,基于多面体的循环融合技术在没有操作员级别信息的情况下处理低级别的计算视图,也可能错过潜在的融合机会。
通常较为常见的应用场景是自然语言处理NLP方向的MobileBERT网络,可以使用TensorFlow深度学习框架在Nvidia GPU上训练类似MobileBERT网络来解决自然语言任务。可以使用CUDA和cuDNN库中的函数来完成网络训练在GPU上的部署及加速。然而,模型的训练和推理工作未必会在同样的平台进行,最终可能需要人工手段把模型部署到CPU甚至移动端上去,此时CUDA库便不再适用。开发者们往往会根据实际情况选择各种各样的深度学习顶层框架训练模型,例如TensorFlow、PyTorch、Keras、Caffe等,非常繁琐,之后还需要将训练好的模型部署到各种各样的设备后端上,除了Nvidia GPU外还包括Intel CPU、IntelGPU、ARM CPU、ARM GPU、FPGA及其它新型的AI加速器。考虑到不同硬件设备的特性各不相同、现有算子库中算子包含范围也不同、新型加速器算子库支持不足、非常规的神经网络中存在不常见的神经网络层等情况,开发者要实现符合规定运算顺序的算子运算顺序去保证网络性能,这将导致学习成本和时间成本都变得很高,因此自动化算子融合技术与自适应算子融合技术以及加速普通算子融合技术在提高效率节省成本之间变得尤为重要。
在网络中寻找一组最佳节点,称为关键参与者,其激活(或删除)将最大限度地增强(或降低)某种网络功能,是网络科学中的一类基本问题。现有的FINDER框架开辟了使用深度学习技术来理解复杂网络的组织原理的新方向,这使我们能够在不提高构建成本前提下设计出性能更强大的网络。由深度神经网络得到的计算图可以通过图建模,并通过FINDER框架进行关键参与者算子节点查找,通过一些权值优化方法进行自适应算子融合,这给了改进自动化算子融合加速与自适应算子融合加速技术新的启示。
在现有的针对MobileBERT网络加速的研究中,通过编译技术将前端输入多种不同框架下的MobileBERT网络映射到后端多种硬件平台上,并在映射过程中对MobileBERT网络进行加速,产生优化后的目标平台代码的方法获得来更好的效果。这种MobileBERT网络编译器一般包含以下执行流程:首先将多种深度学习框架下的MobileBERT网络通过高级中间语言表示为计算图,并对MobileBERT的计算图进行图级别的优化;然后将优化后的MobileBERT的计算图转换为低级中间语言表示,并对其进行算子级别的优化;最后根据目标硬件平台产生对应的优化后代码。
在对MobileBERT网络算子融合进行融合空间探索的时候,每个算子可行优化方向都很大,如一个卷积算子就可能有上亿种优化方案,现有的数据中心一般面向MobileBERT网络的预定义算子融合解决方案,这将很难扩展到大型MobileBERT网络中,且优化空间探索能力低,同时优化速度与优化后的性能也难以达到理想水准。
发明内容
本发明的目的在于针对现有技术的不足,提供一种自适应加速算子融合的方法及装置。本发明能够大幅减少编译器搜索算子融合优化空间的时间,并且可面向更深更复杂的神经网络,具有较强的扩展性与重构性。
本发明的目的是通过以下技术方案来实现的:本发明实施例第一方面提供了一种自适应加速算子融合的方法,包括以下步骤:
(1)将深度学习框架产生中构造的MobileBERT网络模型通过编译器映射到高级中间语言HIR,并将输出表示为计算图的形式;
(2)基于所述步骤(1)获得的MobileBERT的计算图,分析映射影响因素,设计权值影响公式,对MobileBERT的计算图进行重要性信息赋权;
(3)设计FINDER-E框架,为赋权后MobileBERT的计算图中的每个算子定义状态,基于包含状态信息的算子,设计深度强化学习方法,自适应计算得到关键参与者节点算子序列;
(4)采用FINDER-E框架,根据关键参与者节点算子融合顺序进行节点删除融合操作,并根据算子融合结果为每个优化后的算子生成目标平台代码,按照融合后MobileBERT的计算图中的顺序将算子代码部署到硬件上运行MobileBERT网络。
进一步地,所述步骤(1)包括以下子步骤:
(1.1)将MobileBERT网络模型经过编译器映射到HIR上,并用HIR表示,所述HIR用于表示神经网络计算和控制流程;
(1.2)基于HIR分析每个算子的属性,并根据算子间的数据依赖关系构造计算图;所述计算图是一个有向无环图,所述有向无环图包括节点和边,每个所述节点代表MobileBERT网络中的一个算子,所述边表示算子间的数据依赖关系。
进一步地,所述步骤(2)包括以下子步骤:
(2.1)根据MobileBERT中已有DNN算子的输入和输出之间的映射关系,对DNN算子进行分类;
(2.2)基于每个算子的映射类型,对MobileBERT中算子融合机会进行分析,并设计盈利表;
(2.3)根据融合机会分析和盈利表对算子节点权重进行设计,生成加权计算图。
进一步地,所述步骤(2.1)中对DNN算子进行分类,具体为:确定MobileBERT中已有DNN算子的输入输出关系,根据每个算子的输入和输出之间的映射关系将已有DNN算子分为多种类型,并为不同类型的算子进行标签设定,同时建立映射专家知识库;DNN算子的类型包括1对1、1对n、n对1、n对n、重组运算和乱序函数;
所述步骤(2.2)具体为:给定不低于两个具有一定映射类型组合的MobileBERT融合候选算子,得到其融合操作的映射类型;根据一组算子的融合结果判断本次融合前后实现某一特定计算功能算子组合的计算量复杂度是否降低,以得到本次融合收益;根据算子组合的计算量复杂度评估融合的可行性与难易程度,对融合成本,融合后性能进行分析,根据评估过程得到盈利表。
进一步地,所述步骤(3)包括以下子步骤:
(3.1)基于图表示学习方法对MobileBERT的计算图编码捕获每个算子节点的状态信息并映射到低维嵌入空间向量,所述算子节点的状态信息包括节点的出入度,权值,节点特征之间的远程交互,并将原关键参与者算子查找问题用马尔科夫决策过程建模;
(3.2)设计深度强化学习方法将嵌入向量解码为所有节点的标量Q值,以预测采取此操作的长期收益;
(3.3)基于计算的Q值,采用
Figure 489758DEST_PATH_IMAGE001
贪婪策略选择以概率
Figure 203636DEST_PATH_IMAGE001
选择Q值最高节点进行移除融 合或者以
Figure 346822DEST_PATH_IMAGE002
的概率选择其他节点;
(3.4)在节点移除融合之后再次计算剩余残差图的Q值,以进行下一个关键参与者节点识别,重复此步骤直到找到使累积奖励最高的关键参与者激活顺序,即为最优算子融合顺序,并采用N-step回退方式保留训练样本轨迹。
进一步地,所述低维嵌入空间向量x可表示为:
Figure 397824DEST_PATH_IMAGE003
,其中
Figure 838294DEST_PATH_IMAGE004
包含算子的映射类别属性,计算 所需的输入输出的量;
Figure 457495DEST_PATH_IMAGE005
包含算子的有向边属性,出度与入度,边距离等级;
Figure 82118DEST_PATH_IMAGE006
包含算子的邻居算子属性,是否可与之融合,距离,映射关系;
Figure 202389DEST_PATH_IMAGE007
表示算 子自身代价权重,即根据盈利表得到的移除融合成本。
进一步地,所述步骤(3.2)具体包括:用深度强化学习方法解决马尔科夫决策过程,为MobileBERT的计算图的关键参与者算子节点过程定义一个训练Agent,为得分函数设计基于注意力机制的Actor-Critic框架并设计对应的状态动作Q值函数;所述Q值函数利用来自编码器的状态和动作的嵌入来计算评估潜在动作质量的分数,Actor网络用于计算Q值并负责后续动作的选择,Critic网络用于指导Actor网络防止Q值高估,采用Attention模块关注关键参与者算子节点且同时注意邻居关系中的映射边的作用。
进一步地,所述步骤(4)根据算子融合结果为每个优化后的算子生成目标平台代码,按照融合后MobileBERT的计算图中的顺序将算子代码部署到硬件上,具体为:对进行算子融合优化后的MobileBERT的计算图进行融合代码生成,当算子融合过程结束后执行代码生成过程,根据优化后的MobileBERT的计算图构建数据流树,首先遍历数据流树,并通过利用基于DNN算子的类型的代码生成规则,为每对要融合的算子生成融合代码;对于需要部署在CPU上的代码,调用LLVM产生相应的C代码;对于NVidiaGPU,则生成对应的CUDA代码再将其部署到GPU上运行。
本发明实施例第二方面提供了一种自适应加速算子融合的装置,包括一个或多个处理器,用于实现上述的自适应加速算子融合的方法。
本发明实施例第三方面提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,用于实现上述的自适应加速算子融合的方法。
本发明的有益效果是,本发明能够更智能更快速的探索MobileBERT网络的算子融合优化空间,能够将多种深度学习框架生成的复杂MobileBERT网络映射到统一的中间语言构建的WCG,并且能够通过图表示学习形式将通过图建模后的MobileBERT的计算图映射到低维嵌入向量,简化问题模型,同时利用深度强化学习进行自适应关键参与者算子节点查找,促进了后续优化算子融合的过程,节省了程序因不同框架导致的模型转化带来的开销,提出的FINDER-E框架有助于提高MobileBERT网络优化的可扩展性与可移植性,只需要进行一定的偏置设置与权重设置,便可推广到更复杂更新奇的DNN优化程序中,且扩展时间复杂度不会线性增加,并且优化能力是健壮性的,不会降低原有MobileBERT网络的计算能力,有助于在不牺牲MobileBERT网络优化后计算图效率性能前提下,大幅减少编译器搜索算子融合优化空间的时间,并且具有更高的可扩展性与重构性。
附图说明
图1为本发明的流程图;
图2是本发明中Conv1-Add&Norm-Conv2-Relu神经网络模块用计算图表示的示意图;
图3是本发明中算子映射盈利分析示意图;
图4是本发明中考虑不同算子数量融合方式分析示意图;
图5是本发明中基于MobileBERT多重算子融合分析示意图;
图6是本发明中ANC曲线;
图7是本发明中采用的GraphSAGE的归纳图表示学习技术迭代聚合节点嵌入向量示意图;
图8是本发明中FINDER-E的训练流程示意图;
图9是本发明中FINDER-E的实际应用流程示意图;
图10是本发明中基于计算图目标平台代码生成部署示意图;
图11是本发明中自适应加速算子融合的装置的一种结构示意图。
具体实施方式
下面根据图1-图11详细说明本发明。
使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。此处所描述的具体实施例仅仅用于解释本公开,而非对本申请的限定。基于所描述的本申请的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
本发明实施例提供了一种自适应加速算子融合的方法,其流程图参见图1,基于深度强化学习方法将大规模复杂网络生成的计算图进行图重构优化,加快深度神经网络的算子融合优化速度提高计算图重构的可扩展性。该方法包括:首先将神经网络抽象成计算图的形式;其次为图节点添加关键属性进行图赋权,并为赋权后计算图中的每个算子定义状态;然后基于包含状态信息的算子,提出一种基于深度强化学习的关键参与者算子节点自适应计算方法;最后提出一种基于关键参与者算子节点的算子融合方法,基于关键参与者算子节点对计算图中的算子进行融合优化,对每一个计算图中的关键参与者算子最优融合方法进行探索,其余算子融合在关键参与者算子最优融合方案下进行探索,最终确定整个神经网络每个算子的最优融合方案。
本发明可支持提供面向数据中心等需要大型图优化的网络场景,数据中心是全球协作的特定设别网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储信息,像银行、运营商企业都有自己的数据中心,随着人工智能的发展,深度学习神经网络等重要的人工智能技术也已应用到数据中心业务中如大数据分析计算、大规模图像识别、自然语言处理。
本发明的自适应加速算子融合的方法具体包括以下步骤:
(1)本发明实施场景依托数据中心各类软硬件设施,将深度学习框架产生中构造的MobileBERT网络模型通过编译器映射到高级中间语言HIR,并将输出表示为计算图的形式。
(1.1)将MobileBERT网络模型经过编译器映射到高级中间语言HIR上,并用HIR表示。
由于深度学习模型所依赖的模型框架不同,格式不同,如Tensorflow、Pytorch等,导致这些学习模型的代码表达也不同,这样就给深度学习模型泛化带来很大困难。高级中间表达HIR是将各种不同格式的深度学习模型代码表达成符合一个或者多个加速单元所遵循的一种表达方式,它解析深度学习模型中每个代码语句的含义,按照代码语句的含义将语句翻译成通用的表达形式,使不同深度学习模型中同样含义的代码语句在中间表达中的表达都一样。目前已经存在针对不同深度学习模型的表达转换成中间语言的工具产品。经转换后,HIR可以等价用于表示神经网络的计算和控制流程。
具体地,在本实施例中选取MobileBERT作为具体实施的演示网络对象的基网络,BERT在NLP领域地位举足轻重,在多种下游任务与迁移工作中都有非常好的效果,同时受到庞大模型参数的影响,运行速度缓慢,在一些资源受到限制的移动端部署任务中的效果也非常不好,MobileBERT是BERT压缩研究的产物,但全部层数仍能达到2387个,依然可继续进行优化,将MobileBERT网络的TensorFlow、PyTorch或者ONNX格式的神经网络实现提交到数据中心经过TVM等编译器映射到HIR上,通过HIR进行表示。
(1.2)基于HIR分析每个算子的属性,并根据算子间的数据依赖关系构造计算图;计算图是一个有向无环图,有向无环图包括有节点和边,图中每个节点代表MobileBERT网络中的一个算子,图中的边表示算子间的数据依赖关系。
计算图建立了控制流以及算子与数据之间的依赖关系,并为图形级优化提供接口。具体地,如图2所示,是神经网络MobileBERT中一个从输入嵌入向量转换到Linear层输出所产生的计算图,可以表示为Conv1-Add&Norm-Conv2-Relu,图中每个圆角矩形代表一个算子节点,该示例中包含多个节点,图中每条边都表示了算子间的数据依赖,比如Conv1算子依赖的数据是输入的Input数据和网络固有权重W数据,Add&Norm算子是Conv1计算结果,Conv2依赖Add&Norm结果与权值,Relu依赖Conv2的输出,如若不进行有效算子融合,庞大的权重参数将严重影响图计算的成本。
(2)基于步骤(1)获得的MobileBERT的计算图,分析映射影响因素,设计权值影响公式,对MobileBERT的计算图进行重要性信息赋权。
应当理解的是,该权值并非神经网络训练的权值而是节点移除融合的成本权值。
(2.1)根据MobileBERT中已有DNN算子的输入和输出之间的映射关系,对DNN算子进行分类。
具体的,参考TVM中根据算子自身的计算性质可以分为四类:Injective、Reduction、Complex-out、Opaque。其中,Injective表示为映射函数,比如加法、点乘等;Reduction表示为输入到输出具有降维性质的,比如求和运算(sum);Complex-out表示为很复杂的,比如卷积运算;Opaque表示为无法被融合的算子,比如排序(sort)。
本实施例中,确定MobileBERT已有DNN算子的输入输出关系,通过研究流行的DNN生态系统ONNX支持的所有算子,根据每个算子的输入和输出之间的映射关系将已有DNN算子分为多种类型,并为不同类型的算子进行标签设定。例如,MobileBERT中如果一个算子只有一个输入或多个输入具有相同的映射类型到输出,则该算子的映射类型由它的任何输入/输出对决定;如果存在多个映射类型不同的输入/输出对,则该算子的映射类型由更复杂的映射类型决定。另外,为了提高可扩展性和可移植性,同时建立映射专家知识库进行存储,便于后续课程学习,这样,在处理非MobileBERT类网络时,也可以找到相似的融合关系解决方案。
进一步地,我们考虑MobileBERT中多算子的映射关系,假设每个输入元素都可以 表示为
Figure 231787DEST_PATH_IMAGE008
,其中x表示算子的操作数,
Figure 21889DEST_PATH_IMAGE009
表示操作数元素的索引,则一个输入 和一个输出之间的映射类型可以分类为:
①1对1:存在映射函数
Figure 432010DEST_PATH_IMAGE010
,有:
Figure 786332DEST_PATH_IMAGE011
这是一个1-1映射,每个
Figure 168772DEST_PATH_IMAGE012
都有对应的
Figure 631239DEST_PATH_IMAGE013
来计算,比如 MobileBERT中运算加(Add),裁剪函数(Clip),激活函数(Relu)。
②1对n:存在映射函数
Figure 997499DEST_PATH_IMAGE014
,有:
Figure 426950DEST_PATH_IMAGE015
其中m>n,并且
Figure 867158DEST_PATH_IMAGE016
Figure 858117DEST_PATH_IMAGE017
间存在1对n的映射关系,比如 MobileBERT中维度扩展(Expand),张量取运算(Gather)。
③n对1:存在映射函数
Figure 947558DEST_PATH_IMAGE014
,有:
Figure 823110DEST_PATH_IMAGE018
其中
Figure 684536DEST_PATH_IMAGE019
,并且
Figure 580817DEST_PATH_IMAGE020
Figure 688713DEST_PATH_IMAGE021
间存在n对1的映射关系,比如 MobileBERT中维度重置(Resize)。
④n对n:有一系列函数
Figure 367956DEST_PATH_IMAGE022
,存在:
Figure 376232DEST_PATH_IMAGE023
比如MobileBERT中卷积运算(Conv),通用矩阵乘法(GEMM)。
⑤重组运算(Reorganize):存在映射关系,有:
Figure 676370DEST_PATH_IMAGE024
Figure 645463DEST_PATH_IMAGE021
Figure 692178DEST_PATH_IMAGE020
之间有自由对应的1-1的关系,比如MobileBERT 中数组维度变换函数(Reshape),降维函数(Squeeze)。
⑥乱序函数(Shuffle):存在函数
Figure 492644DEST_PATH_IMAGE014
,其中,F是一个置换函数,存在:
Figure 465148DEST_PATH_IMAGE025
比如MobileBERT中转置函数(Transpose)。
所以,根据MobileBERT中算子间的映射关系可将算子类型分为1对1、1对n、n对1、n对n、重组运算和乱序函数。
(2.2)基于每个算子的映射类型,对MobileBERT中算子融合机会进行分析,并设计盈利表。
给定不低于两个具有一定映射类型组合的MobileBERT融合候选算子,可以推断得到的融合操作的映射类型,根据一组算子的融合结果可以判断本次融合前后实现某一特定计算功能算子组合的计算量复杂度等是否降低,这种分析得到本次融合收益,这样可以简化盈利能力评估并正确实施可行与不可行的算子融合,根据评估过程得到盈利表。
对MobileBERT不同算子融合的可行性与难易程度进行评估,对融合成本,融合后性能进行分析,定义融合盈利函数。融合可以分为三种类型,第一类代表可融合且融合为正向的,融合后能减轻计算图负担,无需进一步分析;第二类融合被认为是禁止的或无效融合,也就是融合后并不会加快系统整体效率,或者无符合融合的映射;第三类表示可融合但需要进一步分析以确定具体盈利能力。这样可以补充我们的映射专家知识库,对于第三种类型融合,我们使用性能分析数据库进一步加速编译,该数据库存储离线收集的各种融合组合的执行结果。并由此引入一种深度强化学习方法(Attention N-step Actor-Critic)将新学的融合经验存储用来训练神经网络参数,也是本发明提出的高效算子融合执行框架,称为FINDER-E。
具体地,进行融合可能性与效益性分析,将算子映射分为三种类型,图3为设计的基于MobileBERT分析得到的映射盈利表示意图,由于建立融合效益专家知识库,在进行泛化时非常方便。左侧为两两算子映射盈利分析,中间为效益区间,右侧为多算子参与融合时不同影响度的考虑。考虑两个算子进行融合映射,这也是目前主流的融合分析方法,以第一张图表为参考,第一列为第一个算子,第一行为第二个算子,表格内对应的是算子映射融合的结果,融合效益可分三类,第一类椭圆形单元格代表可融合且融合为正向有利的。第二类*标识的为融合无效的。第三类表示可融合但需要进一步分析具体盈利能力的,设计的盈利指数如右定价范围可以标识为1,0,0~1,对于第三种类型融合,我们使用性能分析数据库进一步加速编译,该数据库存储离线收集的各种融合组合的执行结果,通过模仿学习加规则信息的方式学习新的融合组合,并进行打分,也就是具体的0-1间哪个数值。
但是与DNNFusion(现有的一种算子融合加速方法,只能实现算子两两融合)的分 析不同,本发明考虑更复杂的两个算子甚至两个以上算子进行融合,比如两个算子作为第 一批操作符,一个算子作为第二批操作符,这是三个算子的融合,不同操作符之间的影响力 也未必相同,用
Figure 827864DEST_PATH_IMAGE026
重要度表示,算子融合优化过程本质可以实现用新的更便宜的算 子组合替换昂贵的算子组合,图4表示MobileBERT考虑不同的融合策略可能产生的融合结 果,一般研究只考虑算子间的两两融合,也就是策略A,先找到需要融合的第一组算子,融合 之后再进行第二组算子查找融合,如果首选MobileBERT中对Clip与Conv进行组合处理用 Reshape代替,这样就容易忽视可能的多算子关联之间的优化,如B策略所示,先处理GEMM与 Relu和Mul的可行融合,以Norm-GEMM的流程平替。其中图4中以云圈表示的为FINDER-E框架 识别出的关键算子。
具体地,图5为选取MobileBERT的注意力模块输入的一次运算优化,来进一步解释多算子融合过程:
运算符组合表示为,融合前:
Figure 911226DEST_PATH_IMAGE027
将F表示为:
Figure 270926DEST_PATH_IMAGE028
原式简化为:
Figure 211069DEST_PATH_IMAGE029
融合后:
Figure 246764DEST_PATH_IMAGE030
简写:
Figure 540343DEST_PATH_IMAGE031
其中
Figure 643297DEST_PATH_IMAGE032
为:
Figure 193489DEST_PATH_IMAGE033
矩形中的字母表示该输入来自模型权重,而不是中间结果。菱形中的字母(例如A)表示这是该运算符块的输入,可以是模型的输入,也可以是前一个运算符块的中间结果,为了简便省略了一些中间结果表示。
将图5融合拆分为两步骤解释,左下两个倒数函数(Recip)运算符和两个乘法(Mul)运算符的组合被一个倒数函数(Recip)、一个平方函数(Square)和一个乘法(Mul)的组合取代。融合消除了乘法(Mul)运算符,并且中间结果大小显着减小,从而导致后续融合后的计算压力降低。右侧将加运算(Add)与乘法(Mul)算子进行重组分配,也减少了计算压力。
算子两两融合虽然简单基础,但如果局限于以两个算子作为研究对象,会使融合优化陷入局部最优,未必能达到全局最优,因为它会显示忽略3个及以上的融合策略,另外当前融合策略未必是全局最优融合策略的子策略,可以说很多研究都是面向当前的贪婪策略,本发明中的多步回退N-step(n步回退)策略能避免这种局部极小值,同时能找到一个能使全局融合最优的策略组合。
(2.3)根据融合机会分析和盈利表对节点权重进行设计,从而形成加权计算图(WCG)。
我们设计加权计算图(WCG)作为我们的中间表示(IR),即在传统计算图通过捕获 数据流和基本的运算符信息,进行盈利属性分析后给算子添加额外信息。WCG包含更多与融 合相关的信息,包括:融合映射代价成本,比如
Figure 890050DEST_PATH_IMAGE034
表示每个算子的映射到其他算子的 代价;可删除或者重组标识,比如
Figure 85188DEST_PATH_IMAGE035
表示是否可以完全移除中间结果(仅当其所有 后继结果都可以融合时才为真,并且在融合期间计算),以及融合操作的数学属性,例如关 联、交换和/或分布式属性是否成立。
具体地,以MobileBERT为例根据设计的盈利表,对影响网络计算性能大小,融合条 件要求高低,融合代价多少等不同结果的算子节点,分别赋予不同权值
Figure 42649DEST_PATH_IMAGE036
,并称其为该算 子参与融合的价值,根据
Figure 763743DEST_PATH_IMAGE036
进一步归一化得到
Figure 682020DEST_PATH_IMAGE037
,便于后续计算。
对于MobileBERT生成的WCG,存在加运算(Add)、裁剪(Clip)、激活函数(Relu)、维 度扩展(Expand)、张量取(Gather)、维度重置(Resize)、卷积(Conv)、降维(Squeeze)等多种 算子,之后进行算子融合,根据盈利表的融合难易以及融合后的计算性能是否更便宜分
Figure 861941DEST_PATH_IMAGE038
,则加运算(Add)的
Figure 175373DEST_PATH_IMAGE036
可以为1,卷积(Conv)的
Figure 831482DEST_PATH_IMAGE036
可以为8。由于WCG是一个有向 连通图,可定义
Figure 237056DEST_PATH_IMAGE039
来描述,其中V表示算子节点,E表示有向边,定义一个连通性度量
Figure 27858DEST_PATH_IMAGE040
,即在WCG中找到一系列的节点
Figure 897594DEST_PATH_IMAGE041
去移除,并可能添加新的节点
Figure 491648DEST_PATH_IMAGE042
,并且每 个节点i都与不同的权值
Figure 915676DEST_PATH_IMAGE043
相关联,所以在此定义一个加权的ANC作为算子移除融合的成 本
Figure 984870DEST_PATH_IMAGE044
,其表达式为:
Figure 505850DEST_PATH_IMAGE045
下面对基于MobileBERT生成的WCG设计算子融合优化,对公式中相关参数进行说 明,其中N是G中的节点总数,
Figure 270806DEST_PATH_IMAGE046
是第i个被移除的节点,
Figure 650972DEST_PATH_IMAGE047
为移除集 合
Figure 759742DEST_PATH_IMAGE048
并添加新节点
Figure 170782DEST_PATH_IMAGE042
(融合生成的节点)后的残差图的连通性,注意这里 连通性可以体现不同算子模块之间的映射关系,
Figure 11699DEST_PATH_IMAGE049
是图G被优化前的初始化连通性,
Figure 442942DEST_PATH_IMAGE050
表示与节点
Figure 152141DEST_PATH_IMAGE051
相关的
Figure 615090DEST_PATH_IMAGE052
归一化去除成本:
Figure 423646DEST_PATH_IMAGE053
如图6所示R的值可以看作是ANC曲线下面积的估计,绘制出横轴为
Figure 43984DEST_PATH_IMAGE054
,纵轴即为
Figure 323917DEST_PATH_IMAGE055
,该框架可以处理任何定义良好的连接度量
Figure 877258DEST_PATH_IMAGE056
,它将一个加 权图映射为一个非负的实数。关键参与者节点查找融合过程会随ANC同步变化,注意真实网 络算子节点会大很多,第一次查找融合后,计算图中算子减少,网络性能发生小幅度变化, 继续进行下次算子查找融合,直到达到阈值线。
由于
Figure 169567DEST_PATH_IMAGE057
作为强化学习训练奖励部分
Figure 542779DEST_PATH_IMAGE058
需要考虑的一个参数,在一些特定网络 的网络参数符合正态分布或者其它有规律分布的前提下,某种意义上可以设计符合分布的 随机初始化取值,在训练过程中保持不动,在大规模网络多算子训练任务下可以简化作业 规模,提高学习速度,其原理与宽度学习的映射层同理,这也是本方法的优势。
(3) 进一步设计FINDER-E框架,为赋权后MobileBERT的计算图中的每个算子定义状态,基于包含状态信息的算子,设计深度强化学习方法(Attention N-step Actor-Critic),自适应计算得到关键参与者节点算子序列。
(3.1)以MobileBERT生成的WCG为例,基于图表示学习方法对MobileBERT的计算图编码捕获每个算子节点的状态信息并映射到低维嵌入空间向量,算子节点的状态信息包括节点的出入度、权值、节点特征之间的远程交互,并将原关键参与者算子查找问题用马尔科夫决策过程建模。
具体地,低维嵌入向量x可表示为:
Figure 564087DEST_PATH_IMAGE059
其中,
Figure 971935DEST_PATH_IMAGE060
包含算子的映射类别属性,计算所需的输入输出的量,
Figure 856714DEST_PATH_IMAGE061
包含 算子的有向边属性,包括出度与入度,边距离等级,
Figure 481337DEST_PATH_IMAGE062
包含算子的邻居算子属性, 包括是否可与之融合,距离,映射关系等,
Figure 601609DEST_PATH_IMAGE063
表示算子自身代价权重,即根据盈利表 得到的移除融合成本,以上属性都可以用01组合的向量或者具体数字值表示,如图7中 MobileBERT映射表示
Figure 631007DEST_PATH_IMAGE064
,表示当前边连接的两个算子属于第一类融 合,流程方向为正向连接,入度方算子入度为1可融合、距离为2个节点距离,映射关系属于 一类关系,融合计算成本为原成本的0.8。
利用基于图神经网络的图表示学习(又名图嵌入)将网络结构信息表征为低维嵌入空间,在本实施例中,设计扩展图样本和聚合算法GraphSAGE的归纳图表示学习技术到有向图应用来迭代聚合节点嵌入向量。这些向量被初始化为来自邻域的节点特征(例如,节点度或节点移除成本,融合价值权值),本方法与GraphSAGE方法不同的一点是边的方向不可忽略,即嵌入信息边的映射表示有严格的顺序,若正向为1,反向为-1,仅在嵌入信息指示方向。
扩展到GraphSAGE的算法思想就是不断的按照“入节点-节点-出节点”顺序聚合邻居信息,然后进行迭代更新。随着迭代次数的增加,每个节点的聚合的信息几乎都是全局的,在图样本和聚合算法GraphSAGE之前的GCN(图卷积神经网络)模型中,都是采用的全图的训练方式,也就是说每一轮的迭代都要对全图的节点进行更新,当图的规模很大时,这种训练方式无疑是很耗时甚至无法更新的。
如图7所示,通过MobileBERT生成的WCG按照本发明提出的扩展GraphSAGE操作分 三步进行:选择操作节点,首先对邻居根据入节点出节点的顺序进行顺序采样,每一跳抽样 的邻居数不多于
Figure 155529DEST_PATH_IMAGE065
个,如图第一跳采集了三个邻居,第二跳采集了5个邻居;其次生成目 标节点的嵌入表示:先聚合2跳邻居的特征,生成一跳邻居的嵌入表示,再聚合一跳的嵌入 表示,生成目标节点的嵌入表示;最后将目标节点的嵌入表示输入全连接网络得到目标节 点的预测值。
经过几轮递归后,每个节点获得一个嵌入向量x,该向量捕获节点在图上的结构位置以及节点特征之间的远程交互(不同算子映射计算顺序)。为了捕获更复杂的图信息,可以引入一个将所有真实节点视为邻居的虚拟节点来表示整个图,并重复相同的嵌入传播过程以获得其表示。
本发明通过深度强化学习优化的思想,将原关键参与者算子查找问题建模为马尔 科夫决策过程,以MobileBERT算子融合优化为例,WCG每个节点代表一个算子,其中状态定 义为经过每步算子融合后的计算图,动作是移除/融合识别出的关键节点,我们设计一个终 止阈值
Figure 538887DEST_PATH_IMAGE066
评价网络性能,一般是比原网络性能低不超过10%以上,奖励是采取动作后在尽量 不降低计算图原有性能前提下(网络性能低于终止阈值
Figure 197270DEST_PATH_IMAGE066
)计算图计算规模、计算复杂度的 减小,这一过程也是用更便宜的算子代替昂贵复杂的算子的过程。
(3.2)设计深度强化学习方法(Attention N-step Actor-Critic)将嵌入向量解码为所有节点的标量Q值,以预测采取此操作的长期收益。
整个流程由提出的称为FINDER-E的框架来实现。注意力机制在框架中用于提高一个算子节点与其关系更密切的邻居节点的关注度,在进行多重算子融合优化顺序时候专注于融合的节点数量以及成本规模。
以MobileBERT网络进行算子融合优化为例,在通过FINDER-E框架进行算子融合空 间探索与优化时候,首先利用经典DNN网络模型生成小型合成随机图,让FINDER-E在随机图 上进行离线训练。对于每个MobileBERT的计算图,FINDER-E将关键参与者算子节点的发现 与融合过程视为马尔可夫决策过程,用元组
Figure 81175DEST_PATH_IMAGE067
表示:该决策可以视为一个 Agent通过一系列状态
Figure 307757DEST_PATH_IMAGE068
、动作
Figure 939595DEST_PATH_IMAGE069
和奖励
Figure 837888DEST_PATH_IMAGE070
与环 境交互,得到后续状态
Figure 12517DEST_PATH_IMAGE071
。这里,环境是被分析的图网络,状态定义为节点移除融合后的残 差网络,动作是移除融合识别的关键参与者算子节点,奖励是采取行动后ANC的减少。
Figure 770520DEST_PATH_IMAGE072
为邻居矩阵集,在这个过程中,FINDER-E收集试错样本来更新它的网络参 数(采取经典Actor-Critic框架更新网络参数),并变得越来越智能来解决这个任务。训练 Agent为得分函数设计了一个基于注意力机制的Actor-Critic框架并设计对应的状态动作 Q值函数。
设计的Q函数利用来自编码器的状态和动作的嵌入向量来计算评估潜在动作质量的分数。具体来说,FINDER-E框架将外积操作应用于状态和动作的嵌入,以建模更精细的状态-动作依赖关系。然后使用具有校正线性单元激活的多层感知器将外积映射到标量值。
Actor网络用来计算Q值并负责后续动作的选择,添加Critic网络对训练进行估计,可以防止Q值高估等错误。采用Attention模块(即Attention-Expand,表示Attention模块)来关注关键参与者节点的同时能更注意邻居关系中更重要的映射边的作用,这在多算子融合时尤为有效。
FINDER-E的学习依赖于重复从经验回放缓冲池M中抽取样本进行训练,最小化损失函数为:
Figure 624075DEST_PATH_IMAGE073
其中,N为算子总数量,对应到MobileBERT为MobileBERT网络生成WCG的数量,
Figure 234048DEST_PATH_IMAGE074
为及时奖励由ANC量化,
Figure 83756DEST_PATH_IMAGE075
为深度强化学习的折扣函数,Q为动作价值函数,
Figure 511195DEST_PATH_IMAGE076
为第i步时图 状态,
Figure 353511DEST_PATH_IMAGE077
为状态为i时执行的动作选择,
Figure 95071DEST_PATH_IMAGE078
为神经网络参数,
Figure 742828DEST_PATH_IMAGE079
为目标网络参数,
Figure 544431DEST_PATH_IMAGE080
Figure 405202DEST_PATH_IMAGE081
分 别表示下一个状态和下一个动作,z表示观察值,适应于部分可观察环境(对于常规的全图 更新搜索空间的探索技术来说,添加z可扩展到局部可观察图探索应用,适应于探索融合空 间时出现专家库中未记录的融合样例)。
采用成熟的注意力机制技术在框架中用于提高一个算子节点与其关系更密切的邻居节点的关注度,在进行多重算子融合优化顺序时候专注于融合的节点数量以及成本规模。
(3.3)关于强化学习固有的探索与利用问题,我们基于计算的Q值,采用
Figure 684873DEST_PATH_IMAGE082
贪婪策略 选择以概率
Figure 485339DEST_PATH_IMAGE082
选择Q值最高节点进行移除融合(作为关键节点)或者有
Figure 962238DEST_PATH_IMAGE083
的概率选择其他 节点。
本实施例中,为了平衡探索和利用设计
Figure 418627DEST_PATH_IMAGE082
在10000 episode内从1.0线性或者非线 性退火到0.05。按照下式设计:
Figure 800192DEST_PATH_IMAGE084
或者
Figure 251902DEST_PATH_IMAGE085
其中,衰减参数
Figure 67411DEST_PATH_IMAGE086
(3.4)在节点移除融合之后再次计算剩余残差图的Q值,以进行下一个关键参与者节点识别,重复此步骤直到找到使累积奖励最高的关键参与者激活顺序,即为最优算子融合顺序,并采用N-step回退方式保留训练样本轨迹。
具体地,结合了N-step (n步回退)Q学习损失最小化了预测Q值和目标Q值之间的 差距,当一段训练(一章/一个情节片)episodic结束时,例如,计算图性能不再明显改变,或 者达到设定的阈值,我们收集n步转换,即形式为
Figure 103107DEST_PATH_IMAGE087
的4元组,其中
Figure 255739DEST_PATH_IMAGE088
,将它们存放到经验重放缓冲区队列中,该队列维护最近的M个元组,设 计M=50000,同时,使用Adam优化器通过对损失执行小批量梯度下降来更新Agent。N-step(n 步回退)也可以避免当前的局部最优问题。
本发明结合了图重建损失来辅助训练,图重建损失技术可保留嵌入空间中的原始网络结构。
当这个离线训练阶段结束时,训练有素的FINDER-E能够学习一个长期策略,可以选择一系列动作,从当前状态到最终状态过程中积累最大的奖励,这一过程中找到的关键参与者激活顺序,即为最优算子融合顺序,以上步骤示意图如图8所示。
在训练过程中,不断查找匹配的过程也是一个填补映射专家库的过程,通过不断的试错将高性能融合方案加入到历史经验中,为后续应用学习部分提供参考。随着episode和更新的重复,Agent在寻找复杂网络上的关键算子融合方法方面变得越来越聪明和强大。
(4)对已经训练好的FINDER-E框架进行应用,根据关键参与者节点算子融合顺序进行节点删除融合操作,并根据算子融合结果为每个优化后的算子生成目标平台代码,按照融合后MobileBERT的计算图中的顺序将算子代码部署到硬件上运行MobileBERT网络,前端输入MobileBERT为例,编译成WCG开始优化,如图9所示。
具体地,根据关键参与者算子节点融合顺序进行节点删除融合操作:算子融合是将多个基本的算子组合为一个复合算子,不需要存储中间结果,减少不必要的内存读写并提高缓存局部性的一种优化技术。在每个自适应步骤中批量融合有限部分的节点,而不是像训练阶段那样逐次融合。对于MobileBERT网络,FINDER-E将简单地重复一个贪婪的过程来返回关键参与者算子节点的最优序列。同样的Agent首先将当前计算图编码为低维嵌入向量,然后利用这些嵌入向量解码每个节点的Q值。
对于具体的MobileBERT网络算子优化,利用“匹配节点选择”策略,该策略在每个自适应步骤中选择有限部分(例如,1%)的最高Q节点,并避免逐个-嵌入向量和Q值的一次迭代选择和重新计算。这种策略不会影响最终结果,但它会使时间复杂度降低几个数量级。重复这个过程,直到网络达到用户定义的终端状态(例如,最大预算节点或最小连接阈值),顺序移除的节点构成最佳关键参与者算子节点集合。
本发明具有很强的泛化性,当在应用到更复杂的深度神经网络或者是一些特定的 网络时候,可以直接通过模仿学习行为克隆的方式加上一定的偏置约束
Figure 63421DEST_PATH_IMAGE089
来进行新网络的 优化,从而实现高可扩展性与健壮性。
我们给出一种
Figure 112148DEST_PATH_IMAGE089
的设计范例如下:
Figure 183877DEST_PATH_IMAGE090
其中,
Figure 874621DEST_PATH_IMAGE089
为偏置约束,
Figure 536809DEST_PATH_IMAGE091
为特定网络转一般计算图得到的噪声尺度,
Figure 694121DEST_PATH_IMAGE092
为正则化 项,
Figure 501146DEST_PATH_IMAGE093
表示额外的映射公式,该公式与贝叶斯估计原理相似。
根据所述步骤(3.2)得到学习训练的扩展损失函数,其表达式如下:
Figure 136527DEST_PATH_IMAGE094
其中,N为算子总数量,
Figure 151756DEST_PATH_IMAGE095
为及时奖励,
Figure 106068DEST_PATH_IMAGE096
为折扣函数,Q为价值函数,
Figure 511642DEST_PATH_IMAGE097
为第i步时图 状态,
Figure 579741DEST_PATH_IMAGE098
为状态为i时执行的动作选择,
Figure 387160DEST_PATH_IMAGE099
为神经网络参数,
Figure 745329DEST_PATH_IMAGE100
为目标网络参数,
Figure 139664DEST_PATH_IMAGE080
Figure 241481DEST_PATH_IMAGE081
分别 为下一个状态和下一个动作,z表示观察值,适应于部分可观察环境。
该设计含有奖励塑造的内部激励部分,
Figure 729838DEST_PATH_IMAGE101
Figure 993329DEST_PATH_IMAGE102
可以看作是外内奖励两部分的占比,
Figure 107915DEST_PATH_IMAGE101
约束固有经验学习的网络,
Figure 983730DEST_PATH_IMAGE102
约束特定网络的特殊影响因素,这些因素可以是网络转换成 计算图的稀疏度或者是依赖于硬件的学习提速因子。
根据算子融合结果为每个优化后的算子生成目标平台代码,按照融合后计算图中的顺序将算子代码部署到硬件上运行神经网络。
对进行算子融合优化后的计算图进行融合代码生成,当算子融合过程结束,可以执行代码生成过程,根据优化后的MobileBERT计算图构建数据流树(DFT),首先遍历DFT,并通过利用基于抽象映射类型(例如,一对一)的代码生成规则,为每对要融合的算子生成融合代码。对于需要部署在CPU上的代码,调用LLVM(底层虚拟机)产生相应的C代码,而对于NVidiaGPU,则生成对应的CUDA(统一计算设备架构)代码再将其部署到GPU上运行。
如图10所示,在输入到数据中心的MobileBERT算子融合优化代码生成过程中,遍历此DFT以递归地识别输入/输出数据依赖性。图的右侧显示了这种DFT遍历的示例。
首先,程序识别出Out依赖于IRS2+IRS5;接下来,它识别出IRS2依赖于IRS1的Clip,右侧IRS5依赖于IRS4然后是IRS3,依此类推,直到到达A,B,C,D的输入,在这个DFT遍历过程中,程序使用预定义的代码生成规则为每对要融合的算子生成代码。
与前述自适应计算图重构加速算子融合的方法的实施例相对应,本发明还提供了自适应加速算子融合的装置的实施例。
参见图11,本发明实施例提供的一种自适应加速算子融合的装置,包括一个或多个处理器,用于实现上述实施例中的自适应加速算子融合的方法。
本发明自适应加速算子融合的装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图11所示,为本发明自适应计算图重构加速算子融合的装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图11所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的自适应加速算子融合的方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
本发明提供的技术方案在深度学习模型与云计算结合方面具有很高的现实价值。本发明实施例可用于对用户要部署到数据中心的深度学习模型进行自适应优化,减少数据中心需要针对特定算子设计优化的框架成本,从而提高该深度学习模型的推理性能,进而提高配备了该深度学习模型的应用程序的处理效率,这又会提高用户将深度学习模型托管到数据中心的意愿。因此本发明具有很高的市场前景和商业价值。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行来详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使用相应技术方案的本质脱离本发明实施例技术方案的范围。

Claims (10)

1.一种自适应加速算子融合的方法,其特征在于,包括以下步骤:
(1)将深度学习框架产生中构造的MobileBERT网络模型通过编译器映射到高级中间语言HIR,并将输出表示为计算图的形式;
(2)基于所述步骤(1)获得的MobileBERT的计算图,分析映射影响因素,设计权值影响公式,对MobileBERT的计算图进行重要性信息赋权;
(3)设计FINDER-E框架,为赋权后MobileBERT的计算图中的每个算子定义状态,基于包含状态信息的算子,设计深度强化学习方法,自适应计算得到关键参与者节点算子序列;
(4)采用FINDER-E框架,根据关键参与者节点算子融合顺序进行节点删除融合操作,并根据算子融合结果为每个优化后的算子生成目标平台代码,按照融合后MobileBERT的计算图中的顺序将算子代码部署到硬件上运行MobileBERT网络。
2.根据权利要求1所述的自适应加速算子融合的方法,其特征在于,所述步骤(1)包括以下子步骤:
(1.1)将MobileBERT网络模型经过编译器映射到HIR上,并用HIR表示,所述HIR用于表示神经网络计算和控制流程;
(1.2)基于HIR分析每个算子的属性,并根据算子间的数据依赖关系构造计算图;所述计算图是一个有向无环图,所述有向无环图包括节点和边,每个所述节点代表MobileBERT网络中的一个算子,所述边表示算子间的数据依赖关系。
3.根据权利要求1所述的自适应加速算子融合的方法,其特征在于,所述步骤(2)包括以下子步骤:
(2.1)根据MobileBERT中已有DNN算子的输入和输出之间的映射关系,对DNN算子进行分类;
(2.2)基于每个算子的映射类型,对MobileBERT中算子融合机会进行分析,并设计盈利表;
(2.3)根据融合机会分析和盈利表对算子节点权重进行设计,生成加权计算图。
4.根据权利要求3所述的自适应加速算子融合的方法,其特征在于,所述步骤(2.1)中对DNN算子进行分类,具体为:确定MobileBERT中已有DNN算子的输入输出关系,根据每个算子的输入和输出之间的映射关系将已有DNN算子分为多种类型,并为不同类型的算子进行标签设定,同时建立映射专家知识库;DNN算子的类型包括1对1、1对n、n对1、n对n、重组运算和乱序函数;
所述步骤(2.2)具体为:给定不低于两个具有一定映射类型组合的MobileBERT融合候选算子,得到其融合操作的映射类型;根据一组算子的融合结果判断本次融合前后实现某一特定计算功能算子组合的计算量复杂度是否降低,以得到本次融合收益;根据算子组合的计算量复杂度评估融合的可行性与难易程度,对融合成本,融合后性能进行分析,根据评估过程得到盈利表。
5.根据权利要求1所述的自适应加速算子融合的方法,其特征在于,所述步骤(3)包括以下子步骤:
(3.1)基于图表示学习方法对MobileBERT的计算图编码捕获每个算子节点的状态信息并映射到低维嵌入空间向量,所述算子节点的状态信息包括节点的出入度,权值,节点特征之间的远程交互,并将原关键参与者算子查找问题用马尔科夫决策过程建模;
(3.2)设计深度强化学习方法将嵌入向量解码为所有节点的标量Q值,以预测采取此操作的长期收益;
(3.3)基于计算的Q值,采用
Figure 339899DEST_PATH_IMAGE001
贪婪策略选择以概率
Figure 305450DEST_PATH_IMAGE001
选择Q值最高节点进行移除融合或者以
Figure 533431DEST_PATH_IMAGE002
的概率选择其他节点;
(3.4)在节点移除融合之后再次计算剩余残差图的Q值,以进行下一个关键参与者节点识别,重复此步骤直到找到使累积奖励最高的关键参与者激活顺序,即为最优算子融合顺序,并采用N-step回退方式保留训练样本轨迹。
6.根据权利要求5所述的自适应加速算子融合的方法,其特征在于,所述低维嵌入空间向x可表示为:
Figure 711471DEST_PATH_IMAGE003
,其中,
Figure 174420DEST_PATH_IMAGE004
包含算子的映射类别属性,计算所需的输入输出的量;
Figure 779714DEST_PATH_IMAGE005
包含算子的有向边属性,出度与入度,边距离等级;
Figure 901516DEST_PATH_IMAGE006
包含算子的邻居算子属性,是否可与之融合,距离,映射关系;
Figure 883247DEST_PATH_IMAGE007
表示算子自身代价权重,即根据盈利表得到的移除融合成本。
7.根据权利要求5所述的自适应加速算子融合的方法,其特征在于,所述步骤(3.2)具体包括:用深度强化学习方法解决马尔科夫决策过程,为MobileBERT的计算图的关键参与者算子节点过程定义一个训练Agent,为得分函数设计基于注意力机制的Actor-Critic框架并设计对应的状态动作Q值函数;所述Q值函数利用来自编码器的状态和动作的嵌入来计算评估潜在动作质量的分数,Actor网络用于计算Q值并负责后续动作的选择,Critic网络用于指导Actor网络防止Q值高估,采用Attention模块关注关键参与者算子节点且同时注意邻居关系中的映射边的作用。
8.根据权利要求1所述的自适应加速算子融合的方法,其特征在于,所述步骤(4)根据算子融合结果为每个优化后的算子生成目标平台代码,按照融合后MobileBERT的计算图中的顺序将算子代码部署到硬件上,具体为:对进行算子融合优化后的MobileBERT的计算图进行融合代码生成,当算子融合过程结束后执行代码生成过程,根据优化后的MobileBERT的计算图构建数据流树,首先遍历数据流树,并通过利用基于DNN算子的类型的代码生成规则,为每对要融合的算子生成融合代码;对于需要部署在CPU上的代码,调用LLVM产生相应的C代码;对于NVidiaGPU,则生成对应的CUDA代码再将其部署到GPU上运行。
9.一种自适应加速算子融合的装置,其特征在于,包括一个或多个处理器,用于实现权利要求1-8中任一项所述的自适应加速算子融合的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,用于实现权利要求1-8中任一项所述的自适应加速算子融合的方法。
CN202211461190.8A 2022-11-16 2022-11-16 一种自适应加速算子融合的方法及装置 Active CN115659281B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211461190.8A CN115659281B (zh) 2022-11-16 2022-11-16 一种自适应加速算子融合的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211461190.8A CN115659281B (zh) 2022-11-16 2022-11-16 一种自适应加速算子融合的方法及装置

Publications (2)

Publication Number Publication Date
CN115659281A true CN115659281A (zh) 2023-01-31
CN115659281B CN115659281B (zh) 2023-10-27

Family

ID=85020199

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211461190.8A Active CN115659281B (zh) 2022-11-16 2022-11-16 一种自适应加速算子融合的方法及装置

Country Status (1)

Country Link
CN (1) CN115659281B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116108764A (zh) * 2023-04-14 2023-05-12 中国科学院长春光学精密机械与物理研究所 光学智能优化方法、装置、设备、介质
CN116301904A (zh) * 2023-05-18 2023-06-23 之江实验室 一种用于深度学习编译器的算子优化加速方法及装置
CN116362316A (zh) * 2023-05-29 2023-06-30 成都阿加犀智能科技有限公司 一种模型转换方法、装置、存储介质及电子设备
CN116629330A (zh) * 2023-04-24 2023-08-22 北京大学 一种算子检测方法、装置以及计算机设备
CN116665020A (zh) * 2023-07-31 2023-08-29 国网浙江省电力有限公司 基于算子融合的图像识别方法、装置、设备及存储介质
CN116820524A (zh) * 2023-08-22 2023-09-29 腾讯科技(深圳)有限公司 模型更新方法、装置、计算机设备及存储介质
CN116991564A (zh) * 2023-09-28 2023-11-03 之江实验室 面向异构双核mcu的算子内并行加速方法
CN117372846A (zh) * 2023-10-17 2024-01-09 湖南苏科智能科技有限公司 基于嵌入式平台的目标检测方法、平台、装置及设备
CN117391175A (zh) * 2023-11-30 2024-01-12 中科南京智能技术研究院 一种用于类脑计算平台的脉冲神经网络量化方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170293474A1 (en) * 2015-03-26 2017-10-12 IfWizard Corporation Automatically optimizing analytics database server
CN110490309A (zh) * 2019-08-14 2019-11-22 北京中科寒武纪科技有限公司 一种用于神经网络的算子融合方法及其相关产品
US20190392296A1 (en) * 2019-06-28 2019-12-26 John Brady Hardware agnostic deep neural network compiler
CN112579063A (zh) * 2021-03-01 2021-03-30 之江实验室 一种用于深度学习编译器中探索优化空间的加速方法
CN113420865A (zh) * 2021-06-15 2021-09-21 之江实验室 一种基于多算子融合的深度神经网络推理加速方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170293474A1 (en) * 2015-03-26 2017-10-12 IfWizard Corporation Automatically optimizing analytics database server
US20190392296A1 (en) * 2019-06-28 2019-12-26 John Brady Hardware agnostic deep neural network compiler
CN110490309A (zh) * 2019-08-14 2019-11-22 北京中科寒武纪科技有限公司 一种用于神经网络的算子融合方法及其相关产品
CN112579063A (zh) * 2021-03-01 2021-03-30 之江实验室 一种用于深度学习编译器中探索优化空间的加速方法
CN113420865A (zh) * 2021-06-15 2021-09-21 之江实验室 一种基于多算子融合的深度神经网络推理加速方法和系统

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116108764A (zh) * 2023-04-14 2023-05-12 中国科学院长春光学精密机械与物理研究所 光学智能优化方法、装置、设备、介质
CN116629330B (zh) * 2023-04-24 2024-04-16 北京大学 一种算子检测方法、装置以及计算机设备
CN116629330A (zh) * 2023-04-24 2023-08-22 北京大学 一种算子检测方法、装置以及计算机设备
CN116301904A (zh) * 2023-05-18 2023-06-23 之江实验室 一种用于深度学习编译器的算子优化加速方法及装置
CN116301904B (zh) * 2023-05-18 2023-08-22 之江实验室 一种用于深度学习编译器的算子优化加速方法及装置
CN116362316B (zh) * 2023-05-29 2023-12-12 成都阿加犀智能科技有限公司 一种模型转换方法、装置、存储介质及电子设备
CN116362316A (zh) * 2023-05-29 2023-06-30 成都阿加犀智能科技有限公司 一种模型转换方法、装置、存储介质及电子设备
CN116665020A (zh) * 2023-07-31 2023-08-29 国网浙江省电力有限公司 基于算子融合的图像识别方法、装置、设备及存储介质
CN116665020B (zh) * 2023-07-31 2024-04-12 国网浙江省电力有限公司 基于算子融合的图像识别方法、装置、设备及存储介质
CN116820524A (zh) * 2023-08-22 2023-09-29 腾讯科技(深圳)有限公司 模型更新方法、装置、计算机设备及存储介质
CN116820524B (zh) * 2023-08-22 2023-11-28 腾讯科技(深圳)有限公司 模型更新方法、装置、计算机设备及存储介质
CN116991564A (zh) * 2023-09-28 2023-11-03 之江实验室 面向异构双核mcu的算子内并行加速方法
CN116991564B (zh) * 2023-09-28 2024-01-09 之江实验室 面向异构双核mcu的算子内并行加速方法
CN117372846A (zh) * 2023-10-17 2024-01-09 湖南苏科智能科技有限公司 基于嵌入式平台的目标检测方法、平台、装置及设备
CN117391175A (zh) * 2023-11-30 2024-01-12 中科南京智能技术研究院 一种用于类脑计算平台的脉冲神经网络量化方法及系统

Also Published As

Publication number Publication date
CN115659281B (zh) 2023-10-27

Similar Documents

Publication Publication Date Title
CN115659281B (zh) 一种自适应加速算子融合的方法及装置
Addanki et al. Placeto: Learning generalizable device placement algorithms for distributed machine learning
Hospedales et al. Meta-learning in neural networks: A survey
Benmeziane et al. A comprehensive survey on hardware-aware neural architecture search
Alzubaidi et al. A survey on deep learning tools dealing with data scarcity: definitions, challenges, solutions, tips, and applications
Huang et al. Gamepad: A learning environment for theorem proving
CN110366734B (zh) 优化神经网络架构
Chen et al. Techniques for automated machine learning
Oloulade et al. Graph neural architecture search: A survey
CN109299237B (zh) 基于行动者评论家强化学习算法的循环网络人机对话方法
Wang et al. Neural architecture search using deep neural networks and monte carlo tree search
Pelikan et al. Estimation of distribution algorithms
CN112905801B (zh) 基于事件图谱的行程预测方法、系统、设备及存储介质
CN117170685B (zh) 一种数据处理方法、装置、设备及介质
CN118312167B (zh) 基于低代码平台的套件机制实现方法及系统
CN117971354B (zh) 基于端到端学习的异构加速方法、装置、设备及存储介质
CN116208399A (zh) 一种基于元图的网络恶意行为检测方法及设备
Kim et al. Solving pbqp-based register allocation using deep reinforcement learning
de Castro et al. BAIS: A Bayesian Artificial Immune System for the effective handling of building blocks
CN116258504B (zh) 银行客户关系管理系统及其方法
Hodnett et al. Deep Learning with R for Beginners: Design neural network models in R 3.5 using TensorFlow, Keras, and MXNet
Baeta et al. Exploring expression-based generative adversarial networks
Wang et al. Accelerate model parallel training by using efficient graph traversal order in device placement
Faury et al. Rover descent: Learning to optimize by learning to navigate on prototypical loss surfaces
Haj-Ali Machine Learning in Compiler Optimization

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