什么是量化低秩适应(QLoRA)?一种在低显存下微调大模型的方法
量化低秩适应(QLoRA)是 arXiv 论文《QLoRA: Efficient Finetuning of Quantized LLMs》提出的一种高效微调方法:它让梯度穿过一个冻结的 4 比特量化预训练语言模型,回传到低秩适配器(LoRA)上,从而在显著降低显存占用的同时,保持与 16 比特全量微调相当的任务表现。
量化低秩适应(Quantized Low-Rank Adaptation,QLoRA)是一种用于大语言模型的高效微调(finetuning)方法。按提出该方法的论文描述,它把梯度反向传播穿过一个冻结的、4 比特量化的预训练语言模型,再传进低秩适配器(Low Rank Adapters,LoRA)中完成训练。它要解决的问题是:常规微调对显存的需求过高,使参数量很大的模型难以在有限硬件上训练;QLoRA 通过量化基座模型并只训练少量附加参数,把这一门槛压低。
为什么重要
在 QLoRA 出现之前,微调一个大语言模型的常见做法是加载 16 比特精度的权重,并对模型参数(或其一部分)做梯度更新。论文给出的对照场景是「full 16-bit finetuning」,即 16 比特全量微调。这种做法的代价集中在显存上:模型权重本身占据大量显存,训练过程还需要保存梯度、优化器状态与激活值,模型越大,所需硬件越昂贵,很多规模的模型在单卡上根本跑不起来。
论文明确指出,QLoRA 的目标是「reduces memory usage enough to finetune a 65B parameter model on a single 48GB GPU while preserving full 16-bit finetuning task performance」——把显存占用降到足以在单块 48GB GPU 上微调 650 亿参数模型,同时保持 16 比特全量微调的任务表现。论文还提到,它用该方法微调了超过 1000 个模型,覆盖 LLaMA、T5 等模型类型,以及用常规微调难以运行的规模(例如 330 亿与 650 亿参数模型)。这些数字均出自论文自述,属于该论文报告的实验结果,而非独立复现的行业结论。
工作机制
QLoRA 的核心思路可以拆成「冻结的量化基座 + 可训练的低秩适配器」两部分,论文另外提出三项节省显存的具体技术:
- 4 比特量化基座 + 低秩适配器:预训练语言模型被量化到 4 比特并保持冻结,不直接更新其权重;梯度反向传播穿过这个量化模型,作用在 LoRA 适配器上。也就是说,训练时被优化的只有适配器参数。
- 4 比特 NormalFloat(NF4):论文提出的一种新数据类型,论文称其对服从正态分布的权重而言是「information theoretically optimal」(信息论意义上最优)的。
- 双重量化(double quantization):通过对量化常数本身再做量化,降低平均显存占用。
- 分页优化器(paged optimizers):用于管理显存峰值(memory spikes)。
论文把上述设计概括为「在不牺牲性能的前提下节省显存」的一系列创新。需要说明的是,这些机制的名称与作用来自论文自身的表述;论文同时发布了模型与代码,包括用于 4 比特训练的 CUDA 内核。
典型例子
论文中出现的具体例子包括:
- Guanaco 模型家族:论文称这是他们最好的模型家族,在 Vicuna 基准上优于此前所有公开释出的模型,达到 ChatGPT 性能水平的 99.3%,而单块 GPU 上只需 24 小时微调。这些是论文报告的数字。
- 大规模微调实验:用 QLoRA 微调了 1000 多个模型,覆盖 8 个指令数据集、多种模型类型(LLaMA、T5)以及 330 亿、650 亿参数等规模。
- 小数据集的强结果:论文称,在小型高质量数据集上做 QLoRA 微调即可得到当时的最优结果(state-of-the-art),即使所用模型比此前的最优方案更小。
- 评估方法对比:论文基于人工评估与 GPT-4 评估分析聊天机器人表现,认为 GPT-4 评估是人工评估的一种廉价且合理的替代;同时指出当时的聊天机器人基准不足以可信地衡量聊天机器人性能水平,并用「lemon-picked」分析展示了 Guanaco 相对 ChatGPT 的失败之处。
边界与常见误解
第一,QLoRA 不等于「用量化模型直接推理」。它的量化对象是训练时的冻结基座,训练目标落在低秩适配器上;论文强调的是在保持 16 比特全量微调任务表现的前提下降低显存,而不是宣称量化本身无损。
第二,「保持全量微调性能」是论文在其设定下报告的结果,应理解为该论文的实验结论,不宜扩展成对所有模型、所有任务、所有数据集的普遍保证。论文自己也指出,当时的聊天机器人基准不可信,并以 lemon-picked 分析展示了 Guanaco 相对 ChatGPT 的失败案例,说明其能力仍有明确差距。
第三,显存节省有具体前提。论文的典型说法是单块 48GB GPU 上微调 650 亿参数模型,这一门槛与量化位宽、适配器配置、序列长度、批大小等条件相关;换到更小的显卡或更长的上下文,能否成立需要按具体配置判断,论文并未给出普适的显存公式。
第四,QLoRA 建立在 LoRA 之上,可训练参数只是适配器部分,因此它继承低秩适配这一类方法的一般特性;把它误解为「对全部参数做 4 比特训练」并不准确。
第五,论文报告的 99.3%、24 小时、1000 多个模型等数字均来自作者自述的实验环境,属于原始论文的结论,读者不应将其视为经第三方独立验证的基准成绩。