LoRA: 大语言模型个性化的最佳实践
出品人: Towhee 技术团队
作者:王翔宇
大型语言模型(LLM)在今年获得了极大的关注。在以往,预训练+微调(finetuning)成为了让模型适配于特定数据的最佳范式。然而随着大型模型的出现,这种完全微调(重新训练所有模型参数)将变得越来越不可行。例如,如果使用 GPT-3 175B,部署独立的经微调的模型实例(每个实例都有 175B 个参数)成本过高。在 2021 年,微软提出了一个方法叫 LoRA(低秩适应),在大模型时代越来越受到重视,并且带来了非常好的效果。该方法冻结预训练模型的权重,并将可训练的秩分解矩阵注入到 Transformer 体系结构的每个层中,从而大大减少了下游任务所需的可训练参数数量。相对于使用 Adam 算法微调的 GPT-3 175B 模型,LoRA 可以将可训练参数数量降低 10,000 倍,GPU 内存需求减少 3 倍。此外,LoRA 在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 模型的模型质量方面表现与微调相当或更好,尽管它具有较少的可训练参数,更高的训练吞吐量,并且不像适配器(adapters),不会增加推理延迟。
LoRA's reparametrization: only train A and B.
Performance of RoBERTa pretrained with/without LoRA
这个实验结果很好地说明了这个算法的有效性。作者使用了 RoBERTa 模型在各个下游任务做 finetune。FT 就是使用全部参数进行训练,BitFit 是只训练 bias vector 冻结住其他全部的权重。可以看出除了完全 finetune,几种其他适配方法所训练的参数量都比较小。而 LoRA 可以训练较少的参数得到更好的结果。
LoRA 不仅在 NLP 可以证明自己是很有效的办法,因为现在越来越多的算法都是基于 transformer 开发,而这个方法针对 transformer 非常容易适配。现在很火的 stable-diffusion 也已经被 LoRA 所攻陷,让大部分只拥有有限算力的用户可以快速 finetune 出一个针对自己数据所使用的 LoRA 模型。随着大模型越来越受到重视,成为各种任务的基线,相信这个方法会成为大模型时代的最常规的操作。相关资料:
评论