人人有“丹”炼—大模型低成本微调技术

发布时间:2023-04-10 07:00

摘要

ChatGPT等大模型取得惊人的成就。但大模型参数量巨大,这使得针对不同任务的模型微调成本高昂。本文讨论了低成本微调大模型的技术。这些技术一般会保持原模型参数,通过新增少量可学习参数来适配下游任务。通过这种适配方式使得面向下游任务的大模型微调对硬件的存储和计算需求大大降低,从而可以根据个人需求开发出自己的ChatGPT。这样AI技术就能得到更广泛的普及,进而惠及更多人。

 

1.背景介绍

ChatGPT无疑是近来最引人瞩目的AI技术进展,由于它优异的表现,围绕该技术的各种讨论和应用尝试层出不穷,无数团队和研究者都在尝试复现或创造出更好的生成模型及应用。ChatGPT是在OPENAI开发的1750亿参数在预训练GPT-3/4上重训练的模型,超大规模的参数正是其优秀生成能力的基础。但是巨大的规模使得训练和调整模型的成本高昂,需要海量的GPU和计算时间。

 

因此,有些研究团队提出了性能匹敌GPT-3但参数量规模小的模型,比如关注度较高的Meta LLaMa系列。据称,参数量少10倍的LLaMa-13B在多组性能测试中可以达到GPT-3表现。在这些较小规模的预训练模型基础上,其它团队可以结合自己需求再重新训练得到自己的“ChatGPT”。

 

即使模型规模变小,在预训练模型基础上按照传统的重训练方法来调整模型的计算量和数据量仍然很高。这需要高性能GPU和计算节点才能完成,普通用户或个人仍然难以承受。针对新的任务,我们可否保持预训练参数不变,而是适当新增参数以适应学习新任务呢?如果新增参数很少,那么重训练成本就会进一步大大降低。本文要讨论的各类Adapter技术正是符合这种需求的大模型微调技术,比如被广泛应用到stable diffusion、Alpaca等项目的LoRA。

 

2.基于Adapter的微调技术

如上文所述,Adapter类方法核心是模型微调时保持预训练参数不变,适当增加少量参数来学习预训练任务,这样可以大大降低重训练成本。推理应用时,混合预训练参数和新增参数的结果作为输出。由于新增参数很少,新增的推理计算负担可以忽略。Adaper可以设计为可插拔式,不同任务只需要接不同的adaper参数即可。

 

Adapter方法和增量学习与prompt tuning等技术相关。除了前面提到的LoRA,目前已经有多种新增参数的模型微调技术。虽然都是增加少量可训练参数,但各种方法将这些参数接入预训练模型的方式不同。

 

2.1.串接式Adapter

新增参数串接式接入是较早出现的Adapter方法。其主要特点是在预训练模型各功能模块之后直接插入新增的Adapter模块。比较典型的实现是在Transformer模型的Attention和FFN模块后各插入一个Adapter模块。

 

2.1.1 Bottleneck Adapters

Bottleneck Adapter是最早提出的方法之一[1]。如图1所述,在大模型的attention和FFN模块后分别串联了Adapter模块。Adapter内部是一个两层mlp结构,输入模块的Activation被第一个mlp down-project参数矩阵降维,经过非线性变换后再由第二个mlp up-project参数矩阵将中间激活升到输入时的维度。这样Activation在Adapter中经过了压缩和扩展,即经过了一个Bottleneck过程。

 

图1 Bottleneck Adapter结构(Fig.2 in [1])

图片来源:https://arxiv.org/pdf/1902.00751.pdf

 

后面可以看到,Bottleneck是许多Adapter方法的基本结构。这种实现在参数存储和计算上有额外的优势。这是因为down和up-project矩阵是长方形矩阵。不考虑中间的非线性变换,这两次矩阵连乘等效于一个高维低秩方阵乘法。但down和up-project矩阵的参数量之和低于等效的方阵,而且两次连乘所需的计算量也少于等效方阵乘。

 

2.1.2 Compacter

与Bottleneck方法实现相比,Compacter方法的改进是将Adapter的参数矩阵进一步分解为多个rank one参数向量Bi和低维参数方阵Ai参数外积之和。这样就压缩了新增参数量。

 

图2 Compacter的实现(fig.3 in [2])

图片来源:https://arxiv.org/pdf/2106.04647.pdf

 

此外,一个Adapter中down-, up-project的两个矩阵共享同一组低维参数方阵Ai。这样该方法就更进一步压缩了Adapter中新增参数。减少可学习参数量也同时降低了训练所需的计算量。

 

面向不同的应用及优化,串接式Adapter还有不同的变种,如Adapter fusion、drop等等。这些方法原理大致接近,实施细节上略有区别,不再赘述。

 

2.2并联式Adapter

并联式方法最典型的实现是LoRA(low-rank adapter)。它们在Adapter模块本身结构上与串联类方法式相同的。但并联方法的模块以并联形式接入预训练模型主干,如图3所示。

 

图3 LoRA的实现(Fig.1 in [3])

图片来源:https://arxiv.org/pdf/2106.09685.pdf

 

与图1的结构类似,LoRA模块包括down project(A)和up-proejct(B)两个长方形低秩矩阵。其长方向维度与主干的hidden维度一致,而短方向维度则是低秩维度,远低于hidden维度。这样新增需训练参数远少于主干模型参数。

 

2.3可学习prompt

