掌桥专利:专业的专利平台
掌桥专利
首页

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

文献发布时间:2023-06-19 18:27:32


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

技术领域

本发明涉及强化学习、人工智能技术领域,具体涉及一种自适应加速算子融合的方法及装置。

背景技术

随着机器学习的兴起,特别是深度学习的发展。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值,采用

(3.4)在节点移除融合之后再次计算剩余残差图的Q值,以进行下一个关键参与者节点识别,重复此步骤直到找到使累积奖励最高的关键参与者激活顺序,即为最优算子融合顺序,并采用N-step回退方式保留训练样本轨迹。

进一步地,所述低维嵌入空间向量x可表示为:

进一步地,所述步骤(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中多算子的映射关系,假设每个输入元素都可以 表示为

①1对1:存在映射函数

这是一个1-1映射,每个

②1对n:存在映射函数

其中m>n,并且

③n对1:存在映射函数

其中

④n对n:有一系列函数

比如MobileBERT中卷积运算(Conv),通用矩阵乘法(GEMM)。

⑤重组运算(Reorganize):存在映射关系,有:

⑥乱序函数(Shuffle):存在函数

比如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(现有的一种算子融合加速方法,只能实现算子两两融合)的分 析不同,本发明考虑更复杂的两个算子甚至两个以上算子进行融合,比如两个算子作为第 一批操作符,一个算子作为第二批操作符,这是三个算子的融合,不同操作符之间的影响力 也未必相同,用

具体地,图5为选取MobileBERT的注意力模块输入的一次运算优化,来进一步解释多算子融合过程:

运算符组合表示为,融合前:

将F表示为:

原式简化为:

融合后:

简写:

其中

矩形中的字母表示该输入来自模型权重,而不是中间结果。菱形中的字母(例如A)表示这是该运算符块的输入,可以是模型的输入,也可以是前一个运算符块的中间结果,为了简便省略了一些中间结果表示。

将图5融合拆分为两步骤解释,左下两个倒数函数(Recip)运算符和两个乘法(Mul)运算符的组合被一个倒数函数(Recip)、一个平方函数(Square)和一个乘法(Mul)的组合取代。融合消除了乘法(Mul)运算符,并且中间结果大小显着减小,从而导致后续融合后的计算压力降低。右侧将加运算(Add)与乘法(Mul)算子进行重组分配,也减少了计算压力。

算子两两融合虽然简单基础,但如果局限于以两个算子作为研究对象,会使融合优化陷入局部最优,未必能达到全局最优,因为它会显示忽略3个及以上的融合策略,另外当前融合策略未必是全局最优融合策略的子策略,可以说很多研究都是面向当前的贪婪策略,本发明中的多步回退N-step(n步回退)策略能避免这种局部极小值,同时能找到一个能使全局融合最优的策略组合。

(2.3)根据融合机会分析和盈利表对节点权重进行设计,从而形成加权计算图(WCG)。

我们设计加权计算图(WCG)作为我们的中间表示(IR),即在传统计算图通过捕获 数据流和基本的运算符信息,进行盈利属性分析后给算子添加额外信息。WCG包含更多与融 合相关的信息,包括:融合映射代价成本,比如

具体地,以MobileBERT为例根据设计的盈利表,对影响网络计算性能大小,融合条 件要求高低,融合代价多少等不同结果的算子节点,分别赋予不同权值

对于MobileBERT生成的WCG,存在加运算(Add)、裁剪(Clip)、激活函数(Relu)、维 度扩展(Expand)、张量取(Gather)、维度重置(Resize)、卷积(Conv)、降维(Squeeze)等多种 算子,之后进行算子融合,根据盈利表的融合难易以及融合后的计算性能是否更便宜分

下面对基于MobileBERT生成的WCG设计算子融合优化,对公式中相关参数进行说 明,其中N是G中的节点总数,

如图6所示R的值可以看作是ANC曲线下面积的估计,绘制出横轴为

由于

(3) 进一步设计FINDER-E框架,为赋权后MobileBERT的计算图中的每个算子定义状态,基于包含状态信息的算子,设计深度强化学习方法(Attention N-step Actor-Critic),自适应计算得到关键参与者节点算子序列。

(3.1)以MobileBERT生成的WCG为例,基于图表示学习方法对MobileBERT的计算图编码捕获每个算子节点的状态信息并映射到低维嵌入空间向量,算子节点的状态信息包括节点的出入度、权值、节点特征之间的远程交互,并将原关键参与者算子查找问题用马尔科夫决策过程建模。

具体地,低维嵌入向量x可表示为:

其中,

利用基于图神经网络的图表示学习(又名图嵌入)将网络结构信息表征为低维嵌入空间,在本实施例中,设计扩展图样本和聚合算法GraphSAGE的归纳图表示学习技术到有向图应用来迭代聚合节点嵌入向量。这些向量被初始化为来自邻域的节点特征(例如,节点度或节点移除成本,融合价值权值),本方法与GraphSAGE方法不同的一点是边的方向不可忽略,即嵌入信息边的映射表示有严格的顺序,若正向为1,反向为-1,仅在嵌入信息指示方向。

扩展到GraphSAGE的算法思想就是不断的按照“入节点-节点-出节点”顺序聚合邻居信息,然后进行迭代更新。随着迭代次数的增加,每个节点的聚合的信息几乎都是全局的,在图样本和聚合算法GraphSAGE之前的GCN(图卷积神经网络)模型中,都是采用的全图的训练方式,也就是说每一轮的迭代都要对全图的节点进行更新,当图的规模很大时,这种训练方式无疑是很耗时甚至无法更新的。

如图7所示,通过MobileBERT生成的WCG按照本发明提出的扩展GraphSAGE操作分 三步进行:选择操作节点,首先对邻居根据入节点出节点的顺序进行顺序采样,每一跳抽样 的邻居数不多于

经过几轮递归后,每个节点获得一个嵌入向量x,该向量捕获节点在图上的结构位置以及节点特征之间的远程交互(不同算子映射计算顺序)。为了捕获更复杂的图信息,可以引入一个将所有真实节点视为邻居的虚拟节点来表示整个图,并重复相同的嵌入传播过程以获得其表示。

本发明通过深度强化学习优化的思想,将原关键参与者算子查找问题建模为马尔 科夫决策过程,以MobileBERT算子融合优化为例,WCG每个节点代表一个算子,其中状态定 义为经过每步算子融合后的计算图,动作是移除/融合识别出的关键节点,我们设计一个终 止阈值

(3.2)设计深度强化学习方法(Attention N-step Actor-Critic)将嵌入向量解码为所有节点的标量Q值,以预测采取此操作的长期收益。

整个流程由提出的称为FINDER-E的框架来实现。注意力机制在框架中用于提高一个算子节点与其关系更密切的邻居节点的关注度,在进行多重算子融合优化顺序时候专注于融合的节点数量以及成本规模。

以MobileBERT网络进行算子融合优化为例,在通过FINDER-E框架进行算子融合空 间探索与优化时候,首先利用经典DNN网络模型生成小型合成随机图,让FINDER-E在随机图 上进行离线训练。对于每个MobileBERT的计算图,FINDER-E将关键参与者算子节点的发现 与融合过程视为马尔可夫决策过程,用元组

设计的Q函数利用来自编码器的状态和动作的嵌入向量来计算评估潜在动作质量的分数。具体来说,FINDER-E框架将外积操作应用于状态和动作的嵌入,以建模更精细的状态-动作依赖关系。然后使用具有校正线性单元激活的多层感知器将外积映射到标量值。

Actor网络用来计算Q值并负责后续动作的选择,添加Critic网络对训练进行估计,可以防止Q值高估等错误。采用Attention模块(即Attention-Expand,表示Attention模块)来关注关键参与者节点的同时能更注意邻居关系中更重要的映射边的作用,这在多算子融合时尤为有效。

FINDER-E的学习依赖于重复从经验回放缓冲池M中抽取样本进行训练,最小化损失函数为:

其中,N为算子总数量,对应到MobileBERT为MobileBERT网络生成WCG的数量,

采用成熟的注意力机制技术在框架中用于提高一个算子节点与其关系更密切的邻居节点的关注度,在进行多重算子融合优化顺序时候专注于融合的节点数量以及成本规模。

(3.3)关于强化学习固有的探索与利用问题,我们基于计算的Q值,采用

本实施例中,为了平衡探索和利用设计

其中,衰减参数

(3.4)在节点移除融合之后再次计算剩余残差图的Q值,以进行下一个关键参与者节点识别,重复此步骤直到找到使累积奖励最高的关键参与者激活顺序,即为最优算子融合顺序,并采用N-step回退方式保留训练样本轨迹。

具体地,结合了N-step (n步回退)Q学习损失最小化了预测Q值和目标Q值之间的 差距,当一段训练(一章/一个情节片)episodic结束时,例如,计算图性能不再明显改变,或 者达到设定的阈值,我们收集n步转换,即形式为

本发明结合了图重建损失来辅助训练,图重建损失技术可保留嵌入空间中的原始网络结构。

当这个离线训练阶段结束时,训练有素的FINDER-E能够学习一个长期策略,可以选择一系列动作,从当前状态到最终状态过程中积累最大的奖励,这一过程中找到的关键参与者激活顺序,即为最优算子融合顺序,以上步骤示意图如图8所示。

在训练过程中,不断查找匹配的过程也是一个填补映射专家库的过程,通过不断的试错将高性能融合方案加入到历史经验中,为后续应用学习部分提供参考。随着episode和更新的重复,Agent在寻找复杂网络上的关键算子融合方法方面变得越来越聪明和强大。

(4)对已经训练好的FINDER-E框架进行应用,根据关键参与者节点算子融合顺序进行节点删除融合操作,并根据算子融合结果为每个优化后的算子生成目标平台代码,按照融合后MobileBERT的计算图中的顺序将算子代码部署到硬件上运行MobileBERT网络,前端输入MobileBERT为例,编译成WCG开始优化,如图9所示。

具体地,根据关键参与者算子节点融合顺序进行节点删除融合操作:算子融合是将多个基本的算子组合为一个复合算子,不需要存储中间结果,减少不必要的内存读写并提高缓存局部性的一种优化技术。在每个自适应步骤中批量融合有限部分的节点,而不是像训练阶段那样逐次融合。对于MobileBERT网络,FINDER-E将简单地重复一个贪婪的过程来返回关键参与者算子节点的最优序列。同样的Agent首先将当前计算图编码为低维嵌入向量,然后利用这些嵌入向量解码每个节点的Q值。

对于具体的MobileBERT网络算子优化,利用“匹配节点选择”策略,该策略在每个自适应步骤中选择有限部分(例如,1%)的最高Q节点,并避免逐个-嵌入向量和Q值的一次迭代选择和重新计算。这种策略不会影响最终结果,但它会使时间复杂度降低几个数量级。重复这个过程,直到网络达到用户定义的终端状态(例如,最大预算节点或最小连接阈值),顺序移除的节点构成最佳关键参与者算子节点集合。

本发明具有很强的泛化性,当在应用到更复杂的深度神经网络或者是一些特定的 网络时候,可以直接通过模仿学习行为克隆的方式加上一定的偏置约束

我们给出一种

其中,

根据所述步骤(3.2)得到学习训练的扩展损失函数,其表达式如下:

其中,N为算子总数量,

该设计含有奖励塑造的内部激励部分,

根据算子融合结果为每个优化后的算子生成目标平台代码,按照融合后计算图中的顺序将算子代码部署到硬件上运行神经网络。

对进行算子融合优化后的计算图进行融合代码生成,当算子融合过程结束,可以执行代码生成过程,根据优化后的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)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。

本发明提供的技术方案在深度学习模型与云计算结合方面具有很高的现实价值。本发明实施例可用于对用户要部署到数据中心的深度学习模型进行自适应优化,减少数据中心需要针对特定算子设计优化的框架成本,从而提高该深度学习模型的推理性能,进而提高配备了该深度学习模型的应用程序的处理效率,这又会提高用户将深度学习模型托管到数据中心的意愿。因此本发明具有很高的市场前景和商业价值。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行来详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使用相应技术方案的本质脱离本发明实施例技术方案的范围。

相关技术
  • 一种基于多算子融合的深度神经网络推理加速方法和系统
  • 一种算子融合方法、装置、终端设备及存储介质
技术分类

06120115569078