微信扫码
与创始人交个朋友
我要投稿
大语言模型(LLMs),如GPT-4和ChatGPT的成功,导致了大量经济实惠且可访问的替代方案的发展。这些替代方案通过使用任务特定数据(例如ChatDoctor)或指令数据(例如Alpaca)对开放获取的LLMs进行微调,已经取得了显著的成果。在各种微调方法中,基于适配器的参数高效微调(PEFT)无疑是最具吸引力的话题之一,因为它仅需要微调少量外部参数而不是整个LLMs,同时能够实现可比甚至更好的性能。为促进对LLMs PEFT方法的进一步研究,本文提出了LLM-Adapters,这是一个易于使用的框架,将各种适配器整合到LLMs中,并可以执行适用于不同任务的基于适配器的PEFT方法。该框架包括最先进的开放获取LLMs,如LLaMA、BLOOM和GPT-J,以及广泛使用的适配器,如Series适配器、Parallel适配器、Prompt-based learning和Reparametrization-based方法。此外,我们对适配器类型、放置位置和超参数对每种基于适配器的方法的最佳设计进行了广泛的实证研究。我们评估了适配器在两种不同推理任务(算术推理和常识推理)的十四个数据集上的效果。结果表明,在小规模LLMs(7B)中使用基于适配器的PEFT,即使只有少量额外的可训练参数,也能在两个推理任务的零样本推理中达到可比甚至更好的性能,相较于强大的LLMs(175B)。
大型语言模型(LLMs),如ChatGPT和GPT-4,在各种自然语言处理(NLP)任务和多模态任务中展现了前所未有的性能。这些LLMs通常具有超过数百亿参数的规模,并且是闭源的。因此,这推动了可访问和经济实惠的替代方案的发展,如LLaMA。这些替代方案涉及使用任务特定数据(例如ChatDoctor)或教学数据(例如Alpaca)对开源LLMs进行微调。然而,整体模型微调(FFT)在计算和存储上要求较高,因此在实际实施中存在着重大挑战。 在LLMs FFT(例如LLaMA)出现之前,自然语言处理领域提出了一种引人注目的解决方案,称为参数高效微调(PEFT),专门用于预训练模型(例如BERT),为高效微调LLMs提供了一种有前途的方法。PEFT的优势在于它只微调一小组外部参数而不是整个骨干模型,同时仍能实现可比甚至更好的性能。此外,与FFT相比,PEFT能够有效缓解灾难性遗忘。正如表1所示,PEFT的优势导致了多样化的PEFT模块的发展,包括Series适配器、Parallel适配器、Reparametrization-based方法和Prompt-based learning方法。
通过将这些PEFT模块整合到骨干模型中(即LLMs),我们可以充分利用骨干模型的出色能力,而无需大量计算资源。这为更广泛范围的应用提供了机会,使得即使是那些对高性能计算资源有限的人们也能够在特定任务中利用LLMs的能力。尽管PEFT在预训练模型中取得了成功,但在面对LLMs(例如LLaMA)时,对于哪种PEFT模块以及与哪种层和超参数配置结合最适合特定任务或数据集仍然不清楚。因此,需要进一步研究来确定最优的PEFT设置,以在不同任务和数据集之间最大化性能。
在本文的动机下,我们对三个代表性的开源LLMs,包括BLOOM、GPT-J和LLaMA进行了全面的PEFT实证研究。具体而言,我们进行了实证研究以解决以下三个研究问题:(i)不同PEFT方法的最佳放置和配置是什么?(ii)不同适配器在下游任务中的性能如何?(iii)PEFT方法在分布内(ID)和分布外(OOD)情景下的性能差异是什么?我们的研究结果如下:
我们的贡献可以总结如下:
在这一部分,我们简要概述了四种参数高效微调(PEFT)方法:基于提示的学习、基于重新参数化的方法、Series适配器和Parallel适配器。
基于提示的学习。如图1(a)所示,基于提示的学习将寻找最佳硬提示的离散优化问题转化为连续(软)提示的问题。为实现这一目标,Lester等人提出了提示调整的概念,其中一个可训练张量被添加为输入嵌入的前缀。另一种称为前缀调整的方法独立探讨了将软提示添加到所有层的隐藏状态中。内在提示调整使用自动编码器来压缩和解压软提示。我们以嵌入到注意力层的可学习向量为基于提示的学习的例子,其可以表示为:
其中和分别是注意力层的输入和输出。请注意, 是最大输入长度, 是向量维度。和是用于PEFT的可学习向量。 是可学习标记的数量,这将在实验部分详细讨论。分别表示注意力模块的查询、键、值向量。
这类方法旨在使用低秩技术转换网络权重。这种方法有效地减少了可训练参数的数量,同时保留了处理高维矩阵的能力。内在SAID研究了在低秩子空间内微调的内在维度。LoRA引入了一种简单的方法,通过将权重矩阵分解为两个低秩矩阵的乘积来更新权重矩阵的参数。KronA在LoRA的矩阵因子分解方面进行了改进,利用了其技术中的Kronecker乘积。我们以LoRA为基于重新参数化的学习的例子,可以表示如下:
其中 可以是任何预训练的权重矩阵,包括MLP或Attention层中的权重。 和 是用于覆盖 的低秩矩阵。 是LoRA的重要超参数。
Series适配器涉及在特定子层内按顺序引入额外的可学习模块。在他们的研究中,Houlsby等人提出在Transformer模型的注意力层和FFN层之后集成全连接网络。Pfeiffer等人的另一个发现表明,通过仅在自注意层之后插入适配器,而不是在每个Transformer块中使用两个适配器,可以实现可比较的性能。AdaMix引入了一种在混合专家(MoE)方式中利用多个Series适配器的方法。Compacter利用Kronecker积、低秩矩阵和跨层参数共享来生成适配器权重。该技术旨在减少与适配器相关的计算复杂性,同时保持其性能。Series适配器可以表示如下:
其中特定层 (如MLP层) 的输出 首先通过 下投影到较低维度 , 然后通过上投影回到原始维度。 是非线性函数。在实验部分我们会讨论的选择。
Parallel适配器旨在与主干模型内的不同子层并行引入额外的可学习模块。Parallel适配器可以表示为:
其中 是特定层的输入(输出)。在这个概念的基础上,Multi-head Parallel 适配器进一步利用并行适配器修改注意力头的输出。另一方面,Scaled Parallel适配器是一种变体,它将LoRA的组合和插入格式应用于适配器。另一种方法,称为Ladder Side-Tuning , 涉及训练一个轻量级的梯形侧网络。这个网络通过快捷连接 (梯子) 接收主干网络的中间激活。
我们在两类推理问题的十四个基准数据集上进行了广泛的实证研究:算术推理:(1)GSM8K数据集包含由人类问题作者创建的高质量、语言多样的小学数学问题,(2)SVAMP基准包含一个未知数的算术单词问题,适用于4年级学生,通过对来自另一个现有数据集的一组问题进行简单更改而制作,(3)MultiArith数学单词问题数据集,需要多个推理步骤和运算,(4)AddSub加法和减法算术单词问题数据集,(5)AQuA代数单词问题数据集,具有自然语言原理,(6)SingleEq(小学代数单词问题数据集,将问题映射到具有不同长度的单一方程;常识推理:(1)BoolQ数据集是一个用于回答是/否问题的问答数据集,包含15942个示例。这些问题是自然发生的,并在无提示和无限制的环境中生成,(2)PIQA数据集是一个包含两个解决方案的问题数据集,需要物理常识来回答,(3)SIQA侧重于推理人们的行动及其社会影响,(4)HellaSwag数据集包括一些上下文和若干结局的常识NLI问题,(5)WinoGrande数据集被构造为一个填空任务,具有二进制选项,目标是为给定的句子选择正确的选项,需要常识推理,(6)ARC-c和(7)ARC-e是ARC(Clark等人,2018)数据集的Challenge Set和Easy Set,是真正的小学水平的多项选择科学问题,(8)OBQA数据集包含需要多步推理、使用额外的普通和常识知识以及丰富的文本理解的问题。表2显示了数据集的统计信息。
为了在适配器上进行微调,我们获取了两个专为数学推理和常识推理设计的高质量训练数据集。表2显示,只有GSM8K和AQuA数据集提供算术推理的训练集。为了增加我们数据的多样性,我们将来自GSM8K、MAWPS、MAWPS-single的训练集并入,并从AQuA中选择了1000个例子,用于收集微调数据。然而,值得注意的是,所选的数据集仅提供方程和相应的答案。为了增强我们模型的推理能力,特别是在提供逐步解释方面,我们利用ChatGPT作为教师模型。通过使用零提示链式思维提示,ChatGPT生成推理步骤。我们在附录A.1中包含了用于收集数学推理数据集的具体提示模板。为确保数据的质量,我们删除包含不正确答案的样本。因此,我们获得了一组10K数学推理样本,称为Math10K,我们考虑进一步分析和微调。
为了在常识推理领域方便微调,我们通过使用预定义的模板格式化BoolQ、PIQA、SIQA、HellaSwag、WinoGrande、ARC-e、ARC-c和OBQA的训练集来构建微调数据。由于常识推理领域的每个数据集都涉及不同的任务,我们采用了一个结构化模板,首先描述任务的目标,然后是相应的内容和答案。用于创建微调数据的模板可以在A.2中找到。完成此过程后,我们获得了一组170K常识推理样本,称为Commonsense170K。这些数据集将公开提供,以鼓励在这一领域进行更多的研究和探索。
为了在研究和实际应用中无缝使用PEFT方法,我们开发了一个用户友好的框架,LLM-Adapter。LLM-Adapters将不同的适配器无缝集成到LLMs中,使研究人员能够为各种任务实施基于适配器的PEFT方法。我们选择LLaMA(7B、13B),BLOOMz(7B)和GPT-J(6B)作为我们实验的基础模型。至于四类PEFT方法,我们选择了Prefix-Tuning、Series Adapter、LoRA和Parallel Adapter作为代表性候选方法,以检验它们的有效性。为保持所有微调实验的一致性,我们保持批量大小为16。Prefix-Tuning的学习率设置为3e-2,而其余方法采用3e-4的学习率。每种PEFT方法在微调数据集上进行三个epoch的微调。值得注意的是,我们对数学或常识推理任务进行单一模型的微调,然后评估其在所有相应数据集上的性能。
为了回答研究问题“各种适配器的最佳放置和配置是什么?”,我们使用LLaMA-7B作为基础模型,在数学推理任务的背景下评估不同的适配器设置。我们的实证研究始于确定Series Adapter、Parallel Adapter和LoRA的最有效放置位置。由于Prefix-Tuning的放置位置是预先确定的,因此在此分析中排除了它。对于Series Adapter,我们探讨了将其放置在多头注意力层之后、MLP层之后或二者之后的选项。至于Parallel Adapter和LoRA,我们将它们集成到多头注意力层、MLP层或两者之间,以评估它们的各自性能。每个数据集的详细结果显示在附录A.3中。图2显示了数学推理数据集的平均准确率。我们可以观察到,对于Series Adapter,最佳位置是将其放置在MLP层之后,在数学推理数据集上实现了59.5%的平均准确率。至于Parallel Adapter,在将其放置在MLP层内时,它实现了61.7%的最佳性能。关于LoRA,我们需要将其同时插入多头注意力层和MLP层,以实现60%的最佳性能。
为了确定各种适配器的最佳配置,我们进行了对每种PEFT方法的关键变量的分析。我们比较了在数学推理数据集上的平均准确率。适配器的放置遵循从放置分析中得出的最佳设置。关于前缀调整,我们评估了在[10, 20, 30, 40]个虚拟令牌(vt)下的不同性能。对于串行和并行适配器,我们评估了瓶颈大小(bn)在[64, 128, 256, 512]的不同取值对性能的影响。对于LoRA,我们研究了不同排名值(r)在[4, 8, 16, 32]的影响。每个数据集的详细结果可以在附录A.4中找到。
图3展示了数学推理数据集上不同变量的平均准确率。可以注意到,当前缀调整中虚拟令牌的数量设置为10时,前缀调整在数学推理数据集上达到42.0%的平均准确率。通过将瓶颈维度配置为256,串行和并行适配器展示了最高水平的性能。然而,当瓶颈大小增加到512时,串行和并行适配器的准确性下降。LoRA的典型设置为排名8,但我们发现更大的排名可以提高LoRA的性能。当排名从8增加到32时,LoRA的平均准确率从60.0%增加到61.9%。
基于我们的综合放置和配置分析,我们已确定了每个适配器的最佳设置,这将在随后的实验中始终使用。
为了评估适配器在算术推理任务上的效果,我们进行了一项研究,其中适配器在Math10K数据集上进行了微调,随后在六个不同的数学推理数据集上进行了评估。作为基准,我们使用了GPT-3.5模型,具体是text-Davinci-003变体,用于根据Kojima等人的方法进行零样本CoT。GPT-3.5模型的结果可以在Wang等人中找到。表3报告了不同PEFT方法和基准的性能。平均而言,GPT-3.5模型(175B)在准确性方面优于基于适配器的PEFT LLMs。然而,对于诸如MultiArith、AddSub和SingleEq等简单的数学推理数据集,LLaMA-13B与LoRA等基于适配器的方法胜过GPT-3.5。值得注意的是,LLaMA-13B与LoRA实现了65.4%的平均准确率,约为GPT-3.5表现的92.8%。这表明,通过足够的任务特定训练数据,基于适配器的较小LLMs的PEFT具有实现与极大语言模型相媲美的性能的潜力。适配器化PEFT相对于GPT-3.5在简单任务(如MultiArith、AddSub和SingleEq)中的表现更优越。
然而,在更复杂的任务(如GSM8K和SVAMP)中仍存在挑战,这些任务需要基础基模型具备更高水平的语言理解和熟练度,从而导致明显的性能差距。在所采用的不同适配器中,LoRA在使用较少可训练参数的情况下取得了显著的性能。这意味着在任务特定的微调中,过多的可学习参数可能并非必要。总体而言,这些发现展示了基于适配器的较小LLMs在具有少量可训练参数的特定任务上取得高性能的潜力。
此外,我们评估了各种PEFT方法在常识推理任务中的功效。适配器经过Commonsense170K数据集的微调。我们用于常识推理的基准模型包括GPT-3(175B)、PaLM(540B)和ChatGPT。关于GPT-3和PaLM的结果可以在Touvron等人的研究中找到。为了评估ChatGPT在常识推理中的性能,我们使用了gpt-3.5-turbo API进行零样本CoT。零样本CoT提示与我们用于收集常识微调数据集的模板一致,详见附录A.2。表4呈现了使用不同LLMs的PEFT方法以及基准的性能。值得注意的是,LLaMA-13B与Series Adapter、Parallel Adapter和LoRA优于所有基线,包括被誉为迄今最令人印象深刻的LLM的ChatGPT。LLaMA-13B与Parallel Adapter的平均准确率达到81.5%,较ChatGPT提高了4.5%。需要注意的是,所有来自常识推理数据集的训练集都包含在微调数据Commonsense170K中。此外,我们观察到PEFT方法的性能受到基础模型能力的影响。LLaMA-7B和LLaMA-13B在常识推理能力上表现优越,相较于BLOOMz和GPT-J模型而言。
在比较PEFT方法在数学推理和常识推理任务上的表现时,我们可以观察到PEFT方法在常识推理领域表现出更为显著的结果。接下来,我们将从分布内(ID)和分布外(OOD)的角度分析导致这一现象的因素。在常识推理的情境下,微调数据集Commonsense170K包含了所有常识推理数据集的训练集。值得注意的是,PEFT方法已经表现出优于ChatGPT的能力。这一观察结果暗示,通过利用ID微调数据,像LLaMA-13B这样的较小语言模型可能在特定下游任务中超越ChatGPT和PaLM等更大的语言模型。然而,考虑到数学推理任务时,微调数据集Math10K仅包含了GSM8K和AQuA的训练集。在这方面,观察到PEFT方法,特别是LLaMA-13B与LoRA,相对于GPT-3.5在MultiArith、AddSub和SingleEq上表现出卓越性能。这些发现表明,PEFT方法可以提升LLMs的数学推理能力,并成功地应用于OOD数据集。然而,在评估PEFT方法在ID数据集GSM8K和AQuA上的性能时,与GPT-3.5相比仍然存在性能差距。这种差异可能是由于GSM8K和AQuA数据集在数学推理方面的更高复杂性,而较小LLMs的推理能力仍然有限。因此,在提高PEFT方法在复杂数学推理任务上的性能方面,找到策略代表了未来研究的潜在方向。
前几节已经展示了定量分析。在本节中,我们将提供定性示例,以展示不同模型输出的质量。表5显示了从GSM8K中随机选择的一个问题,以及使用不同PEFT方法的ChatGPT和LLaMA-13B模型的输出。更详细的示例可以在附录A.5中找到。ChatGPT展示了对问题的全面理解,并生成了两个步骤,"(36 * 2/3) = 24平方英尺"和"(24 * 24) = 576马赛克瓷砖",有效地解决了问题。然而,LLaMA-13B-Prefix模型的语言理解能力有限,在第一步中走错了方向。另一方面,带有Series Adapter的LLaMA-13B通过提供关键的两个步骤并执行正确的计算,产生了高质量的答案,得到了准确的结果。有趣的是,LLaMA-13B-Parallel和LLaMA-13B-LoRA生成了几乎相同的解释。然而,由于计算错误,LLaMA-13B-Parallel生成了错误的答案,陈述"24平方英尺 x 24平方英尺每平方英尺的马赛克瓷砖 = 600马赛克瓷砖"。总体而言,当配备了任务特定的微调数据时,像LLaMA-13B这样的较小语言模型可以生成令人印象深刻且高质量的答案,与ChatGPT产生的答案相媲美。
在本文中,我们开发了一个用户友好的框架,LLM-Adapter,将不同的适配器无缝集成到LLMs中,使研究人员能够为各种任务实现基于适配器的PEFT方法。为了评估不同PEFT方法在下游任务上的表现,我们构建了两个高质量的微调数据集,以提高PEFT在数学推理和常识推理任务上的性能。通过利用LLM-Adapter工具包和构建的微调数据集,我们进行了全面的经验研究,并找到了有关不同PEFT方法的最佳放置和配置、适配器架构的影响以及ID和OOD场景的影响的答案。我们希望这项工作将鼓励进一步研究LLMs的PEFT方法。
这项工作有两个限制。首先,由于计算资源有限,我们无法评估更大语言模型,如LLaMA-33B和LLaMA-65B的性能。预计这些更大的模型,具有增强的语言理解能力,将取得更优越的性能。其次,本文没有深入探讨不同适配器的组合。鉴于涉及各种PEFT方法的组合的广泛搜索空间,我们计划在未来的研究中探索这个方向。
论文地址:https://arxiv.org/pdf/2304.01933.pdf
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-05-14
2024-04-25
2024-07-18
2024-04-26
2024-08-13
2024-12-22
2024-12-21
2024-12-21
2024-12-21
2024-12-21
2024-12-20
2024-12-20
2024-12-19