前述方法均是通过新增Adapter模块和改变模型结构来改变预训练模型的适配性。当前对大模型的一种观点是其能力已经很强大,无需训练只通过合适的提示就能适配新下游任务。 但是合适的提示不一定可以通过人类可阅读文本构造出来。为此我们可以新增可学习的token以匹配下游任务。这些tokens不一定和自然语言的单词对应,是token表征空间那些‘只可意会,不可言传’的元素。

 

图4 常规fine tuning(上)和prompt-tuning(下)的对比(fig.1 in [4])

图片来源:https://arxiv.org/pdf/2101.00190.pdf

 

Prefix-Tuning就是一种可学习提示方法。如图4,其特点是在提示开头插入可学习token,模型参数不变。针对不同任务该方法仅训练不同的可学习token。

 

尽管实现形式上有所不同,但prefix tuning也是保持预训练模型参数不变,新增少量可学习参数来适配不同下游任务。所不同仅仅是新增参数一般看作是输入prompt的一部分。从广义上看,相当于一种在模型开头插入新增参数的adapter方法。

 

2.4组合实现

尽管各类Adapter方法实现上有所不同,但这些方法都具有低秩参数矩阵组合和调整数据流向的特点,可以从结构视角统一表达为图5形式[5]

 

图5 不同adapter的结构

图片来源:https://arxiv.org/pdf/2110.04366.pdf

 

可以看出,不同方法在数据流向上有所区别,通过门控,我们就可以将不同adapters接入到统一模型主干,从而灵活适应各种下游任务[6]

 

图6 集成门控单元的统一adapter框架(Fig.1 in [6])

图片来源:https://arxiv.org/pdf/2110.07577.pdf

 

3.Adapter方法特色总结

如前文所述,各类Adapter方法都是针对大模型参数量大,适配下游任务时计算量大成本高而提出的微调技术。具有如下的共同特点:

    • 需训练参数少,远小于pretrained模型参数量(千分之一)

    • 新增参数可以独立于主模型,单独提取和共享

    • 多个Adapter可以组合使用,灵活插入不同部分

    • finetuning效果不低于全参数finetuning 

从训练角度来看,基于Adapter技术的微调训练计算和存储代价低,可实现推理的设备就可以finetuning模型。另外,因为无latency要求,finetuning可用类似FlexGen的offloading技术,12G显卡即可完成175B模型的finetuning。

 

从推理实现来看,Adpater方法新增了少量参数和计算。但由于采用了双矩阵的Bottleneck技术,计算代价很小。计算值online插入pretrained模型的结果做混合即可。Adapter技术在实施时还具有参数保存高效的优势。针对不同任务,无需保存多个版本的全部参数,只需一份预训练参数+多份Adaptor参数,节省部署代价。

 

4.Adapter在大模型中应用

Adapter技术为低成本大模型finetuning提供了一种可能。对于一般用户,如果拥有了开源的基础模型和Adapter训练工具,就可以用自己的数据开发出定制化的大模型应用。

 

图7 低成本大模型微调构成

 

开源社区已经在多个大模型应用项目中融入了低成本微调的Adapter。其中影响最大的是用于stable diffsion图像生成定制的SD+LoRA项目。它在diffusion模型的cross-attention模块并接了LoRA模块。整体新增参数量仅为pretrained参数的千分之一水平。该实现可以在民用显卡上数小时就完成定制化的模型微调。

 

随着ChatGPT的热潮,AI社区已经提出了许多相关的Adapter finetuning项目,比如Stanford Alpaca项目的Alpaca-lora项目[7]。类似之前Stable Diffusion和 LoRa的结合,这些项目开发的工具可以和HFRL适配,开发出低成本的ChatGPT。可以预期,随着这些工具的成熟和ChatGPT类应用的持续深入,低成本的Adapter版大模型开发会成为下一代大模型应用的热点。

 

5. 结论与思考

本文讨论了应用于大模型的低成本微调Adapter方法。这类方法在保持预训练参数不变条件下,通过新增少量参数来调整模型对新任务的能力。由于新增参数远远少于基础模型参数,微调大模型的成本大大降低。结合目前正在发展的4bit量化等压缩技术,我们甚至可以实现在个人电脑和低端民用显卡上实现大模型的运行和适配,从而根据个人需求开发出自己的ChatGPT。这样前沿AI技术就能得到更广泛的普及,使更多人从中受惠。

 

参考文献

[1] N. Houlsby et. al., Parameter-Efficient Transfer Learning for NLP,Google Research,arXiv:1902.00751v2.

[2] R. Mahabadi, J. Henderson, S. Ruder, COMPACTER: Efficient Low-Rank Hypercomplex Adapter Layers, arXiv:2106.04647v2

[3] E. Hu, et.al., LoRA: Low-Rank Adaptation of Large Language Models, arXiv:2106.09685v2.

[4] X. Li, P. Liang, Prefix-Tuning: Optimizing Continuous Prompts for Generation, arXiv:2101.00190v1.

[5] J. He, et.al., Towards a Unified View of Parameter-Efficient Transfer Learning, ICLR2022.

[6] Y. Mao, et. al., A Unified Framework for Parameter-Efficient Language Model Tuning(PELT), arXiv:2110.07577v3

[7] https://github.com/tloen/alpaca-lora.

上一个: “为了全人类更好地交流”:通用语音识别

下一个: ChatGPT新玩法:Visual-ChatGPT开启GPT多模态交流范式

近期文章

AI 智能体:应用前景与对算力需求的影响

人工智能技术的迅猛发展,尤其是 AI 智能体这一核心部分。本文讨论了AI智能体的定义、应用前景和其对算力需求的影响。

2023-11-13

查看更多