CN118093143B - 大语言模型解码阶段的数据调度方法和装置 - Google Patents
大语言模型解码阶段的数据调度方法和装置 Download PDFInfo
- Publication number
- CN118093143B CN118093143B CN202410437753.2A CN202410437753A CN118093143B CN 118093143 B CN118093143 B CN 118093143B CN 202410437753 A CN202410437753 A CN 202410437753A CN 118093143 B CN118093143 B CN 118093143B
- Authority
- CN
- China
- Prior art keywords
- data
- activation vector
- vector
- cache area
- intermediate activation
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 239000013598 vector Substances 0.000 claims abstract description 241
- 230000004913 activation Effects 0.000 claims abstract description 216
- 230000004927 fusion Effects 0.000 claims abstract description 18
- 238000004590 computer program Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 11
- 238000013500 data storage Methods 0.000 abstract description 10
- 238000004364 calculation method Methods 0.000 abstract description 4
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- 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
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及人工智能领域,尤其涉及一种大语言模型解码阶段的数据调度方法和装置,确定大语言模型解码阶段的至少一个数据操作,并在加速器片上分配片上缓存区域。对至少一个数据操作进行操作融合得到包括N个按顺序执行的数据操作的操作组合,在解码阶段获取输入激活向量以按顺序执行操作组合中的数据操作。其中,在执行第一个到第N‑1个数据操作时,完成每一次操作步骤后得到对应的中间激活向量,并通过片上缓存区域存储所述中间激活向量。在执行第N个数据操作时得到对应的输出激活向量。本公开可以通过在加速器片上开辟片上缓存区域存储解码阶段的中间参数,避免多次进行片外数据存储,有效利用计算与带宽资源提高加速器的推理效率。
Description
技术领域
本公开涉及人工智能领域,尤其涉及一种大语言模型解码阶段的数据调度方法和装置。
背景技术
随着人工智能技术的不断演进,大语言模型(LLM)已经在部分场景领域中表现出了强大的推理能力,且与以往的卷积神经网络模型(CNN)等小模型不同,LLM参数量大与计算复杂的特性对目前的加速器平台提出了新的挑战。在LLM相关技术中,推理通常要经过预填充(Prefill)与解码(Decode)两个阶段。其中,解码阶段是LLM将学到的信息应用到具体的任务中并生成相应输出的阶段,其阶段内通常有多个Attention(注意力)层与FFN(前馈网络)层级联,层内存在多种算子,如:MV(矩阵向量乘)、layernorm(层归一化)、非线性激活等。在该阶段中,每一层的输入与输出一般为阶数等同的单一激活向量,该激活向量的数据量小,解码阶段频繁的访问片外存储器以获取小数据量的中间数据与激活向量将降低整体的推理效率。
发明内容
有鉴于此,本公开提出了一种大语言模型解码阶段的数据调度方法和装置,旨在提高加速器片的推理效率。
根据本公开的第一方面,提供了一种大语言模型解码阶段的数据调度方法,所述方法包括:
确定大语言模型解码阶段的至少一个数据操作,每个所述数据操作包括多个按顺序执行的操作步骤;
对所述至少一个数据操作进行操作融合得到操作组合,所述操作组合中包括N个按顺序执行的数据操作,其中N为大于或等于2的整数;
在所述解码阶段,获取输入激活向量并基于输入激活向量按顺序执行所述操作组合中的N个数据操作,其中执行所述N个数据操作包括:
响应于执行第一个到第N-1个所述数据操作,完成每一次操作步骤后得到对应的中间激活向量,并在所述大语言模型的加速器上的片上缓存区域中存储所述中间激活向量;
响应于执行第N个所述数据操作,得到对应的输出激活向量。
在一种可能的实现方式中,所述按顺序执行所述操作组合中的N个数据操作,还包括:
响应于执行第一个数据操作,按顺序依次对输入的激活向量执行所述数据操作的操作步骤,在完成每一次操作步骤后得到对应的中间激活向量作为下一个数据操作输入的激活向量,并将所述中间激活向量存储至所述片上缓存区域。
在一种可能的实现方式中,所述按顺序执行所述操作组合中的N个数据操作,还包括:
响应于执行第i个数据操作,2≤i≤N,从所述片上缓存区域内获取第i-1个数据操作对应的中间激活向量,确定每个所述操作步骤的输入向量;
在完成每一次操作步骤后得到对应的中间激活向量,并将所述中间激活向量存储至所述片上缓存区域。
在一种可能的实现方式中,所述从所述片上缓存区域内获取第i-1个数据操作对应的中间激活向量,确定每个所述操作步骤的输入向量,包括:
响应于所述操作步骤为第i个数据操作中的第一个操作步骤,从所述片上缓存区域内获取第i-1个数据操作中的第一个操作步骤对应的中间激活向量,作为所述操作步骤对应的输入向量;
响应于所述操作步骤为所述第i个数据操作中的第j个操作步骤,j>1且为整数,从所述片上缓存区域内获取第i-1个所述数据操作中的第j个操作步骤对应的中间激活向量;
根据所述第i个数据操作中第j-1个操作步骤对应的中间激活向量,和第i-1个数据操作中第j个操作步骤对应的中间激活向量,共同确定所述第j个操作步骤对应的输入向量。
在一种可能的实现方式中,还包括:在所述N大于2的情况下,划分所述片上缓存区域,得到分别用于存储所述操作组合中前N-1个数据操作产生的中间激活向量的N-1个子区域。
在一种可能的实现方式中,所述加速器片上还包括临时缓存区域;
在所述大语言模型的加速器上的片上缓存区域中存储所述中间激活向量还包括:
判断在所述片上缓存区域中对应的子区域内是否存在能够用于存储所述中间激活向量的存储空间;
响应于对应的子区域内存在存储空间,直接将当前需要存储的中间激活向量存储至对应的子区域;
响应于对应的子区域内不存在存储空间,将所述子区域内的一个或多个中间激活向量取出并存储至所述临时缓存区域,将当前需要存储的中间激活向量存储至对应的子区域。
在一种可能的实现方式中,所述输入激活向量从片外存储器中获取得到;
所述方法还包括:
将所述输出激活向量存储至所述片外存储器。
根据本公开的第二方面,提供了一种大语言模型解码阶段的数据调度装置,所述装置包括:
操作确定模块,用于确定大语言模型解码阶段的至少一个数据操作,每个所述数据操作包括多个按顺序执行的操作步骤;
操作融合模块,用于对所述至少一个数据操作进行操作融合得到操作组合,所述操作组合中包括N个按顺序执行的数据操作,其中N为大于或等于2的整数;
数据解码模块,用于在所述解码阶段,获取输入激活向量并基于输入激活向量按顺序执行所述操作组合中的N个数据操作,其中执行所述N个数据操作包括:
响应于执行第一个到第N-1个所述数据操作,完成每一次操作步骤后得到对应的中间激活向量,并在所述大语言模型的加速器上的片上缓存区域中存储所述中间激活向量;
响应于执行第N个所述数据操作,得到对应的输出激活向量。
在一种可能的实现方式中,所述数据解码模块,进一步用于:
响应于执行第一个数据操作,按顺序依次对输入的激活向量执行所述数据操作的操作步骤,在完成每一次操作步骤后得到对应的中间激活向量作为下一个数据操作输入的激活向量,并将所述中间激活向量存储至所述片上缓存区域。
在一种可能的实现方式中,所述数据解码模块,进一步用于:
响应于执行第i个数据操作,2≤i≤N,从所述片上缓存区域内获取第i-1个数据操作对应的中间激活向量,确定每个所述操作步骤的输入向量;
在完成每一次操作步骤后得到对应的中间激活向量,并将所述中间激活向量存储至所述片上缓存区域。
在一种可能的实现方式中,所述数据解码模块,进一步用于:
响应于所述操作步骤为第i个数据操作中的第一个操作步骤,从所述片上缓存区域内获取第i-1个数据操作中的第一个操作步骤对应的中间激活向量,作为所述操作步骤对应的输入向量;
响应于所述操作步骤为所述第i个数据操作中的第j个操作步骤,j>1且为整数,从所述片上缓存区域内获取第i-1个所述数据操作中的第j个操作步骤对应的中间激活向量;
根据所述第i个数据操作中第j-1个操作步骤对应的中间激活向量,和第i-1个数据操作中第j个操作步骤对应的中间激活向量,共同确定所述第j个操作步骤对应的输入向量。
在一种可能的实现方式中,还包括:区域划分模块,用于在所述N大于2的情况下,划分所述片上缓存区域,得到分别用于存储所述操作组合中前N-1个数据操作产生的中间激活向量的N-1个子区域。
在一种可能的实现方式中,所述加速器片上还包括临时缓存区域;
所述数据解码模块,进一步用于:
判断在所述片上缓存区域中对应的子区域内是否存在能够用于存储所述中间激活向量的存储空间;
响应于对应的子区域内存在存储空间,直接将当前需要存储的中间激活向量存储至对应的子区域;
响应于对应的子区域内不存在存储空间,将所述子区域内的一个或多个中间激活向量取出并存储至所述临时缓存区域,将当前需要存储的中间激活向量存储至对应的子区域。
在一种可能的实现方式中,所述输入激活向量从片外存储器中获取得到;
所述装置还包括:
数据存储模块,用于将所述输出激活向量存储至所述片外存储器。
根据本公开的第三方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的第四方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
在本公开实施例中,确定大语言模型解码阶段的至少一个数据操作,并在其所在的加速器片上分配片上缓存区域。对至少一个数据操作进行操作融合得到包括N个按顺序执行的数据操作的操作组合,在解码阶段获取输入激活向量并基于输入激活向量按顺序执行操作组合中的数据操作。其中,在执行第一个到第N-1个数据操作时,完成每一次操作步骤后得到对应的中间激活向量,并通过片上缓存区域存储所述中间激活向量。在执行第N个数据操作时得到对应的输出激活向量。本公开可以通过在加速器片上开辟片上缓存区域存储解码阶段的中间参数,避免多次进行片外数据存储和读写,有效利用计算与带宽资源提高加速器的推理效率。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的一种大语言模型解码阶段的数据调度方法的流程图。
图2示出根据本公开实施例的一种片上缓存区域的示意图。
图3示出根据本公开实施例的一种执行操作组合过程的示意图。
图4示出根据本公开实施例的一种大语言模型解码阶段的数据调度装置的示意图。
图5示出根据本公开实施例的一种电子设备的示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
本公开实施例的大语言模型解码阶段的数据调度方法可以由终端设备或服务器等电子设备执行。其中,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等任意固定或移动终端。服务器可以为单独的服务器或多个服务器组成的服务器集群。任意电子设备可以通过处理器调用存储器中存储的计算机可读指令的方式来实现本公开实施例的大语言模型解码阶段的数据调度方法。
图1示出根据本公开实施例的一种大语言模型解码阶段的数据调度方法的流程图。如图1所示,本公开实施例的大语言模型解码阶段的数据调度方法可以包括以下步骤S10-S30。
步骤S10、确定大语言模型解码阶段的至少一个数据操作。
在一种可能的实现方式中,大语言模型的推理过程包括预填充阶段和解码阶段,解码阶段用于将信息应用到具体的任务中,可以由多个层通过其中包括的多种算子对输入的激活向量进行计算处理实现,每一层的输入与输出一般为阶数等同的单一激活向量。其中,每个层用于进行解码阶段的一个数据操作,即大语言模型的解码阶段可以包括至少一个数据操作,每个数据操作可以包括多个按顺序执行的操作步骤。其中,每个操作步骤也可以由其中包括的多种算子对输入的激活向量进行计算处理实现,一个或多个算子可以实现当前层对应数据操作中的一个操作步骤。其中,线性层对应的数据操作可以为通过MV命令(用于计算矩阵-向量乘法)实现,SiLU(Sigmoid线性单元)层对应的数据操作可以通过MISC(杂项)命令(用于计算LayerNorm、SiLU等)实现。
在一种可能的实现方式中,大语言模型所在的加速器可以为部署大语言模型的FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列),加速器的片上存在空间较小的数据存储区域。由于大语言模型的解码过程需要对激活向量进行频繁读写操作,且由于解码阶段中的激活是小数据量的向量而不是矩阵,它们可以完全容纳在FPGA的数据存储区域中。同时,大多数激活向量都作为中间数据无需长时间保存,当前层的输出激活向量可以作为后续层的输入激活向量使用,最终的解码结果仅需要存储最后一层的输出激活向量。因此,可以在加速器片上分配一片数据存储区域作为片上缓存区域,用于存储解码过程中的产生的中间激活向量。
图2示出根据本公开实施例的一种片上缓存区域的示意图。如图2所示,在大语言模型的解码阶段,需要用到权重值和激活向量。其中,权重值的数据量巨大,需要存储在片外存储器(例如,HBM(高带宽存储器)或DDR(双倍数据速率))。而解码过程中产生的中间激活向量数据量小,完全可以实现在加速器片上存储,因此,可以在加速器片上分配片上缓存区域,用于进行中间激活向量的存储。在解码过程中,中间激活向量可以一直存储在片上存储区域内,由加速器上的处理单元进行处理。
步骤S20、对所述至少一个数据操作进行操作融合得到操作组合,所述操作组合中包括N个按顺序执行的数据操作。
在一种可能的实现方式中,大语言模型中的解码阶段需要对激活向量进行频繁的读写,为了减少激活向量的频繁读写操作,可以通过操作融合对解码阶段的至少两个层的数据操作进行融合,以将多个数据操作作为一个完整的操作组合。在执行一个操作组合的过程中,可以仅进行一次片外数据的读写,例如,对于线性和SiLU层,不进行操作融合的情况需要LD+MV+ST和LD+MISC+ST指令,其中LD(加载)指令用于从片外存储器读入数据,ST(存储)指令用于向片外存储器回写数据。而进行操作融合之后,将两个层的数据操作作为一个完整的操作组合(MV+MISC),只需要LD+MV+MISC+ST指令。
示例性的,如果大语言模型解码阶段有M层,对应M个数据操作,可以根据需要,将M个数据操作全部融合为一个操作组合,也可将M个数据操作划分为几组,每组融合为一个操作组合,每个操作组合具体对应哪些数据操作,可以根据大语言模型的运算流程确定,例如将相邻、且计算资源不冲突的多个数据操作融合为一个操作组合。每个操作组合可以仅进行一次片外数据读取,和一次片外数据回写。
可选地,对于任一操作组合,其中可包括N个按顺序执行的数据操作,N为大于或者等于2的整数,在大语言模型的运算流程中也按对应的顺序执行,且其对应处理层按对应的执行顺序级联。同时,每个数据操作中的多个操作步骤可以跟相邻数据操作中的多个操作步骤也具备对应的运算流程,即前一次执行数据操作中的第j个操作步骤得到的激活向量可以作为下一次数据操作中的第j个操作步骤输入的激活向量。例如,某个操作组合是数据操作1、数据操作2融合而成,数据操作1、数据操作2各自分别包括操作步骤a、操作步骤b,在大语言模型的运算流程中,执行顺序为先执行数据操作1,再执行数据操作2,则执行数据操作1的步骤a得到的激活向量,作为数据操作2中的步骤a的输入的激活向量,执行数据操作1的步骤b得到的激活向量,作为数据操作2中的步骤b的输入的激活向量。
示例性地,如果两个数据操作的计算之间没有硬件资源冲突且运算流程相邻,可以将这两个不同数据操作的计算融合以减少中间结果的片外存储器访问。具体而言,对于MISC操作中的Softmax和LayerNorm操作,由于它们需要完整的激活向量,因此在MISC操作之前,需要执行MV操作计算出完整的激活向量。对于MISC操作中的激活函数(如SiLU)和逐元素加/乘法(Eltwise),它们可以在MV操作之后立即计算。
进一步地,操作组合中可以包括解码过程中执行的至少部分数据操作,即可以包括至少两个顺序执行的数据操作,或者包括全部数据操作。示例性地,在解码过程中包括操作0、操作1、操作2三个操作的情况下,可以根据大语言模型的运算流程确定操作0和操作1两个操作为一个操作组合。或者也可以确定操作0、操作1和操作2三个操作为一个操作组合。
步骤S30、在所述解码阶段,获取输入激活向量并基于输入激活向量按顺序执行所述操作组合中的N个数据操作。
在一种可能的实现方式中,在大语言模型进入解码阶段,可以从片外存储器中获取用于进行解码的输入激活向量,然后基于输入激活向量按顺序执行操作组合中的N个数据操作。其中,在执行第1个到第N-1个数据操作的情况下,完成每个数据操作中的一个操作步骤后,可输出一个激活向量作为中间参数,即确定该激活向量为中间激活向量。在得到中间激活向量后,为了避免多次片外数据读写,直接将中间激活向量存储至片上缓存区域。在执行第N个数据操作后,可以得到对应的输出激活向量。
可选地,在N大于2的情况下,操作组合中包括至少两个能够产生中间激活向量的数据操作。因此,为了便于管理可以划分片上缓存区域,得到N-1个子区域,分别用于存储操作组合中前N-1个数据操作产生的中间激活向量。示例性地,在操作组合中包括操作0和操作1的情况下,可以直接将操作0执行过程中产生的多个中间激活向量交替存储至片上缓存区域。在操作组合中包括操作0、操作1和操作2的情况下,可以划分片上缓存区域得到子区域0和子区域1,分用于交替存储操作0执行过程中产生的多个中间激活向量,以及交替存储操作1执行过程中产生的多个中间激活向量。
进一步地,对于操作组合中的顺序不同的多个数据操作,电子设备可以通过不同方式执行该数据操作。其中,在实现第一个数据操作时,可以直接按顺序依次对输入的激活向量执行数据操作的操作步骤,在完成每一次操作步骤后得到对应的中间激活向量作为下一个数据操作输入的激活向量,并将中间激活向量存储至片上缓存区域。其中,第一个操作步骤输入的激活向量为解码阶段的输入激活向量,其余操作步骤输入的激活向量为前一个操作步骤得到的中间激活向量。例如,在第一个数据操作包括步骤0、步骤1和步骤2的情况下,步骤0的输入为输入激活向量,步骤1的输入为步骤0输出的中间激活向量,步骤2的输入为步骤1输出的中间激活向量。
在执行第i个(2≤i≤N)数据操作时,从片上缓存区域内获取第i-1个数据操作对应的中间激活向量,确定每个操作步骤的输入向量。然后在完成每一次操作步骤后得到对应的中间激活向量,并将中间激活向量存储至片上缓存区域。其中,第i个数据操作中每个操作步骤的输入向量可以根据第i-1个数据操作中对应的操作步骤的输出向量直接确定,即直接将第i-1个数据操作中对应的操作步骤输出的中间激活向量作为第i个数据操作中每个操作步骤的输入向量。对应的操作步骤可以为顺序相同的操作步骤,例如第i个数据操作中的操作步骤1在第i-1个数据操作中对应的操作步骤也为操作步骤1。或者,对于第i个数据操作中的第j个操作步骤,可以根据i-1个数据操作中第j个操作步骤输出的中间激活向量和第i个数据操作中的第j-1个操作步骤输出的中间激活向量,共同确定输入的激活向量。即在操作步骤为第i个数据操作中的第一个操作步骤的情况下,可以从片上缓存区域内获取第i-1个数据操作中的第一个操作步骤对应的中间激活向量,作为操作步骤对应的输入向量。在操作步骤为第i个数据操作中的第j个操作步骤的情况下,j>1,可以从片上缓存区域内获取第i-1个数据操作中的第j个操作步骤对应的中间激活向量。进一步根据第i个数据操作中第j-1个操作步骤对应的中间激活向量,和第i-1个数据操作中第j个操作步骤对应的中间激活向量,共同确定第j个操作步骤对应的输入向量。其中,共同确定的方式可以为直接共同作为输入,或者经过向量拼接、向量融合等处理后作为输入。
进一步地,为了避免片上缓存区域中的数据量过大,中间激活向量的数据存储为交替存储,即片上缓存区域中用于存储相应中间激活向量的位置仅存储预设数量个中间激活向量。示例性地,在片上缓存区域中仅存储一个中间激活向量的情况下,电子设备可以在每次进行数据存储时判断片上缓存区域中是否已经存在中间激活向量,不存在即直接存储,存在即取出已经存储的中间激活向量将当前的中间激活向量存储至该位置。如果片上缓存区域中可存储n个中间激活向量,那么可以在每次进行数据存储时判断片上缓存区域中是否还有存储中间激活向量的存储空间,即n个中间激活向量是否已存满,如果还有存储空间,则直接存储,如果没有存储空间,则取出一个或多个中间激活向量,将当前的中间激活向量存储至片上缓存区域。或者,在片上缓存区域中包括至少一个子区域的情况下,电子设备在通过片上缓存区域存储中间激活向量的过程中,判断中间激活向量在片上缓存区域中对应的子区域内是否存在存储空间。在对应的子区域内存在存储空间的情况下,直接将当前需要存储的中间激活向量存储至对应的子区域,在对应的子区域内不存在存储空间的情况下,将子区域内的一个或多个中间激活向量取出,将当前需要存储的中间激活向量存储至对应的子区域。其中,若子区域能存储n个中间激活向量,当前存储的中间激活向量小于n,即可认为还存在存储空间,n为正整数。
可选地,为了防止未用的中间数据丢失,还可以在加速器片上设置临时缓存区域,用于存储片上缓存区域或者子区域中已经存储并被去除、但还未被使用的中间激活向量。
在执行完成整个操作组合后,可以确定其中最后一个数据操作最终得到的激活向量为输出激活向量输出,或者将最后一个数据操作中每个操作步骤与得到的激活向量均作为输出激活向量输出。可选地,电子设备可以将输出激活向量存储至片外存储器。在解码过程中还存在操作组合之后执行的数据操作的情况下,电子设备可以从片外存储器获取该输出激活向量执行下一个数据操作。在解码过程中不存在操作组合之后执行的数据操作的情况下,可以直接根据该输出激活向量确定解码结果。
图3示出根据本公开实施例的一种执行操作组合过程的示意图。如图3所示,对于解码过程中的两个顺序执行的操作,操作0和操作1,相关技术需要在执行每个操作之前进行一次片外存储器的数据写入,在执行完成后进行一次片外存储器的数据写回。该片外数据读写过程繁琐且极大的占用计算资源以及带宽利用率。本公开实施例对操作0和操作1进行操作融合得到操作组合,在执行该完整的操作组合的过程中仅需要与片外存储器进行一次数据读写过程,操作组合执行过程中产生的中间参数可以通过片上缓存临时存储,显著提高了片外高带宽存储器的带宽利用率。
基于上述特征,本公开实施例基于大语言模型解码阶段的中间参数特性在加速器上开辟片上缓存区域,用于存储解码阶段的中间参数,通过该方式避免了多次中间参数的片外数据读写,有效利用了计算与带宽资源,提高了加速器的推理效率。进一步地,本公开还通过对解码阶段的数据操作进行操作融合的方式进一步减少了激活向量的频繁读写,进一步节省带宽利用率,提高解码过程的效率。
图4示出根据本公开实施例的一种大语言模型解码阶段的数据调度装置的示意图。如图4所示,本公开实施例的大语言模型解码阶段的数据调度装置可以包括:
操作确定模块40,用于确定大语言模型解码阶段的至少一个数据操作,每个所述数据操作包括多个按顺序执行的操作步骤;
操作融合模块41,用于对所述至少一个数据操作进行操作融合得到操作组合,所述操作组合中包括N个按顺序执行的数据操作,其中N为大于或等于2的整数;
数据解码模块42,用于在所述解码阶段,获取输入激活向量并基于输入激活向量按顺序执行所述操作组合中的N个数据操作,其中执行所述N个数据操作包括:
响应于执行第一个到第N-1个所述数据操作,完成每一次操作步骤后得到对应的中间激活向量,并在所述大语言模型的加速器上的片上缓存区域中存储所述中间激活向量;
响应于执行第N个所述数据操作,得到对应的输出激活向量。
在一种可能的实现方式中,所述数据解码模块42,进一步用于:
响应于执行第一个数据操作,按顺序依次对输入的激活向量执行所述数据操作的操作步骤,在完成每一次操作步骤后得到对应的中间激活向量作为下一个数据操作输入的激活向量,并将所述中间激活向量存储至所述片上缓存区域。
在一种可能的实现方式中,所述数据解码模块42,进一步用于:
响应于执行第i个数据操作,2≤i≤N,从所述片上缓存区域内获取第i-1个数据操作对应的中间激活向量,确定每个所述操作步骤的输入向量;
在完成每一次操作步骤后得到对应的中间激活向量,并将所述中间激活向量存储至所述片上缓存区域。
在一种可能的实现方式中,所述数据解码模块42,进一步用于:
响应于所述操作步骤为第i个数据操作中的第一个操作步骤,从所述片上缓存区域内获取第i-1个数据操作中的第一个操作步骤对应的中间激活向量,作为所述操作步骤对应的输入向量;
响应于所述操作步骤为所述第i个数据操作中的第j个操作步骤,j>1且为整数,从所述片上缓存区域内获取第i-1个所述数据操作中的第j个操作步骤对应的中间激活向量;
根据所述第i个数据操作中第j-1个操作步骤对应的中间激活向量,和第i-1个数据操作中第j个操作步骤对应的中间激活向量,共同确定所述第j个操作步骤对应的输入向量。
在一种可能的实现方式中,还包括:区域划分模块,用于在所述N大于2的情况下,划分所述片上缓存区域,得到分别用于存储所述操作组合中前N-1个数据操作产生的中间激活向量的N-1个子区域。
在一种可能的实现方式中,所述加速器片上还包括临时缓存区域;
所述数据解码模块42,进一步用于:
判断在所述片上缓存区域中对应的子区域内是否存在能够用于存储所述中间激活向量的存储空间;
响应于对应的子区域内存在存储空间,直接将当前需要存储的中间激活向量存储至对应的子区域;
响应于对应的子区域内不存在存储空间,将所述子区域内的一个或多个中间激活向量取出并存储至所述临时缓存区域,将当前需要存储的中间激活向量存储至对应的子区域。
在一种可能的实现方式中,所述输入激活向量从片外存储器中获取得到;
所述装置还包括:
数据存储模块,用于将所述输出激活向量存储至所述片外存储器。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
图5示出根据本公开实施例的一种电子设备1900的示意图。例如,电子设备1900可以被提供为一服务器或终端设备。参照图5,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出接口1958(I/O接口)。电子设备1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (7)
1.一种大语言模型解码阶段的数据调度方法,其特征在于,所述方法包括:
确定大语言模型解码阶段的至少一个数据操作,每个所述数据操作包括多个按顺序执行的操作步骤;
对所述至少一个数据操作进行操作融合得到操作组合,所述操作组合中包括N个按顺序执行的数据操作,其中N为大于或等于2的整数;
在所述解码阶段,获取输入激活向量并基于输入激活向量按顺序执行所述操作组合中的N个数据操作,其中执行所述N个数据操作包括:
响应于执行第一个到第N-1个所述数据操作,完成每一次操作步骤后得到对应的中间激活向量,并在所述大语言模型的加速器上的片上缓存区域中存储所述中间激活向量;
响应于执行第N个所述数据操作,得到对应的输出激活向量;
所述按顺序执行所述操作组合中的N个数据操作,还包括:
响应于执行第一个数据操作,按顺序依次对输入的激活向量执行所述数据操作的操作步骤,在完成每一次操作步骤后得到对应的中间激活向量作为下一个数据操作输入的激活向量,并将所述中间激活向量存储至所述片上缓存区域;
所述按顺序执行所述操作组合中的N个数据操作,还包括:
响应于执行第i个数据操作,2≤i≤N,从所述片上缓存区域内获取第i-1个数据操作对应的中间激活向量,确定每个所述操作步骤的输入向量;
在完成每一次操作步骤后得到对应的中间激活向量,并将所述中间激活向量存储至所述片上缓存区域;
所述从所述片上缓存区域内获取第i-1个数据操作对应的中间激活向量,确定每个所述操作步骤的输入向量,包括:
响应于所述操作步骤为第i个数据操作中的第一个操作步骤,从所述片上缓存区域内获取第i-1个数据操作中的第一个操作步骤对应的中间激活向量,作为所述操作步骤对应的输入向量;
响应于所述操作步骤为所述第i个数据操作中的第j个操作步骤,j>1且为整数,从所述片上缓存区域内获取第i-1个所述数据操作中的第j个操作步骤对应的中间激活向量;
根据所述第i个数据操作中第j-1个操作步骤对应的中间激活向量,和第i-1个数据操作中第j个操作步骤对应的中间激活向量,共同确定所述第j个操作步骤对应的输入向量。
2.根据权利要求1所述的方法,其特征在于,还包括:在所述N大于2的情况下,划分所述片上缓存区域,得到分别用于存储所述操作组合中前N-1个数据操作产生的中间激活向量的N-1个子区域。
3.根据权利要求2所述的方法,其特征在于,所述加速器片上还包括临时缓存区域;
在所述大语言模型的加速器上的片上缓存区域中存储所述中间激活向量还包括:
判断在所述片上缓存区域中对应的子区域内是否存在能够用于存储所述中间激活向量的存储空间;
响应于对应的子区域内存在存储空间,直接将当前需要存储的中间激活向量存储至对应的子区域;
响应于对应的子区域内不存在存储空间,将所述子区域内的一个或多个中间激活向量取出并存储至所述临时缓存区域,将当前需要存储的中间激活向量存储至对应的子区域。
4.根据权利要求1所述的方法,其特征在于,所述输入激活向量从片外存储器中获取得到;
所述方法还包括:
将所述输出激活向量存储至所述片外存储器。
5.一种大语言模型解码阶段的数据调度装置,其特征在于,所述装置包括:
操作确定模块,用于确定大语言模型解码阶段的至少一个数据操作,每个所述数据操作包括多个按顺序执行的操作步骤;
操作融合模块,用于对所述至少一个数据操作进行操作融合得到操作组合,所述操作组合中包括N个按顺序执行的数据操作,其中N为大于或等于2的整数;
数据解码模块,用于在所述解码阶段,获取输入激活向量并基于输入激活向量按顺序执行所述操作组合中的N个数据操作,其中执行所述N个数据操作包括:
响应于执行第一个到第N-1个所述数据操作,完成每一次操作步骤后得到对应的中间激活向量,并在所述大语言模型的加速器上的片上缓存区域中存储所述中间激活向量;
响应于执行第N个所述数据操作,得到对应的输出激活向量;所述数据解码模块,进一步用于:
响应于执行第一个数据操作,按顺序依次对输入的激活向量执行所述数据操作的操作步骤,在完成每一次操作步骤后得到对应的中间激活向量作为下一个数据操作输入的激活向量,并将所述中间激活向量存储至所述片上缓存区域;
所述数据解码模块,进一步用于:
响应于执行第i个数据操作,2≤i≤N,从所述片上缓存区域内获取第i-1个数据操作对应的中间激活向量,确定每个所述操作步骤的输入向量;
在完成每一次操作步骤后得到对应的中间激活向量,并将所述中间激活向量存储至所述片上缓存区域;
所述数据解码模块,进一步用于:
响应于所述操作步骤为第i个数据操作中的第一个操作步骤,从所述片上缓存区域内获取第i-1个数据操作中的第一个操作步骤对应的中间激活向量,作为所述操作步骤对应的输入向量;
响应于所述操作步骤为所述第i个数据操作中的第j个操作步骤,j>1且为整数,从所述片上缓存区域内获取第i-1个所述数据操作中的第j个操作步骤对应的中间激活向量;
根据所述第i个数据操作中第j-1个操作步骤对应的中间激活向量,和第i-1个数据操作中第j个操作步骤对应的中间激活向量,共同确定所述第j个操作步骤对应的输入向量。
6.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至4中任意一项所述的方法。
7.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至4中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410437753.2A CN118093143B (zh) | 2024-04-12 | 2024-04-12 | 大语言模型解码阶段的数据调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410437753.2A CN118093143B (zh) | 2024-04-12 | 2024-04-12 | 大语言模型解码阶段的数据调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118093143A CN118093143A (zh) | 2024-05-28 |
CN118093143B true CN118093143B (zh) | 2024-07-02 |
Family
ID=91153373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410437753.2A Active CN118093143B (zh) | 2024-04-12 | 2024-04-12 | 大语言模型解码阶段的数据调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118093143B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094749A (zh) * | 2009-12-22 | 2015-11-25 | 英特尔公司 | Simd向量的同步化 |
CN113383310A (zh) * | 2019-03-15 | 2021-09-10 | 英特尔公司 | 矩阵加速器架构内的脉动分解 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210406018A1 (en) * | 2020-06-27 | 2021-12-30 | Intel Corporation | Apparatuses, methods, and systems for instructions for moving data between tiles of a matrix operations accelerator and vector registers |
KR20230123761A (ko) * | 2022-02-17 | 2023-08-24 | 서울대학교산학협력단 | 낸드 플래시 메모리를 이용하여 딥 뉴럴 네트워크 모델을 학습시키는 가속기 시스템 및 그 동작 방법 |
CN114676234A (zh) * | 2022-02-22 | 2022-06-28 | 华为技术有限公司 | 一种模型训练方法及相关设备 |
CN117634563A (zh) * | 2023-11-28 | 2024-03-01 | 惠州市德赛西威汽车电子股份有限公司 | 一种层序列提取实现方法、系统及存储介质 |
CN117574976B (zh) * | 2024-01-16 | 2024-04-30 | 北京大学 | 一种大语言模型软硬件协同量化加速计算方法及系统 |
-
2024
- 2024-04-12 CN CN202410437753.2A patent/CN118093143B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094749A (zh) * | 2009-12-22 | 2015-11-25 | 英特尔公司 | Simd向量的同步化 |
CN113383310A (zh) * | 2019-03-15 | 2021-09-10 | 英特尔公司 | 矩阵加速器架构内的脉动分解 |
Also Published As
Publication number | Publication date |
---|---|
CN118093143A (zh) | 2024-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304921B (zh) | 卷积神经网络的训练方法及图像处理方法、装置 | |
CN113378862B (zh) | 一种图像处理方法及装置、电子设备和存储介质 | |
US20220083857A1 (en) | Convolutional neural network operation method and device | |
CN111311599B (zh) | 图像处理方法、装置、电子设备和存储介质 | |
KR102585470B1 (ko) | 정보 처리장치, 정보 처리방법, 비일시적인 컴퓨터 판독가능한 기억매체 | |
CN117350360B (zh) | 大模型的微调方法、装置、电子设备和存储介质 | |
CN115081598B (zh) | 算子处理方法及装置、电子设备、计算机可读存储介质 | |
CN112818663A (zh) | 用于语言模型的处理方法、文本生成方法、装置及介质 | |
CN113204373A (zh) | 运算方法、装置及相关产品 | |
CN116842307B (zh) | 数据处理方法、装置、设备、芯片及存储介质 | |
CN111709415B (zh) | 目标检测方法、装置、计算机设备和存储介质 | |
CN113378863B (zh) | 一种图像处理方法及装置、电子设备和存储介质 | |
CN112200310B (zh) | 智能处理器、数据处理方法及存储介质 | |
CN111813721B (zh) | 神经网络数据处理方法、装置、设备及存储介质 | |
CN118093143B (zh) | 大语言模型解码阶段的数据调度方法和装置 | |
CN112766397A (zh) | 一种分类网络及其实现方法和装置 | |
US10671891B2 (en) | Reducing computational costs of deep reinforcement learning by gated convolutional neural network | |
CN116701143A (zh) | 性能分析方法、装置、系统、计算设备及存储介质 | |
CN111158907A (zh) | 数据处理方法及装置、电子设备和存储介质 | |
US20240104375A1 (en) | Method and system for lightweighting artificial neural network model, and non-transitory computer-readable recording medium | |
CN111694768A (zh) | 运算方法、装置及相关产品 | |
CN111667046A (zh) | 深度学习加速方法及用户终端 | |
CN113326942B (zh) | 模型推理方法及装置、电子设备和存储介质 | |
CN114595047A (zh) | 一种批量任务处理方法和装置 | |
CN114548407A (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 | ||
GR01 | Patent grant |