基于稀疏感知的自适应混合乘法器及大模型推理加速方法与流程

摘要: 本技术涉及大模型推理,特别是涉及一种基于稀疏感知的自适应混合乘法器及大模型推理加速方法。背景技术:1、随着大语言模型以及视觉transformer等深度神经网络...
基于稀疏感知的自适应混合乘法器及大模型推理加速方法与流程

本技术涉及大模型推理,特别是涉及一种基于稀疏感知的自适应混合乘法器及大模型推理加速方法。

背景技术:

1、随着大语言模型以及视觉transformer等深度神经网络模型的快速发展,相关模型已广泛应用于自然语言处理、计算机视觉等人工智能推理场景。大规模神经网络推理通常需要执行大量矩阵乘法运算,矩阵乘法所占计算量较大,其计算效率和能耗水平直接影响大模型推理系统的整体性能。尤其是在模型规模持续增大、推理任务日益复杂的情况下,如何在保证计算能力的同时降低乘法运算产生的能耗,并适应不同模型、不同网络层以及不同输入数据的计算特征,已成为大模型推理加速领域的重要技术需求。

2、目前,用于神经网络推理的乘法器主要包括常规数字乘法器、基于查找表(lookuptable,lut)的乘法器以及存内计算乘法器等。常规数字乘法器通常能够支持多种计算精度,具有较好的计算灵活性,但整体能效相对有限,特别是在处理稀疏数据时,仍可能执行大量无效乘法运算而产生较大的动态功耗。基于lut的乘法器则预先将乘积结果存储于只读存储器中,在计算过程中通过查表方式获得乘积结果,其能效较高,例如相关方案的能效可达到16.1 tops/w,但通常适用于不高于8比特的低位宽计算,并且更适用于权重固定且数据具有较高稀疏度的场景;当数据较为稠密时,因数据拆分以及乘积累加等处理带来的额外开销,整体能效可能下降。存内计算乘法器通过在存储器内部直接完成乘加运算以减少数据搬运能耗,但其所支持的计算模式通常较为固定,计算灵活性受到一定限制。此外,现有技术中还存在将不同乘法计算方式结合的混合计算方案,例如platinum加速器能够针对不同计算精度组合切换相应计算路径。

3、然而,在大模型实际推理过程中,不同网络层以及不同token对应数据的稀疏度可能存在较大差异,稀疏度可以由低于10%变化至高于90%,而现有常规数字乘法器、lut乘法器或者混合乘法方案通常难以根据计算过程中实时变化的稀疏程度自适应调整计算方式。固定采用lut乘法器或者常规数字乘法器均可能在部分稀疏度场景下产生非最优能耗;现有混合方案的路径切换又多依据静态配置、指令标志或者计算精度进行,未充分利用当前数据块内部的稀疏统计信息进行实时决策,因而路径切换粒度相对粗糙。同时,现有基于只读存储器实现的lut乘法器通常预先固化相应乘积数据,当模型权重因lora等轻量级在线微调而发生变化时,原有lut内容难以同步更新,从而限制了该类乘法器在个性化推理以及在线权重调整场景中的应用。

4、因此,现有大模型推理乘法计算方案在适应动态稀疏数据、细粒度选择乘法计算方式以及支持权重在线更新等方面仍存在一定不足,难以同时兼顾不同稀疏度场景下的计算能效、计算灵活性以及应用适应能力。为满足大模型推理过程中对高能效、动态适应以及灵活计算的需求,亟需进一步改进现有乘法计算及推理加速技术。

技术实现思路

1、鉴于以上所述现有技术的缺点,本技术的目的在于提供一种基于稀疏感知的自适应混合乘法器及大模型推理加速方法,用于解决上述问题。

2、为实现上述目的及其他相关目的,本技术的第一方面提供一种基于稀疏感知的自适应混合乘法器,包括:稀疏度检测单元,用于确定当前计算瓦片的稀疏度;混合乘法执行单元,包括常规乘法支路和lut乘法支路;模式控制单元,分别与所述稀疏度检测单元和所述混合乘法执行单元连接,用于确定所述当前计算瓦片的稀疏度所处的稀疏度区间,根据所述稀疏度区间确定所述当前计算瓦片对应的目标计算模式,并控制所述混合乘法执行单元按照所述目标计算模式执行乘法运算;所述目标计算模式包括常规乘法模式、直接lut乘法模式和拆分lut乘法模式。其中,所述稀疏度区间包括按照稀疏度由低至高依次设置的第一稀疏度区间、第二稀疏度区间和第三稀疏度区间,所述第一稀疏度区间对应所述常规乘法模式,所述第二稀疏度区间对应所述直接lut乘法模式,所述第三稀疏度区间对应所述拆分lut乘法模式。

3、于本技术的第一方面的一些实施例中,所述稀疏度检测单元用于获取所述当前计算瓦片对应的零值掩码,并基于所述零值掩码统计所述当前计算瓦片中的非零元素数量,并根据所述非零元素数量与所述当前计算瓦片的元素总数确定所述当前计算瓦片的稀疏度。

