CN118249816A - 数据处理方法、装置、众核芯片和存储介质 - Google Patents
数据处理方法、装置、众核芯片和存储介质 Download PDFInfo
- Publication number
- CN118249816A CN118249816A CN202410346421.3A CN202410346421A CN118249816A CN 118249816 A CN118249816 A CN 118249816A CN 202410346421 A CN202410346421 A CN 202410346421A CN 118249816 A CN118249816 A CN 118249816A
- Authority
- CN
- China
- Prior art keywords
- data
- decoding
- parallel
- compressed data
- compressed
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000004364 calculation method Methods 0.000 claims abstract description 96
- 238000012545 processing Methods 0.000 claims abstract description 58
- 238000000034 method Methods 0.000 claims abstract description 50
- 230000008569 process Effects 0.000 claims abstract description 37
- 238000012821 model calculation Methods 0.000 claims abstract description 8
- 238000012544 monitoring process Methods 0.000 claims abstract description 8
- 239000000872 buffer Substances 0.000 claims description 62
- 239000011159 matrix material Substances 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 230000003139 buffering effect Effects 0.000 claims description 9
- 230000004913 activation Effects 0.000 claims description 7
- 238000013528 artificial neural network Methods 0.000 claims description 3
- 230000003213 activating effect Effects 0.000 claims 2
- 230000008878 coupling Effects 0.000 abstract description 4
- 238000010168 coupling process Methods 0.000 abstract description 4
- 238000005859 coupling reaction Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 19
- 239000013598 vector Substances 0.000 description 18
- 230000006870 function Effects 0.000 description 13
- 238000007667 floating Methods 0.000 description 6
- 101710092887 Integrator complex subunit 4 Proteins 0.000 description 5
- 102100037075 Proto-oncogene Wnt-3 Human genes 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 4
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开实施例提供了一种数据处理方法、装置、众核芯片和存储介质。该数据处理方法包括:监控大模型计算过程,确定下一步需要计算的数据,根据确定结果从存储于片外的压缩数据中采集相应的目标数量的压缩数据;目标数量是根据众核芯片计算大模型时的并行计算能力确定的;对目标数量的压缩数据进行并行解码,获得解码数据;根据解码数据进行数据并行计算。通过该实施例方案,实现了边解码变计算,使得不用另外准备额外的存储空间,从而节省空间,降低成本,且不影响计算效率,解码过程和计算过程均是并行方案,提高了数据处理效率;另外,并行解码过程中的并行度配合并行计算能力,实现了解码与计算相耦合。
Description
技术领域
本公开实施例涉及解码技术领域,特别涉及一种数据处理方法、装置、众核芯片和存储介质。
背景技术
大模型增量推理过程中,需要反复读取数量庞大的权重数据,占用极大的仿存带宽,严重制约了大模型推理效率,在端侧推理场合尤为明显。例如:对于一个7B级别的大模型(如大语言模型),一个300字左右的文字回复,需要2TB以上的权重数据读取量,而通常端侧设备DDR(Double Data Rate,双倍速率同步动态随机存储器)接口带宽约为100GB/s以内,仅权重数据加载就需要耗时几十秒。
由于大模型权重数据量过大,通常对权重数据进行压缩处理;在推理计算时,需要将压缩的权重数据整体进行解压,得到完整的权重数据后再进行计算;该过程需要对权重数据整体均解压后再计算,并且需要额外存储解压后的权重数据。
发明内容
本公开实施例提供了一种数据处理方法、装置、众核芯片和存储介质。
第一方面,本公开实施例提供了一种数据处理方法,包括:监控大模型计算过程,确定下一步需要计算的数据,根据确定结果从存储于片外的压缩数据中采集相应的目标数量的压缩数据;所述目标数量是根据众核芯片计算大模型时的并行计算能力确定的;所述压缩数据是待压缩数据进行分段后对多个分段分别进行压缩获得的;对所述目标数量的压缩数据进行并行解码,获得解码数据;
根据所述解码数据进行数据并行计算。
第二方面,本公开提供了一种数据处理装置,所述装置包括:调度模块、解码模块和计算模块;
所述调度模块,用于监控大模型计算过程,确定下一步需要计算的数据,根据确定结果从存储于所述数据处理装置外部的压缩数据中采集相应的目标数量的压缩数据;所述目标数量是根据大模型计算时的并行计算能力确定的;所述压缩数据是待压缩数据进行分段后对多个分段分别进行压缩获得的;
所述解码模块,用于对所述目标数量的压缩数据进行并行解码,获得解码数据;
所述计算模块,用于根据所述解码数据进行数据并行计算。
第三方面,本公开提供了一种众核芯片,包括:
多个处理核;以及
片上网络,被配置为交互所述多个处理核间的数据和外部数据;其中,一个或多个所述处理核中存储有一个或多个指令,一个或多个所述指令被一个或多个所述处理核执行,以使一个或多个所述处理核能够执行所述的数据处理方法。
第四方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的数据处理方法。
本公开所提供的实施例通过监控大模型计算过程,确定下一步需要计算的数据,根据确定结果从片外存储的压缩数据中采集相应的目标数量的压缩数据进行并行解码,并根据解码数据进行并行计算,使得传入芯片的是压缩数据,从而节省仿存带宽;而且实现了边解码边计算,使得不用另外准备额外的存储空间存储解码数据,从而节省空间,降低成本,并且不影响计算效率,而且解码过程和计算过程均是并行方案,提高了数据处理效率;另外,并行解码过程中的目标数量是依据并行计算能力确定的,并对该目标数量的压缩数据进行并行解码,使得解码的并行度配合并行计算能力,实现了解码与计算相耦合。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
图1为本公开实施例提供的一种数据处理方法的流程图;
图2为本公开实施例提供的一种数据处理装置的框图;
图3a为本公开实施例提供的对一行或一列压缩数据进行解码情况下的数据处理装置的示意图;
图3b为本公开实施例提供的对多行和多列压缩数据进行解码情况下的数据处理装置的示意图;
图4为本公开实施例提供的一种众核芯片的框图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
大模型增量推理过程中,需要反复读取数量庞大的权重数据,占用极大的仿存带宽,严重制约了大模型推理效率,在端侧推理场合尤为明显。例如:对于一个7B级别的大模型(如大语言模型),一个300字左右的文字回复,需要2TB以上的权重数据读取量,而通常端侧设备DDR(双倍速率同步动态随机存储器)接口带宽约为100GB/s以内,仅权重数据加载就需要耗时几十秒。
由于大模型权重数据量过大,通常对权重数据进行压缩处理;在推理计算时,需要将压缩的权重数据整体进行解压,得到完整的权重数据后再进行计算;该过程需要对权重数据整体均解压后再计算,并且需要额外存储解压后的权重数据,浪费存储空间,增加成本。
本公开所提供的实施例通过监控数据计算过程,确定下一步需要计算的数据,根据确定结果从存储的压缩数据中采集相应的目标数量的压缩数据进行并行解码,并根据解码数据进行并行计算,使得传入芯片的是压缩数据,从而节省仿存带宽;而且实现了边解码变计算,使得不用另外准备额外的存储空间存储解码数据,从而节省空间,降低成本,并且不影响计算效率,而且解码过程和计算过程均是并行方案,提高了数据处理效率;另外,并行解码过程中的目标数量是依据并行计算能力确定的,并对该目标数量的压缩数据进行并行解码,使得解码的并行度配合并行计算能力,实现了解码与计算相耦合。
根据本公开实施例的数据处理方法可以由终端设备或服务器等电子设备执行,终端设备可以为车载设备、用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等,所述方法可以通过处理器调用存储器中存储的计算机可读程序指令的方式来实现,或者,可通过服务器执行所述方法。
图1为本公开实施例提供的一种数据处理方法的流程图。参照图1,该方法可以包括:循环执行以下操作步骤S11-S13,直至存储于众核芯片片外的全部压缩数据计算完毕:
S11、监控大模型计算过程,确定下一步需要计算的数据,根据确定结果从存储于片外的压缩数据中采集相应的目标数量的压缩数据;目标数量是根据众核芯片计算大模型时的并行计算能力确定的。
在本公开实施例中,该数据可以包括但不限于大模型权重数据,任何的大量数据计算过程均适用于本公开实施例方案,下面以大模型权重数据为例说明本公开实施例方案。
在本公开实施例中,在大模型计算中,主要计算是位于前馈网络中的矩阵乘计算,加载的大量权重数据主要用于这个矩阵乘计算,为了便于大量权重数据的传输,需要设计一种压缩方案,对该大量权重数据进行压缩,并在DDR内存储该大量权重数据的压缩数据,传入大模型计算芯片的也是压缩数据,从而节省仿存带宽。
在本公开实施例中,压缩数据是待压缩数据(如大模型权重数据)进行分段后对多个分段分别进行压缩获得的,大模型权重数据预先可以进行分段压缩并存储在DDR内存中。分段压缩时的压缩方式,可以根据数据计算方式来确定。例如,对于矩阵乘的运算,具体运算过程为向量与矩阵的乘法,对于每个输入向量的数据,均有某一特定权重矩阵的行与之对应,为了实现运算并行化,可以将权重矩阵按行进行压缩。
在本公开实施例中,将压缩数据传输到众核芯片内以后,需要再对压缩数据进行解码,获得解码数据,以基于解码数据进行计算。
在本公开实施例中,由于大模型权重数据的数量巨大,如果对大模型权重数据的压缩数据全部解码以后,再进行存储,必然占用很大的存储空间,而且影响数据处理效率,因此,可以边解码边计算,以节省对解码数据的存储空间,节省成本,并且可以基于计算速度设置解码速度,从而不影响计算效率。
在本公开实施例中,为了实现边解码边计算,可以监控数据计算过程,确定下一步需要计算的数据(即下一组计算数据),以便于在当前计算结束之前将下一组计算数据送入计算芯片的计算模块中。
在本公开实施例中,确定下一步需要计算的数据,可以包括:
根据预设的计算周期,确定下一步需要采集数据的起始行和/或起始列。
在本公开实施例中,例如,可以在每个预设的计算周期的起始时刻,确定下一步需要采集数据的起始行和/或起始列。
在本公开实施例中,确定下一步需要计算的数据,可以根据计算模块的硬件的并行计算能力(例如,并行计算行数、并行计算列数等)来确定,例如,进行计算时可以每次输入预设数量(如并行计算行数乘以并行计算列数所获得的数据)的数据,并且在每个计算周期内仅可以完成一个数据的计算,可以对该预设数量的数据进行并行计算,则可以在每个计算周期开始时便开始准备下一个计算周期内计算所需的数据,即,开始采集下一组压缩数据进行解码,以便于在这一组压缩数据解码完成后正好上一组解码数据计算完成。在采集之前,需要确认下一组压缩数据的起始行和/或起始列。
在本公开实施例中,对于该计算周期不做限定,可以根据需求自行定义。其中,该计算周期的设置时长需要确保在该时长内能够将采集的目标数量的压缩数据全部解压完毕,而且尽量使得计算过程不等待,即,在该计算周期内,正好将目标数量的压缩数据解码完毕,并且正好上一组解码数据计算完毕,从而不影响计算效率。
在本公开实施例中,采集目标数量的压缩数据时,可以基于预设的数据采集窗口进行数据采集,例如,可以确定需要采集数据的起始窗口位置,基于该起始窗口位置,采用该数据采集窗口从压缩数据对应矩阵中采集目标数据个数的压缩数据。其中,数据采集窗口包含采集数据的行数和列数;行数和列数内包含的数据个数等于该目标数据个数。
在本公开实施例中,目标数量可以包括目标行数和/或目标列数;
根据确定结果从存储的压缩数据中采集相应的目标数量的压缩数据,包括:
依据行的排列顺序,从压缩数据对应矩阵中起始行开始,采集目标行数的压缩数据;和/或,
依据列的排列顺序,从所述压缩数据对应矩阵中起始列开始采集目标列数的压缩数据。
在本公开实施例中,可以单独从行的角度进行并行解码和计算,也可以单独从列的角度进行并行解码和计算,在后续实施例中,以行和列均并行的角度说明本公开实施例的并行解码和计算方案。
在本公开实施例中,为了实现对压缩数据从行和列角度并行解码和计算,需要首先从压缩数据对应矩阵中选取目标行数和目标列数的压缩数据。该目标行数和所述目标列数是计算芯片进行并行计算时能够并行计算的行数和列数。
在本公开实施例中,例如,如果一个压缩数据共包含N行M列(M和N均为正整数),如果目标行数为n1,目标列数为m1,则在每次计算之前首选采集第0行至第n1行的第0列至第m1列的压缩数据进行解码,并采用解码后获得的解码数据进行计算,其中,n1和m1均为并行度。在第0行至第n1行的第0列至第m1列的解码数据开始计算过程中采集第0行至第n1行的第m1+1列至第2m1列的压缩数据进行解码,并采用解码后获得的解码数据进行计算。依次类推,直到第0行至第n1行的全部数据均送入去计算后,则再读取第n1+1行至第2n1行的第0列至第M列的压缩数据,重复上述过程,直到所有压缩数据运算结束。
在本公开实施例中,通过上述方案,实现了依据计算并行度逐次向计算芯片传输压缩数据,从而为稳定实现边解码边计算、且不影响计算效率提供了技术基础。
在本公开实施例中,步骤S11的方案可以通过预设的调度模块实现,该调度模块可以设置于大模型计算芯片的计算模块和用于存储压缩数据的内存之间,用于确定计算模块需要计算哪部分权重数据,从而可以从内存调取相应的压缩数据送去解码。
S12、对目标数量的压缩数据进行并行解码,获得解码数据。
在本公开实施例中,在通过步骤S11的方案对计算进行监控,并有序地获取目标数量的压缩数据输入众核芯片后,需要先对每一组压缩数据进行并行解码。
在本公开实施例中,对目标数量的压缩数据进行并行解码,获得解码数据,可以包括:
以目标行数和/或目标列数为并行度,对压缩数据进行并行缓存、对齐并解码。
在本公开实施例中,即,以目标行数为并行度,对目标行数的压缩数据进行并行缓存、对齐并解码;和/或,以目标列数为并行度,对目标列数的压缩数据进行并行缓存、对齐并解码。
在本公开实施例中,如果采集的目标数量的压缩数据仅是多行一列数据(即一个列向量),则对该多行一列数据从行的维度进行并行解码,例如,对于一组n(n为正整数)行1列的目标数据,可以设置n个缓存解码单元,每个缓存解码单元分别对1行1列数据(即1个数据)进行缓存、对齐和解码。
在本公开实施例中,如果采集的目标数量的压缩数据仅是1行多列数据(即一个行向量),则对该1行多列数据从列的维度进行并行解码,例如,对于一组1行m(m为正整数)列的目标数据,可以设置m个缓存解码单元,每个缓存解码单元分别对1行1列数据(即1个数据)进行缓存、对齐和解码。
在本公开实施例中,如果采集的目标数量的压缩数据是多行多列数据(即一个矩阵),则对该多行多列数据可以从行和列两个维度进行并行解码,例如,在以目标行数(如a行)和目标列数(如b列)进行并行解码的情况下,可以首先将采集的a行压缩数据按行分配给相应行对应的一组缓存解码单元中,在每个行对应的该组缓存解码单元中,可以分别包含b个缓存解码单元,该b个缓存解码单元是相应行的b个列上的每个压缩数据分别对应的缓存解码单元,通过每行对应的该b个缓存解码单元,可以对该行的b个列的压缩数据进行并行缓存、对齐并解码。通过该实施例方案,可以对采集的多行多列的压缩数据从行和列的维度共同并行解码。
在本公开实施例中,针对多行多列的压缩数据,在设置每一行对应的一组缓存解码单元以及该组缓存解码单元对应的每个列对应的缓存解码单元时,可以记录每行对应的该组缓存解码单元的标识,以及每行对应的该组缓存解码单元中每个列对应的缓存解码单元的标识,使得对于任意一行对应的一组缓存解码单元,总是对采集的压缩数据(矩阵)中的同一行压缩数据进行缓存解码,任意对于任意一行对应的一组缓存解码单元中每一列对应的缓存解码单元,针对任意一行压缩数据中的同一列压缩数据进行缓存解码。
在本公开实施例中,例如,如果依据计算模块的并行处理能力,每次可以对一个10行5列的解码数据进行并行计算,则每次从内存中采集的目标数量的压缩数据也是一个10行5列的压缩数据,相应地,缓存解码单元可以包含10行的缓存解码单元,每行缓存解码单元中分别包含5个列的缓存解码队列,因此共包含50个缓存解码,可以分别对10行5列压缩数据(50个)中的一个压缩数据进行缓存解码,从而实现对压缩数据(矩阵)的并行存储和解码。其中,如果采用NiMj表示一个缓存解码单元,则Ni表示第i行,Mj表示第j列,i和j为正整数,i小于或等于最大行数,j小于或等于最大列数,对于任意的第i行和第j列的缓存解码单元NiMj,总是对压缩数据(矩阵)中的第i行和第j列的压缩数据进行缓存解码。如,对于上述的50个缓存解码单元来说,第2行第5列缓存解码单元总是对上述10行5列压缩数据(50个)中的第2行第5列的压缩数据进行缓存解码,以免数据混淆。
在本公开实施例中,在每个缓存解码单元中可以分别包含一个缓存单元和一个解码单元。缓存单元用于对所处理的压缩数据进行缓存并进行对齐,解码单元用于对对齐后的压缩数据进行解码。
在本公开实施例中,压缩数据可以包含但不限于经过哈夫曼编码获得的压缩数据,缓存单元可以在更新信号有效时,从内存中将经过哈夫曼编码压缩过后的大模型权重数据读取进来,缓存单元缓存完毕并在接收到解码单元的就绪信号之后,将缓存的数据发送至解码单元,解码单元每个时钟周期可以解码一个权重数据。
在本公开实施例中,每个缓存单元可以实现对内存输入的压缩数据的对齐,从而使多个解码单元的输出数据对齐,便于进行格式转换和后续的数据计算(例如矩阵乘法),最终实现数据计算的并行解压和并行计算。
在本公开实施例中,读取数据时可以按照字节为单位进行读取,每个字节长度8bit(比特),但是压缩数据的最大长度为12bit,读取位宽不匹配,因此通过设置缓存单元可以实现对齐数据。
在本公开实施例中,每个缓存单元可以设置两级缓存,缓存数据可以是48位(需要是8和12的公倍数,6个字节),数据缓存输出要求是12位(即输入解码单元的为12位),每个缓存单元的数据需要输出四次之后才读取新的内存数据。因此,可以采用2位计数器进行数据位选来实现该功能。
在本公开实施例中,缓存单元中可以通过状态机来指示缓存数据的状态,状态机可以提包含五个状态,一个等待状态,三个数据装填状态,一个工作状态。由于读取内存数据是在更新信号有效时才会进行读取数据和更改地址,因此,可以设置三个数据装填状态用于顶掉最初的复位数据0。
在本公开实施例中,缓存单元的端口可以进行以下设置,如表1所示:
表1
I/O(输入/输出) | 端口名 | 备注 |
input(输入) | clk | 时钟 |
input | rst | 复位 |
input | ready | 就绪 |
input | data_in | 数据输入(48位) |
output(输出) | data_out | 数据输出(12位) |
output | update | 更新信号 |
在本公开实施例中,在内存和多个缓存解码单元(该多个缓存解码单元可以视为一个整体的缓存解码部分)之间,主要是内存和缓存单元之间设置一个仲裁器。
在本公开实施例中,由于内存与缓存解码部分存在一条总线,多个缓存解码单元之间存在总线冲突,故在内存总线与缓存单元之间可以设置仲裁器,该仲裁器从内存中读取压缩数据后,可以按照顺序分配给每一个缓存解码单元(例如,依据行的排列顺序)。
在本公开实施例中,这个与并行度大小有关,而且也与一次性能读取多少内存数据(即前述的目标数量的压缩数据)有关,理论上,仲裁器从内存中读取的压缩数据的数据量应该刚好与并行度匹配,这样每次从内存中读取的压缩数据都可以发放至每一个缓存解码单元,不会出现存在缓存解码单元不工作的情况。
在本公开实施例中,解码模块可以包含一个计数器和一个具有优先级的解码器,并且也可以设置两级缓存(基于前述的缓存单元的输出12为的实施例来说,解码单元可以缓存两个12为的压缩数据),用于保证压缩数据输入和解码数据输出的时序稳定,以及解码过程中由于位宽的限制导致的压缩数据被截断的问题,在复位之后逐级装填,从高位向低位按位判断解码。
在本公开实施例中,可以设置一个指针用于标志当前解码的进度。如果压缩数据是INT4格式(int4是4字节有符号整型数据格式,符号占1位,余下31位2进制位表示数值,最大数正数是0x7fffffff),经过哈夫曼编码之后,压缩数据的最小编码位宽为2位,最大编码位宽为12位,所以设置解码单元的两级存储时,每级存储的压缩数据输入为12位,以便于每级存储保证能够存储一个压缩数据的位宽(因为某些压缩数据不满12位,在存储时可能多个不满12位的压缩数据被存储在同一级中,某个压缩数据可能在上一级存储中存储有一部分数据,在下一级存储中存储有一部分数据,即上述的被截断的情况,这种情况下,如果是仅有一级存储则会使得该被截断的压缩数据不能被及时解码,可能影响后续计算效率),解码单元的输出为4位。
在本公开实施例中,压缩数据可以是基于前缀编码获得的,例如基于哈夫曼编码获得。
在本公开实施例中,对压缩数据进行并行缓存、对齐并解码,包括:
对压缩数据根据优先级从高到低的顺序进行解码;其中,优先级根据输入的压缩数据的编码位宽进行确定,编码位宽越小,优先级越高。
在本公开实施例中,前缀编码是指对字符集进行编码时要求字符集中任一字符的编码都不是其它字符的编码的前缀。哈夫曼编码属于前缀编码,因此对于基于哈夫曼编码的压缩数据,在解码单元中可以使用具有优先级的解码器进行解码,优先级由编码位宽从小到大进行判断。
在本公开实施例中,解码单元的端口可以进行以下设置,如表2所示:
表2
I/O | 端口名 | 备注 |
input | clk | 时钟 |
input | rst | 复位 |
input | encodedData | 数据输入(12位) |
output | decodedData | 数据输出(4位) |
output | ready | 就绪信号 |
output | valid | 有效信号 |
在本公开实施例中,下面对每个缓存解码单元中的缓存单元和解码单元的工作流程进行介绍:
首先缓存单元在复位之后将更新信号update拉高,读入新的压缩数据占用一级缓存,同时状态跳转,在下两个时钟周期进行相同操作,将两级缓存填满有效的压缩数据,并跳转到工作状态,接收来自解码单元的就绪信号,在就绪信号有效时将缓存的压缩数据传送给解码单元。每当就绪信号有效,传送压缩数据给解码单元时,缓存单元中的计数器加一,每个计数器的值对应48位缓存数据的从高位到低位按12位为跨度分割成的四个部分中的一个。
然后解码单元(可以包含一个计数器和一个优先编码器,)也设置了两级缓存,用于保证压缩数据输入和解码数据输出的时序稳定和解码过程中由于位宽的限制导致的编码数据被截断的问题,在复位之后,将解码单元的两级缓存逐级装填,从高位向低位按位判断解码。如果压缩的权重数据是INT4格式,经过哈夫曼编码之后最大编码位宽为12位,所以解码单元的压缩数据输入为12位,输出的解码数据为4位。
解码单元的计数器从复位之后开始计数,需要等待缓存单元的数据装填完毕和该解码单元内部的两级缓存装填完毕,总共需要6个时钟周期,同时在之后的时间内保持解码单元的计数器不变,解码单元的两级缓存装填完毕之后进入解码阶段。
解码单元设置一个指针用于标志当前解码的进度,将两级缓存拼凑成一个24位的压缩数据,复位之后将指针重置到最高位,每次解码识别操作之后更改指针位置,如果指针移动之后指向的位宽索引小于或等于11,说明高一级缓存的12位数据已经全部解码完毕,需要装填新的数据,此时将就绪信号ready拉高,将指针移动到装填压缩数据之后的新位置。由于压缩数据输入是完整的数据流,可以按照一个时钟周期(可以视为本公开实施例的计算周期)解码一个的标准设计,将压缩数据的有效信号在解码单元的计数器大于6时拉高,此后每个时钟周期输出的压缩数据均有效。
S13、根据解码数据进行数据并行计算。
在本公开实施例中,对一组压缩数据解码完成后,可以获得一组解码数据,并将该组解码数据送入计算模块进行并行计算。
在本公开实施例中,根据解码数据进行数据并行计算,可以包括:
将解码数据对应矩阵中的每行数据与第一输入数据并行计算;以及,将每行数据中每列数据与第一输入数据中的相应列的数据并行计算;或者,
将解码数据对应矩阵中的每列数据与第二输入数据并行计算;以及,将每列数据中每行数据与第二输入数据中的相应行的数据并行计算。
在本公开实施例中,压缩数据可以包括大模型权重压缩数据,解码数据可以包括:大模型权重解码数据;
根据解码数据进行数据并行计算,可以包括:
在大模型增量推理过程中,在大模型的前馈神经网络层中根据大模型权重解码数据进行矩阵乘法计算。
在本公开实施例中,例如,对于大模型权重数据来说,并行计算主要涉及输入数据(如第一输入数据,可以为一个行向量)与解码数据(矩阵)的乘加计算。例如,当一个输入的行向量与解码出的权重数据矩阵进行运算时,该行向量可以与权重数据矩阵的每一列并行相乘,首先实现列间计算的并行性,在该行向量与权重数据矩阵的每一列并行相乘过程中,行向量中的每个数据与每一列中的每个相对应的数据可以并行相乘,实现每列内数据相乘的并行性,在每一列权重数据与输入的行向量相乘之后,会得到多个相乘结果,将这些相乘结果相加可以得到该列权重数据对应的计算结果,针对每一列权重数据所对应的多个相乘结果的相加过程,也可以并行进行,从而实现另一级的并行计算。
在本公开实施例中,上述方案是以输入数据为行向量(即第一输入数据)为例进行说明的,在输入数据为列向量(即第二输入数据)的情况下,本公开实施例方案依然使用,计算并行方案与上述方案类似,不同的是列向量与权重数据(矩阵)相乘时需要与权重数据的每一行数据并行相乘,在此不再一一赘述。
在本公开实施例中,该并行计算方案可以通过预设的计算模块实现。该计算模块可以是FFN(前向反馈神经网络)中的矩阵乘法加速单元。
在本公开实施例中,在将解码数据输入计算模块之前,可以首先通过格式转换模块对解码数据进行格式变换,例如,将输入的解码数据的格式转换为FP16(半精度浮点数)格式,然后一次性接受目标数量个(如1024个)FP16格式的解码数据,与输入数据(例如向量x)进行乘加计算。
在本公开实施例中,格式转换模块可以采用组合逻辑实现。可以接受INT4和INT8(int8是8字节有符号整型数据,符号占1位,余下63位2进制位表示数值,最大数正数是0x7fffffffffffffff)格式输入的解码数据,转换为FP16格式输出。INT4和INT8的转换思路相同,例如:可以先将符号位提取出来,然后从最高位到最低位找到第一个不为0的位来确定指数位,并通过移位操作确定小数位,最终将符号位、指数位、小数位按照FP16数据格式进行拼凑得到最终结果。
在本公开实施例中,格式转换模块的端口可以进行以下设置,如表3所示:
表3
I/O | 端口名 | 备注 |
input | data_int4/data_int8 | 输入的INT4和INT8格式数据 |
output | data_fp16 | 输出FP16格式数据 |
在本公开实施例中,计算模块可以主要涉及FP16数据格式的乘法运算和加法运算的硬件实现。
在本公开实施例中,首先可以通过半精度浮点数乘法器实现乘法运算,功能部分采用组合逻辑,输出部分采用时序逻辑,保证每个时钟周期(可以视为本公开实施例的计算周期)计算一次。功能部分主要包括对符号位的处理、指数借位、乘法计算以及超范围小数等内容。接受两个半精度浮点数的输入(输入的解码数据以及待与解码数据计算的输入数据),输出一个半精度浮点数,特殊情况包括任意一个输入(解码数据或输入数据中的任意一个)或者两个输入(解码数据和输入数据)均为0的情况,此时输出为0。符号位判断可以采用异或门实现,在计算部分,根据半精度浮点数的数据格式,将输入拆分为符号部分、指数部分和小数部分,分别用单独的寄存器存储,用于之后的计算。乘法部分直接采用行为级描述(行为级描述是对电路的功能或数学模型进行描述,建立电路或系统的输入与输出的关系,抽象程度高,与硬件实现毫无关联;在行为级描述中,源程序中可以大量采用算术运算、关系运算、惯性延时、传输延时等难于进行逻辑综合或不能进行逻辑综合的超高速集成电路硬件描述语言VHDL描述语句),指数匹配部分采用if-else以及if嵌套的形式找到第一个不为0的数字之后对指数进行修正,最后将拆分的三个部分重新拼接输出。
其次,可以采用半精度浮点数加法器实现加法运算,与乘法器相同,采用组合逻辑和时序逻辑结合的思路,每个时钟周期计算一次。但在功能部分有所区别,主要体现在进行计算之前需要配平待相加的两个数据的阶数后再根据正负情况进行加减运算操作,因此相较于乘法器,加法器部分可以单独定义一个移位寄存器用于计算加法时配平阶数。在计算部分,先进行阶数配平,再根据同号异号分类,求出尾数及指数部分,最后将结果拼凑在一起输出。
最后可以多次实例化上述乘法器和加法器,构建乘法器阵列和加法器阵列,这些阵列可以合并组成全连接层矩阵乘法加速模块,实现并行计算;可以利用计数器判断何时矩阵乘法运算需要换列。
在本公开实施例中,进行并行运算的解码数据来自解码单元,输入数据(如行向量或列向量)可以由地址产生单元控制向量存储器给到计算模块(主要是乘法器阵列)的输入端。
在本公开实施例中,还可以设置一个激活单元,该激活单元的输入与计算模块的输出相连;该激活单元用于对计算模块的全部计算结果进行非线性组合。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了数据处理装置、众核芯片、计算机可读存储介质,上述均可用来实现本公开提供的任一种数据处理方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
图2为本公开实施例提供的一种数据处理装置的框图。图3a和图3b为本公开实施例提供的两种数据处理装置的示意图。图3a为本公开实施例提供的对一行或一列压缩数据进行解码情况下的数据处理装置的示意图(根据一行中的列数或一列中的行数确定缓存解码单元的个数),图3b为本公开实施例提供的对多行和多列压缩数据进行解码情况下的数据处理装置的示意图。
参照图2、图3a和图3b,本公开实施例提供了一种数据处理装置300,该装置包括:调度模块301、解码模块302和计算模块303;
调度模块301,用于监控大模型计算过程,确定下一步需要计算的数据,根据确定结果从数据处理装置外部存储的压缩数据中采集相应的目标数量的压缩数据;目标数量是根据大模型计算时的并行计算能力确定的;该压缩数据是待压缩数据进行分段后对多个分段分别进行压缩获得的。
解码模块302,用于对目标数量的压缩数据进行并行解码,获得解码数据。
计算模块303,用于根据解码数据进行数据并行计算。
在本公开实施例中,解码模块302可以包括:多个缓存解码单元3021;缓存解码单元3021的个数是根据大模型计算时的并行计算能力确定的,目标数量根据缓存解码单元3021的个数来确定,该目标数量与缓存解码单元3021的个数相同;
缓存解码单元3021,用于对目标数量的压缩数据进行并行解码,获得解码数据。
在本公开实施例中,多个缓存解码单元3021排列为多行和多列;
每行缓存解码单元3021用于对压缩数据对应矩阵中相应行的压缩数据进行并行解码;
每行缓存解码单元3021中的每列缓存解码单元3021用于对压缩数据对应矩阵中相应行的压缩数据中相应列的压缩数据进行并行解码。
在本公开实施例中,每个缓存解码单元3021包括:缓存单元30211和解码单元30212;
缓存单元30211,用于对获得的压缩数据进行缓存并对齐;
解码单元30212,用于对对齐后的压缩数据进行解码。
在本公开实施例中,解码模块还可以包括:仲裁器3022;
仲裁器3022,用于将调度模块采集的目标数量的压缩数据分配给多个缓存解码单元3021。
在本公开实施例中,计算模块303包括:第一计算阵列;第一计算阵列包括多个计算子单元;每个计算子单元用于:
将解码数据对应矩阵中的每行数据中每列数据与第一输入数据中的相应列的数据并行计算;或者,
将解码数据对应矩阵中的每列数据中每行数据与第二输入数据中的相应行的数据并行计算。
在本公开实施例中,计算子单元可以包括乘法器。计算模块还可以包含加法器。
在本公开实施例中,数据处理装置还可以包括格式转换模块304和激活单元305;
格式转换模块304,连接于解码模块302和计算模块303之间,用于对解码数据302进行格式转换;
激活单元305的输入与计算模块303的输出相连;激活单元305用于对计算模块303的全部计算结果进行非线性组合。
在本公开实施例中,该数据处理装置中、调度模块301、解码模块302与计算模块303采用流水并行工作,因此几乎不影响计算模块303的工作效率。由于计算模块303计算时是分块计算的,为了节省计算模块303与解码模块302之间的缓存,并保证及时供给计算模块需要的数据,这个解码模块302的解码过程、DDR内存的数据存储形态都需要配合计算模块303的运算流程,形成一个耦合装置。为了解决单一DDR内存仿存通道供给解码模块302中多路缓存解码单元的问题,需要加入仲裁器。为了解决内存输出压缩数据的速率确定,输入计算芯片的压缩数据的输入速率不确定的问题,加入了缓存解码单元,并通过缓存解码单元实现了多行和/或多列压缩数据并行解码。本公开实施例的数据处理装置除静态结构外,在动态上,每个解码的压缩数据按定速(例如每个时钟1个数)发给计算模块303,当计算模块303计算第i列的解码数据的同时,并行的缓存解码单元在解码第i+1列的压缩数据,实现了数据处理的流水并行。
图4为本公开实施例提供的一种众核芯片的框图。
参照图4,本公开实施例提供了一种众核芯片,该众核芯片包括:
多个处理核401;以及
片上网络402,被配置为交互多个处理核间的数据和外部数据;其中,一个或多个处理核401中存储有一个或多个指令,一个或多个指令被一个或多个处理核401执行,以使一个或多个处理核401能够执行所述的数据处理方法。
在一些实施例中,该电子设备可以是类脑芯片,由于类脑芯片可以采用向量化计算方式,且需要通过外部内存例如双倍速率(Double Data Rate,DDR)同步动态随机存储器调入神经网络模型的权重信息等参数。因此,本公开实施例采用批处理的运算效率较高。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述的数据处理方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述数据处理方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读程序指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM)、静态随机存取存储器(SRAM)、闪存或其他存储器技术、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读程序指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里所描述的计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
Claims (16)
1.一种数据处理方法,其特征在于,所述方法包括:
监控大模型计算过程,确定下一步需要计算的数据,根据确定结果从存储于片外的压缩数据中采集相应的目标数量的压缩数据;所述目标数量是根据众核芯片计算大模型时的并行计算能力确定的;所述压缩数据是待压缩数据进行分段后对多个分段分别进行压缩获得的;
对所述目标数量的压缩数据进行并行解码,获得解码数据;
根据所述解码数据进行数据并行计算。
2.根据权利要求1所述的数据处理方法,其特征在于,所述压缩数据包括大模型权重压缩数据;所述解码数据包括:大模型权重解码数据;
所述根据所述解码数据进行数据并行计算,包括:
在大模型增量推理过程中,在大模型的前馈神经网络层中根据所述大模型权重解码数据进行矩阵乘法计算。
3.根据权利要求1所述的数据处理方法,其特征在于,所述确定下一步需要计算的数据,包括:
根据预设的计算周期,确定下一步需要采集数据的起始行和/或起始列。
4.根据权利要求3所述的数据处理方法,其特征在于,所述目标数量包括目标行数和/或目标列数;
所述根据确定结果从存储的压缩数据中采集相应的目标数量的压缩数据,包括:
依据行的排列顺序,从所述压缩数据对应矩阵中所述起始行开始采集所述目标行数的压缩数据;和/或,
依据列的排列顺序,从所述压缩数据对应矩阵中所述起始列开始采集所述目标列数的压缩数据。
5.根据权利要求4所述的数据处理方法,其特征在于,所述对所述目标数量的压缩数据进行并行解码,获得解码数据,包括:
以所述目标行数和/或所述目标列数为并行度,对所述压缩数据进行并行缓存、对齐并解码。
6.根据权利要求5所述的数据处理方法,其特征在于,所述压缩数据是基于前缀编码获得的;
所述对所述压缩数据进行并行缓存、对齐并解码,包括:
对所述压缩数据根据优先级从高到低的顺序进行解码;其中,所述优先级根据输入的所述压缩数据的编码位宽进行确定,所述编码位宽越小,所述优先级越高。
7.根据权利要求1所述的数据处理方法,其特征在于,所述根据所述解码数据进行数据并行计算,包括:
将所述解码数据对应矩阵中的每行数据与第一输入数据并行计算;以及,将每行数据中每列数据与所述第一输入数据中的相应列的数据并行计算;或者,
将所述解码数据对应矩阵中的每列数据与第二输入数据并行计算;以及,将每列数据中每行数据与所述第二输入数据中的相应行的数据并行计算。
8.一种数据处理装置,其特征在于,所述装置包括:调度模块、解码模块和计算模块;
所述调度模块,用于监控大模型计算过程,确定下一步需要计算的数据,根据确定结果从存储于所述数据处理装置外部的压缩数据中采集相应的目标数量的压缩数据;所述目标数量是根据大模型计算时的并行计算能力确定的;所述压缩数据是待压缩数据进行分段后对多个分段分别进行压缩获得的;
所述解码模块,用于对所述目标数量的压缩数据进行并行解码,获得解码数据;
所述计算模块,用于根据所述解码数据进行数据并行计算。
9.根据权利要求8所述的数据处理装置,其特征在于,所述解码模块包括:多个缓存解码单元;所述缓存解码单元的个数是根据大模型计算时的并行计算能力确定的,所述目标数量根据所述缓存解码单元的个数来确定,所述目标数量与所述缓存解码单元的个数相同;
所述缓存解码单元,用于对所述目标数量的压缩数据进行并行解码,获得解码数据。
10.根据权利要求9所述的数据处理装置,其特征在于,多个所述缓存解码单元排列为多行和多列;
每行所述缓存解码单元用于对所述压缩数据对应矩阵中相应行的压缩数据进行并行解码;
每行所述缓存解码单元中的每列缓存解码单元用于对所述压缩数据对应矩阵中相应行的压缩数据中相应列的压缩数据进行并行解码。
11.根据权利要求9所述的数据处理装置,其特征在于,每个所述缓存解码单元包括:缓存单元和解码单元;
所述缓存单元,用于对获得的所述压缩数据进行缓存并对齐;
所述解码单元,用于对对齐后的所述压缩数据进行解码。
12.根据权利要求8所述的数据处理装置,其特征在于,所述解码模块还包括:仲裁器;
所述仲裁器,用于将所述调度模块采集的所述目标数量的压缩数据分配给所述多个缓存解码单元。
13.根据权利要求8所述的数据处理装置,其特征在于,所述计算模块包括:第一计算阵列;所述第一计算阵列包括多个计算子单元;每个所述计算子单元用于:
将所述解码数据对应矩阵中的每行数据中每列数据与第一输入数据中的相应列的数据并行计算;或者,
将所述解码数据对应矩阵中的每列数据中每行数据与第二输入数据中的相应行的数据并行计算。
14.根据权利要求10所述的数据处理装置,其特征在于,所述装置还包括格式转换模块和激活单元;
所述格式转换模块,连接于所述解码模块和所述计算模块之间,用于对所述解码数据进行格式转换;
所述激活单元的输入与所述计算模块的输出相连;所述激活单元用于对所述计算模块的全部计算结果进行非线性组合。
15.一种众核芯片,其特征在于,包括:
多个处理核;以及
片上网络,被配置为交互多个所述处理核间的数据和外部数据;其中,一个或多个所述处理核中存储有一个或多个指令,一个或多个所述指令被一个或多个所述处理核执行,以使一个或多个所述处理核能够执行如权利要求1-7中任一项所述的数据处理方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在被处理器执行时实现如权利要求1-7中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410346421.3A CN118249816A (zh) | 2024-03-25 | 2024-03-25 | 数据处理方法、装置、众核芯片和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410346421.3A CN118249816A (zh) | 2024-03-25 | 2024-03-25 | 数据处理方法、装置、众核芯片和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118249816A true CN118249816A (zh) | 2024-06-25 |
Family
ID=91550477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410346421.3A Pending CN118249816A (zh) | 2024-03-25 | 2024-03-25 | 数据处理方法、装置、众核芯片和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118249816A (zh) |
-
2024
- 2024-03-25 CN CN202410346421.3A patent/CN118249816A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9298457B2 (en) | SIMD instructions for data compression and decompression | |
CN108292222B (zh) | 用于数据解压缩的硬件装置和方法 | |
US9274802B2 (en) | Data compression and decompression using SIMD instructions | |
RU2263947C2 (ru) | Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных | |
CN106549673B (zh) | 一种数据压缩方法及装置 | |
US20120182163A1 (en) | Data compression devices, operating methods thereof, and data processing apparatuses including the same | |
US7800519B2 (en) | Method and apparatus for compressing and decompressing data | |
US10666288B2 (en) | Systems, methods, and apparatuses for decompression using hardware and software | |
US11791838B2 (en) | Near-storage acceleration of dictionary decoding | |
Ledwon et al. | High-throughput FPGA-based hardware accelerators for deflate compression and decompression using high-level synthesis | |
KR20200123024A (ko) | 랜덤 액세스를 수반하는 혼합-프리시전 압축 | |
CN103095305A (zh) | 一种硬件lz77的压缩实现系统及方法 | |
CN112836813B (zh) | 一种用于混合精度神经网络计算的可重构脉动阵列系统 | |
US7773005B2 (en) | Method and apparatus for decoding variable length data | |
CN111008698B (zh) | 用于混合压缩循环神经网络的稀疏矩阵乘法加速器 | |
Najmabadi et al. | An architecture for asymmetric numeral systems entropy decoder-a comparison with a canonical Huffman decoder | |
US20190349001A1 (en) | Compression and decompression engines and compressed domain processors | |
CN118249816A (zh) | 数据处理方法、装置、众核芯片和存储介质 | |
Wang et al. | A simplified variant of tabled asymmetric numeral systems with a smaller look-up table | |
CN113497627A (zh) | 一种数据压缩和解压缩方法、装置及系统 | |
Simat et al. | MPEG-compliant Entropy Decoding on FPGA-augmented TriMedia/CPU64 | |
US9762285B1 (en) | Compression using mu-law approximation | |
Sierra et al. | High-performance decoding of variable-length memory data packets for FPGA stream processing | |
CN113364466A (zh) | 数据处理系统 | |
JP2002519957A (ja) | 符号関数を処理する方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |