CN117669669A - 基于数据流芯片的神经网络结构优化的方法及计算设备 - Google Patents
基于数据流芯片的神经网络结构优化的方法及计算设备 Download PDFInfo
- Publication number
- CN117669669A CN117669669A CN202311432693.7A CN202311432693A CN117669669A CN 117669669 A CN117669669 A CN 117669669A CN 202311432693 A CN202311432693 A CN 202311432693A CN 117669669 A CN117669669 A CN 117669669A
- Authority
- CN
- China
- Prior art keywords
- node
- input
- data
- nodes
- batch
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
- G06N3/045—Combinations of networks
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种基于数据流芯片的神经网络结构优化的方法,所述方法包括:对输入模型进行遍历,提取出所有注意力网络模型结构;提取所述注意力网络模型结构的重建信息,所述重建信息包括与填充相关的维度信息;根据所述维度信息,对输入数据进行补齐操作。根据本发明的技术方案,能够减少数据的复制以及在不同设备间传输的次数,提高模型的整体推理效率。
Description
技术领域
本发明涉及人工智能技术领域,具体涉及一种基于数据流芯片的神经网络结构优化的方法及计算设备。
背景技术
在人工智能模型中,存在一种神经网络注意力网络模型结构(Transformer),其主要节点主要有三个卷积节点(Conv2D)及两个批量矩阵乘法算子节点(BatchMatMul),中间包含一些数学运算及激活函数等操作。由于数据流芯片对计算数据维度对齐的特殊要求,在每次将数据传输到芯片前,需要对数据进行特殊的对齐和切片,保证后继节点能够得到正确的数据进行计算。但频繁的对齐和切片操作会增加内存操作,增加整体的推理时间。
为此,需要一种技术方案,能够降低内存操作和整体推理时间,减少冗余操作,提高推理效率。
发明内容
本发明旨在提供基于数据流芯片的神经网络结构优化的方法及计算设备,能够降低数据的复制以及在不同设备间传输的次数,减少冗余的数据操作,提高模型的整体推理效率。
根据本发明的一方面,提供一种基于数据流芯片的神经网络结构优化的方法,包括:
对输入模型进行遍历,提取出所有注意力网络模型结构;
提取所述注意力网络模型结构的重建信息,所述重建信息包括与填充相关的维度信息;
根据所述维度信息,对输入数据进行补齐操作。
根据一些实施例,所述对输入模型进行遍历,包括:
收集所述输入模型中所有批量矩阵乘法算子节点;
判断每个批量矩阵乘法算子节点是否为所述注意力网络模型结构的锚点;
如果所述批量矩阵乘法算子节点为锚点,则加入锚点集合。
根据一些实施例,所述锚点满足如下条件:
所述锚点的第二个输入向上经过至少一个转置和重塑节点到达第一1*1卷积节点;
所述锚点的第一个输入向上经过激活函数节点、量化节点、反量化节点、和/或数学操作算子节点后到达第一批量矩阵乘法算子节点,且所述第一批量矩阵乘法算子节点满足:
所述第一批量矩阵乘法算子节点的第一个输入经过至少一个重塑和转置节点后到达第二1*1卷积节点;
所述第一批量矩阵乘法算子节点的第二个输入经过至少一个重塑和转置节点后到达第三1*1卷积节点。
根据一些实施例,所述重建信息还包括节点相关信息以及用于量化和/或反量化操作的量化参数信息。
根据一些实施例,提取所述注意力网络模型结构的重建信息,包括:
对于所述锚点集合中的每个锚点,通过结构搜索提取所述重建信息。
根据一些实施例,所述对输入数据进行补齐操作,包括:
对所述输入数据做重塑操作,将批量维度堆叠到高度维度上。
根据一些实施例,所述对输入数据进行补齐操作,还包括:
根据硬件对齐要求和所述维度信息,对所述第一1*1卷积节点、所述第二1*1卷积节点、所述第三1*1卷积节点的输入数据以及常量输入进行填充操作。
根据一些实施例,所述对输入数据进行补齐操作,还包括:
在对通道进行补齐操作时,使用填充掩码操作进行间隔补齐并标明有效数据。
根据一些实施例,所述对输入数据进行补齐操作,还包括:
对所述锚点的输出数据进行裁剪操作。
根据一些实施例,所述对输入数据进行补齐操作,还包括:
对所述第一批量矩阵乘法算子节点的后续节点的输入进行相应的填充操作。
根据本发明的另一方面,提供一种计算设备,包括:
处理器;以及
存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行如上任一项所述的方法。
根据本发明的另一方面,提供一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,当所述指令被处理器执行时,使得所述处理器执行如上任一项所述的方法。
根据本发明的实施例,通过对注意力网络模型结构进行特点分析,对神经网络模型中的注意力网络模型结构进行遍历匹配并提取重建信息,根据重建信息进行补齐操作,从而在后续验证或部署时根据重建信息和补齐操作对网络结构进行融合变换后的重建,重建后的结构可减少数据的复制和/或在不同设备间传输的次数,提高模型的整体推理效率。
根据一些实施例,批量矩阵乘法算子节点及其两个输入分支的重塑和转置可以融合成一个节点,重塑不会更改数据的内存排列,而转置只需要在计算时调整索引计算方式,即可以实现转置的功能,从而减少数据复制,提高推理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1示出根据示例实施例的基于数据流芯片的神经网络结构优化的方法流程图。
图2示出根据示例实施例对输入模型进行遍历的方法流程图。
图3a示出根据示例实施例的模型中原始的注意力网络模型结构的示意图。
图3b示出根据示例实施例的模型中匹配后的注意力网络模型结构的示意图。
图3c示出根据示例实施例的验证拆分并实际运行的注意力网络模型结构的示意图。
图4示出根据示例性实施例的计算设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本发明概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本发明所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围。
在数据流芯片上,可以针对注意力网络模型结构(Transformer)的卷积节点(Conv2D)及批量矩阵乘法算子节点(BatchMatMul)的计算特点,利用数据流芯片的并行计算优势,对多个通道数据进行计算,提高整体的计算效率。然而,在注意力网络模型结构中,由于存在转置及加法/除法(Add/Div)、Softmax激活函数等在数据流芯片上不支持或者支持但效率不如在CPU上计算的算子,需要在主机CPU上进行计算。由于芯片对计算数据维度对齐的特殊要求,在每次将数据传输到芯片前,需要对数据进行特殊的对齐,也即进行填充操作(pad,通常为补0操作以确保数据是按64对齐的)。因为前面的pad操作,然后又需要对其输入数据进行剪裁(crop)剪裁,对应将结果中多于的数据剔除,保证后继节点能够得到正确的数据进行计算。频繁的填充和剪裁操作会增加内存操作,增加整体的推理时间。
为此,本发明提出一种基于数据流芯片的神经网络结构优化的方法,通过对注意力网络模型结构进行特点分析,对神经网络模型中的注意力网络模型结构进行匹配和变换,减少数据的复制以及在不同设备间传输的次数,提高模型的整体推理效率。
在描述本发明实施例之前,对本发明实施例涉及到的一些术语或概念进行解释说明。
数据流芯片:数据流芯片架构区别于普通的冯·诺伊曼架构,它不需要传统的指令集架构来调配芯片的性能。数据流的架构没有特定的指令集,完全依托于数据流的流动次序控制计算执行次序。这种架构采用了计算流和数据流重叠运行方式以消除空闲的计算单元,同时采用动态配置方式以保证对人工智能算法的通用支持。数据流芯片的一个特点就是并行计算,通常对通道为64倍数的数据进行并行计算效率最高,对于不足64倍数,例如32时,仍会补0对齐到64倍数进行计算,并将结果中多补的0去除掉。通常数据流芯片只支持整型运算。
Transformer:注意力网络模型。Transformer是Google在2017年提出的一种用于序列到序列(Sequence-to-Sequence,简称Seq2Seq)任务的新型神经网络结构。Transformer结构与传统的循环神经网络(Recurrent Neural Network,简称RNN)和卷积神经网络(Convolutional Neural Network,简称CNN)结构不同,它不依赖于时间步或空间位置的顺序,而是利用注意力机制(Attention Mechanism)来捕捉序列中的长期依赖关系。Transformer结构由编码器和解码器两部分组成。编码器和解码器都是由多个相同的模块组成的,每个模块都包括一个自注意力层(Self-Attention Layer)和一个前馈神经网络(Feedforward Neural Network,简称FFN)。自注意力层使用一种称为“点积注意力”的机制来计算每个位置与所有其他位置之间的注意力权重。这种注意力机制可以使模型自动地关注序列中的关键部分,并将这些部分的表示向量聚合到一起。FFN则用于进一步处理注意力权重和编码器的输出,以生成解码器的输入。Transformer结构在自然语言处理(NaturalLanguage Processing,简称NLP)任务中取得了显著的性能提升,是目前的主流大模型。由于其能够处理长距离依赖关系,并且可以并行计算,因此在处理大规模的序列数据时具有很高的效率
BatchMatMul节点:批量矩阵乘法算子节点。BatchMatMul节点用于执行批量矩阵乘法。在机器学习和深度学习中,矩阵乘法是一种常见的操作,用于计算神经网络中的权重和激活值之间的乘积。在BatchMatMul节点中,输入通常是一个张量,该张量表示一个矩阵或一组矩阵,其中每个矩阵的形状是不同的。这些矩阵可以是训练数据集中的输入或输出,或者是网络中的权重或激活值。BatchMatMul节点的输出是一个张量,该张量表示输入张量中所有矩阵的乘积。这个操作可以用于实现各种神经网络层,例如全连接层、卷积层和循环层等。BatchMatMul节点可以自动处理张量的形状和大小,并且可以并行计算多个矩阵的乘积,这使得BatchMatMul节点在训练和推理阶段都非常高效。
Conv2D:Conv2D是卷积神经网络(CNN)中常用的一种层,用于图像处理任务。Conv2D层的作用是将一组可学习的滤波器应用于输入图像,这些滤波器通常是小矩阵,用于从图像中提取有意义的特征。在本发明中,conv2D是1*1的卷积,可取代全连接层。
Transpose:转置算子。Transpose是矩阵运算中的一个操作,用于交换矩阵的行和列。换句话说,Transpose操作将矩阵的行和列交换位置,从而生成一个新的矩阵。Softmax:Softmax是机器学习和深度学习中常用的一种激活函数,用于将输入值转换为概率分布。在多分类任务中,Softmax函数通常用于将模型的输出转换为每个类别的概率。在深度学习中,Softmax函数通常用于输出层,以生成模型的预测结果。在多分类任务中,模型的输出是一个向量,表示每个类别的概率。通过使用Softmax函数,可以将这个向量转换为一个概率分布,以便模型可以对每个类别进行分类。Softmax函数将模型的输出转换为概率分布从而为模型的预测结果提供了一种直观的表示方式。
Quant:量化算子。Quant通常用于将浮点数数据转换为低精度的量化数据,以减少模型的内存和计算需求。这种操作通常用于训练模型时,以减少模型的计算成本。在训练完成后,可以使用DeQuant(反量化)操作将量化数据转换回浮点数数据,以便在部署模型时进行计算和推理。Quant操作使得模型能够在处理大量数据时保持高效的性能,而不会消耗过多的计算资源。
Scale:缩放因子。Scale通常用于缩放张量的值,以便在模型中进行计算和训练。例如,在进行浮点数到定点数的转换时,我们需要将原始的浮点数乘以一个scale因子来进行缩放。这种操作通常用于训练模型时,以调整模型的权重和偏置。在训练完成后,可以使用Scale操作将模型的权重和偏置缩放到合适的范围,以便在部署模型时进行计算和推理。Scale操作可以缩放模型的权重和偏置以减少模型的计算需求,使得模型能够在处理大量数据时保持高效的性能,而不会消耗过多的计算资源。
Zp:量化零。zp是量化后的0数据。量化/反量化需要用到的就是scale&zp。例如,在一些量化操作中,可能会看到这样的公式:q=round(r/S+Z),这里的Z就是zp,用于实现数值的缩放。例如,如果-1~1量化到0~255,128就是zp。
Reshape:重塑。Reshape用于改变张量的形状,以便在模型中进行计算和训练。
Pad:填充。填充操作是在图像的边缘添加像素,以使图像的大小增加。填充操作通常用于将图像大小调整为某个特定的尺寸,以便在模型中进行处理。
剪裁:剪裁操作是从图像中裁剪出一个子区域,以使图像的大小减小。剪裁操作通常用于从图像中提取感兴趣的区域,或者在模型中减少计算量。
Batch:批量,它代表了一组数据。可以使用Batch操作来将一组数据作为一个整体进行处理,以便在模型中进行计算和训练。
PadMask:填充掩码操作。在进行序列到序列的模型训练和推理时,如果输入序列的长度不同,可以通过填充来使它们长度一致,然后通过掩码来确定哪些部分是填充的,从而在计算损失时忽略这些填充的部分。例如,填充掩码有两个输入,第二输入会记录一串0和1数据,1表示在第一个输入中对应的维度数据有效,否则为无效数据。
下面结合附图对本发明的示例实施例进行说明。
图1示出根据示例实施例的基于数据流芯片的神经网络结构优化的方法流程图。
参见图1,在S101,对输入模型进行遍历,提取出所有注意力网络模型结构。
根据示例实施例,提取过程可包括收集所述输入模型(参见图3a)中所有批量矩阵乘法算子节点,判断每个批量矩阵乘法算子节点是否为所述注意力网络模型结构的锚点,如果所述批量矩阵乘法算子节点为锚点,则加入锚点集合。
根据一些实施例,模型文件是protobuf(Protocol Buffers:一种轻便高效的结构化数据存储格式)储存的文件,用于描述神经网络图结构,遍历的是模型中的节点,每个节点代表一个算子,例如数学运算和卷积计算,节点间是有向边连接的,即模型图本质上是一个有向无环图。
根据一些实施例,收集输入模型中的所有BatchMatMul节点,记为BMMs。对BMMs中的每一个节点,判断其是否为Transformer结构的锚点BMM_2(第二批量矩阵乘法算子节点)。遍历后Transformers中每一个节点即为一个Transformer结构的锚点。后续根据该锚点,即可以方便地找到并操作Transformer结构。
BatchMatMul操作通常需要进行一些预处理步骤,例如Transpose操作,以确保输入矩阵的形状正确。为了提高整体的推理效率,可以尝试同时减少BatchMatMul前面的Transpose操作。根据一些实施例,有些深度学习框架提供了更有效的矩阵乘法算法,例如矩阵分解、矩阵近似等,这些算法可以在不进行Transpose操作的情况下计算矩阵乘积。有些矩阵具有特殊的结构,例如对称矩阵、低秩矩阵等,这些矩阵可以通过特殊的矩阵乘法算法进行计算,而不需要进行Transpose操作。模型剪枝是一种常用的模型压缩技术,它可以通过删除模型中不必要的参数来减少模型的大小和计算量。通过模型剪枝,可以减少BatchMatMul前面的Transpose操作,从而提高整体的推理效率。
在S103,提取所述注意力网络模型结构的重建信息,所述重建信息包括与填充相关的维度信息。
根据一些实施例,所述重建信息还包括节点相关信息以及用于量化和/或反量化操作的量化参数信息。
根据示例实施例,提取所述注意力网络模型结构的重建信息包括对于所述锚点集合中的每个锚点,通过结构搜索提取所述重建信息。
例如,在BMM_2的第一个输入往上搜索Softmax分支时,需要记录下经过的节点的算子名称,记录到计算操作符列表(ops)中。对于DeQuant和Quant,需要记录相关的Scale/Zp,以及Quant的输出类型(Q8/Q16)。对于加减乘除(Add/Sub/Mul/Div)等数学运算,需要将第二个输入的来源记录下来,添加到输入列表(einputs)中。
根据一些实施例,对于BMM_1(第一批量矩阵乘法算子节点)和BMM_2,以及VConv2D(第一1*1卷积节点)、QConv2D(第二1*1卷积节点)、KConv2D(第三1*1卷积节点),需要记录下相应的量化参数信息(qparam)用于量化/反量化操作。
根据一些实施例,对于QConv2D,KConv2D,VConv2D,要记录其后继的第一个reshape节点信息,例如分别为qreshape_,kreshape_,vreshape_。这三个reshape即包含了transformer结构中和填充相关的几个重要维度信息(B,N,H,D)。其中QConv2D会对数据进行reshape到(qB,qH,qN,qD),KConv2D会reshape到(kB,kH,kD,kN),VConv2D会reshape到(vB,vH,vN,vD)。故第一个BMM_1的输出维度为(B,H,qN,kN),第二个BMM_2输出维度为(B,H,qN,vD)。
有了这些维度信息后,后续可根据维度信息进行补齐数据和优化。例如,对于输入的中(B,N,H,D),因为芯片上并行计算时要求64字节(bytes)对齐,需要对原始的kN和kD、vD等进行补齐。而像softmax这种节点补齐数据会对结果产生影响,故计算时就需要知道原始的N和D等信息,避免将补齐的数据纳入计算,影响计算结果。
在S105,根据所述维度信息,对输入数据进行补齐操作。
根据一些实施例,对所述输入数据做重塑操作,将批量维度堆叠到高度维度上。
例如,由于Conv2D目前不支持Batch维度的并行,同时在Transformer中输入数据是N*1*W*C的,卷积核也是1*1的,故可以将批量(Batch)维度堆叠到高度(height,或H)维度上,故对输入数据先做一个reshape操作,将输入从(B,1,N,C)变为(1,B,N,C)。原始的Batch维度不是1时,芯片上无法对多batch直接计算,只能循环拆开来算再合并,而H维度在Transformer结构中值是1,正好把batch维度的信息压缩到H维度上,可直接用数据流芯片计算,并且不影响结果。
根据一些实施例,根据硬件对齐要求和所述维度信息,对所述第一1*1卷积节点、所述第二1*1卷积节点、所述第三1*1卷积节点的输入数据以及常量输入进行填充操作,从而可利用数据流芯片的并行计算来加速。
例如,根据硬件对齐要求对QConv2D的输入数据(B,1,qN,qH*qD)做填充操作。例如,模型是8bit量化的,qD需要64对齐,这时qH*qD也是64对齐的。KConv2D的kN需要64对齐到pkN,kD也要64对齐。同理,VConv2D的vN要64对齐,vD也要64对齐。
根据一些实施例,在对通道进行补齐操作时,使用填充掩码操作进行间隔补齐并标明有效数据。
根据一些实施例,考虑到数据后续会有Reshape和Transpose操作,在对channel进行对齐的时候,不能简单地在后面填充数据,而要根据H的信息间隔进行填充,为此需要使用填充Mask操作,对数据进行间隔补齐,并标明哪些是有效数据。
此外,对输入数据进行填充的同时,也要对weight和bias等常量输入进行相应的填充操作。
根据一些实施例,对所述第一批量矩阵乘法算子节点的后续节点的输入进行相应的填充操作,从而可利用数据流芯片的并行计算来加速。
例如,由于BMM_1的输出数据存在填充,导致后继的Add/Sub和Softmax节点输入也存在填充数据,需要对相应的其它输入也进行填充操作,例如Add的第二个输入来自constant参数,也要对channel进行填充,由kN补齐到pkN。
对于Softmax,由于填充数据对Softmax的影响是整体的,需要指定Softmax的计算范围[begin,end](目前验证阶段时,将Softmax的输入剪裁到kN,计算完后再填充回pkN)。
根据一些实施例,对所述锚点的输出数据进行裁剪操作。
例如,由于对Conv2D等输入数据进行填充,会导致后面的shape推导需要更新,BMM_2的输出也会有额外的数据,需要对BMM_2的输出(B,H,N,pvD)做剪裁操作,令输出维度为(B,H,N,vD)。
根据一些实施例,前述方法可以是数据流编译器中加载模型进行优化过程中的一部分。例如,transformer结构中的transpose是固定的,通过在编译期生成配置属性,指定在batmatmul计算时输入数据的寻址方式来实现计算时对输入数据的transpose操作,从而在结果图中产生一个特殊的融合batchmatmul,而不是原始的矩阵乘法操作,而后可在运行时加载该算子对应的计算逻辑。
根据示例实施例,通过对神经网络模型中的注意力网络模型结构进行遍历匹配并提取重建信息,可把重建信息记录下来形成一个单一的transpformer结点(参见图3b)。由此,在后续验证或部署时根据重建信息和补齐操作对网络结构进行融合变换后的重建(参见图3c),重建后的结构可去掉多余的reshape和transpose操作,减少数据的复制和/或在不同设备间传输的次数,提高模型的整体推理效率。第一BMM及其两个输入分支的Reshape和Transpose可以融合成一个节点,作为特殊的融合batchmatmul。根据一些实施例,在该特殊batchmatmul的实现中,会带上reshape和transpose操作,通过配置寄存器改变寻址方式来隐含实现对输入的reshape和transpose功能。由于Reshape不会更改数据的内存排列,而Transpose只需要在计算时调整索引计算方式,即可以在读取输入数据的过程中实现Transpose的功能,因此前述方案可减少数据复制,提高推理效率。
根据一些实施例,把变换后的transformer部署到芯片上运行,即重建。重建Transformer结构的过程刚好与前述S101的遍历匹配过程相反。根据一实施例,根据重建信息,重建过程包括:构建QConv2D和KConv2D,并依据qreshape_和kreshape_信息构建reshape操作和transpose节点;构建BMM_1,再根据ops_信息和einput_数据,依次构建DeQuant、Add/Sub/Mul/Div和Softmax和Quant节点;构建VConv2D节点和相应的reshape和transpose节点;构建BMM_2节点。
图2示出根据示例实施例对输入模型进行遍历的方法流程图。
参见图2,在S201,收集输入模型中所有批量矩阵乘法算子节点。
根据一些实施例,收集输入模型中的所有BatchMatMul节点,记为BMMs。
在S203,判断每个所述批量矩阵乘法算子节点是否为所述注意力网络模型结构的锚点。
根据示例实施例,锚点满足如下条件:所述锚点的第二个输入向上经过至少一个转置和重塑节点到达第一1*1卷积节点,所述锚点的第一个输入向上经过激活函数节点、量化节点、反量化节点、和/或数学操作算子节点后到达第一批量矩阵乘法算子节点。所述第一批量矩阵乘法算子节点满足:所述第一批量矩阵乘法算子节点的第一个输入经过至少一个重塑和转置节点后到达第二1*1卷积节点,所述第一批量矩阵乘法算子节点的第二个输入经过至少一个重塑和转置节点后到达第三1*1卷积节点。
根据一些实施例,判断一个BatchMatMul节点是否为Transformer结构的锚点BMM_2,需要查看该节点的连接关系和其在Transformer结构中的位置。通常,锚点BMM_2是Transformer结构中的一个重要节点,其连接了多个Transformer层,并且在计算中起着关键的作用。具体的判断方式会根据Transformer结构的具体实现和使用的工具或语言有所不同。
根据一些实施例,节点的第二个输入是否能向上经过若干Transpose和Reshape节点到达VConv2D节点。
根据一些实施例,判断一个节点的第二个输入是否能向上经过若干Transpose和Reshape节点到达VConv2D节点,需要查看该节点的连接关系和其在模型中的位置。通常,这种连接关系可以通过模型的可视化工具或者编程语言的API来实现。具体的判断方式会根据模型的格式和使用的工具或语言有所不同。
根据一些实施例,节点的第一个输入是否能上向经过Softmax,Quant,DeQuant,Add/Sub/Div/Mul等数学操作算子后到达一个BatchMatMul节点BMM_1,且该BMM_1满足如下条件:BMM_1的第一个输入经过若干Reshape和Transpose节点后,到达QConv2D节点;BMM_1的第二个输入经过若干Reshape和Transpose节点后,到达KConv2D节点。
在S205,如果所述批量矩阵乘法算子节点为锚点,则加入锚点集合。
上面每一步都能匹配,则找到Transformer结构的锚点,否则匹配失败。匹配成功的加入Transformers集合。
根据一些实施例,通过所述注意力网络模型结构的锚点检索并操作所述注意力网络模型结构的每个节点。
根据一些实施例,遍历后Transformers中每一个节点即为一个Transformer结构的锚点。后续根据该锚点,可以方便地找到并操作Transformer结构。
图4示出根据示例性实施例的计算设备的框图。
如图4所示,计算设备30包括处理器12和存储器14。计算设备30还可以包括总线22、网络接口16以及I/O接口18。处理器12、存储器14、网络接口16以及I/O接口18可以通过总线22相互通信。
处理器12可以包括一个或多个通用CPU(Central Processing Unit,处理器)、微处理器、或专用集成电路等,用于执行相关程序指令。根据一些实施例,计算设备30还可包括为处理器12进行加速的高性能显示适配器(GPU)20。
存储器14可以包括易失性存储器形式的机器系统可读介质,例如随机存取存储器(RAM)、只读存储器(ROM)和/或高速缓存存储器。存储器14用于存储包含指令的一个或多个程序以及数据。处理器12可读取存储在存储器14中的指令以执行上述根据本发明实施例的方法。
计算设备30也可以通过网络接口16与一个或者多个网络通信。该网络接口16可以是无线网络接口。
总线22可以为包括地址总线、数据总线、控制总线等。总线22提供了各组件之间交换信息的通路。
需要说明的是,在具体实施过程中,计算设备30还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC)、网络存储设备、云存储设备,或适合于存储指令和/或数据的任何类型的媒介或设备。
本发明实施例还提供一种计算机程序产品,该计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种方法的部分或全部步骤。
本领域的技术人员可以清楚地了解到本发明的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列、集成电路等。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上具体地展示和描述了本发明的示例性实施例。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附条款的精神和范围内的各种修改和等效设置。
Claims (10)
1.一种基于数据流芯片的神经网络结构优化的方法,其特征在于,包括:
对输入模型进行遍历,提取出所有注意力网络模型结构;
提取所述注意力网络模型结构的重建信息,所述重建信息包括与填充相关的维度信息;
根据所述维度信息,对输入数据进行补齐操作。
2.根据权利要求1所述的方法,其特征在于,所述对输入模型进行遍历,包括:
收集所述输入模型中所有批量矩阵乘法算子节点;
判断每个批量矩阵乘法算子节点是否为所述注意力网络模型结构的锚点;
如果所述批量矩阵乘法算子节点为锚点,则加入锚点集合。
3.根据权利要求2所述的方法,其特征在于,所述锚点满足如下条件:
所述锚点的第二个输入向上经过至少一个转置和重塑节点到达第一1*1卷积节点;
所述锚点的第一个输入向上经过激活函数节点、量化节点、反量化节点、和/或数学操作算子节点后到达第一批量矩阵乘法算子节点,且所述第一批量矩阵乘法算子节点满足:
所述第一批量矩阵乘法算子节点的第一个输入经过至少一个重塑和转置节点后到达第二1*1卷积节点;
所述第一批量矩阵乘法算子节点的第二个输入经过至少一个重塑和转置节点后到达第三1*1卷积节点。
4.根据权利要求3所述的方法,其特征在于,
所述重建信息还包括节点相关信息以及用于量化和/或反量化操作的量化参数信息;
提取所述注意力网络模型结构的重建信息包括:对于所述锚点集合中的每个锚点,通过结构搜索提取所述重建信息。
5.根据权利要求4所述的方法,其特征在于,所述对输入数据进行补齐操作,包括:
对所述输入数据做重塑操作,将批量维度堆叠到高度维度上。
6.根据权利要求5所述的方法,其特征在于,所述对输入数据进行补齐操作,还包括:
根据硬件对齐要求和所述维度信息,对所述第一1*1卷积节点、所述第二1*1卷积节点、所述第三1*1卷积节点的输入数据以及常量输入进行填充操作。
7.根据权利要求6所述的方法,其特征在于,所述对输入数据进行补齐操作,还包括:
在对通道进行补齐操作时,使用填充掩码操作进行间隔补齐并标明有效数据。
8.根据权利要求6所述的方法,其特征在于,所述对输入数据进行补齐操作,还包括:
对所述锚点的输出数据进行裁剪操作。
9.根据权利要求6所述的方法,其特征在于,所述对输入数据进行补齐操作,还包括:
对所述第一批量矩阵乘法算子节点的后续节点的输入进行相应的填充操作。
10.一种计算设备,其特征在于,包括:
处理器;以及
存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-9中任一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311432693.7A CN117669669A (zh) | 2023-10-31 | 2023-10-31 | 基于数据流芯片的神经网络结构优化的方法及计算设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311432693.7A CN117669669A (zh) | 2023-10-31 | 2023-10-31 | 基于数据流芯片的神经网络结构优化的方法及计算设备 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN117669669A true CN117669669A (zh) | 2024-03-08 |
Family
ID=90077864
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202311432693.7A Pending CN117669669A (zh) | 2023-10-31 | 2023-10-31 | 基于数据流芯片的神经网络结构优化的方法及计算设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN117669669A (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119026692A (zh) * | 2024-10-25 | 2024-11-26 | 深圳鲲云信息科技有限公司 | 用于数据流芯片内存操作优化的方法、系统及计算设备 |
-
2023
- 2023-10-31 CN CN202311432693.7A patent/CN117669669A/zh active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119026692A (zh) * | 2024-10-25 | 2024-11-26 | 深圳鲲云信息科技有限公司 | 用于数据流芯片内存操作优化的方法、系统及计算设备 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN114503125B (zh) | 结构化剪枝方法、系统和计算机可读介质 | |
| CN110321999A (zh) | 神经网络计算图优化方法 | |
| CN118917370A (zh) | 张量处理 | |
| Wang et al. | EL-Rec: Efficient large-scale recommendation model training via tensor-train embedding table | |
| CN115422369A (zh) | 基于改进TextRank的知识图谱补全方法和装置 | |
| Huai et al. | Zerobn: Learning compact neural networks for latency-critical edge systems | |
| CN118627629A (zh) | 一种基于并行解码的大语言模型高效推理方法及系统 | |
| Chen et al. | Mixq: Taming dynamic outliers in mixed-precision quantization by online prediction | |
| CN117669669A (zh) | 基于数据流芯片的神经网络结构优化的方法及计算设备 | |
| Vorabbi et al. | Input layer binarization with bit-plane encoding | |
| US20230376851A1 (en) | Efficient transformer with serial composition of multi-scale multi-range attentions | |
| Abouelhamayed et al. | Pqa: Exploring the potential of product quantization in dnn hardware acceleration | |
| WO2021143686A1 (zh) | 神经网络定点化方法、装置、电子设备及可读存储介质 | |
| Dong et al. | An optimization method for pruning rates of each layer in CNN based on the GA-SMSM | |
| Wang et al. | Balancing memory-accessing and computing over sparse DNN accelerator via efficient data packaging | |
| CN120633719A (zh) | Ai模型训练参数动态优化系统 | |
| Li | Accelerating large scale generative ai: A comprehensive study | |
| US20230252360A1 (en) | Efficient optimization of machine learning models | |
| AU2023285953A1 (en) | Method and apparatus of processing quantum noise circuit, device, and storage medium | |
| Zhao et al. | U-net for satellite image segmentation: Improving the weather forecasting | |
| Moar et al. | Characterizing the Accuracy-Efficiency Trade-off of Low-rank Decomposition in Language Models | |
| Wei et al. | Structured network pruning via adversarial multi-indicator architecture selection | |
| Kiruluta et al. | Breaking Quadratic Barriers: A Non-Attention LLM for Ultra-Long Context Horizons | |
| Fang et al. | Parallel tensor decomposition with distributed memory based on hierarchical singular value decomposition | |
| CN120874697B (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 |