首页 / 基于张量并行的大模型LoRA微调改进方法、设备及介质

基于张量并行的大模型LoRA微调改进方法、设备及介质实质审查 发明

技术领域

[0001] 本发明属于计算机领域,尤其涉及基于张量并行的大模型LoRA微调改进方法、设备及介质。

相关背景技术

[0002] 随着chatGPT等人工智能聊天机器人的兴起,百亿级甚至更大参数规模的预训练语言模型逐渐成为学术界研究和工业界落地的热点。
[0003] 在大规模预训练语言模型的训练过程中,受限于标注数据量的庞大和显卡的有限容量,全量微调的训练方法不再具有广泛适用性,而在众多小参数量微调方法中,大规模语言模型低秩自适应(Low‑Rank Adaptation of Large Language Models,LoRA)微调方法是较为有效的一种。如图1所示,LoRA针对预训练模型初始权重矩阵W0,可用低秩分解表示权重的改变量ΔW,即W0+ΔW=W0+BA,其中,A、B这两个结构的参数分别初始化为高斯分布和0。在模型训练的过程中冻结预训练模型初始权重矩阵W0,仅训练A和B中的参数,则参数量将远小于初始权重矩阵W0,从而可以大大节约所需训练数据,减少梯度和优化器所占显卡内存空间。同时,利用训练后的模型进行推理时可将训练得到的秩分解矩阵合并到初始权重矩阵中,以保持与原来一样的参数计算,不会增加多余的计算开销。
[0004] 但是,LoRA微调方法不能节省模型权重所占内存,甚至还会引入新的低秩参数矩阵,可能导致单个显卡无法放置一个完整的模型权重的问题。

具体实施方式

