查看原文
其他

QLoRA:一种高效LLMs微调方法,48G内存可调LLaMA-65B (开源)

ShuYini AINLPer 2023-07-10
点击上方AINLPer,设为星标
更多干货,第一时间送达

引言

 QLoRA是一种「高效的微调方法」,可以在保持完整的16位微调任务性能的情况下,将内存使用降低到足以「在单个48GB GPU上微调650亿参数模型」。QLORA通过冻结的4位量化预训练语言模型向低秩适配器(LoRA)反向传播梯度。作者公布了他们训练的系列模型Guanaco,与之前公开发布的所有模型相比,在Vicuna基准测试中表现更好,「只需要在单个GPU上微调24小时就能达到ChatGPT性能水平的99.3%」

Paper:https://arxiv.org/pdf/2305.14314.pdf

Code:https://github.com/artidoro/qlora

背景介绍

 大型语言模型(LLM)调优是提高其性能的最有效的方式,它允许我们添加所需的内容或删除不需要的内容。但是,「微调非常大的模型的成本过高;对650亿参数的LLaMA模型进行进行16位微调需要超过780GB的GPU内存」。虽然最近的量化方法可以减少LLM的内存占用量,但是这些技术仅适用于推理,并不适合在训练过程中使用。

 本文首次证明可以在不降低任何性能的情况下微调量化4-bit模型。提出了一种高效的模型训练方法QLoRA,该方法使用一种新颖的高精度技术将预训练模型量化为4-bit,然后添加一小组可学习的低秩适配器权重( Low-rank Adapter weights),这些权重通过量化权重的反向传播梯度进行调优。

 与16-bit完全微调基线相比,QLORA 将微调65B参数模型的平均内存需求从 >780GB降低到 <48GB,并且不会降低模型预测性能。「这标志着LLM调优发生了重大转变,大模型的调优并非遥不可及」:现在是迄今为止最大的公开可用模型,可在单个 GPU 上进行微调。作者使用 QLORA,训练了 Guanaco 系列模型,在单个消费类 GPU 上训练不到12小时,模型在 Vicuna 基准测试中达到了 ChatGPT 性能水平的97.8%;在单个专业级GPU上训练了不到24小时,模型在 Vicuna 基准测试上达到了 ChatGPT 性能水平的99.3%;在部署过程中,最小的 Guanaco 模型(7B 参数)仅需要 5 GB 的内存,并且在 Vicuna 基准测试中比 26 GB 的 Alpaca模型高出20个百分点以上。

QLoRA微调方法

 QLORA是一种针对深度神经网络的低精度量化和微调技术,能够实现高保真的4位微调。「它采用了两种技术——4位NormalFloat (NF4)量化和Double Quantization」。同时,引入了Paged Optimizers,它可以避免梯度检查点操作时内存爆满导致的内存错误。QLORA包含一种低精度存储数据类型(通常为4-bit)和一种计算数据类型(通常为BFloat16)。在实践中,QLORA权重张量使用时,需要将将张量去量化为BFloat16,然后在16位计算精度下进行矩阵乘法运算。 QLORA包含两个组件:4-bit NormalFloat量化和Double Quantization。其中:4-bit NormalFloat数据类型是基于Quantile Quantization技术开发的,通过估计输入张量的分位数来保证每个量化区间分配相等的值。Double Quantization是将额外的量化常数进行量化以减小内存开销的过程。

 为了防止梯度检查点所引起的内存波动导致的内存不足错误,QLORA引入了Paged Optimizers技术。这种技术使用了NVIDIA统一内存的特性,实现了CPU和GPU之间自动的页面转换,在GPU内存不足的情况下自动将优化器状态转移到CPU内存。QLORA通常使用4位NormalFloat作为存储数据类型和16位BrainFloat作为计算数据类型,在计算梯度时只对LoRA的参数计算梯度。

QLoRA对比标准FT

 QLoRA 是否能像标准模型 Fine-tuning 一样有效呢?作者分析了 QLoRA 的各个组成部分,包括 NormalFloat4 相对于标准 Float4 的影响,以及对比了QLoRA的16-bit Adapter FT和标准FT。 在语言模型和零样本任务的评估中,「4-bit NormalFloat数据类型(NF4)表现出更好的性能,优于4-bit浮点数(FP4)「。如上表所示:研究采用了不同类型的量化LLMs(OPT,BLOOM,Pythia,LLaMA)以及不同大小(125M到65B),比较NF4、FP4和Int4的性能,并发现NF4能够显著提升性能,双重量化可以减少内存占用同时不影响性能。 比较RoBERTA和T5模型在GLUE和Super-NaturalInstructions数据集上结果表明:」无论是使用16位、8位还是4位的适配器方法,都能够复制全16位微调的基准的性能」。这说明,尽管量化过程中会存在性能损失,但通过适配器微调,完全可以恢复这些性能。

Guanaco系列模型

 作者使用4-bitQLORA量化技术对不同规模参数模型进行调优,并与16位精度调优进行对比。结果表明,使用双量化的NF4可以匹配BFloat16性能,并且FP4调优结果都要比两者低一个百分点。如下图所示: 基于QLoRA调优方法,作者对OASST1进行调优得到系列模型Guanaco,并于当前主流模型进行对比,在Vicuna基准上的结果如下图所示,可以发现「:Guanaco-65B是仅次于GPT-4的表现最优秀的模型,相对于ChatGPT的表现达到了99.3%,最小的 Guanaco模型(7B参数)仅需要5GB的内存,并且在Vicuna基准测试中比26GB的Alpaca模型高出20个百分点以上」

本文评价

 该阐述了QLoRA方法可以使用4位基础模型和低秩适配器达到16位全精度微调的效果,并对聊天机器人的性能进行了评估。但该方法未在33B和65B规模上比较全精度微调的结果,并且使用的基准数据集可能限制了评价的泛化性。

推荐阅读

[1]斯坦福发布AlpacaFarm,RLHF人工成本降低45倍!

[2]Meta最新模型LIMA,没有RLHF,远胜Alpaca!!

[3]强!中科院调研了27个大模型,并指出5个重要挑战

[4]三种Prompt方法大幅提升大模型LLMs推理能力

[5]一文了解大型语言模型的上下文学习能力(ICL)

[6]MPT-7B:可商用的开源模型,效果堪比LLaMA-7B

点击下方链接🔗关注我们

「资料整理不易,点个再看吧」

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存