基于QLoRA方法微调的Guanaco 65B模型据称效果超越目前所有的开源模型,并且比ChatGPT更加强大(基于人类评测结果和GPT-4的评测结果),打败了Google Bard,并接近GPT-4。Guanaco包含4个版本,从70亿参数到650亿参数,都将开源!由于Guanaco是基于MetaAI的LLaMA微调,因此,尽管它是开源的,但是它不可以商用!
这篇论文和这项工作里面包含了非常多的与大模型相关的数据和结论,建议大家原文仔细阅读。里面包含了不同模型的显存占用、目前一些大模型评测基准的偏差等。本文将主要描述其QLoRA的核心思想和重要结论。
随着大型语言模型(LLMs)在各种任务中展现出令人瞩目的表现,如何有效地微调这些模型以优化其性能已经成为了研究的重点。
尽管大模型的能力很强,但是对于特定领域的数据集来说,微调依然是不可避免的工作。主要原因有2个:
然而,微调非常大的模型具有高昂的成本,650亿参数规模的语言模型,如LLaMA,其16位浮点精度的模型文件大小约200多G,载入到显存中使用就需要260多G,而对其微调则需要高达780G的显存。显然,这样的成本难以接受。
此前,对大模型进行压缩和微调已经有了很多成果。其中最著名的是微软在2021年提出的LoRA(Low-Rank Adaptation,低秩适应)方法(见上图)。这种方法的提出,是为了解决全模型微调的一些问题,全模型微调会重新训练所有模型参数,但随着我们预训练的模型越来越大,全模型微调变得越来越不可行。LoRA的工作原理是冻结预训练的模型权重,并在transformer架构的每一层注入可训练的秩分解矩阵,大大减少了下游任务的可训练参数的数量。相比使用Adam微调的GPT-3 175B,LoRA可以将可训练参数的数量减少10,000倍,GPU内存需求减少3倍。
但是,尽管如此,对于650亿参数规模的LLaMA模型来说,利用LoRA模型微调依然是成本很高。为此,华盛顿大学的NLP小组提出了QLoRA方法,即LoRA的量化版本。可以支持在单张消费级显卡上微调330亿参数的大模型,在单张专业级显卡上微调650亿参数规模大模型。
具体来说,QLoRA方法的实现主要用来3个方面的优化:
论文中也给出了QLoRA方法与全量微调和LoRA方法差异的示意图,简单明了:
简单来说,相比较原始的LoRA,QLoRA将16-bit的transformer模型变成了4-bit的transformer模型(不过这里说的是4bit的NormalFloat,不是传统的4-bit),此外利用的NVIDIA的显存页优化器进行了优化,避免微调过程中出现显存的spikes。
其实,对于LoRA方法本身来说,它的内存占用非常小。因此,可以考虑使用多个Adapter来提高性能。换句话说,大模型微调的过程中,对显存的消耗主要是激活梯度,而不是其它的部分,其中,LoRA的Adapter参数规模只有模型权重的千分之二左右。那么,即使我们增加Adapter其实也不会提高显存的消耗。因此,将模型权重进行高强度的量化降低显存,再使用多个Adapter来减少模型量化带来的性能损失,就可以达到降低显存要求的同时保留原始模型的性能这2个目标的均衡了。
UWNLP的研究人员用QLoRA方法训练了1000多个模型来测试这种方法的性能。模型参数从8000万到650亿之间多个,并在不同的质量数据集上做了微调。同时,他们还基于这种方法训练了一个chat的模型Guanaco。这里我们总结一下Guanaco相关模型的参数和测试结果。
前面分析了,QLoRA方法的一个重要思想是对模型权重做量化,使用多个Adapter减少性能损失。因此,基于QLoRA方法微调的模型显存占用方面很有优势。根据论文的数据,有如下模型微调的显存要求:
微调模型的显存降低固然很重要。但是,核心的问题还是看性能下降多少。根据论文提供的数据,基于QLoRA方法微调的Guanaco模型性能与原始模型相比几乎没有下降!
下表是基于人类评价基准获得的不同模型的性能:
可以看到,Guanaco 65B参数的模型表现已经与GPT-4差不多,比ChatGPT、Bard好很多。
当然,论文中也比较了在MMLU任务上的性能等。我们就不详细列举了。
在这篇论文中的大量实验中,UWNLP的研究人员也有几个比较有意思的发现和结论,包括:
这里说一下第二条。MMLU是一种用于评估语言理解模型的方法。传统的语言理解模型评估通常使用自动评估指标,如准确率(accuracy)或BLEU分数。然而,这些指标无法准确衡量模型对于真实语言理解任务的表现。MMLU评测的目标是提供更有意义的度量,以更好地评估语言理解模型。它在业界使用很广泛。而Vicuna的人类评估则是让大家在一个系统中提问,然后给出匿名的2个模型的结果,然后提问者给出谁更好之后它再公布模型结果。基于这种方式来收集大家的评估。
总结一下QLoRA方法以及基于QLoRA方法发布的Guanaco模型:
此外,UWNLP还认为目前的Vicuna评测基准规模太小,他们还提出了一个10倍规模的评测Open Assistant Data。
官方还提供了一个Google Colab,里面会根据提问由GPT-4和Guanaco 65B来生成答案,你可以自己比较结果,勾选较好的,然后它公布哪个答案由GPT-4生成,哪个是Guanaco 65B生成,亲自比较:https://colab.research.google.com/drive/1kK6xasHiav9nhiRUJjPMZb4fAED4qRHb?usp=sharing