[0034] 以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035] 以下结合附图,详细说明本发明各实施例提供的技术方案。
[0036] 在本发明实施例中,引入张量并行计算方法,对LoRA微调中的低秩参数矩阵进行切分,将切分得到的低秩参数子矩阵放置在不同的显卡上进行计算,然后使用分布式算子对各个显卡上的计算结果进行整合,这样能减少单张显卡上模型权重所占的内存和计算量,在对大模型进行极少量参数的微调时,将同一个大模型的权重放置在不同的显卡上,以解除显卡大小对模型规模的限制,避免发生单个显卡无法放置一个完整的模型权重的问题,提高了大模型微调的灵活性。
[0037] 但是,相比于普通的张量并行中只进行一次算子整合计算来说,在LoRA微调和张量并行的结合过程中,列切分模式下对低秩参数矩阵均进行列切分后,需通过两次gather算子计算对计算结果进行整合;行切分模式下对低秩参数矩阵进行列切分、行切分后,需通过reduce算子和gather算子两次计算对计算结果进行整合,即,LoRA微调和张量并行的结合过程多引入了一次算子计算,这样增加了多余的通信开销,特别是针对没有NVLink总线及其通信协议的显卡来说,由于其通信带宽不够,会大大降低计算效率。
[0038] 因此,本发明实施例提出基于张量并行的大模型LoRA微调改进方法,以解决LoRA微调和张量并行的结合引入额外的算子计算,会增加通信开销,降低计算效率的问题。
[0039] 如图2所示,本发明实施例提供的基于张量并行的大模型LoRA微调改进方法,包括:
[0040] S1:从待训练的大模型中确定待调整层,引入两个低秩参数矩阵。
[0041] 本发明实施例中待训练的大模型为Transformer结构的预训练语言模型,待调整层可以是任意含有h=W0x的线性变换层,其中,h表示输出数据,W0表示初始权重矩阵,x表示输入数据,如QKV层、MLP层、Embedding层等。
[0042] 在LoRA微调方法中,针对待调整层的h=W0x计算处引入低秩参数矩阵A和B,用h′=W0x+BAx代替h=W0x进行前向计算。
[0043] S2:根据预设的并行情况对某一低秩参数矩阵进行选择性切分,根据初始权重矩阵、切分的低秩参数矩阵及另一未切分的低秩参数矩阵进行张量并行前向计算,并采用对应的分布式算子,对计算结果进行整合。
[0044] 引入的低秩参数矩阵包括第一低秩参数矩阵B、第二低秩参数矩阵A,张量并行模式包括列切分和行切分。本发明实施例根据预设的张量并行模式,对引入的第一低秩参数矩阵B、第二低秩参数矩阵A中的一个进行列切分或行切分,将切分后的若干低秩参数子矩阵分布至各计算设备(如显卡)中,并将未切分的完整的低秩参数矩阵也分布至各计算设备中。在不同张量并行模式下,基于切分或未切分状态对应的各计算设备中的第一低秩参数矩阵的行数、列数的不同,需确定与预设的张量并行模式对应的不同的输入数据,一并分布至各计算设备中。之后,针对各计算设备,将该计算设备中的完整的低秩参数矩阵、低秩参数子矩阵与对应的输入数据进行前向计算。
[0045] 在常规的列并行的张量并行中,针对h=W0x,其中x∈Rb×d,W0∈Rd×k,h∈Rb×k,列并行时需要对W0按列进行切分得到n个子权重矩阵 分别放置在n张不同的显卡上,其中n表示列并行数(即张量并行数),1≤i≤n,i∈N, 根据矩阵乘法并行计算法则,需将i b完整的x复制到每张显卡上。每张显卡独立执行矩阵乘法,得到计算结果 h∈R×k/n i
。最后使用gather算子将分布在不同显卡上的h按列进行合并,得到完整的计算结果h,b×k
h∈R 。计算过程如图3所示,其中为方便表示,图3中的张量并行数n为2,输入矩阵x为2维数据,实际在transformer结构中,x属于三维矩阵,下文同理。
[0046] 需要注意的是,在实际应用中,针对每张显卡上的计算结果hi,可根据具体情况决i定是否需要使用gather算子进行列合并。例如,在MLP层中,得到的列切分形式的结果h 可以直接作为下一步的输入,与行切分权重相乘实现行并行计算,则无需进行列合并。由此可见,为不引入多余的计算,引入LoRA后得到列切分形式的计算结果是必需的。
[0047] 在本发明实施例中,引入LoRA的列并行的张量并行改进方法只需对第二低秩参数矩阵A进行列切分,将完整的B矩阵和切分后的A矩阵分布在不同显卡上进行计算,最后使用一次gather算子整合计算结果。
[0048] 以下结合图4对列并行的张量并行模式下的LoRA微调改进方法进行说明:
[0049] 对第二低秩参数矩阵A进行列切分,分布至各计算设备中,并将完整的第一低秩参数矩阵B也分布至各计算设备中。基于第一低秩参数矩阵的完整性,可确定对应的输入数据为完整输入数据x,也分布至各计算设备中。将各计算设备中的第一低秩参数矩阵B分别与i完整输入数据x进行计算,得到若干第一输出g也是完整的。将各计算设备中列切分后的第i i i
二低秩参数子矩阵A分别与第一输出g进行计算,得到若干列切分输出Δh。根据第一分布i
式算子gather,对若干列切分输出Δh进行按列合并,得到第二输出Δh。
[0050] 具体地,针对LoRA前向推理过程h′=W0x+BAx=h+Δh,其中x∈Rb×d,W0∈Rd×k,B∈d×r r×k b×k b×R ,A∈R ,r<<min(d,k),h∈R ,Δh∈R k,h=W0x的计算过程与上述常规列并行计算相同,新增低秩矩阵的计算部分Δh=BAx为与其保持一致,应该使用适当的权重并行方案对矩阵A和B进行切分,使其分布在不同的显卡上完成Δh=BAx的计算。h=W0x列并行计i
算时,每张显卡上得到的h是最终结果h的列切分子矩阵,因此,为保持一致,在并行计算Δb×r
h=g·A,g∈R 时,每个显卡得到的Δh′也应是Δh的列切分子矩阵。由矩阵乘法并行计算法可知,完整的输入矩阵与列切分权重矩阵相乘可得到列切分形式的结果,因此,矩阵A是列切分的,输入g是完整的。针对前一步g=Bx的计算,可知,输入x也是完整的。在常规的i i
LoRA列并行实现中,根据矩阵并行乘法法则,矩阵B是列切分的,每张显卡上进行g =x·B,b×d i d×r/n i b×r/n i
x∈R ,B ∈R ,g∈R 的计算,得到的g 也是列切分的,因此引入了额外的gather算i
子对不同显卡上的g按列进行合并,得到完整的g。但在本发明实施例的改进方法中,针对gi i
=Bx的计算,由于g和x也是完整的,此时只需在每张显卡上初始化一个相同的矩阵B,B 从i i b×d i d×r i b×r i
维度上是完整的,每张显卡上完成g=x·B,x∈R ,B∈R ,g∈R 的计算,则g 也是完i i i
整的,无需引入其他gather算子。只需将完整的g 与列切分形式的子矩阵A完成Δh=g·i b×r i r×k/n i b×k/n i
A,g∈R ,A∈R ,Δh ∈R 的计算,使用一次gather算子对Δh进行列合并即可得到Δh。以上过程只需引入一次gather算子,与h=W0x过程完全一致,无需引入多余的通信开销。
[0051] 另外,在实际应用中,为减少通信,每张显卡上得到的列切分输出Δhi可能不需要igather,此时可确定不对其进行按列合并。针对各计算设备(如显卡)中的列切分输出Δh ,i
可直接与对应的列切分初始输出h相加,以继续进行下一步的行并行矩阵乘法计算。
[0052] 在常规的行并行的张量并行中,如图5所示,针对h=W0x,其中x∈Rb×d,W0∈Rd×k,hb×k∈R ,行并行时需要对W0按行进行切分得到n个子权重矩阵 分别放在n张不同的显卡上,其中n表示行并行数(即张量并行数),1≤i≤n,i∈N, 根据矩阵乘法计算法i
则,此时,需要将x进行列切分得到x ,分发到不同的显卡上,点乘 得到计算结果i b×d/n i b×k
x∈R ,h ∈R 。根据矩阵乘法法则,此时需要引入reduce算子将分布在不i
同显卡上的h相同位置的元素求和,得到最终的计算结果h。
[0053] 在本发明实施例中,引入LoRA的行并行的张量并行改进方法只需对第一低秩参数矩阵B进行行切分,将切分后的B矩阵和完整的A矩阵分布在各显卡上进行计算,最后使用一次gather算子整合计算结果。
[0054] 以下结合图6对行并行的张量并行模式下的LoRA微调改进方法进行说明:
[0055] 对第一低秩参数矩阵B进行行切分,分布至各计算设备中,并将完整的第二低秩参数矩阵A也分布至各计算设备中。基于第一低秩参数矩阵B的行切分,需对输入数据x进行对i应的列切分,并将列切分后的子输入数据x分布至各计算设备中。将各计算设备中行切分i i i
后的第一低秩参数子矩阵B分别与相应的子输入数据进行计算x,得到若干第三输出g 。将i
各计算设备中完整的第二低秩参数子矩阵A分别与第三输出g 进行计算,得到若干子输出i i
Δh。确定第二分布式算子reduce,对子输出Δh进行合并,得到第四输出Δh。
[0056] 具体地,针对LoRA前向推理过程h′=W0x+BAx=h+Δh,其中x∈Rb×d,W0∈Rd×k,B∈d×r r×k b×k b×kR ,A∈R ,r<<min(d,k),h∈R ,Δh∈R ,h=W0x的计算过程与上述常规行并行计算相同,新增低秩矩阵的计算部分Δh=BAx为与其保持一致,应该使用适当的权重并行方b
案对矩阵A和B进行切分,使其分布在不同的显卡上完成Δh=BAx的计算。针对g=Bx,g∈R×r
的计算,可知,输入x是列并行的,根据矩阵乘法并行计算法则,接下来与输入相乘的矩阵i i b×d/n i d/n×r i d×r
B应该是行切分的,每张显卡上进行g=x·B,x∈R ,B∈R ,g∈R 的计算。在常规i
的LoRA行并行实现中,需使用reduce算子将分布在不同显卡上的g 相同位置的元素求和,得到完整的计算结果g,接下来在Δh=g·A的计算中,又会对A进行列切分,引入一个gather算子整合结果,这样就涉及两次算子计算。但在本发明实施例的改进方法中,根据矩i
阵乘法并行计算法则,得到g后无需使用reduce算子进行整合,而可直接与完整的矩阵A相i i i b×r i r×k/n i
乘,即在每张显卡上初始化一个相同的矩阵A,完成Δh=g·A,g∈R ,A∈R ,Δh∈b×k/n i
R 的计算,最后仅使用一次reduce算子将分布在不同显卡上的Δh 相同位置的元素求和,得到Δh。以上过程只需引入一次reduce算子,与h=W0x过程完全一致,无需引入多余的通信开销。
[0057] S3:固定所述初始权重矩阵,通过反向传播更新所述低秩参数矩阵直至收敛,得到训练完成的大模型。
[0058] 在本发明实施例中,冻结初始权重矩阵W0,根据交叉熵损失计算梯度,并反向传播对低秩参数矩阵A和B进行参数更新,直到模型收敛,则训练完成。
[0059] 此外,在使用训练好的模型进行推理,得到模型预测的结果时,可整合初始权重矩阵与更新后的低秩参数矩阵的权重,以采用整合后的权重进行大模型预测,这样能够减少计算开销,节省算力。
[0060] 在本发明实施例中,将初始权重矩阵分布至各计算设备中,针对各计算设备,将初始权重矩阵与对应的更新后的第一低秩参数矩阵和第二低秩参数矩阵的乘积相加,得到各计算设备对应的若干分布式权重,再根据预设的张量并行模式,对若干分布式权重进行按列合并计算或按行合并计算,得到训练完成的大模型的权重。
[0061] 针对列并行模式的h=W0x层,引入LoRA后,更新后的权重为W′,W′∈Rd×k,其中n表示张量并行数,concat1 2 n
([W ,W ,...,W],dim=‑1)表示将矩阵W分布在不同显卡上的n个分量按列进行合并。
[0062] 针对行并行模式的h=W0x层,引入LoRA后,更新后的权重为W′,W′∈Rd×k,其中n表示张量并行数,concat1 2 n
([W ,W ,...,W],dim=‑2)表示将矩阵W分布在不同显卡上的n个分量按行进行合并。
[0063] 本发明在张量并行与LoRA微调的结合中,没有将两个低秩参数矩阵都按张量并行的方法进行切分,而是根据实际需要,在不同并行模式下选择性的对矩阵A或矩阵B中的一i个进行切分,这样在每张显卡上都进行分布式权重的计算 其中W表示参数
矩阵W分布在第i张显卡上的矩阵分量,不需要额外的计算结果整合,从而使得计算h′=W0x+BAx使用的分布式算子与计算h=W0x完全一致,不会引入多余的通信开销,提高了计算效率,且支持在megatron‑LM框架上的集成。
[0064] 如图7所示,本发明还提出了基于张量并行的大模型LoRA微调改进设备,包括:
[0065] 至少一个处理器;以及,
[0066] 与所述至少一个处理器通信连接的存储器;其中,
[0067] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:执行如上述任一实施例所述的基于张量并行的大模型LoRA微调改进方法。
[0068] 本发明还提出了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:执行上述任一实施例所述的基于张量并行的大模型LoRA微调改进方法。
[0069] 本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0070] 本发明实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
[0071] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0072] 本发明是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0073] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0074] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0075] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0076] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0077] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0078] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0079] 以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

当前第1页 第1页 第2页 第3页