要解决的问题:显存
微调大语言模型的瓶颈往往不在算力,而在显存。一次 16 位微调要同时把模型权重、梯度、优化器状态放在 GPU 里,这些占用量都随参数规模增长。结果是,公开可得的大模型大多由拥有整机集群的团队来适配,只有单张显卡的研究者难以参与。Tim Dettmers、Artidoro Pagnoni、Ari Holtzman 和 Luke Zettlemoyer 的 QLoRA 论文于 2023 年 5 月 23 日提交到 arXiv,针对的正是这个瓶颈[1]。
怎么做的
方法让梯度反向传播穿过一个冻结的、4 位量化的预训练语言模型,进入低秩适配器(Low Rank Adapters)[1]。这里叠了两个想法。其一是量化(quantization):每个权重不再用通常的 16 位存储,而只保留很少几位,模型体积因此缩小到大约四分之一。其二是低秩适配器:预训练权重完全不更新,真正参与训练的只是附加在旁边的若干小矩阵,所以优化器状态也很小。基础模型被冻结并压缩之后,原本要留给数十亿参数梯度与优化器状态的显存就空了出来,剩下的开销只是适配器。
为了让 4 位训练真正可用,论文引入了三项具体设计[1]。第一是 4 位 NormalFloat(NF4),论文称其为对正态分布权重而言信息论最优的数据类型:它不把可表示的值均匀铺开,而是放在近似正态分布的权重实际会落到的位置上,于是一个 4 位数字能承载更多有效精度。第二是双重量化(double quantization),即连量化常数本身也压缩存储,而不是在每一块权重旁按全精度保存一份。第三是分页优化器(paged optimizers),用来应付训练过程中出现的显存尖峰,避免一次瞬时峰值就让整次训练崩掉。
结果
论文最核心的结论是一个过去需要多得多的硬件才能达到的规模:显存占用被降到足以在单张 48GB GPU 上微调 650 亿参数的模型,同时保持完整的 16 位微调任务表现[1]。也就是说,省下的显存没有以质量下降为代价,这正是该方法区别于「接受一个更差的模型」的地方。
用这一方法得到的最好的一组模型被称为 Guanaco。它在 Vicuna 基准上超过了此前所有公开释放的模型,在单张 GPU 上只微调 24 小时,就达到 ChatGPT 性能水平的 99.3%[1]。
另一个结论:基准本身不可靠
这篇论文同时是一次大规模的实证扫描:作者在 8 个指令数据集和多个模型规模上微调了超过 1000 个模型[1]。如此多的实验让一个方法学问题暴露出来——他们发现,当前的聊天机器人基准不足以准确评估聊天机器人的表现,并用一次「挑柠檬」(lemon-picked)式的分析演示了这一点[1]。具体而言,MMLU 成绩强并不意味着 Vicuna 聊天表现强,反过来也一样[1]。他们的结论是:对某个特定任务来说,训练数据是否合适比数据规模更重要[1]。
为什么重要
最直接的意义是门槛。如果一个 650 亿参数的模型可以在单张 48GB GPU 上微调,且效果与 16 位微调相当,那么适配一个大模型就不再是集群级别的工程,小团队甚至单个研究者都可以尝试。三项工程设计也指向同一处:NF4、双重量化、分页优化器,各自都在训练最容易崩掉的边缘处换回一点显存。
方法学上的提醒同样长久。一个基准分数只有在它测的确实是所声称的能力时才算证据;MMLU 与 Vicuna 排名互不跟随,说明看排行榜需要谨慎;而「数据合适比数据大更重要」则说明挑选微调数据本身是个关键决定。两者合起来提示:这一领域的进展,既取决于训练配方,也取决于如何度量。
注释与来源
- QLoRA: Efficient Finetuning of Quantized LLMshttps://arxiv.org/abs/2305.14314
引用本页: 《QLoRA:量化大模型的高效微调》. TellWorld, https://www.tellworld.net/zh/papers/qlora-2023. 更新于 2026-11-08