4、于本技术的第一方面的一些实施例中,所述模式控制单元设置有第一稀疏度阈值和大于所述第一稀疏度阈值的第二稀疏度阈值;所述第一稀疏度区间为小于所述第一稀疏度阈值的稀疏度范围,所述第二稀疏度区间为大于或等于所述第一稀疏度阈值且小于或等于所述第二稀疏度阈值的稀疏度范围,所述第三稀疏度区间为大于所述第二稀疏度阈值的稀疏度范围。

5、于本技术的第一方面的一些实施例中,所述控制所述混合乘法执行单元按照所述目标计算模式执行乘法运算,其具体包括:在所述常规乘法模式下,所述常规乘法支路对乘法操作数执行乘法运算;在所述直接lut乘法模式下,所述lut乘法支路根据所述乘法操作数对应的查表地址获取乘法结果;在所述拆分lut乘法模式下,将两个所述乘法操作数分别拆分为多个低位宽子操作数,所述lut乘法支路分别对属于不同乘法操作数的所述低位宽子操作数执行查表乘法运算以获得多个部分乘积,并根据各所述低位宽子操作数在对应乘法操作数中的位置对所述多个部分乘积进行移位和累加,以获得乘法结果。

6、于本技术的第一方面的一些实施例中,所述lut乘法支路包括基础rom和sram增量表;所述基础rom用于存储预先确定的基础查表乘积,所述sram增量表用于存储发生更新的查表项对应的乘积修正信息;在执行查表乘法运算时,根据当前查表地址获取所述基础rom中的基础查表乘积,并查询所述sram增量表,在所述sram增量表中存在与所述当前查表地址对应的乘积修正信息时,根据所述基础查表乘积和所述乘积修正信息确定查表乘法结果,在不存在对应的乘积修正信息时,将所述基础查表乘积作为查表乘法结果。

7、于本技术的第一方面的一些实施例中,还包括零值旁路单元,所述零值旁路单元设置于所述混合乘法执行单元的输入侧,用于检测两个乘法操作数中的任一乘法操作数是否为零,并在任一所述乘法操作数为零时直接输出零值,以及禁止所述常规乘法支路和所述lut乘法支路执行对应的乘法运算。

8、为实现上述目的及其他相关目的,本技术的第二方面提供一种基于稀疏感知的大模型推理加速方法,包括:获取当前计算瓦片,并确定所述当前计算瓦片的稀疏度;确定所述当前计算瓦片的稀疏度所处的稀疏度区间,根据所述稀疏度区间确定所述当前计算瓦片对应的目标计算模式;其中,所述稀疏度区间包括按照稀疏度由低至高依次设置的第一稀疏度区间、第二稀疏度区间和第三稀疏度区间,所述目标计算模式包括常规乘法模式、直接lut乘法模式和拆分lut乘法模式,所述第一稀疏度区间对应所述常规乘法模式,所述第二稀疏度区间对应所述直接lut乘法模式,所述第三稀疏度区间对应所述拆分lut乘法模式;根据所述目标计算模式,选择对应的乘法计算方式对所述当前计算瓦片对应的乘法操作数执行乘法运算,并基于所得乘法结果完成所述当前计算瓦片的矩阵乘法运算。

9、于本技术的第二方面的一些实施例中,所述确定所述当前计算瓦片的稀疏度,包括:获取所述当前计算瓦片对应的零值掩码,根据所述零值掩码统计所述当前计算瓦片中的非零元素数量,并根据所述非零元素数量与所述当前计算瓦片的元素总数确定所述当前计算瓦片的稀疏度。

10、于本技术的第二方面的一些实施例中,基于预设的第一稀疏度阈值和大于所述第一稀疏度阈值的第二稀疏度阈值将稀疏度范围划分为所述第一稀疏度区间、所述第二稀疏度区间和所述第三稀疏度区间,其中,所述第一稀疏度阈值和所述第二稀疏度阈值可配置;在所述当前计算瓦片的稀疏度位于所述第一稀疏度区间时,采用所述常规乘法模式对乘法操作数执行乘法运算;在所述当前计算瓦片的稀疏度位于所述第二稀疏度区间时,采用所述直接lut乘法模式,根据所述乘法操作数对应的查表地址获取乘法结果;在所述当前计算瓦片的稀疏度位于所述第三稀疏度区间时,采用所述拆分lut乘法模式,将两个所述乘法操作数分别拆分为多个低位宽子操作数,对属于不同乘法操作数的所述低位宽子操作数执行查表乘法运算以获得多个部分乘积,并根据各所述低位宽子操作数在对应乘法操作数中的位置对所述多个部分乘积进行移位和累加,以获得乘法结果。

11、如上所述,本技术具有以下有益效果:

12、本技术以计算瓦片为处理粒度,根据当前计算瓦片的稀疏度在常规乘法模式、直接lut乘法模式和拆分lut乘法模式之间自适应切换,使不同稀疏程度的数据采用相适配的乘法计算方式,减少固定采用单一乘法路径产生的无效计算开销,提高大模型推理过程中的计算能效及适应能力。进一步地,通过基础rom与sram增量表配合实现lut乘积的在线更新,无需重新修改基础rom即可适应权重变化;同时,通过零值旁路单元在乘法操作数为零时直接输出零值并禁止对应乘法支路运行,减少无效电路翻转及动态功耗。