Abstract

我们展示了 QLoRA,这是一种高效的微调方法,它能够显著降低内存占用,从而在单块 48GB GPU 上微调 650 亿(65B)参数的模型,同时保留完整的 16 位(16-bit)微调任务性能 。QLoRA 通过将梯度穿过一个冻结的、4比特(4-bit)量化的预训练语言模型,反向传播到低秩适配器(Low Rank Adapters, LoRA)中 。我们表现最好的模型系列被命名为 Guanaco,它在 Vicuna 基准测试中超越了此前所有公开发布的模型,在仅需单块 GPU 进行 24 小时微调的情况下,达到了 ChatGPT 性能水平的 99.3% 。QLoRA 引入了多项创新以在不牺牲性能的前提下节省内存:(a) 4比特正态浮点(4-bit NormalFloat, NF4),这是一种对于正态分布权重在信息论上具有最优性的新型数据类型;(b) 双量化(Double Quantization),通过对量化常数进行量化来减少平均内存占用;以及 (c) 分页优化器(Paged Optimizers),用于管理内存峰值(memory spikes)。我们使用 QLoRA 微调了 1000 多个模型,对 8 个指令数据集、多种模型类型(LLaMA, T5)以及常规微调无法运行的大规模模型(例如 33B 和 65B 参数模型)的指令遵循(instruction following)和聊天机器人性能进行了详细分析 。我们的结果表明,即使使用比此前的 SoTA(最前沿)更小的模型,在小型高质量数据集上进行 QLoRA 微调也能达到最前沿(State-of-the-art, SoTA)的结果 。我们提供了基于人工和 GPT-4 评估的聊天机器人性能详细分析,结果表明 GPT-4 评估是人工评估的一种廉价且合理的替代方案 。此外,我们发现当前的聊天机器人基准测试在准确评估聊天机器人的性能水平方面并不可信 。一项劣选分析(lemon-picked analysis)展示了 Guanaco 与 ChatGPT 相比失败的地方 。我们发布了所有的模型和代码,包括用于 4比特(4-bit)训练的 CUDA 内核 。

1 Introduction

对大规模语言模型(LLM)进行微调是一种提高其性能的非常有效的方法【40,62,43,61,59,37】,并且可以增加期望的行为或去除不希望的行为【43,2,4】。然而,对非常大的模型进行微调是极其昂贵的;常规的16位微调LLaMA 65B参数模型【57】需要超过780GB的GPU内存。尽管最近的量化方法能够减少LLM的内存占用【14,13,18,66】,这些技术仅在推理时有效,且在训练过程中无法使用【65】。

我们首次展示了可以在不降低性能的情况下微调量化的4位模型。我们的方法QLORA,使用了一种新型的高精度技术,将预训练模型量化为4位,然后通过反向传播梯度,调整一小组可学习的低秩适配器权重【28】。

QLORA将微调一个65B参数模型的平均内存需求从超过780GB的GPU内存降低到不到48GB,而与16位完全微调基线相比,运行时或预测性能没有下降。这标志着LLM微调可访问性的重要转变:目前,最大且公开可用的模型可以在单个GPU上进行微调。使用QLORA,我们训练了Guanaco系列模型,第二好的模型在Vicuna【10】基准测试中达到了ChatGPT的97.8%的性能水平,并且可以在不到12小时内在单个消费级GPU上完成训练;使用单个专业GPU,经过24小时训练,我们的最大模型达到了99.3%的性能,基本上缩小了与ChatGPT在Vicuna基准测试中的差距。部署时,我们最小的Guanaco模型(7B参数)仅需要5GB内存,并且在Vicuna基准测试中比一个26GB的Alpaca模型超出了20个百分点(表6)。

QLORA引入了多项创新,旨在在不牺牲性能的情况下减少内存使用:(1)4位NormalFloat,一种信息理论上最优的量化数据类型,适用于正态分布数据,实验结果表明其优于4位整数和4位浮点数;(2)双重量化,一种通过量化量化常数来节省平均约0.37位每个参数内存的方法(对于一个65B模型,大约节省3GB);(3)分页优化器,使用NVIDIA统一内存来避免在处理长序列长度的迷你批次时发生梯度检查点内存激增。我们将这些贡献结合在一个更好调优的LoRA方法中,其中在每个网络层都包含适配器,从而避免了之前工作的几乎所有准确性权衡。

QLORA的高效性使我们能够在由于内存开销无法使用常规微调的模型规模上进行深入研究,特别是指令微调和聊天机器人性能。因此,我们在多个指令微调数据集、模型架构和从80M到65B参数的不同规模模型上训练了超过1000个模型。除了展示QLORA恢复16位性能(第4节)并训练最先进的聊天机器人Guanaco(第5节),我们还分析了训练模型中的趋势。首先,我们发现数据质量比数据集大小更为重要,例如,一个包含9k样本的数据集(OASST1)在聊天机器人性能上超过了一个包含450k样本的数据集(FLAN v2,经过子抽样),即使这两个数据集都旨在支持指令跟随泛化。其次,我们展示了强大的大规模多任务语言理解(MMLU)基准性能并不意味着强大的Vicuna聊天机器人基准性能,反之亦然——换句话说,数据集的适用性比数据集的大小对特定任务更为重要。

此外,我们还提供了一个广泛的聊天机器人性能分析,使用了人类评审员和GPT-4进行评估。我们使用比赛式基准测试,模型之间进行比赛,以为给定的提示生成最佳响应。比赛的胜者由GPT-4或人类注释员判定。比赛结果被汇总为Elo评分【16,17】,这决定了聊天机器人性能的排名。我们发现GPT-4和人类评审员在比赛中对模型性能的排名大体一致,但也发现存在强烈的不一致情况。因此,我们强调,尽管基于模型的评估为人类标注提供了一种廉价的替代方法,但它也有不确定性。

我们通过对Guanaco模型的定性分析增强了我们的聊天机器人基准测试结果。我们的分析突出了定量基准测试未能捕捉到的成功和失败案例。

我们发布了所有模型生成的内容,并附有人类和GPT-4的注释,以促进进一步研究。我们将代码库和CUDA内核开源,并将我们的方法集成到Hugging Face transformers堆栈中【64】,使其对所有人都易于访问。我们发布了一组适配器,适用于7B/13B/33B/65B规模的模型,这些模型在8个不同的指令跟随数据集上进行了训练,共计32个不同的开源微调模型。

2 Background

3 QLoRA Finetuning

4 QLoRA vs. Standard Finetuning

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